<?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>153792</bug_id>
          
          <creation_ts>2016-02-02 11:16:36 -0800</creation_ts>
          <short_desc>[JSC] Introduce LinkTimeConstant mechanism</short_desc>
          <delta_ts>2019-11-04 19:32:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>203795</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1161326</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-02-02 11:16:36 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586800</commentid>
    <comment_count>1</comment_count>
      <attachid>382690</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-02 21:39:05 -0700</bug_when>
    <thetext>Created attachment 382690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586801</commentid>
    <comment_count>2</comment_count>
      <attachid>382691</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-02 21:47:42 -0700</bug_when>
    <thetext>Created attachment 382691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586802</commentid>
    <comment_count>3</comment_count>
      <attachid>382692</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-02 21:56:02 -0700</bug_when>
    <thetext>Created attachment 382692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586810</commentid>
    <comment_count>4</comment_count>
      <attachid>382695</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 00:18:52 -0700</bug_when>
    <thetext>Created attachment 382695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586811</commentid>
    <comment_count>5</comment_count>
      <attachid>382696</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 00:30:21 -0700</bug_when>
    <thetext>Created attachment 382696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586816</commentid>
    <comment_count>6</comment_count>
      <attachid>382699</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 00:58:17 -0700</bug_when>
    <thetext>Created attachment 382699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586817</commentid>
    <comment_count>7</comment_count>
      <attachid>382700</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 01:00:45 -0800</bug_when>
    <thetext>Created attachment 382700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586823</commentid>
    <comment_count>8</comment_count>
      <attachid>382704</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 01:11:17 -0800</bug_when>
    <thetext>Created attachment 382704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586824</commentid>
    <comment_count>9</comment_count>
      <attachid>382705</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 01:49:27 -0800</bug_when>
    <thetext>Created attachment 382705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586822</commentid>
    <comment_count>10</comment_count>
      <attachid>382703</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 01:58:41 -0800</bug_when>
    <thetext>Created attachment 382703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586825</commentid>
    <comment_count>11</comment_count>
      <attachid>382706</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 02:14:34 -0800</bug_when>
    <thetext>Created attachment 382706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586878</commentid>
    <comment_count>12</comment_count>
      <attachid>382711</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 17:20:14 -0800</bug_when>
    <thetext>Created attachment 382711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586882</commentid>
    <comment_count>13</comment_count>
      <attachid>382713</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-03 18:47:50 -0800</bug_when>
    <thetext>Created attachment 382713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587080</commentid>
    <comment_count>14</comment_count>
      <attachid>382713</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-11-04 12:20:20 -0800</bug_when>
    <thetext>Comment on attachment 382713
Patch

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

r=me with a few comments

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:903
&gt; +        case SourceCodeRepresentation::LinkTimeConstant:

maybe we should have global object in the name of this enum value since it&apos;s dependent on global object?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:838
&gt; +    , m_linkTimeConstantRegisters(numberOfLinkTimeConstants, nullptr)

This seems wasteful of memory. Any given compile should only have a few of these at most on average. Why not just use a HashMap instead of this Vector?
(If we keep the vector, we might as well make it have this as the inline capacity since it&apos;s statically known exactly how big the vector will be. But I think HashMap is better.)

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:467
&gt; +macro loadConstant(size, index, tag, payload)

can other code that branches on if it&apos;s a constant use this helper (below in the LLInt)?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:469
&gt; +macro loadConstant(size, index, value)

can the code below use this as a helper?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:423
&gt; +    Vector&lt;LazyProperty&lt;JSGlobalObject, JSCell&gt;&gt; m_linkTimeConstants;

why not have the correct inline capacity? Or do we really want this out of line?

&gt; Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h:113
&gt; +inline JSFunction* JSGlobalObject::throwTypeErrorFunction() const { return bitwise_cast&lt;JSFunction*&gt;(linkTimeConstant(LinkTimeConstant::throwTypeErrorFunction)); }
&gt; +inline JSFunction* JSGlobalObject::newPromiseCapabilityFunction() const { return bitwise_cast&lt;JSFunction*&gt;(linkTimeConstant(LinkTimeConstant::newPromiseCapability)); }
&gt; +inline JSFunction* JSGlobalObject::resolvePromiseFunction() const { return bitwise_cast&lt;JSFunction*&gt;(linkTimeConstant(LinkTimeConstant::resolvePromise)); }
&gt; +inline JSFunction* JSGlobalObject::rejectPromiseFunction() const { return bitwise_cast&lt;JSFunction*&gt;(linkTimeConstant(LinkTimeConstant::rejectPromise)); }
&gt; +inline JSFunction* JSGlobalObject::promiseProtoThenFunction() const { return bitwise_cast&lt;JSFunction*&gt;(linkTimeConstant(LinkTimeConstant::defaultPromiseThen)); }
&gt; +inline JSFunction* JSGlobalObject::regExpProtoExecFunction() const { return bitwise_cast&lt;JSFunction*&gt;(linkTimeConstant(LinkTimeConstant::regExpBuiltinExec)); }
&gt; +inline GetterSetter* JSGlobalObject::regExpProtoGlobalGetter() const { return bitwise_cast&lt;GetterSetter*&gt;(linkTimeConstant(LinkTimeConstant::regExpProtoGlobalGetter)); }
&gt; +inline GetterSetter* JSGlobalObject::regExpProtoUnicodeGetter() const { return bitwise_cast&lt;GetterSetter*&gt;(linkTimeConstant(LinkTimeConstant::regExpProtoUnicodeGetter)); }

why not static cast for all of these?

&gt; LayoutTests/inspector/debugger/tail-deleted-frames/tail-deleted-frames-this-value-expected.txt:17
&gt; +  this: c - 

Why has code you have in this patch changed the backtrace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587255</commentid>
    <comment_count>15</comment_count>
      <attachid>382713</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-04 18:47:54 -0800</bug_when>
    <thetext>Comment on attachment 382713
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:903
&gt;&gt; +        case SourceCodeRepresentation::LinkTimeConstant:
&gt; 
&gt; maybe we should have global object in the name of this enum value since it&apos;s dependent on global object?

Talked with Saam. For now, I&apos;ll use LinkTimeConstant since it represents constant populated at linking time.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:838
&gt;&gt; +    , m_linkTimeConstantRegisters(numberOfLinkTimeConstants, nullptr)
&gt; 
&gt; This seems wasteful of memory. Any given compile should only have a few of these at most on average. Why not just use a HashMap instead of this Vector?
&gt; (If we keep the vector, we might as well make it have this as the inline capacity since it&apos;s statically known exactly how big the vector will be. But I think HashMap is better.)

Right. Changed this to HashMap.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:467
&gt;&gt; +macro loadConstant(size, index, tag, payload)
&gt; 
&gt; can other code that branches on if it&apos;s a constant use this helper (below in the LLInt)?

Fixed.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:469
&gt;&gt; +macro loadConstant(size, index, value)
&gt; 
&gt; can the code below use this as a helper?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:423
&gt;&gt; +    Vector&lt;LazyProperty&lt;JSGlobalObject, JSCell&gt;&gt; m_linkTimeConstants;
&gt; 
&gt; why not have the correct inline capacity? Or do we really want this out of line?

We cannot get this information in JSGlobalObject.h since it is included and used before generating JSBuiltins.h. We should not use LinkTimeConstant&apos;s JSBuiltins.h information here.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h:113
&gt;&gt; +inline GetterSetter* JSGlobalObject::regExpProtoUnicodeGetter() const { return bitwise_cast&lt;GetterSetter*&gt;(linkTimeConstant(LinkTimeConstant::regExpProtoUnicodeGetter)); }
&gt; 
&gt; why not static cast for all of these?

I use jsCast for JSFunction while I continue using bitwise_cast for GetterSetter.
Using static_cast / jsCast requires complete type declaration of GetterSetter here, but GetterSetter.h is not exposed outside of JSC.

&gt;&gt; LayoutTests/inspector/debugger/tail-deleted-frames/tail-deleted-frames-this-value-expected.txt:17
&gt;&gt; +  this: c - 
&gt; 
&gt; Why has code you have in this patch changed the backtrace?

I think this part is not dumping meaningful value before this change. If you change &quot;c&quot; to &quot;d&quot; in this test, this value becomes &quot;test&quot;. And &quot;test&quot; as thisValue seems also incorrect. My guess is that this is related to hash table&apos;s value.
But anyway, I&apos;ll file a bug and ask to inspector folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587256</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-04 18:52:08 -0800</bug_when>
    <thetext>Committed r252032: &lt;https://trac.webkit.org/changeset/252032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587258</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-04 18:53:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/56890056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587273</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-04 19:30:31 -0800</bug_when>
    <thetext>I guess Windows build failure is due to broken forwarding header thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587274</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-04 19:32:23 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #18)
&gt; I guess Windows build failure is due to broken forwarding header thing

Yes, seems like it is.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382690</attachid>
            <date>2019-11-02 21:39:05 -0700</date>
            <delta_ts>2019-11-02 21:47:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191102213904.patch</filename>
            <type>text/plain</type>
            <size>103062</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTUxMGI1ZTBjMjlhZTc0NjFmZThmMWIyZGJlMjE2NDk4Mzc4ZDFlLi4wNjgwNmI0MjQxYTAzMjE3
MWM0OGU0ZmM2ZDZjZjkwYmFjZWQyODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0xMS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0YW50IG1lY2hhbmlzbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAg
ICAgKG5ha2VkQ29uc3RydWN0b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9y
LkludGVybmFsUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UucmVq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuSW50ZXJuYWxQcm9taXNl
LnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDb25z
dGFudHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
bG9va3VwIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpF
bnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5Ojp0
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50
cnk6OmxpbmtUaW1lQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6ZW1pdHRlciBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6
CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaC4KKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpyZWdp
c3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OnByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlND
OjpnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjphc3luY0dlbmVy
YXRvckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRyKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2puZXFfcHRyKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVz
b2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZSk6CisgICAgICAgICogcGFy
c2VyL05vZGVzLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAg
IChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsaW5rVGlt
ZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFjdHVhbFBvaW50ZXJG
b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6anNDZWxsRm9yTGlu
a1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisKIDIwMTktMTEtMDIgIFJvYmluIE1vcmlzc2V0ICA8
cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgb2ZmbGluZSBhc3NlbWJsZXIgaXMg
d3JvbmcgYWJvdXQgd2hpY2ggaW1tZWRpYXRlcyBhcmUgc3VwcG9ydGVkIGJ5IGFuZC9vci94b3Ig
b24gQVJNNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMzlhNDg0ZDk0
M2M1ZDgwNzgwN2E4NWUwZGIyMDBhZDJiN2JiYThjLi45YWU3N2I2M2ZkM2MwNDI2ODAxOTkwNTkz
N2ZiOTMxYzIzMDUwMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
MjIsNiArNTIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCiAgICAgYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKICAgICBieXRlY29kZS9M
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCisgICAgYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
CiAgICAgYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGIzMTVjNGVmNmRkN2QzNDc5MzU0MjE1NzJj
NjBjZWVlOTViNGE2NS4uYWI0ZGVkMzg5NDIwYzgxNGRkZjQ0NTAyNjcyYmY3YWJmY2E4ZWRkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Miw3ICszNjIsNiBAQAogCQkwRjRG
ODI4QzFFMzFCOTc2MDA3NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEY4
MjhBMUUzMUI5NzEwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
ci5oICovOyB9OwogCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xv
YmJlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjUwQUYzQjE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmgg
Ki87IH07CiAJCTBGNTUxM0E2MUQ1QTY4MkMwMEMzMkJEOCAvKiBGcmVlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTEzQTUxRDVBNjgyQTAw
QzMyQkQ4IC8qIEZyZWVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDFC
MDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMg
LyogVG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAw
RjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODEzLDYgKzE4MTIsNyBAQAogCQlFMzVDQTE1
NDFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyog
RE9NSklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0Ex
NTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDcz
QUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzYzN0VFOTIzNkU1NkIwMDA5NkJEMEEgLyog
TGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzZCNzY3
MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0
RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjU4Niw4ICsyNTg2LDYgQEAKIAkJMEY1MEFGM0IxOTNF
OEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgcGF0aCA9IGRm
Zy9ERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NTEzQTUxRDVBNjgyQTAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyZWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNTUxM0E3MUQ1QTY4Q0IwMEMzMkJEOCAvKiBGcmVlTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmVlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjaWFsUG9pbnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNTU0MUIwMTYxM0MxRkIwMENFM0Uy
NSAvKiBTcGVjaWFsUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
cGVjaWFsUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1OTg5NzE3
Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9O
YXRpdmVGcm9tVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUMxOTMx
NzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZH
QWJzdHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYx
MTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDkzNyw2ICs0OTM1LDggQEAKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5r
VGltZUNvbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExp
bmtUaW1lQ29uc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2
RTIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRy
eVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNy
ZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ3JlYXRp
b25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjQwLDYgKzgyNDAsOCBA
QAogCQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkw
RkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICov
LAogCQkJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5oICovLAorCQkJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50
LmNwcCAqLywKKwkJCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFu
dC5oICovLAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5m
by5oICovLAogCQkJCTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAogCQkJCTUzRkEyQUUwMUNGMzdG
M0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuaCAqLywKQEAgLTgyODcsOCArODI4OSw2IEBACiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJC
MTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3
NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5
Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKLQkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovLAotCQkJCTBGNTU0MUIwMTYxM0MxRkIwMENFM0Uy
NSAvKiBTcGVjaWFsUG9pbnRlci5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAv
KiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0
cnVjdHVyZVNldC5jcHAgKi8sCkBAIC04OTMwLDcgKzg5MzAsNiBAQAogCQkJCTBGNzI1Q0E4MUM1
MDNERUQwMEFEOTQzQSAvKiBCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNzExRjIzQTVBMTAwMjlEOTFEIC8qIEIz
RW5zdXJlTG9vcFByZUhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyMjkyN0Q1MjM1RkQw
QjkwMDVDQjE2OSAvKiBHQ01lbW9yeU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
MTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2OTcxRUExRDkyRjQyNDAwQkEwMkE1IC8qIEIzRmVuY2VWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2QjhBRTUxQzRFRkUxNzAwOTY5MDUyIC8qIEIzRml4U1NBLmggaW4gSGVh
ZGVycyAqLywKQEAgLTk0NTIsNiArOTQ1MSw3IEBACiAJCQkJMEYyQjY2QUUxN0I2QjU0NTAwQTdB
RTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZBRjE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5n
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjI5MjdENTIzNUZEMEI5MDA1Q0IxNjkgLyogR0NNZW1v
cnlPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3MTUzMTFFQjI4QkVFMDBBMTY0
NUQgLyogR0NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRFOEVCMDE4QkZGQkJCMDA1
NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjEx
OEJGRkJCRTAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTk4NDcsNiArOTg0Nyw3IEBACiAJCQkJQkMxOEM0MzEwRTE2RjVDRDAwQjM0NDYwIC8q
IExleGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyog
TGV4ZXIubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcg
LyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2MzdFRTkyMzZFNTZCMDAwOTZC
RDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTJFQTZCMEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERF
OUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMTAwLDcgKzEwMTAxLDYgQEAKIAkJCQkwRkRFODdGQzFERkU2RTUxMDA2
NEMzOTAgLyogU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5r
SklULmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3Bl
Y2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5
NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NUY2QkMxOEM1NTNG
RTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
QUM3NTIxODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjOTA4YWZiNTBlMDVjMThjZTZkZTFiMWQ3
Y2Q2NWQ2YzU4OGRlMzI4Li41MTkyMWQ3MTg2MDliYTFlN2I0ODE0MTA2MzQ3YWVkMjJlODYwODgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNDQsNiArMjQ0LDcgQEAgYnl0ZWNv
ZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL0p1bXBUYWJsZS5jcHAK
IGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAKIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5jcHAKIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCiBieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZS5jcHAKQEAgLTI2Myw3ICsyNjQsNiBAQCBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKLWJ5dGVjb2RlL1NwZWNpYWxQb2lu
dGVyLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGRkMzNj
YTgwMzZhMzBiZjY0ZTA4YTBhMzg3ZWUxYjViNzExYTc4ZjEuLmQ0M2U0OGYwYmEzMWViZGNmOGJl
ZDE4YjZlOWFiMGI4ZGJmNTYyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
SlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShtYWNybykg
XAogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUo
bWFjcm8pIFwKICAgICBtYWNybyhhZGQpIFwKKyAgICBtYWNybyhhcHBseUZ1bmN0aW9uKSBcCiAg
ICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHRJbmRleCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0
aW9uS2luZCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JOZXh0KSBcCkBAIC01Miw2ICs1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JLaW5kKSBcCiAgICAg
bWFjcm8oYXJyYXlTcGVjaWVzQ3JlYXRlKSBcCiAgICAgbWFjcm8oYXNzZXJ0KSBcCisgICAgbWFj
cm8oY2FsbEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY2hhckNvZGVBdCkgXAogICAgIG1hY3JvKGV4
ZWN1dG9yKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCkBAIC03Myw2ICs3NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKICAgICBtYWNybyhvd25L
ZXlzKSBcCiAgICAgbWFjcm8oU2V0KSBcCisgICAgbWFjcm8odGhyb3dUeXBlRXJyb3JGdW5jdGlv
bikgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlMZW5ndGgpIFwKICAgICBtYWNybyh0eXBlZEFycmF5
U29ydCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVj
dG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rv
ci5qcwppbmRleCAzMGZjNjZlNGI4OWYyZWEwYmQ2OWE3YjgxZGUxMzg1MGYwMWNkYjc0Li42NmY5
NTFmYjRmYzZkMWM2NTFlMDMwNzcwZGVkNTE1ZTkwZGViOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTIzNywx
OSArMjM3LDE2IEBAIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFyIHByb21pc2Ug
PSBAY3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyBmYWxzZSk7CiAg
ICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZhciBAcmVqZWN0
ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEByZWplY3RQcm9t
aXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCBy
ZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigKICAgICAgICAg
ICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2Fw
dHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWplY3QpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29uKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rp
b25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAgICAgfSk7CiAg
ICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7CisgICAgICAgIEBy
ZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwg
ZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMjY2LDE5ICsyNjMsMTYg
QEAgZnVuY3Rpb24gSW50ZXJuYWxQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZhciBwcm9taXNlID0g
QGNyZWF0ZVByb21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gdHJ1ZSk7CiAgICAg
dmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZhciBAcmVqZWN0ID0g
ZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNl
V2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFz
b24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigKICAgICAgICAgICAg
IGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
QHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVy
ZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWplY3QpOworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29uKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25D
YWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAgICAgfSk7CiAgICAg
fSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7CisgICAgICAgIEByZWpl
Y3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgZXJy
b3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggYWY4MDc2OTMzMmM5Y2I1
MGUyMmNjMzNkYWM3NDVhMmRiZTBmZTMwNC4uODU4YWI5MDUwMmU4NGQ3MDc5MTUzMjVmNjkzZWUz
ZDVkNTg1YzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCkBAIC0xMzYsNiArMTM2LDkgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OmR1bXBDb25zdGFudHMoKQogICAgICAgICAgICAgY2FzZSBTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb246Ok90aGVyOgogICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudDoK
KyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbiA9ICI6
IGluIHNvdXJjZSBhcyBsaW5rZS10aW1lLWNvbnN0YW50IjsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50ZigiICAgayV1
ID0gJXMlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB0b0NTdHJpbmcoY29uc3RhbnQu
Z2V0KCkpLmRhdGEoKSwgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24pOwogICAg
ICAgICAgICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IGQ0MTYzM2M1NWI2MDlj
ZDU3ZTI0M2IyYjFhNGM0NDA5MjE0YzVhZGEuLmJkYmI3OTJmNGY3MDU1NzhmOGViYTZjYzJlMGFj
YjQzZDQ3MzhjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTQyLDcgKzQyLDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5T
SUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRkKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1wbCgpLCAmQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY18jI25hbWUpOworI2RlZmluZSBJTklU
SUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQobmFtZSkgbV9ieXRlY29kZUlu
dHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMjUHJp
dmF0ZU5hbWUoKS5pbXBsKCksIEVudHJ5KCZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljXyMjbmFtZSkpOworI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19O
QU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVChhMCwgbmFtZSwgYTEpIG1fYnl0ZWNv
ZGVJbnRyaW5zaWNNYXAuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUj
I1ByaXZhdGVOYW1lKCkuaW1wbCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWUpOwogCiBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2
bSkKICAgICA6IG1fdm0odm0pCkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewogICAgIEpTQ19DT01N
T05fQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRF
Q09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5U
UklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNf
TkFNRVNfVE9fU0VUKQorICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoSU5JVElB
TElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5LX1RJTUVfQ09OU1RB
TlQpCiAKICAgICBtX3VuZGVmaW5lZC5zZXQobV92bSwganNVbmRlZmluZWQoKSk7CiAgICAgbV9J
bmZpbml0eS5zZXQobV92bSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpKSk7CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fQXN5bmNH
ZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpO
b25lKSkpOwogfQogCi1CeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
K09wdGlvbmFsPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpZGVudC5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVj
b2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0g
bV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBlZTVmOTQ5MzVmMzhh
NzRhNjE1Njc4NjliZi4uNTY3YjAyNmI1ZTFkMDVjODM2YzAxOWM5MzdjODUwOTUzYzgyNWY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTM3LDcg
KzEzOCw0NCBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogICAgIHR5cGVk
ZWYgUmVnaXN0ZXJJRCogKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6KiBFbWl0dGVyVHlwZSkoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik7CiAKLSAgICBFbWl0dGVyVHlwZSBsb29rdXAo
Y29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3Qg
eworICAgICAgICBFbWl0dGVyID0gMCwKKyAgICAgICAgTGlua1RpbWVDb25zdGFudCA9IDEsCisg
ICAgfTsKKworICAgIGNsYXNzIEVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEVudHJ5KCkK
KyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fZW1pdHRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBFbnRyeShFbWl0
dGVyVHlwZSBlbWl0dGVyKQorICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9lbWl0dGVyID0gZW1pdHRlcjsKKyAgICAgICAgfQorCisg
ICAgICAgIEVudHJ5KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkKKyAgICAgICAg
ICAgIDogbV90eXBlKFR5cGU6OkxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGlua1RpbWVDb25zdGFudCA9IGxpbmtUaW1lQ29uc3RhbnQ7CisgICAgICAgIH0KKwor
ICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgTGlu
a1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9saW5rVGlt
ZUNvbnN0YW50OyB9CisgICAgICAgIEVtaXR0ZXJUeXBlIGVtaXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2VtaXR0ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAg
ICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsKKyAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQg
bV9saW5rVGltZUNvbnN0YW50OworICAgICAgICB9OworICAgICAgICBUeXBlIG1fdHlwZTsKKyAg
ICB9OworCisgICAgT3B0aW9uYWw8RW50cnk+IGxvb2t1cChjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dF
TkVSQVRPUlMobmFtZSkgSlNWYWx1ZSBuYW1lIyNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpOwog
ICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSlND
X0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMpCkBAIC0xNDUs
NyArMTgzLDcgQEAgY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAKIHByaXZhdGU6
CiAgICAgVk0mIG1fdm07Ci0gICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBF
bWl0dGVyVHlwZSwgSWRlbnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7Cisg
ICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllU
RUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgU3Ryb25nPFVua25vd24+
IG1fIyNuYW1lOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19T
SU1QTEVfRUFDSF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVF9H
RU5FUkFUT1JTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggZDY1MmI2NTg4NGM3OGIwM2JkODBkMmQ2N2Q0OGYxNjg2MTBiOWE3OC4uMzRj
MTUyYTBkNjYyZjM1Mjk3ZGYxNDQ0ODY0ZmI0YmJhMzQwZWY4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NCwxMCArNjQsNiBAQAog
ICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKIF0KIAotbmFtZXNwYWNlIDpTcGVjaWFsIGRv
Ci0gICAgdHlwZXMgWyA6UG9pbnRlciBdCi1lbmQKLQogdGVtcGxhdGVzIFsKICAgICA6V3JpdGVC
YXJyaWVyLAogICAgIDpXcml0ZUJhcnJpZXJCYXNlLApAQCAtNjc1LDcgKzY3MSw3IEBACiBvcCA6
am5lcV9wdHIsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBzcGVjaWFsUG9pbnRlcjogU3BlY2lhbDo6UG9pbnRlciwKKyAgICAgICAgc3BlY2lh
bFBvaW50ZXI6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFi
ZWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1ZWMyNDZjOTFkODJlY2U2MjRkZGRjMjZhYmI1ZDU1
NDI0M2RiOTgyLi4yNTMwM2VmMDU1NThkODI4N2EwYTk3NWM1ZDRjMGRmMGFlMjU2ZjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzk5LDEy
ICszOTksNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIHNldENvbnN0YW50UmVnaXN0
ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVC
bG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExldmVsRXhlY3V0
YWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50OyBpKyspIHsK
LSAgICAgICAgTGlua1RpbWVDb25zdGFudCB0eXBlID0gc3RhdGljX2Nhc3Q8TGlua1RpbWVDb25z
dGFudD4oaSk7Ci0gICAgICAgIGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4ID0gdW5saW5rZWRD
b2RlQmxvY2stPnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKQotICAgICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQodm0sIHRoaXMsIG1f
Z2xvYmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKLSAgICB9Ci0K
ICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZm9yIHRoZSBt
b2R1bGUgZW52aXJvbm1lbnQgc2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0ZQogICAgIC8vIHRo
ZSBtb2R1bGUgZW52aXJvbm1lbnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2RlIGJsb2NrLiBXZSBy
ZXBsYWNlIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVhZHkgY2xvbmVkIG9u
ZS4KICAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayo+KHZtLCB1bmxpbmtlZENvZGVCbG9jaykpIHsKQEAgLTkwNSwyOSArODk5LDM2IEBA
IHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVC
YXJyaWVyPFVua25vd24+PiYgY29uc3RhCiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewogICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gY29uc3RhbnRzW2ld
LmdldCgpOwotCi0gICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoY29uc3RhbnQuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICBKU0NlbGwqIGNlbGwg
PSBjb25zdGFudC5hc0NlbGwoKTsKLSAgICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5cGVQ
cm9maWxlck9wY29kZXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAg
ICBzd2l0Y2ggKGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpXSkgeworICAgICAg
ICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudDoKKyAgICAg
ICAgICAgIGNvbnN0YW50ID0gZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50KHN0YXRpY19j
YXN0PExpbmtUaW1lQ29uc3RhbnQ+KGNvbnN0YW50LmFzSW50MzJBc0FueUludCgpKSkuZ2V0KCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b246Ok90aGVyOgorICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6SW50ZWdl
cjoKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToKKyAgICAg
ICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNv
bnN0YW50LmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGNv
bnN0YW50LmFzQ2VsbCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhU
eXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2Nr
ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICBTeW1ib2xUYWJsZSogY2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29k
ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFDb2Rl
QmxvY2sodGhpcyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVjdXRh
YmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOworICAg
ICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAgICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogY2xv
bmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOwotICAgICAgICAgICAgICAgICAg
ICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOwotCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChh
dXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
cio+KHZtLCBjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvKiB0ZW1wbGF0ZU9iamVj
dCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3QoZ2xvYmFsT2JqZWN0
LCBkZXNjcmlwdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9i
amVjdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotCiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KHZtLCB0
aGlzLCBjb25zdGFudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMu
aAppbmRleCBlMjQ0ZmQ2MjcwOWI0MjVhNjI4ZTIyNDU2NjM4YjBlNTYzY2RhZTA5Li5lZGEyNGJl
NDY5NTY0YjJlNTBjNjRmZTYwODFiYTIxZjljZWQ5YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5
dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlJlc3Vs
dFR5cGUuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN5bWJvbFRh
YmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY2YTU1OTczMjI0Y2VjYWFiMDZlNGI0
MzBlYjc4Yzk1YjVjNzY1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgeworCisjZGVmaW5lIFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCh2YXJOYW1lLCBu
YW1lLCBjb2RlKSBcCisgICAgY2FzZSBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWU6IFwKKyAg
ICAgICAgb3V0LnByaW50KCNuYW1lKTsgXAorICAgICAgICByZXR1cm47CisKK3ZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQgY29uc3RhbnQp
Cit7CisgICAgc3dpdGNoIChjb25zdGFudCkgeworICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9D
T05TVEFOVFMoUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKQorICAgIH0KK30KKworI3VuZGVmIFBS
SU5UX0xJTktfVElNRV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjljOTFkYzQ4MjI5OThmMjg5ZWI0ZmRiMGVhOTlmNzgzZmNlMzA1YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBA
IC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKKyNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyh2KSBcCisgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKHYpIFwKKyAgICB2KHRocm93
VHlwZUVycm9yRnVuY3Rpb24sIHRocm93VHlwZUVycm9yRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAg
ICB2KGltcG9ydE1vZHVsZSwgaW1wb3J0TW9kdWxlLCBudWxscHRyKSBcCisgICAgdihtYXBCdWNr
ZXRIZWFkLCBtYXBCdWNrZXRIZWFkLCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXROZXh0LCBt
YXBCdWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRLZXksIG1hcEJ1Y2tldEtl
eSwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0VmFsdWUsIG1hcEJ1Y2tldFZhbHVlLCBudWxs
cHRyKSBcCisgICAgdihzZXRCdWNrZXRIZWFkLCBzZXRCdWNrZXRIZWFkLCBudWxscHRyKSBcCisg
ICAgdihzZXRCdWNrZXROZXh0LCBzZXRCdWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihzZXRC
dWNrZXRLZXksIHNldEJ1Y2tldEtleSwgbnVsbHB0cikgXAorICAgIHYocHJvcGVydHlJc0VudW1l
cmFibGUsIHByb3BlcnR5SXNFbnVtZXJhYmxlLCBudWxscHRyKSBcCisgICAgdihvd25LZXlzLCBv
d25LZXlzLCBudWxscHRyKSBcCisgICAgdihlbnF1ZXVlSm9iLCBlbnF1ZXVlSm9iLCBudWxscHRy
KSBcCisgICAgdihtYWtlVHlwZUVycm9yLCBtYWtlVHlwZUVycm9yLCBudWxscHRyKSBcCisgICAg
dih0eXBlZEFycmF5TGVuZ3RoLCB0eXBlZEFycmF5TGVuZ3RoLCBudWxscHRyKSBcCisgICAgdih0
eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgdHlwZWRBcnJheUdldE9yaWdpbmFsQ29u
c3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTb3J0LCB0eXBlZEFycmF5U29y
dCwgbnVsbHB0cikgXAorICAgIHYoaXNUeXBlZEFycmF5VmlldywgaXNUeXBlZEFycmF5Vmlldywg
bnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCB0eXBlZEFycmF5U3Vi
YXJyYXlDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzQm91bmRGdW5jdGlvbiwgaXNCb3VuZEZ1
bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIGhhc0lu
c3RhbmNlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaW5zdGFuY2VPZiwgaW5zdGFu
Y2VPZiwgbnVsbHB0cikgXAorICAgIHYoQnVpbHRpbkxvZywgQnVpbHRpbkxvZywgbnVsbHB0cikg
XAorICAgIHYoQnVpbHRpbkRlc2NyaWJlLCBCdWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAg
ICB2KFJlZ0V4cCwgUmVnRXhwLCBudWxscHRyKSBcCisgICAgdih0cnVuYywgdHJ1bmMsIG51bGxw
dHIpIFwKKyAgICB2KFByb21pc2UsIFByb21pc2UsIG51bGxwdHIpIFwKKyAgICB2KEludGVybmFs
UHJvbWlzZSwgSW50ZXJuYWxQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihkZWZhdWx0UHJvbWlz
ZVRoZW4sIGRlZmF1bHRQcm9taXNlVGhlbiwgbnVsbHB0cikgXAorICAgIHYocmVwZWF0Q2hhcmFj
dGVyLCByZXBlYXRDaGFyYWN0ZXIsIG51bGxwdHIpIFwKKyAgICB2KGFycmF5U3BlY2llc0NyZWF0
ZSwgYXJyYXlTcGVjaWVzQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0FycmF5LCBpc0FycmF5
LCBudWxscHRyKSBcCisgICAgdihpc0FycmF5U2xvdywgaXNBcnJheVNsb3csIG51bGxwdHIpIFwK
KyAgICB2KGNvbmNhdE1lbWNweSwgY29uY2F0TWVtY3B5LCBudWxscHRyKSBcCisgICAgdihhcHBl
bmRNZW1jcHksIGFwcGVuZE1lbWNweSwgbnVsbHB0cikgXAorICAgIHYoaG9zdFByb21pc2VSZWpl
Y3Rpb25UcmFja2VyLCBob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKKyAg
ICB2KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLCBu
dWxscHRyKSBcCisgICAgdihTZXQsIFNldCwgbnVsbHB0cikgXAorICAgIHYodGhpc1RpbWVWYWx1
ZSwgdGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAorICAgIHYoaXNDb25zdHJ1Y3RvciwgaXNDb25z
dHJ1Y3RvciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9GbGFnc0dldHRlciwgcmVnRXhw
UHJvdG9GbGFnc0dldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9HbG9iYWxHZXR0
ZXIsIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90
b0lnbm9yZUNhc2VHZXR0ZXIsIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlciwgbnVsbHB0cikg
XAorICAgIHYocmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIsIHJlZ0V4cFByb3RvTXVsdGlsaW5l
R2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1NvdXJjZUdldHRlciwgcmVnRXhw
UHJvdG9Tb3VyY2VHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvU3RpY2t5R2V0
dGVyLCByZWdFeHBQcm90b1N0aWNreUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJv
dG9Vbmljb2RlR2V0dGVyLCByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIG51bGxwdHIpIFwKKyAg
ICB2KHJlZ0V4cEJ1aWx0aW5FeGVjLCByZWdFeHBCdWlsdGluRXhlYywgbnVsbHB0cikgXAorICAg
IHYocmVnRXhwQ3JlYXRlLCByZWdFeHBDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzUmVnRXhw
LCBpc1JlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwTWF0Y2hGYXN0LCByZWdFeHBNYXRj
aEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNlYXJjaEZhc3QsIHJlZ0V4cFNlYXJjaEZh
c3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNwbGl0RmFzdCwgcmVnRXhwU3BsaXRGYXN0LCBu
dWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlLCByZWdFeHBQcm90
b3R5cGVTeW1ib2xSZXBsYWNlLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBUZXN0RmFzdCwgcmVn
RXhwVGVzdEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwsIHN0
cmluZ0luY2x1ZGVzSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ1NwbGl0RmFzdCwg
c3RyaW5nU3BsaXRGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTdWJzdHJJbnRlcm5hbCwg
c3RyaW5nU3Vic3RySW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KG1ha2VCb3VuZEZ1bmN0aW9u
LCBtYWtlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzT3duTGVuZ3RoUHJvcGVy
dHksIGhhc093bkxlbmd0aFByb3BlcnR5LCBudWxscHRyKSBcCisgICAgdihkYXRlVGltZUZvcm1h
dCwgZGF0ZVRpbWVGb3JtYXQsIG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5Q29tcGlsZVN0
cmVhbWluZ0ludGVybmFsLCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCwgbnVs
bHB0cikgXAorICAgIHYod2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsLCB3
ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2
KE9iamVjdCwgT2JqZWN0LCBudWxscHRyKSBcCisgICAgdihBcnJheSwgQXJyYXksIG51bGxwdHIp
IFwKKyAgICB2KGFwcGx5RnVuY3Rpb24sIGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2
KGNhbGxGdW5jdGlvbiwgY2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisKKworI2RlZmluZSBERUNM
QVJFX0xJTktfVElNRV9DT05TVEFOVCh2YXJOYW1lLCBuYW1lLCBjb2RlKSBuYW1lLAorZW51bSBj
bGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdCB7CisgICAgSlNDX0ZPUkVBQ0hfTElOS19U
SU1FX0NPTlNUQU5UUyhERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVCkKK307CisjdW5kZWYgREVD
TEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQKKyNkZWZpbmUgQ09VTlRfTElOS19USU1FX0NPTlNUQU5U
KHZhck5hbWUsIG5hbWUsIGNvZGUpIDEgKworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1i
ZXJPZkxpbmtUaW1lQ29uc3RhbnRzID0gSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhD
T1VOVF9MSU5LX1RJTUVfQ09OU1RBTlQpIDA7CisjdW5kZWYgQ09VTlRfTElOS19USU1FX0NPTlNU
QU5UCisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJp
bnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6TGlua1Rp
bWVDb25zdGFudCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDVhZDNmMjRjYTA0ODFkMTFhNjdlYmQxYmZiYWJlODY2ZmQzMWQ0OGIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCi0KLSNpbmNs
dWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXZvaWQqIGFjdHVhbFBvaW50ZXJG
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3BlY2lhbDo6UG9pbnRlciBwb2ludGVy
KQotewotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9pbnRlcik7
Ci19Ci0KLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFNwZWNp
YWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gYWN0dWFsUG9pbnRlckZvcihjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLCBwb2ludGVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgSlNDOjpTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgc3dpdGNoIChwb2ludGVy
KSB7Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkNhbGxGdW5jdGlvbjoKLSAgICAgICAgb3V0LnBy
aW50KCJDYWxsRnVuY3Rpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVj
aWFsOjpBcHBseUZ1bmN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkFwcGx5RnVuY3Rpb24iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rv
cjoKLSAgICAgICAgb3V0LnByaW50KCJPYmplY3RDb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkFycmF5Q29uc3RydWN0b3I6Ci0gICAgICAgIG91
dC5wcmludCgiQXJyYXlDb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBK
U0M6OlNwZWNpYWw6OlRhYmxlU2l6ZToKLSAgICAgICAgb3V0LnByaW50KCJUYWJsZVNpemUiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3NDkyYmFiNzZlYTJiZmY3ZTZlODgzNTM1ZWE0ZDc2YzQxYjA0
Njc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQ29k
ZUJsb2NrOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0KLW5hbWVzcGFjZSBTcGVjaWFsIHsKLWVu
dW0gUG9pbnRlciA6IHVuc2lnbmVkIHsKLSAgICBDYWxsRnVuY3Rpb24sCi0gICAgQXBwbHlGdW5j
dGlvbiwKLSAgICBPYmplY3RDb25zdHJ1Y3RvciwKLSAgICBBcnJheUNvbnN0cnVjdG9yLAotICAg
IFRhYmxlU2l6ZSAvLyBOb3QgYSByZWFsIHNwZWNpYWwgcG9pbnRlci4gVXNlIHRoaXMgdG8gZGV0
ZXJtaW5lIHRoZSBudW1iZXIgb2YgcG9pbnRlcnMuCi19OwotfSAvLyBuYW1lc3BhY2UgU3BlY2lh
bAotCi1lbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIFRocm93VHlwZUVycm9yRnVu
Y3Rpb24sCi19OwotY29uc3QgdW5zaWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0gMTsKLQot
aW5saW5lIGJvb2wgcG9pbnRlcklzRnVuY3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQot
ewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwgcG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6
ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0NlbGwoU3Bl
Y2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwgcG9p
bnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQq
IGFjdHVhbFBvaW50ZXJGb3IoSlNHbG9iYWxPYmplY3QqLCBTcGVjaWFsOjpQb2ludGVyKTsKLXZv
aWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiwgU3BlY2lhbDo6UG9pbnRlcik7Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07
Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6U3BlY2lhbDo6UG9pbnRl
cik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjM0ZmE1NzdjNWFmMGExMjE2
YzdiNGQ2ZDA0NDdkMGJjZjhkNGM0OS4uZDVkZGVlOGQ1NjA3NzAzMjNiMWZkNWYxYWNjY2NjMDUw
MmMxMjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC03Niw4ICs3Niw2IEBAIFVubGlua2VkQ29kZUJsb2NrOjpV
bmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBj
b2RlCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
LCBtX21ldGFkYXRhKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCkpCiB7Ci0gICAgZm9y
IChhdXRvJiBjb25zdGFudFJlZ2lzdGVySW5kZXggOiBtX2xpbmtUaW1lQ29uc3RhbnRzKQotICAg
ICAgICBjb25zdGFudFJlZ2lzdGVySW5kZXggPSAwOwogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9y
S2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpOwog
ICAgIEFTU0VSVChtX2NvZGVUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkp
OwogICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhl
ZFRyaVN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCmluZGV4IDQ3MzlkYTc4MzU2OGQzZWIyNjMxZWVmMWE3MjQyOTI4Nzk3
ZjU2NjkuLmQ2MDczNjAxNGRkMWUzMTU3MTNhODUyZTg3ZGE2NTYxNDE2MzAwODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9k
ZXMuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgog
I2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5r
ZWRNZXRhZGF0YVRhYmxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0xODAs
MjcgKzE3OSwxNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoc291cmNl
Q29kZVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAg
dW5zaWduZWQgYWRkQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAgIHVuc2lnbmVk
IGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkKICAgICB7CiAg
ICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1
cmluZ01hcmtpbmcodm0uaGVhcCwgY2VsbExvY2soKSk7CiAgICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsK
LSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0g
ICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIG1f
bGlua1RpbWVDb25zdGFudHNbaW5kZXhdID0gcmVzdWx0OwogICAgICAgICBtX2NvbnN0YW50UmVn
aXN0ZXJzLmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7Ci0gICAgICAgIG1fY29uc3Rh
bnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVuZChTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b246Ok90aGVyKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0KHZtLCB0
aGlzLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihsaW5rVGltZUNvbnN0YW50KSkpOwor
ICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZWdpc3RlckluZGV4Rm9yTGlua1RpbWVDb25z
dGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwg
TGlua1RpbWVDb25zdGFudENvdW50KTsKLSAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFu
dHNbaW5kZXhdOwotICAgIH0KLQogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93
bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7IH0K
ICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXhdOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRS
ZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXg7IH0KQEAgLTQwNiw4ICszOTUsNiBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdp
c3RlcjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogCi0gICAgc3RkOjph
cnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3RhbnRz
OwotCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1N0cmlj
dE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDJkYjgxOGYwYjliNTRiMjE1YmFmMDZjY2M2YWUzMWMzYzI5YWRmYWUuLjgzNmZk
NTc4ZjJjMTg0ZmIzMzYyNTU4NzFjNmIxMmMzYzEzNjdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0zMDgsOSArMzA4LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMt
PnNpemUoKSk7CiAKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwot
CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNl
IGZvciAidGhpcyIKIAogICAgIGVtaXRFbnRlcigpOwpAQCAtMzYwLDkgKzM1Nyw2IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29u
dGV4dChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2RlLT51
c2VzRXZhbCgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVk
Q29udGV4dFR5cGUoKSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xp
bmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxs
cHRyOwotCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJs
ZTo6Y3JlYXRlKG1fdm0pOwogICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJp
Y3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIGludCBzeW1ib2xUYWJsZUNvbnN0YW50
SW5kZXggPSAwOwpAQCAtNzg4LDExICs3ODIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
CiAgICAgICAgIC8vIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxs
Q2hlY2soQHByb21pc2UsIHRocm93blZhbHVlKTsKICAgICAgICAgLy8gcmV0dXJuIEBwcm9taXNl
OwotICAgICAgICBhdXRvIHZhclJlamVjdFByb21pc2UgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkucmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9u
Q2FsbENoZWNrUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICBtb3ZlKHNjb3BlLmdldCgpLCBlbWl0UmVzb2x2
ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlKSk7Ci0gICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCksIHZhclJlamVjdFByb21pc2UsIFRocm93SWZOb3RGb3VuZCk7Ci0KKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdFByb21pc2UgPSBtb3ZlTGlua1RpbWVDb25z
dGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpyZWplY3RQcm9taXNlV2l0aEZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2spOwogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRo
aXMsIG51bGxwdHIsIDIpOwogICAgICAgICBlbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgbW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHBy
b21pc2VSZWdpc3RlcigpKTsKQEAgLTg0OCw5ICs4MzgsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZh
bENvZAogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZXZhbE5vZGUt
PnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUtPnVzZXNFdmFsKCkpCiAgICAgLCBtX2Rl
cml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewotICAg
IGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVy
cykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBtX2NvZGVCbG9j
ay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIAogICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERa
UmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKQEAgLTkxMCw5ICs4OTcsNiBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxl
UHJvZ3JhbU5vZAogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
ICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIAotICAgIGZvciAoYXV0byYgY29u
c3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKLSAgICAgICAgY29u
c3RhbnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7CiAgICAgbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3Ry
aWN0RXZhbCk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBl
KFN5bWJvbFRhYmxlOjpTY29wZVR5cGU6OkxleGljYWxTY29wZSk7CkBAIC0xNDQyLDEyICsxNDI2
LDEyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZGYWxzZShSZWdpc3RlcklE
KiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVt
cElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCiB7Ci0g
ICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6OkNhbGxGdW5jdGlvbiwgdGFy
Z2V0LmJpbmQodGhpcykpOworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlu
a1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rpb24pLCB0
YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1w
SWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCiB7Ci0g
ICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6OkFwcGx5RnVuY3Rpb24sIHRh
cmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgbW92ZUxp
bmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbiks
IHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aGFzQ29u
c3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CkBAIC0zMTAxLDcgKzMwODUsNyBA
QCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5jdGlv
blNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpID49IDIpCiAgICAgICAgICAgICByZXR1cm4gTm9FeHBl
Y3RlZEZ1bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGZ1
bmMsIFNwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7Cisg
ICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFudChu
dWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7
CiAgICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
ICAgIGVtaXROZXdPYmplY3QoZHN0KTsKQEAgLTMxMTcsNyArMzEwMSw3IEBAIEV4cGVjdGVkRnVu
Y3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldChSZWdp
c3RlcklEKiBkc3QsCiAgICAgICAgIGlmIChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgPiAyKQogICAgICAgICAgICAgcmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlvbjsK
ICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFsOjpB
cnJheUNvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CisgICAgICAgIE9wSm5lcVB0
cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGlt
ZUNvbnN0YW50OjpBcnJheSksIHJlYWxDYWxsLT5iaW5kKHRoaXMpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBpZiAoY2FsbEFy
Z3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID09IDIpCkBAIC0zMjg1LDcgKzMy
NjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KFJl
Z2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcAogICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dl
dCgpIHx8IGF0dHJpYnV0ZXMuaGFzU2V0KCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRocm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNHZXQo
KSB8fCAhYXR0cmlidXRlcy5oYXNTZXQoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVu
Y3Rpb24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpU
aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVuY3Rp
b24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVy
OwogICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKQEAgLTQ0NzQsMTAgKzQ0NTgsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVn
aXN0ZXJJRCogYXJndW1lbnQsIFRocm93YQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRN
ZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3Bl
cnR5TmFtZXMoKS5uZXh0KTsKIAotICAgIGF1dG8gdmFyQ3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJh
dG9yID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNyZWF0ZUFzeW5j
RnJvbVN5bmNJdGVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgIG1vdmUoc2NvcGUuZ2V0KCksIGVtaXRSZXNvbHZl
U2NvcGUoc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvcikpOwotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBlbWl0R2V0
RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyQ3JlYXRlQXN5bmNGcm9t
U3luY0l0ZXJhdG9yLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
cmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRy
LCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IpOwogCiAgICAg
Q2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICBlbWl0TG9hZChhcmdz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyZDcyMWVi
Nzc5MGIzNzMwMjM3OGZmYWNiOTEyMjcyZGZiOGU3YzRmLi5mNWIzNTY4ZDFkNzU1MDI4NzRmZDY3
YWQ1NWZkOGQ4MmYzYWU3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5oIgog
I2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAj
aW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCkBAIC0xMjE2LDcgKzEyMTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRy
IH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1faXNEZXJpdmVkQ29uc3R1Y3RvciB7IG51bGxwdHIgfTsK
LSAgICAgICAgUmVnaXN0ZXJJRCogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW0xpbmtUaW1l
Q29uc3RhbnRDb3VudF07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJl
Z2lzdGVyc1tudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzXSB7IH07CiAgICAgICAgIFJlZ2lzdGVy
SUQqIG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51
bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9wcm9taXNlUmVnaXN0ZXIgeyBudWxscHRy
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAyZTAzYmUwYjdjNzVkZGIwMjdlYzRlNmY2NTYyMThkOGUwZmU1MWE2
Li43OTQ0NWZhZTViZTMzNDRlNGRiNDA4MmNiZTIwZDY1YzM0NmQ5ZTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogSW1w
b3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRHbG9iYWxQcml2YXRlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRl
TmFtZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2VuZXJhdG9y
Lm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydE1v
ZHVsZSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAx
KTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJndW1lbnRzLmFyZ3VtZW50UmVn
aXN0ZXIoMCksIG1fZXhwcik7CkBAIC05ODUsNyArOTg1LDExIEBAIFJlZ2lzdGVySUQqIEZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIHJl
dHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOworICAgIGlmIChtX2VudHJ5
LnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAg
ICAgICByZXR1cm4gKHRoaXMtPiptX2VudHJ5LmVtaXR0ZXIoKSkoZ2VuZXJhdG9yLCBkc3QpOwor
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChkc3Qs
IG1fZW50cnkubGlua1RpbWVDb25zdGFudCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRCeUlkRGlyZWN0KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTEwMTMsOSArMTAxNywxMCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEJ5SWRE
aXJlY3RQcml2YXRlKEJ5dGVjb2RlRwogCiBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNl
SW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX3Byb21pc2VGaWVsZEZsYWdzKQorICAgIEFTU0VSVChub2RlLT5lbnRyeS50eXBlKCkgPT0g
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUt
PmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX3Byb21pc2VGaWVsZEZsYWdzKQogICAgICAgICByZXR1cm4gSlNQcm9taXNlOjpGaWVsZDo6
RmxhZ3M7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdCkKKyAgICBpZiAo
bm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQpCiAgICAgICAgIHJldHVybiBK
U1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdDsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpGbGFnczsKQEAgLTEw
MjMsMTMgKzEwMjgsMTQgQEAgc3RhdGljIEpTUHJvbWlzZTo6RmllbGQgcHJvbWlzZUludGVybmFs
RmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiAKIHN0YXRpYyBKU0dlbmVy
YXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2lj
Tm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCisgICAgQVNTRVJU
KG5vZGUtPmVudHJ5LnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpF
bWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkKICAgICAgICAg
cmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkTmV4dCkKICAgICAgICAgcmV0
dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhp
cykKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQogICAgICAgICByZXR1cm4g
SlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkK
KyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkKICAgICAgICAgcmV0dXJuIEpT
R2VuZXJhdG9yOjpGaWVsZDo6RnJhbWU7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKQEAgLTEwMzcsMTkgKzEw
NDMsMjAgQEAgc3RhdGljIEpTR2VuZXJhdG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxk
SW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2QKIAogc3RhdGljIEpTQXN5bmNHZW5lcmF0
b3I6OkZpZWxkIGFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmlu
c2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCisgICAgQVNT
RVJUKG5vZGUtPmVudHJ5LnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBl
OjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkKICAgICAg
ICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBpZiAobm9kZS0+
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQogICAg
ICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5vZGUt
PmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5l
cmF0b3JGaWVsZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKICAg
ICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOwotICAgIGlmIChub2Rl
LT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2Vu
ZXJhdG9yRmllbGRGcmFtZSkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkK
ICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKLSAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQorICAgIGlmIChub2RlLT5lbnRyeSgp
LmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3lu
Y0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5l
cmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uOwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVs
ZFF1ZXVlRmlyc3QpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZp
cnN0KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlRmlyc3Q7
Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQorICAgIGlmIChub2RlLT5l
bnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQogICAgICAgICByZXR1cm4gSlNBc3luY0dl
bmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdDsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBAIC00MDk2
LDEwICs0MTAzLDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBs
aW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAYXN5bmNGdW5j
dGlvblJlc3VtZQotICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2
YXRlTmFtZSgpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYXN5bmNGdW5jdGlvblJlc3VtZSA9IGdlbmVyYXRvci5lbWl0R2V0RnJv
bVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJ
Zk5vdEZvdW5kKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1
bWUgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25z
dGFudDo6YXN5bmNGdW5jdGlvblJlc3VtZSk7CiAKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdz
KGdlbmVyYXRvciwgbnVsbHB0ciwgNCk7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQg
PSAwOwpAQCAtNDU3OCwxMSArNDU4Miw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAg
SWRlbnRpZmllclNldCBleGNsdWRlZFNldDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYWRkTWV0
aG9kOwogICAgIGlmIChtX2NvbnRhaW5zUmVzdEVsZW1lbnQgJiYgbV9jb250YWluc0NvbXB1dGVk
UHJvcGVydHkpIHsKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRlTmFtZSgpKTsKLQot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldENvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLm1vdmVMaW5r
VGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlNldCk7CiAKICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CiAgICAgICAgIGV4Y2x1
ZGVkTGlzdCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2V0Q29uc3RydWN0b3IuZ2V0KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGFyZ3MsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC00
NjMzLDExICs0NjMzLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBuZXdPYmplY3QgPSBnZW5lcmF0b3IuZW1pdE5ld09iamVjdChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBsb2Fk
IGFuZCBjYWxsIEBjb3B5RGF0YVByb3BlcnRpZXMKLSAgICAgICAgICAgIGF1dG8gdmFyID0gZ2Vu
ZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Y29weURhdGFQcm9wZXJ0aWVzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
LSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQp
OworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdl
bmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50Ojpj
b3B5RGF0YVByb3BlcnRpZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTQ4MTAsMTEg
KzQ4MDYsNyBAQCBSZWdpc3RlcklEKiBPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0bwogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShzcmMuZ2V0KCksIG1fZXhwcmVzc2lvbik7CiAgICAgCiAgICAgLy8gbG9hZCBhbmQgY2FsbCBA
Y29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zCi0gICAgYXV0byB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5jb3B5RGF0
YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnNQcml2YXRlTmFtZSgpKTsKLSAgICAKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgZ2VuZXJh
dG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdl
dCgpLCB2YXIpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0g
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29w
ZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
b3B5RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0
ciwgTGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zKTsKICAg
ICAKICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAyKTsKICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IGUwZWVmNDkxN2FhNjgxZmFjMjk0Yzk4ODQ5ODI1YjJkOTNmMDBmMWEuLjMzNzhhZDA5MmY2YTI0
MjAzM2NmNDA3NjgzZDkzODk1ZDNkM2NkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02MzQyLDExICs2MzQyLDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7Ci0gICAgICAgICAgICBTcGVjaWFs
OjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKLSAg
ICAgICAgICAgIEFTU0VSVChwb2ludGVySXNDZWxsKHNwZWNpYWxQb2ludGVyKSk7Ci0gICAgICAg
ICAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXIgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPigKLSAgICAg
ICAgICAgICAgICBhY3R1YWxQb2ludGVyRm9yKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
LCBzcGVjaWFsUG9pbnRlcikpOwotICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBvaW50
ZXIgPSBtX2dyYXBoLmZyZWV6ZShhY3R1YWxQb2ludGVyKTsKKyAgICAgICAgICAgIEZyb3plblZh
bHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobV9pbmxpbmVTdGFja1Rv
cC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIub2Zm
c2V0KCkpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRhcmdl
dChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0gZ2V0
KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1ldGFkYXRhKGNv
ZGVCbG9jaykubV9oYXNKdW1wZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IDBkMDQ5OTQ1ODBkOWIzODgxYzkwMmIwMWFiYTNlNjFkOTYwMzZlNTkuLjhl
YmU0OWZlYmJmNTEzNWI1MzVlM2NkZDc2OTY1NjgxNTA1M2RhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNDcxLDExICs0NzEsMTIgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7
CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAg
ICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7Ci0gICAgU3BlY2lhbDo6UG9p
bnRlciBwdHIgPSBieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyOworICAgIEpTVmFsdWUgc3BlY2lh
bFBvaW50ZXIgPSBnZXRDb25zdGFudE9wZXJhbmQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlci5v
ZmZzZXQoKSk7CisgICAgQVNTRVJUKHNwZWNpYWxQb2ludGVyLmlzQ2VsbCgpKTsKICAgICB1bnNp
Z25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXRMYWJlbCk7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJlZ1Qw
KTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1Qw
LCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikpKTsKKyAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVz
dGVkSW1tUHRyKHNwZWNpYWxQb2ludGVyLmFzQ2VsbCgpKSk7CiAgICAgc3RvcmU4KFRydXN0ZWRJ
bW0zMigxKSwgJm1ldGFkYXRhLm1faGFzSnVtcGVkKTsKICAgICBhZGRKdW1wKGp1bXAoKSwgdGFy
Z2V0KTsKICAgICBlcXVhbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDNlMGNlYjQ2OTNhNTg5NWYzYWZlYmM5NjJhOWMx
NDNmMDgyOGM1MzEuLjRlOTQyNDU0NzlmM2Y0NzY5N2E4YjY5M2M1ZGYxZjAxMGViMjMyZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTQ3
OCwxMiArNDc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9m
ZnNldCgpOwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9p
bnRlcjsKKyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5
dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9p
bnRlci5pc0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1pdExvYWQoc3Jj
LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdU
MSk7Ci0gICAgSnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1Q
dHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRyKSkpOworICAgIEp1bXAgZXF1YWwg
PSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHNwZWNpYWxQb2ludGVyLmFz
Q2VsbCgpKSk7CiAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwogICAgIHN0b3JlOChUcnVzdGVkSW1t
MzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDMzN2VlMjJiNDkzZDBiNWFlNGQzNzQyZGIxMjJmNTIz
YmVhZjNmNmEuLjRjNjBkYmVlMTMzYWViZjY5OWQyNGZjOTc5M2E4NDQyZTIxMTE4ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCkBAIC0xNzEwLDEyICsxNzEwLDEwIEBAIHVuZGVmaW5lZE9yTnVsbEp1bXBP
cChqbnVuZGVmaW5lZF9vcl9udWxsLCBPcEpudW5kZWZpbmVkT3JOdWxsLAogCiBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQdHIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldChtX3ZhbHVlLCB0MCkKLSAgICBnZXR1KHNp
emUsIE9wSm5lcVB0ciwgbV9zcGVjaWFsUG9pbnRlciwgdDEpCi0gICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQyCisg
ICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQzLCB0MikKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxU
YWcsIC5vcEpuZXFQdHJCcmFuY2gKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVjaWFs
UG9pbnRlcnNbdDIsIHQxLCA0XSwgdDEKLSAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQyLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKIC5vcEpuZXFQdHJCcmFuY2g6CiAg
ICAgbWV0YWRhdGEodDUsIHQyKQogICAgIHN0b3JlYiAxLCBPcEpuZXFQdHI6Ok1ldGFkYXRhOjpt
X2hhc0p1bXBlZFt0NV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMDQ0M2YwY2ZlOGIzNzI3ZWM5NGJkNGQ1ODk3
MDk2MTBiNDI5Yzg2YS4uMDVlOGZkYTNkZTVmNGJiNTMxOTY3ZDMwODg5Yjc2NWI3YWRhMmZlMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTE4MTYsMTEgKzE4MTYsOSBAQCB1bmRlZmluZWRPck51bGxKdW1wT3Ao
am51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9yTnVsbCwKIAogbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1ZSwgdDApCi0gICAgZ2V0dShzaXpl
LCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQotICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgotICAg
IGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3NwZWNpYWxQb2ludGVyc1t0MiwgdDEsIFB0clNpemVd
LCB0MQotICAgIGJwbmVxIHQxLCBbY2ZyLCB0MCwgOF0sIC5vcEpuZXFQdHJUYXJnZXQKKyAgICBn
ZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MSwgdDIpCisgICAgYnBuZXEgdDIsIFtjZnIsIHQwLCA4XSwgLm9wSm5lcVB0clRhcmdldAog
ICAgIGRpc3BhdGNoKCkKIAogLm9wSm5lcVB0clRhcmdldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggY2FmMDMwODI5MjFkMTI5NWEwNDI4ZGIwY2JlMDQx
MmMzYWNmMGM5OS4uY2M1OTdmNWI0NGI5ZTcxNzlmNWRlNTViMGVlZDJiZjg2OTA1ZWQ4NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIwMCw4ICsyMDAs
OSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKIAog
ICAgICAgICBpZiAoaWRlbnQuaXNTeW1ib2woKSkgewotICAgICAgICAgICAgaWYgKEJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgZW1pdHRlciA9IG1fdm0uYnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6VHlwZTo6Q29uc3RhbnQsIGxvY2F0aW9uLCBlbWl0dGVyLCBpZGVudCwgbnVsbHB0ciwgc3Rh
cnQsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYXV0byBlbnRyeSA9IG1fdm0uYnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudCk7CisgICAgICAgICAgICBpZiAoZW50cnkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQsIGxvY2F0aW9u
LCBlbnRyeS52YWx1ZSgpLCBpZGVudCwgbnVsbHB0ciwgc3RhcnQsIHN0YXJ0LCBlbmQpOwogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUmVzb2x2ZU5vZGUo
bG9jYXRpb24sIGlkZW50LCBzdGFydCk7CkBAIC0xMzg0LDggKzEzODUsOCBAQCBFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbgogICAgIGlmIChmdW5jLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKSB7
CiAgICAgICAgIEFTU0VSVCghaXNPcHRpb25hbENhbGwpOwogICAgICAgICBCeXRlY29kZUludHJp
bnNpY05vZGUqIGludHJpbnNpYyA9IHN0YXRpY19jYXN0PEJ5dGVjb2RlSW50cmluc2ljTm9kZSo+
KGZ1bmMpOwotICAgICAgICBpZiAoaW50cmluc2ljLT50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjpUeXBlOjpDb25zdGFudCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6
OkZ1bmN0aW9uLCBsb2NhdGlvbiwgaW50cmluc2ljLT5lbWl0dGVyKCksIGludHJpbnNpYy0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAgICBp
ZiAoaW50cmluc2ljLT50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpDb25z
dGFudCAmJiBpbnRyaW5zaWMtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnk6OlR5cGU6OkVtaXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpG
dW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW50cnkoKSwgaW50cmluc2ljLT5pZGVudGlm
aWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgfQogCiAgICAg
aWYgKGZ1bmMtPmlzT3B0aW9uYWxDaGFpbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDc1ODlkN2M5MWU4OTVlYjJkOTk2MzNk
YmY1YjRhYTVkMjZhZWI4NGUuLjljN2I5YTI4MjA3M2M1NzZhNjM0OWU0ZDY5YzIyMGJhNWNjZGVh
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oCkBAIC00MTMsMTAgKzQxMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
KFR5cGUgdHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRW1pdHRlclR5cGUg
ZW1pdHRlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUoVHlwZSB0eXBlLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBl
bnRyeSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9lbWl0dGVyKGVtaXR0ZXIpCisgICAgICAg
ICwgbV9lbnRyeShlbnRyeSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1f
YXJncyhhcmdzKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCmluZGV4IGFhNDQ4NjY0ZDFkNDgxNDBkMTBhNDU5MGMwNjdkNTAxYThiNjI4N2Yu
LmZhZDUzMjhhMmI5NDQzN2RiMmRhZTdmMWM4NmIyODljMWEzNDFmYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTk0NCwxNCArOTQ0LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgRnVuY3Rpb24KICAgICAgICAgfTsKIAotICAgICAgICB0eXBlZGVmIFJl
Z2lzdGVySUQqIChCeXRlY29kZUludHJpbnNpY05vZGU6OiogRW1pdHRlclR5cGUpKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwotCi0gICAgICAgIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZShUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFbWl0dGVyVHlwZSwgY29uc3QgSWRlbnRp
ZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOworICAgICAgICBCeXRlY29kZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnksIGNvbnN0IElkZW50aWZp
ZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKIAogICAgICAgICBib29sIGlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotICAgICAgICBFbWl0dGVyVHlwZSBlbWl0dGVyKCkgY29uc3QgeyByZXR1cm4g
bV9lbWl0dGVyOyB9CisgICAgICAgIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5IGVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAjZGVmaW5lIEpTQ19E
RUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlMobmFtZSkgUmVnaXN0ZXJJRCogZW1p
dF9pbnRyaW5zaWNfIyNuYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwpAQCAt
OTY0LDcgKzk2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNGdW5jdGlv
bkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnVuY3Rpb247
IH0KIAotICAgICAgICBFbWl0dGVyVHlwZSBtX2VtaXR0ZXI7CisgICAgICAgIEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OkVudHJ5IG1fZW50cnk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsKICAgICAgICAgVHlwZSBt
X3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
aW5kZXggNjAzNWE0OTA5MjZjNGFlNWZjMzMyN2FmZmVkZjQyNzZiOTNmMDY1Ny4uZWI5ZDk5M2Iy
NTE0YzY3MjllMTAyZjY1ZTcyMGE3MjhhZjJjMjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTgwMSw3ICsxODAxLDYgQEAgY2xhc3Mg
Q2FjaGVkQ29kZUJsb2NrIDogcHVibGljIENhY2hlZE9iamVjdDxDb2RlQmxvY2tUeXBlPiB7CiBw
cml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwotICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtU
aW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNvbnN0YW50czsKIAogICAgIHVuc2lnbmVkIG1f
dXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKQEAgLTIwMzks
OSArMjAzOCw2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVjdHVyZSoKIHRlbXBsYXRlPHR5cGVuYW1lIENv
ZGVCbG9ja1R5cGU+CiBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9j
a1R5cGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVW5saW5rZWRDb2RlQmxvY2smIGNvZGVC
bG9jaykgY29uc3QKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291
bnQ7IGktLTspCi0gICAgICAgIGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRzW2ldID0gbV9s
aW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuZGVjb2RlKGRl
Y29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50UmVnaXN0ZXJzLCAmY29kZUJsb2NrKTsKICAgICBt
X2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5kZWNvZGUoZGVjb2RlciwgY29kZUJs
b2NrLm1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKICAgICBtX2V4cHJlc3Np
b25JbmZvLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9leHByZXNzaW9uSW5mbyk7CkBAIC0y
MjA3LDkgKzIyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVC
bG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIG1fY29kZUdlbmVy
YXRpb25Nb2RlID0gY29kZUJsb2NrLm1fY29kZUdlbmVyYXRpb25Nb2RlOwogICAgIG1fY29kZVR5
cGUgPSBjb2RlQmxvY2subV9jb2RlVHlwZTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IExpbmtU
aW1lQ29uc3RhbnRDb3VudDsgaS0tOykKLSAgICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tpXSA9
IGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRzW2ldOwotCiAgICAgbV9tZXRhZGF0YS5lbmNv
ZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fbWV0YWRhdGEuZ2V0KCkpOwogICAgIG1fcmFyZURhdGEu
ZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX3JhcmVEYXRhLmdldCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQ3ZmNkMzM4YjQwNTk4MzZj
ZDM2ODFlODRlMDFmYWI3NDMzOTc2NzQuLjI1OTllMmM1NjI5MTBmOTgxNDZjOTE4YjUyMjQ5Yzg1
NWJkMmE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
QEAgLTEyOSw3ICsxMjksOCBAQCBib29sIGlzSW50NTIoZG91YmxlKTsKIGVudW0gY2xhc3MgU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uIDogdWludDhfdCB7CiAgICAgT3RoZXIsCiAgICAgSW50ZWdl
ciwKLSAgICBEb3VibGUKKyAgICBEb3VibGUsCisgICAgTGlua1RpbWVDb25zdGFudCwKIH07CiAK
IGNsYXNzIEpTVmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGM2NWIwYjM3MGQwMjU3NWUwMGIxZjUwNDkwOTkxMDdlNzcw
ZTcyOGQuLmE0OTJlYmNmNTc3NDc3YmUxMzNhZjkzMGYxMTk5MDQ3Nzc0ZDNlZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTk5
MywxMDQgKzk5MywxMDggQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX3Jlc29sdmVQ
cm9taXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZXNvbHZlUHJvbWlzZVByaXZhdGVGdW5jdGlv
bik7CiAgICAgbV9yZWplY3RQcm9taXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZWplY3RQcm9t
aXNlUHJpdmF0ZUZ1bmN0aW9uKTsKIAotICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9i
YWxzW10gPSB7Ci0jZGVmaW5lIElOSVRfUFJJVkFURV9HTE9CQUwodmFyTmFtZSwgZnVuY05hbWUs
IGNvZGUpIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5mdW5jTmFtZSAjIyBQcml2YXRlTmFtZSgpLCB2YXJOYW1lICMjIFByaXZhdGVGdW5jdGlvbiwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkK
KyAgICAvLyBGSVhNRTogV2lsbCBtYWtlIHRoZW0gTGF6eVByb3BlcnR5IQorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3OTUKKworI2RlZmluZSBJTklU
X1BSSVZBVEVfR0xPQkFMKHZhck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBsaW5rVGltZUNvbnN0YW50
KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmNOYW1lKS5zZXQodm0sIHRoaXMsIHZhck5hbWUgIyMgUHJp
dmF0ZUZ1bmN0aW9uKTsKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVf
R0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkKICN1bmRlZiBJTklUX1BSSVZBVEVfR0xP
QkFMCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpz
TmFOKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5wcm9wZXJ0eUlzRW51bWVyYWJsZVByaXZhdGVOYW1lKCksIHByaXZh
dGVGdW5jUHJvcGVydHlJc0VudW1lcmFibGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLm93bktleXNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY093bktleXMsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmltcG9ydE1vZHVsZVByaXZhdGVOYW1l
KCksIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1ZUpvYiksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgpLCBwcml2YXRl
RnVuY01ha2VUeXBlRXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5n
dGgsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlHZXRP
cmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0
T3JpZ2luYWxDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkudHlwZWRBcnJheVNvcnRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTb3J0
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1R5cGVkQXJyYXlWaWV3
UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5U3ViYXJyYXlDcmVhdGVQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNJc0JvdW5kRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmhhc0luc3RhbmNlQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIHByaXZhdGVG
dW5jSGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pbnN0YW5jZU9mUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJbnN0YW5jZU9m
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5CdWlsdGluTG9nUHJpdmF0
ZU5hbWUoKSwgYnVpbHRpbkxvZywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuQnVpbHRpbkRlc2NyaWJlUHJpdmF0ZU5hbWUoKSwgYnVpbHRpbkRlc2NyaWJlLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5SZWdFeHBQcml2YXRlTmFtZSgpLCByZWdF
eHBDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHJ1
bmNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1RydW5jLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0cnVjdG9y
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnRlcm5hbFByb21pc2VQ
cml2YXRlTmFtZSgpLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVmYXVsdFByb21pc2VUaGVuUHJpdmF0ZU5hbWUoKSwg
cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucmVwZWF0Q2hhcmFjdGVyUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVy
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXJyYXlTcGVjaWVzQ3Jl
YXRlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmco
KSwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaXNBcnJheVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3ItPmdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlTbG93UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNJc0FycmF5U2xvdywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY29u
Y2F0TWVtY3B5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGVuZE1lbWNweVByaXZhdGVOYW1lKCks
IHByaXZhdGVGdW5jQXBwZW5kTWVtY3B5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlclByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlz
ZVJlamVjdGlvblRyYWNrZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlNldFByaXZhdGVOYW1l
KCksIHNldENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS50aGlzVGltZVZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgbGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50OjppbXBvcnRNb2R1bGUpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNJ
bXBvcnRNb2R1bGUpOworICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCisgICAgbGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRIZWFkKS5zZXQodm0sIHRoaXMsIHBy
aXZhdGVGdW5jTWFwQnVja2V0SGVhZCk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjptYXBCdWNrZXROZXh0KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jTWFwQnVja2V0
TmV4dCk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRL
ZXkpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkpOworICAgIGxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0VmFsdWUpLnNldCh2bSwgdGhpcywg
cHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGlt
ZUNvbnN0YW50OjpzZXRCdWNrZXRIZWFkKS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jU2V0QnVj
a2V0SGVhZCk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNr
ZXROZXh0KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCk7CisgICAgbGlu
a1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXRLZXkpLnNldCh2bSwgdGhp
cywgcHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXkpOworCisgICAgbGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZSkuc2V0KHZtLCB0aGlzLCBwcml2YXRl
RnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6Om93bktleXMpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNPd25LZXlzKTsKKyAg
ICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmVucXVldWVKb2IpLnNldCh2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5x
dWV1ZUpvYikpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6bWFrZVR5
cGVFcnJvcikuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY01ha2VUeXBlRXJyb3IpOworICAgIGxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheUxlbmd0aCkuc2V0KHZt
LCB0aGlzLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGgpOworICAgIGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpLnNl
dCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcik7
CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U29ydCku
c2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTb3J0KTsKKyAgICBsaW5rVGltZUNv
bnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmlzVHlwZWRBcnJheVZpZXcpLnNldCh2bSwgdGhpcywg
cHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3KTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtU
aW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSkuc2V0KHZtLCB0aGlzLCBwcml2
YXRlRnVuY1R5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSk7CisgICAgbGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50Ojppc0JvdW5kRnVuY3Rpb24pLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1
bmNJc0JvdW5kRnVuY3Rpb24pOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6aGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jSGFz
SW5zdGFuY2VCb3VuZEZ1bmN0aW9uKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6Omluc3RhbmNlT2YpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKTsK
KyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5Mb2cpLnNldCh2
bSwgdGhpcywgYnVpbHRpbkxvZyk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0
YW50OjpCdWlsdGluRGVzY3JpYmUpLnNldCh2bSwgdGhpcywgYnVpbHRpbkRlc2NyaWJlKTsKKyAg
ICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCkuc2V0KHZtLCB0aGlz
LCByZWdFeHBDb25zdHJ1Y3Rvcik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0
YW50Ojp0cnVuYykuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY1RydW5jKTsKKyAgICBsaW5rVGlt
ZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpLnNldCh2bSwgdGhpcywgcHJvbWlz
ZUNvbnN0cnVjdG9yKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Oklu
dGVybmFsUHJvbWlzZSkuc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7
CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRo
ZW4pLnNldCh2bSwgdGhpcywgcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkpOworCisgICAgbGlu
a1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZXBlYXRDaGFyYWN0ZXIpLnNldCh2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJv
dG9GdW5jUmVwZWF0Q2hhcmFjdGVyKSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjphcnJheVNwZWNpZXNDcmVhdGUpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKSk7
CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojppc0FycmF5KS5zZXQodm0s
IHRoaXMsIGFycmF5Q29uc3RydWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
aXNBcnJheSkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aXNBcnJh
eVNsb3cpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyk7CisgICAgbGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojpjb25jYXRNZW1jcHkpLnNldCh2bSwgdGhpcywg
cHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6YXBwZW5kTWVtY3B5KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jQXBwZW5kTWVt
Y3B5KTsKKworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aG9zdFByb21p
c2VSZWplY3Rpb25UcmFja2VyKS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIp
KTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbikuc2V0KHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6
OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgIGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6U2V0KS5zZXQodm0sIHRoaXMsIHNldENvbnN0
cnVjdG9yKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnRoaXNUaW1l
VmFsdWUpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlKTsKKworICAgIGxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aXNDb25zdHJ1Y3Rvcikuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc0Nv
bnN0cnVjdG9yLCBOb0ludHJpbnNpYykpOworCisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGlt
ZUNvbnN0YW50OjpyZWdFeHBQcm90b0ZsYWdzR2V0dGVyKS5zZXQodm0sIHRoaXMsIHJlZ0V4cFBy
b3RvRmxhZ3NHZXR0ZXIpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6
cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxH
ZXR0ZXIpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJv
dG9JZ25vcmVDYXNlR2V0dGVyKS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdl
dHRlcik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90
b011bHRpbGluZUdldHRlcikuc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b011bHRpbGluZUdldHRl
cik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1Nv
dXJjZUdldHRlcikuc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1NvdXJjZUdldHRlcik7CisgICAg
bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1N0aWNreUdldHRl
cikuc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1N0aWNreUdldHRlcik7CisgICAgbGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpLnNldCh2
bSwgdGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKKworICAgIC8vIFJlZ0V4cC5wcm90
b3R5cGUgaGVscGVycy4KKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cEJ1aWx0aW5FeGVjKS5zZXQodm0sIHRoaXMsIGJ1aWx0aW5SZWdFeHBFeGVjKTsKKyAgICBs
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cENyZWF0ZSkuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBlc1NwZWNSZWdF
eHBDcmVhdGUsIE5vSW50cmluc2ljKSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50Ojppc1JlZ0V4cCkuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMpKTsKKyAgICBsaW5r
VGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cE1hdGNoRmFzdCkuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90
b0Z1bmNNYXRjaEZhc3QsIFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYykpOworICAgIGxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwU2VhcmNoRmFzdCkuc2V0KHZtLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1
bmNTZWFyY2hGYXN0KSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojpy
ZWdFeHBTcGxpdEZhc3QpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KSk7CisgICAgbGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlKS5z
ZXQodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnJlcGxhY2VTeW1ib2wpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6OnJlZ0V4cFRlc3RGYXN0KS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0
RmFzdEludHJpbnNpYykpOworCisgICAgLy8gU3RyaW5nLnByb3RvdHlwZSBoZWxwZXJzLgorICAg
IGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6c3RyaW5nSW5jbHVkZXNJbnRlcm5h
bCkuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygp
LCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQo
TGlua1RpbWVDb25zdGFudDo6c3RyaW5nU3BsaXRGYXN0KS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFz
dCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6c3RyaW5nU3Vic3Ry
SW50ZXJuYWwpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBT
dHJpbmcoKSwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKSk7CisKKyAgICAvLyBGdW5jdGlv
biBwcm90b3R5cGUgaGVscGVycy4KKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6Om1ha2VCb3VuZEZ1bmN0aW9uKS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgNSwgU3RyaW5nKCksIG1ha2VCb3VuZEZ1bmN0aW9uKSk7CisgICAgbGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50OjpoYXNPd25MZW5ndGhQcm9wZXJ0eSkuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBoYXNPd25MZW5n
dGhQcm9wZXJ0eSkpOworCiAjaWYgRU5BQkxFKElOVEwpCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5kYXRlVGltZUZvcm1hdFByaXZh
dGVOYW1lKCksIHByaXZhdGVGdW5jRGF0ZVRpbWVGb3JtYXQsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmRh
dGVUaW1lRm9ybWF0KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jRGF0ZVRpbWVGb3JtYXQpOwog
I2VuZGlmIC8vIEVOQUJMRShJTlRMKQotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1
Y3RvciwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0K
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b0ZsYWdz
R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90
b0dsb2JhbEdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0lnbm9yZUNhc2VH
ZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVy
UHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvU291cmNlR2V0dGVyUHJpdmF0ZU5h
bWUoKSwgcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhw
UHJvdG9TdGlja3lHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZ0V4cFByb3RvVW5pY29kZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvVW5pY29k
ZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8v
IFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cEJ1aWx0aW5FeGVjUHJpdmF0ZU5h
bWUoKSwgYnVpbHRpblJlZ0V4cEV4ZWMsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlZ0V4cENyZWF0ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMiwgU3RyaW5nKCksIGVzU3BlY1JlZ0V4cENyZWF0ZSwgTm9JbnRyaW5zaWMpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1JlZ0V4cFByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhw
LCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJl
Z0V4cE1hdGNoRmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdCwgUmVnRXhwTWF0Y2hGYXN0SW50
cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU2Vh
cmNoRmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3Ry
aW5nKCksIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBTcGxpdEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3Qp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b3R5cGVT
eW1ib2xSZXBsYWNlUHJpdmF0ZU5hbWUoKSwgbV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJvbCksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFRlc3RGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3Qs
IFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotCi0gICAgICAgIC8vIFN0cmluZy5wcm90b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ0lu
Y2x1ZGVzSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDEsIFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ1NwbGl0RmFzdFByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVu
Y1NwbGl0RmFzdCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmlu
Z1N1YnN0ckludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAyLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIEZ1bmN0aW9uIHByb3RvdHlwZSBo
ZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFrZUJvdW5kRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDUsIFN0cmluZygpLCBtYWtlQm91bmRGdW5jdGlvbiksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc093bkxlbmd0aFByb3BlcnR5UHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgaGFzT3du
TGVuZ3RoUHJvcGVydHkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAg
ICAgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldEhlYWRQcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLm1hcEJ1Y2tldE5leHRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1
Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tl
dEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRWYWx1ZVByaXZhdGVOYW1lKCksIHBy
aXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnNldEJ1Y2tldEhlYWRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEhl
YWQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldE5leHRQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVG
dW5jU2V0QnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkK
LSAgICAgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkud2ViQXNzZW1ibHlDb21w
aWxlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLndlYkFzc2VtYmx5SW5zdGFu
dGlhdGVTdHJlYW1pbmdJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRl
cm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAvLyBXZWJBc3Nl
bWJseSBTdHJlYW1pbmcgQVBJCisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
Ojp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkuc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUNvbXBpbGVT
dHJlYW1pbmdJbnRlcm5hbCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKS5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5SW5z
dGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkpOwogI2VuZGlmCisKKyAgICBsaW5rVGltZUNvbnN0
YW50KExpbmtUaW1lQ29uc3RhbnQ6OmNhbGxGdW5jdGlvbikuc2V0KHZtLCB0aGlzLCBtX2NhbGxG
dW5jdGlvbi5nZXQoKSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojph
cHBseUZ1bmN0aW9uKS5zZXQodm0sIHRoaXMsIG1fYXBwbHlGdW5jdGlvbi5nZXQoKSk7CisgICAg
bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpLnNldCh2bSwgdGhpcywg
b2JqZWN0Q29uc3RydWN0b3IpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6QXJyYXkpLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgbGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKS5zZXQodm0s
IHRoaXMsIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKSk7CisKKyAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0geworICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5J
bmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQo
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmFzc2VydFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MSwgU3RyaW5nKCksIGFzc2VydENhbGwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCiAjZW5kaWYKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywg
V1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCi0gICAgbV9zcGVjaWFsUG9p
bnRlcnNbU3BlY2lhbDo6Q2FsbEZ1bmN0aW9uXSA9IG1fY2FsbEZ1bmN0aW9uLmdldCgpOwotICAg
IG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25dID0gbV9hcHBseUZ1bmN0
aW9uLmdldCgpOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0cnVj
dG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6
OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLQotICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlw
ZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKLQogICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VEb2xsYXJWTSgpKSkKICAgICAgICAgZXhwb3NlRG9s
bGFyVk0odm0pOwogCkBAIC0xNzk0LDYgKzE3OTgsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhp
c09iamVjdC0+bV9wcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKwor
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fbGlua1RpbWVDb25zdGFudHMs
IG51bWJlck9mTGlua1RpbWVDb25zdGFudHMpOwogICAgIAogI2lmIEVOQUJMRShTSEFSRURfQVJS
QVlfQlVGRkVSKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlC
dWZmZXJQcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggODkyNmFhYWRmZDY4ZDFhZjEyOTI4MDRlMmQwMzQyMmQ3ZmY0NGY2
NS4uNmFjN2NiZjE2MzdkYWFlZmE5NjQ5NTI5NTc0NTA4MDUyMzk4MzQ4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkdldFZNLmgiCiAj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkpTQ2xhc3NSZWYuaCIKQEAgLTQyLDcgKzQzLDYgQEAKICNpbmNsdWRl
ICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cEdsb2JhbERhdGEuaCIKICNpbmNsdWRl
ICJSdW50aW1lRmxhZ3MuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUg
IlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIlZNLmgiCkBAIC00MzAsOCArNDMwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlf
VFlQRShERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFKQogI3VuZGVmIERFQ0xBUkVf
VFlQRURfQVJSQVlfVFlQRV9TVFJVQ1RVUkUKIAotICAgIEpTQ2VsbCogbV9zcGVjaWFsUG9pbnRl
cnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBM
TEludCBhbmQgSklULgotICAgIEpTQ2VsbCogbV9saW5rVGltZUNvbnN0YW50c1tMaW5rVGltZUNv
bnN0YW50Q291bnRdOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2xpbmtUaW1lQ29uc3Rh
bnRzW251bWJlck9mTGlua1RpbWVDb25zdGFudHNdOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKIApA
QCAtOTExLDE2ICs5MTAsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIGxhenlUeXBlZEFycmF5U3RydWN0
dXJlKHR5cGUpLmNvbnN0cnVjdG9yKHRoaXMpOwogICAgIH0KIAotICAgIEpTQ2VsbCogYWN0dWFs
UG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCisgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+JiBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFu
dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsK
LSAgICAgICAgcmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwotICAgIH0KLSAgICBK
U0NlbGwqIGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQot
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlw
ZSk7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAg
ICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICAgICAgcmV0dXJuIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmtUaW1lQ29uc3RhbnQp
XTsKICAgICB9CiAKICAgICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludCgpIHsgcmV0dXJuIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQuZ2V0
KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382691</attachid>
            <date>2019-11-02 21:47:42 -0700</date>
            <delta_ts>2019-11-02 21:56:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191102214741.patch</filename>
            <type>text/plain</type>
            <size>103015</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTUxMGI1ZTBjMjlhZTc0NjFmZThmMWIyZGJlMjE2NDk4Mzc4ZDFlLi4wNjgwNmI0MjQxYTAzMjE3
MWM0OGU0ZmM2ZDZjZjkwYmFjZWQyODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0xMS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0YW50IG1lY2hhbmlzbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAg
ICAgKG5ha2VkQ29uc3RydWN0b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9y
LkludGVybmFsUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UucmVq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuSW50ZXJuYWxQcm9taXNl
LnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDb25z
dGFudHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
bG9va3VwIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpF
bnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5Ojp0
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50
cnk6OmxpbmtUaW1lQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6ZW1pdHRlciBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6
CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaC4KKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpyZWdp
c3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OnByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlND
OjpnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjphc3luY0dlbmVy
YXRvckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRyKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2puZXFfcHRyKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVz
b2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZSk6CisgICAgICAgICogcGFy
c2VyL05vZGVzLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAg
IChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsaW5rVGlt
ZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFjdHVhbFBvaW50ZXJG
b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6anNDZWxsRm9yTGlu
a1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisKIDIwMTktMTEtMDIgIFJvYmluIE1vcmlzc2V0ICA8
cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgb2ZmbGluZSBhc3NlbWJsZXIgaXMg
d3JvbmcgYWJvdXQgd2hpY2ggaW1tZWRpYXRlcyBhcmUgc3VwcG9ydGVkIGJ5IGFuZC9vci94b3Ig
b24gQVJNNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMzlhNDg0ZDk0
M2M1ZDgwNzgwN2E4NWUwZGIyMDBhZDJiN2JiYThjLi45YWU3N2I2M2ZkM2MwNDI2ODAxOTkwNTkz
N2ZiOTMxYzIzMDUwMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
MjIsNiArNTIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCiAgICAgYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKICAgICBieXRlY29kZS9M
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCisgICAgYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
CiAgICAgYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGIzMTVjNGVmNmRkN2QzNDc5MzU0MjE1NzJj
NjBjZWVlOTViNGE2NS4uYWI0ZGVkMzg5NDIwYzgxNGRkZjQ0NTAyNjcyYmY3YWJmY2E4ZWRkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Miw3ICszNjIsNiBAQAogCQkwRjRG
ODI4QzFFMzFCOTc2MDA3NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEY4
MjhBMUUzMUI5NzEwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
ci5oICovOyB9OwogCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xv
YmJlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjUwQUYzQjE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmgg
Ki87IH07CiAJCTBGNTUxM0E2MUQ1QTY4MkMwMEMzMkJEOCAvKiBGcmVlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTEzQTUxRDVBNjgyQTAw
QzMyQkQ4IC8qIEZyZWVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDFC
MDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMg
LyogVG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAw
RjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODEzLDYgKzE4MTIsNyBAQAogCQlFMzVDQTE1
NDFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyog
RE9NSklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0Ex
NTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDcz
QUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzYzN0VFOTIzNkU1NkIwMDA5NkJEMEEgLyog
TGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzZCNzY3
MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0
RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjU4Niw4ICsyNTg2LDYgQEAKIAkJMEY1MEFGM0IxOTNF
OEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgcGF0aCA9IGRm
Zy9ERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NTEzQTUxRDVBNjgyQTAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyZWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNTUxM0E3MUQ1QTY4Q0IwMEMzMkJEOCAvKiBGcmVlTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmVlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjaWFsUG9pbnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNTU0MUIwMTYxM0MxRkIwMENFM0Uy
NSAvKiBTcGVjaWFsUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
cGVjaWFsUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1OTg5NzE3
Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9O
YXRpdmVGcm9tVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUMxOTMx
NzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZH
QWJzdHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYx
MTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDkzNyw2ICs0OTM1LDggQEAKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5r
VGltZUNvbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExp
bmtUaW1lQ29uc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2
RTIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRy
eVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNy
ZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ3JlYXRp
b25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjQwLDYgKzgyNDAsOCBA
QAogCQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkw
RkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICov
LAogCQkJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5oICovLAorCQkJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50
LmNwcCAqLywKKwkJCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFu
dC5oICovLAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5m
by5oICovLAogCQkJCTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAogCQkJCTUzRkEyQUUwMUNGMzdG
M0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQuaCAqLywKQEAgLTgyODcsOCArODI4OSw2IEBACiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJC
MTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3
NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5
Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKLQkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovLAotCQkJCTBGNTU0MUIwMTYxM0MxRkIwMENFM0Uy
NSAvKiBTcGVjaWFsUG9pbnRlci5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAv
KiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0
cnVjdHVyZVNldC5jcHAgKi8sCkBAIC04OTMwLDcgKzg5MzAsNiBAQAogCQkJCTBGNzI1Q0E4MUM1
MDNERUQwMEFEOTQzQSAvKiBCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMzk1QzcwNzIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFk
Q29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNzExRjIzQTVBMTAwMjlEOTFEIC8qIEIz
RW5zdXJlTG9vcFByZUhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUyMjkyN0Q1MjM1RkQw
QjkwMDVDQjE2OSAvKiBHQ01lbW9yeU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
MTgwNDVDMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2OTcxRUExRDkyRjQyNDAwQkEwMkE1IC8qIEIzRmVuY2VWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2QjhBRTUxQzRFRkUxNzAwOTY5MDUyIC8qIEIzRml4U1NBLmggaW4gSGVh
ZGVycyAqLywKQEAgLTk0NTIsNiArOTQ1MSw3IEBACiAJCQkJMEYyQjY2QUUxN0I2QjU0NTAwQTdB
RTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZBRjE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5n
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjI5MjdENTIzNUZEMEI5MDA1Q0IxNjkgLyogR0NNZW1v
cnlPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3MTUzMTFFQjI4QkVFMDBBMTY0
NUQgLyogR0NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRFOEVCMDE4QkZGQkJCMDA1
NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjEx
OEJGRkJCRTAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTk4NDcsNiArOTg0Nyw3IEBACiAJCQkJQkMxOEM0MzEwRTE2RjVDRDAwQjM0NDYwIC8q
IExleGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyog
TGV4ZXIubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcg
LyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2MzdFRTkyMzZFNTZCMDAwOTZC
RDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RTJFQTZCMEZC
NDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MERF
OUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMTAwLDcgKzEwMTAxLDYgQEAKIAkJCQkwRkRFODdGQzFERkU2RTUxMDA2
NEMzOTAgLyogU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5r
SklULmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3Bl
Y2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5
NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NUY2QkMxOEM1NTNG
RTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYz
QUM3NTIxODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjOTA4YWZiNTBlMDVjMThjZTZkZTFiMWQ3
Y2Q2NWQ2YzU4OGRlMzI4Li41MTkyMWQ3MTg2MDliYTFlN2I0ODE0MTA2MzQ3YWVkMjJlODYwODgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNDQsNiArMjQ0LDcgQEAgYnl0ZWNv
ZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL0p1bXBUYWJsZS5jcHAK
IGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHAKIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5jcHAKIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCiBieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZS5jcHAKQEAgLTI2Myw3ICsyNjQsNiBAQCBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKLWJ5dGVjb2RlL1NwZWNpYWxQb2lu
dGVyLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IGRkMzNj
YTgwMzZhMzBiZjY0ZTA4YTBhMzg3ZWUxYjViNzExYTc4ZjEuLmQ0M2U0OGYwYmEzMWViZGNmOGJl
ZDE4YjZlOWFiMGI4ZGJmNTYyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
SlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShtYWNybykg
XAogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUo
bWFjcm8pIFwKICAgICBtYWNybyhhZGQpIFwKKyAgICBtYWNybyhhcHBseUZ1bmN0aW9uKSBcCiAg
ICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHRJbmRleCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0
aW9uS2luZCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JOZXh0KSBcCkBAIC01Miw2ICs1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JLaW5kKSBcCiAgICAg
bWFjcm8oYXJyYXlTcGVjaWVzQ3JlYXRlKSBcCiAgICAgbWFjcm8oYXNzZXJ0KSBcCisgICAgbWFj
cm8oY2FsbEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY2hhckNvZGVBdCkgXAogICAgIG1hY3JvKGV4
ZWN1dG9yKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCkBAIC03Myw2ICs3NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKICAgICBtYWNybyhvd25L
ZXlzKSBcCiAgICAgbWFjcm8oU2V0KSBcCisgICAgbWFjcm8odGhyb3dUeXBlRXJyb3JGdW5jdGlv
bikgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlMZW5ndGgpIFwKICAgICBtYWNybyh0eXBlZEFycmF5
U29ydCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVj
dG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rv
ci5qcwppbmRleCAzMGZjNjZlNGI4OWYyZWEwYmQ2OWE3YjgxZGUxMzg1MGYwMWNkYjc0Li42NmY5
NTFmYjRmYzZkMWM2NTFlMDMwNzcwZGVkNTE1ZTkwZGViOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKQEAgLTIzNywx
OSArMjM3LDE2IEBAIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFyIHByb21pc2Ug
PSBAY3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyBmYWxzZSk7CiAg
ICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZhciBAcmVqZWN0
ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEByZWplY3RQcm9t
aXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCBy
ZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigKICAgICAgICAg
ICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2Fw
dHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWplY3QpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29uKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rp
b25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAgICAgfSk7CiAg
ICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7CisgICAgICAgIEBy
ZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwg
ZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMjY2LDE5ICsyNjMsMTYg
QEAgZnVuY3Rpb24gSW50ZXJuYWxQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZhciBwcm9taXNlID0g
QGNyZWF0ZVByb21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gdHJ1ZSk7CiAgICAg
dmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZhciBAcmVqZWN0ID0g
ZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNl
V2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFz
b24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigKICAgICAgICAgICAg
IGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
QHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVy
ZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWplY3QpOworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29uKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25D
YWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAgICAgfSk7CiAgICAg
fSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7CisgICAgICAgIEByZWpl
Y3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgZXJy
b3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggYWY4MDc2OTMzMmM5Y2I1
MGUyMmNjMzNkYWM3NDVhMmRiZTBmZTMwNC4uODU4YWI5MDUwMmU4NGQ3MDc5MTUzMjVmNjkzZWUz
ZDVkNTg1YzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCkBAIC0xMzYsNiArMTM2LDkgQEAgdm9pZCBDb2RlQmxvY2tCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OmR1bXBDb25zdGFudHMoKQogICAgICAgICAgICAgY2FzZSBTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb246Ok90aGVyOgogICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudDoK
KyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbiA9ICI6
IGluIHNvdXJjZSBhcyBsaW5rZS10aW1lLWNvbnN0YW50IjsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50ZigiICAgayV1
ID0gJXMlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB0b0NTdHJpbmcoY29uc3RhbnQu
Z2V0KCkpLmRhdGEoKSwgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24pOwogICAg
ICAgICAgICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IGQ0MTYzM2M1NWI2MDlj
ZDU3ZTI0M2IyYjFhNGM0NDA5MjE0YzVhZGEuLmJkYmI3OTJmNGY3MDU1NzhmOGViYTZjYzJlMGFj
YjQzZDQ3MzhjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTQyLDcgKzQyLDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5T
SUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRkKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1wbCgpLCAmQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY18jI25hbWUpOworI2RlZmluZSBJTklU
SUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQobmFtZSkgbV9ieXRlY29kZUlu
dHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMjUHJp
dmF0ZU5hbWUoKS5pbXBsKCksIEVudHJ5KCZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljXyMjbmFtZSkpOworI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19O
QU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVChhMCwgbmFtZSwgYTEpIG1fYnl0ZWNv
ZGVJbnRyaW5zaWNNYXAuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUj
I1ByaXZhdGVOYW1lKCkuaW1wbCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWUpOwogCiBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2
bSkKICAgICA6IG1fdm0odm0pCkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewogICAgIEpTQ19DT01N
T05fQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRF
Q09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5U
UklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNf
TkFNRVNfVE9fU0VUKQorICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoSU5JVElB
TElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5LX1RJTUVfQ09OU1RB
TlQpCiAKICAgICBtX3VuZGVmaW5lZC5zZXQobV92bSwganNVbmRlZmluZWQoKSk7CiAgICAgbV9J
bmZpbml0eS5zZXQobV92bSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpKSk7CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fQXN5bmNH
ZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpO
b25lKSkpOwogfQogCi1CeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
K09wdGlvbmFsPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpZGVudC5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVj
b2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0g
bV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBlZTVmOTQ5MzVmMzhh
NzRhNjE1Njc4NjliZi4uNTY3YjAyNmI1ZTFkMDVjODM2YzAxOWM5MzdjODUwOTUzYzgyNWY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTM3LDcg
KzEzOCw0NCBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogICAgIHR5cGVk
ZWYgUmVnaXN0ZXJJRCogKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6KiBFbWl0dGVyVHlwZSkoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik7CiAKLSAgICBFbWl0dGVyVHlwZSBsb29rdXAo
Y29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3Qg
eworICAgICAgICBFbWl0dGVyID0gMCwKKyAgICAgICAgTGlua1RpbWVDb25zdGFudCA9IDEsCisg
ICAgfTsKKworICAgIGNsYXNzIEVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEVudHJ5KCkK
KyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fZW1pdHRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBFbnRyeShFbWl0
dGVyVHlwZSBlbWl0dGVyKQorICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9lbWl0dGVyID0gZW1pdHRlcjsKKyAgICAgICAgfQorCisg
ICAgICAgIEVudHJ5KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkKKyAgICAgICAg
ICAgIDogbV90eXBlKFR5cGU6OkxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGlua1RpbWVDb25zdGFudCA9IGxpbmtUaW1lQ29uc3RhbnQ7CisgICAgICAgIH0KKwor
ICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgTGlu
a1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9saW5rVGlt
ZUNvbnN0YW50OyB9CisgICAgICAgIEVtaXR0ZXJUeXBlIGVtaXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2VtaXR0ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAg
ICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsKKyAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQg
bV9saW5rVGltZUNvbnN0YW50OworICAgICAgICB9OworICAgICAgICBUeXBlIG1fdHlwZTsKKyAg
ICB9OworCisgICAgT3B0aW9uYWw8RW50cnk+IGxvb2t1cChjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dF
TkVSQVRPUlMobmFtZSkgSlNWYWx1ZSBuYW1lIyNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpOwog
ICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSlND
X0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMpCkBAIC0xNDUs
NyArMTgzLDcgQEAgY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAKIHByaXZhdGU6
CiAgICAgVk0mIG1fdm07Ci0gICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBF
bWl0dGVyVHlwZSwgSWRlbnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7Cisg
ICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllU
RUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgU3Ryb25nPFVua25vd24+
IG1fIyNuYW1lOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19T
SU1QTEVfRUFDSF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVF9H
RU5FUkFUT1JTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggZDY1MmI2NTg4NGM3OGIwM2JkODBkMmQ2N2Q0OGYxNjg2MTBiOWE3OC4uMzRj
MTUyYTBkNjYyZjM1Mjk3ZGYxNDQ0ODY0ZmI0YmJhMzQwZWY4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NCwxMCArNjQsNiBAQAog
ICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKIF0KIAotbmFtZXNwYWNlIDpTcGVjaWFsIGRv
Ci0gICAgdHlwZXMgWyA6UG9pbnRlciBdCi1lbmQKLQogdGVtcGxhdGVzIFsKICAgICA6V3JpdGVC
YXJyaWVyLAogICAgIDpXcml0ZUJhcnJpZXJCYXNlLApAQCAtNjc1LDcgKzY3MSw3IEBACiBvcCA6
am5lcV9wdHIsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAot
ICAgICAgICBzcGVjaWFsUG9pbnRlcjogU3BlY2lhbDo6UG9pbnRlciwKKyAgICAgICAgc3BlY2lh
bFBvaW50ZXI6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFi
ZWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1ZWMyNDZjOTFkODJlY2U2MjRkZGRjMjZhYmI1ZDU1
NDI0M2RiOTgyLi4yNTMwM2VmMDU1NThkODI4N2EwYTk3NWM1ZDRjMGRmMGFlMjU2ZjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzk5LDEy
ICszOTksNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIHNldENvbnN0YW50UmVnaXN0
ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVC
bG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExldmVsRXhlY3V0
YWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50OyBpKyspIHsK
LSAgICAgICAgTGlua1RpbWVDb25zdGFudCB0eXBlID0gc3RhdGljX2Nhc3Q8TGlua1RpbWVDb25z
dGFudD4oaSk7Ci0gICAgICAgIGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4ID0gdW5saW5rZWRD
b2RlQmxvY2stPnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKQotICAgICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQodm0sIHRoaXMsIG1f
Z2xvYmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKLSAgICB9Ci0K
ICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZm9yIHRoZSBt
b2R1bGUgZW52aXJvbm1lbnQgc2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0ZQogICAgIC8vIHRo
ZSBtb2R1bGUgZW52aXJvbm1lbnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2RlIGJsb2NrLiBXZSBy
ZXBsYWNlIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVhZHkgY2xvbmVkIG9u
ZS4KICAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayo+KHZtLCB1bmxpbmtlZENvZGVCbG9jaykpIHsKQEAgLTkwNSwyOSArODk5LDM2IEBA
IHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVC
YXJyaWVyPFVua25vd24+PiYgY29uc3RhCiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewogICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gY29uc3RhbnRzW2ld
LmdldCgpOwotCi0gICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoY29uc3RhbnQuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICBKU0NlbGwqIGNlbGwg
PSBjb25zdGFudC5hc0NlbGwoKTsKLSAgICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5cGVQ
cm9maWxlck9wY29kZXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAg
ICBzd2l0Y2ggKGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpXSkgeworICAgICAg
ICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudDoKKyAgICAg
ICAgICAgIGNvbnN0YW50ID0gZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50KHN0YXRpY19j
YXN0PExpbmtUaW1lQ29uc3RhbnQ+KGNvbnN0YW50LmFzSW50MzJBc0FueUludCgpKSkuZ2V0KCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b246Ok90aGVyOgorICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6SW50ZWdl
cjoKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToKKyAgICAg
ICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNv
bnN0YW50LmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGNv
bnN0YW50LmFzQ2VsbCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhU
eXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2Nr
ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICBTeW1ib2xUYWJsZSogY2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29k
ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFDb2Rl
QmxvY2sodGhpcyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVjdXRh
YmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOworICAg
ICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAgICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogY2xv
bmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOwotICAgICAgICAgICAgICAgICAg
ICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOwotCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChh
dXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
cio+KHZtLCBjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvKiB0ZW1wbGF0ZU9iamVj
dCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3QoZ2xvYmFsT2JqZWN0
LCBkZXNjcmlwdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9i
amVjdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotCiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KHZtLCB0
aGlzLCBjb25zdGFudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMu
aAppbmRleCBlMjQ0ZmQ2MjcwOWI0MjVhNjI4ZTIyNDU2NjM4YjBlNTYzY2RhZTA5Li5lZGEyNGJl
NDY5NTY0YjJlNTBjNjRmZTYwODFiYTIxZjljZWQ5YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5
dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlJlc3Vs
dFR5cGUuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN5bWJvbFRh
YmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwOTI3NTNjMzRhOTUzYWI5ZWUxZjQw
YjViOTdiZjJlYjNlOTY0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgeworCisjZGVmaW5lIFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCh2YXJOYW1lLCBu
YW1lLCBjb2RlKSBcCisgICAgY2FzZSBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWU6IFwKKyAg
ICAgICAgb3V0LnByaW50KCNuYW1lKTsgXAorICAgICAgICByZXR1cm47CisKK3ZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQgY29uc3RhbnQp
Cit7CisgICAgc3dpdGNoIChjb25zdGFudCkgeworICAgICAgICBKU0NfRk9SRUFDSF9MSU5LX1RJ
TUVfQ09OU1RBTlRTKFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCkKKyAgICB9Cit9CisKKyN1bmRl
ZiBQUklOVF9MSU5LX1RJTUVfQ09OU1RBTlQKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YzkxZGM0ODIyOTk4ZjI4OWViNGZkYjBlYTk5Zjc4M2ZjZTMwNWMzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
aApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0Owor
CisjZGVmaW5lIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFModikgXAorICAgIEpTQ19G
T1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRSh2KSBcCisgICAgdih0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihpbXBvcnRNb2R1bGUsIGltcG9ydE1vZHVsZSwgbnVsbHB0cikgXAorICAgIHYobWFw
QnVja2V0SGVhZCwgbWFwQnVja2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0TmV4
dCwgbWFwQnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0S2V5LCBtYXBCdWNr
ZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldFZhbHVlLCBtYXBCdWNrZXRWYWx1ZSwg
bnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0SGVhZCwgc2V0QnVja2V0SGVhZCwgbnVsbHB0cikg
XAorICAgIHYoc2V0QnVja2V0TmV4dCwgc2V0QnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAgIHYo
c2V0QnVja2V0S2V5LCBzZXRCdWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KHByb3BlcnR5SXNF
bnVtZXJhYmxlLCBwcm9wZXJ0eUlzRW51bWVyYWJsZSwgbnVsbHB0cikgXAorICAgIHYob3duS2V5
cywgb3duS2V5cywgbnVsbHB0cikgXAorICAgIHYoZW5xdWV1ZUpvYiwgZW5xdWV1ZUpvYiwgbnVs
bHB0cikgXAorICAgIHYobWFrZVR5cGVFcnJvciwgbWFrZVR5cGVFcnJvciwgbnVsbHB0cikgXAor
ICAgIHYodHlwZWRBcnJheUxlbmd0aCwgdHlwZWRBcnJheUxlbmd0aCwgbnVsbHB0cikgXAorICAg
IHYodHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIHR5cGVkQXJyYXlHZXRPcmlnaW5h
bENvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAgdih0eXBlZEFycmF5U29ydCwgdHlwZWRBcnJh
eVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KGlzVHlwZWRBcnJheVZpZXcsIGlzVHlwZWRBcnJheVZp
ZXcsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgdHlwZWRBcnJh
eVN1YmFycmF5Q3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0JvdW5kRnVuY3Rpb24sIGlzQm91
bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBo
YXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGluc3RhbmNlT2YsIGlu
c3RhbmNlT2YsIG51bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5Mb2csIEJ1aWx0aW5Mb2csIG51bGxw
dHIpIFwKKyAgICB2KEJ1aWx0aW5EZXNjcmliZSwgQnVpbHRpbkRlc2NyaWJlLCBudWxscHRyKSBc
CisgICAgdihSZWdFeHAsIFJlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYodHJ1bmMsIHRydW5jLCBu
dWxscHRyKSBcCisgICAgdihQcm9taXNlLCBQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihJbnRl
cm5hbFByb21pc2UsIEludGVybmFsUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoZGVmYXVsdFBy
b21pc2VUaGVuLCBkZWZhdWx0UHJvbWlzZVRoZW4sIG51bGxwdHIpIFwKKyAgICB2KHJlcGVhdENo
YXJhY3RlciwgcmVwZWF0Q2hhcmFjdGVyLCBudWxscHRyKSBcCisgICAgdihhcnJheVNwZWNpZXND
cmVhdGUsIGFycmF5U3BlY2llc0NyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheSwgaXNB
cnJheSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheVNsb3csIGlzQXJyYXlTbG93LCBudWxscHRy
KSBcCisgICAgdihjb25jYXRNZW1jcHksIGNvbmNhdE1lbWNweSwgbnVsbHB0cikgXAorICAgIHYo
YXBwZW5kTWVtY3B5LCBhcHBlbmRNZW1jcHksIG51bGxwdHIpIFwKKyAgICB2KGhvc3RQcm9taXNl
UmVqZWN0aW9uVHJhY2tlciwgaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyLCBudWxscHRyKSBc
CisgICAgdihJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
biwgbnVsbHB0cikgXAorICAgIHYoU2V0LCBTZXQsIG51bGxwdHIpIFwKKyAgICB2KHRoaXNUaW1l
VmFsdWUsIHRoaXNUaW1lVmFsdWUsIG51bGxwdHIpIFwKKyAgICB2KGlzQ29uc3RydWN0b3IsIGlz
Q29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIHJl
Z0V4cFByb3RvRmxhZ3NHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvR2xvYmFs
R2V0dGVyLCByZWdFeHBQcm90b0dsb2JhbEdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhw
UHJvdG9JZ25vcmVDYXNlR2V0dGVyLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIsIG51bGxw
dHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCByZWdFeHBQcm90b011bHRp
bGluZUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIsIHJl
Z0V4cFByb3RvU291cmNlR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1N0aWNr
eUdldHRlciwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4
cFByb3RvVW5pY29kZUdldHRlciwgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLCBudWxscHRyKSBc
CisgICAgdihyZWdFeHBCdWlsdGluRXhlYywgcmVnRXhwQnVpbHRpbkV4ZWMsIG51bGxwdHIpIFwK
KyAgICB2KHJlZ0V4cENyZWF0ZSwgcmVnRXhwQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc1Jl
Z0V4cCwgaXNSZWdFeHAsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cE1hdGNoRmFzdCwgcmVnRXhw
TWF0Y2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTZWFyY2hGYXN0LCByZWdFeHBTZWFy
Y2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTcGxpdEZhc3QsIHJlZ0V4cFNwbGl0RmFz
dCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgcmVnRXhw
UHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwVGVzdEZhc3Qs
IHJlZ0V4cFRlc3RGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdJbmNsdWRlc0ludGVybmFs
LCBzdHJpbmdJbmNsdWRlc0ludGVybmFsLCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTcGxpdEZh
c3QsIHN0cmluZ1NwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYoc3RyaW5nU3Vic3RySW50ZXJu
YWwsIHN0cmluZ1N1YnN0ckludGVybmFsLCBudWxscHRyKSBcCisgICAgdihtYWtlQm91bmRGdW5j
dGlvbiwgbWFrZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGhhc093bkxlbmd0aFBy
b3BlcnR5LCBoYXNPd25MZW5ndGhQcm9wZXJ0eSwgbnVsbHB0cikgXAorICAgIHYoZGF0ZVRpbWVG
b3JtYXQsIGRhdGVUaW1lRm9ybWF0LCBudWxscHRyKSBcCisgICAgdih3ZWJBc3NlbWJseUNvbXBp
bGVTdHJlYW1pbmdJbnRlcm5hbCwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWws
IG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5h
bCwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsLCBudWxscHRyKSBcCisg
ICAgdihPYmplY3QsIE9iamVjdCwgbnVsbHB0cikgXAorICAgIHYoQXJyYXksIEFycmF5LCBudWxs
cHRyKSBcCisgICAgdihhcHBseUZ1bmN0aW9uLCBhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBcCisg
ICAgdihjYWxsRnVuY3Rpb24sIGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAorCisKKyNkZWZpbmUg
REVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQodmFyTmFtZSwgbmFtZSwgY29kZSkgbmFtZSwKK2Vu
dW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3QgeworICAgIEpTQ19GT1JFQUNIX0xJ
TktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQpCit9OworI3VuZGVm
IERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UCisjZGVmaW5lIENPVU5UX0xJTktfVElNRV9DT05T
VEFOVCh2YXJOYW1lLCBuYW1lLCBjb2RlKSAxICsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cyA9IEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFO
VFMoQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKSAwOworI3VuZGVmIENPVU5UX0xJTktfVElNRV9D
T05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNz
IFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Okxp
bmtUaW1lQ29uc3RhbnQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1YWQzZjI0Y2EwNDgxZDExYTY3ZWJkMWJmYmFiZTg2NmZkMzFkNDhiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgotCi0j
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkKiBhY3R1YWxQb2lu
dGVyRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNwZWNpYWw6OlBvaW50ZXIgcG9p
bnRlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2ludGVyRm9yKHBvaW50
ZXIpOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBT
cGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGFjdHVhbFBvaW50ZXJGb3Io
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcG9pbnRlcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIHN3aXRjaCAocG9p
bnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVuY3Rpb246Ci0gICAgICAgIG91
dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6
U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJBcHBseUZ1bmN0aW9u
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6T2JqZWN0Q29uc3Ry
dWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3RydWN0b3IiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yOgotICAgICAg
ICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91dC5wcmludCgiVGFibGVTaXpl
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5MmJhYjc2ZWEyYmZmN2U2ZTg4MzUzNWVhNGQ3NmM0
MWIwNDY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNz
IENvZGVCbG9jazsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotCi1uYW1lc3BhY2UgU3BlY2lhbCB7
Ci1lbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7Ci0gICAgQ2FsbEZ1bmN0aW9uLAotICAgIEFwcGx5
RnVuY3Rpb24sCi0gICAgT2JqZWN0Q29uc3RydWN0b3IsCi0gICAgQXJyYXlDb25zdHJ1Y3RvciwK
LSAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50ZXIuIFVzZSB0aGlzIHRv
IGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgotfTsKLX0gLy8gbmFtZXNwYWNlIFNw
ZWNpYWwKLQotZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBUaHJvd1R5cGVFcnJv
ckZ1bmN0aW9uLAotfTsKLWNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9IDE7
Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRl
cikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJs
ZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBwb2ludGVySXNDZWxs
KFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIs
IHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiwgU3BlY2lhbDo6UG9pbnRlcik7
Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayosIFNwZWNpYWw6OlBvaW50ZXIpOwot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFByaW50U3Ry
ZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlNwZWNpYWw6OlBv
aW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDIzNGZhNTc3YzVhZjBh
MTIxNmM3YjRkNmQwNDQ3ZDBiY2Y4ZDRjNDkuLmQ1ZGRlZThkNTYwNzcwMzIzYjFmZDVmMWFjY2Nj
YzA1MDJjMTI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzYsOCArNzYsNiBAQCBVbmxpbmtlZENvZGVCbG9j
azo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5
cGUgY29kZQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQog
ICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSgpKQogewotICAg
IGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlckluZGV4IDogbV9saW5rVGltZUNvbnN0YW50cykK
LSAgICAgICAgY29uc3RhbnRSZWdpc3RlckluZGV4ID0gMDsKICAgICBBU1NFUlQobV9jb25zdHJ1
Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkp
KTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5
cGUpKTsKICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TWl4ZWRUcmlTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NzM5ZGE3ODM1NjhkM2ViMjYzMWVlZjFhNzI0Mjky
ODc5N2Y1NjY5Li5kNjA3MzYwMTRkZDFlMzE1NzEzYTg1MmU4N2RhNjU2MTQxNjMwMDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlBhcnNl
ck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCi0jaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIu
aCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlVu
bGlua2VkTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAt
MTgwLDI3ICsxNzksMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKHNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQot
ICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKKyAgICB1bnNp
Z25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29uc3RhbnQpCiAgICAg
ewogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICBhdXRvIGxvY2tlciA9IGxv
Y2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNlbGxMb2NrKCkpOwogICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAgICAgQVNTRVJUKHJlc3Vs
dCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUp
OwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAgICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XSA9IHJlc3VsdDsKICAgICAgICAgbV9jb25zdGFu
dFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwotICAgICAgICBtX2Nv
bnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMubGFzdCgpLnNldCh2
bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGlua1RpbWVDb25zdGFudCkp
KTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKFNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZvckxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFTU0VSVChpbmRl
eCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29u
c3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVu
a25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJz
OyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGlu
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CkBAIC00MDYsOCArMzk1LDYgQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlz
UmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKIAotICAgIHN0
ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNvbnN0
YW50czsKLQogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNT
dHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCAyZGI4MThmMGI5YjU0YjIxNWJhZjA2Y2NjNmFlMzFjM2MyOWFkZmFlLi44
MzZmZDU3OGYyYzE4NGZiMzM2MjU1ODcxYzZiMTJjM2MxMzY3YTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtMzA4LDkgKzMwOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5r
VGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0
cjsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBz
cGFjZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM2MCw5ICszNTcsNiBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlv
bkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9k
ZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVy
aXZlZENvbnRleHRUeXBlKCkpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDog
bV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0g
bnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9s
VGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2VzTm9u
U3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVDb25z
dGFudEluZGV4ID0gMDsKQEAgLTc4OCwxMSArNzgyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKIAogICAgICAgICAvLyBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9u
Q2FsbENoZWNrKEBwcm9taXNlLCB0aHJvd25WYWx1ZSk7CiAgICAgICAgIC8vIHJldHVybiBAcHJv
bWlzZTsKLSAgICAgICAgYXV0byB2YXJSZWplY3RQcm9taXNlID0gdmFyaWFibGUocHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5j
dGlvbkNhbGxDaGVja1ByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgbW92ZShzY29wZS5nZXQoKSwgZW1pdFJl
c29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSkpOwotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9y
YXJ5KCksIHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlLCBUaHJvd0lmTm90Rm91bmQpOwot
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0gbW92ZUxpbmtUaW1l
Q29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZVdpdGhGaXJz
dFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdz
KCp0aGlzLCBudWxscHRyLCAyKTsKICAgICAgICAgZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIG1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDAp
LCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBAIC04NDgsOSArODM4LDYgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtl
ZEV2YWxDb2QKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2YWxO
b2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQogICAgICwg
bV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsK
LSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdp
c3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgbV9jb2Rl
QmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKICAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUs
IFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CkBAIC05MTAsOSArODk3LDYgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1v
ZHVsZVByb2dyYW1Ob2QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKLSAgICBmb3IgKGF1dG8m
IGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAg
IGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwogICAgIG1v
ZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05v
blN0cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFNjb3Bl
VHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwpAQCAtMTQ0MiwxMiAr
MTQyNiwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmRmFsc2UoUmVnaXN0
ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQog
ewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpDYWxsRnVuY3Rpb24s
IHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgbW92
ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y2FsbEZ1bmN0aW9u
KSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQog
ewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpBcHBseUZ1bmN0aW9u
LCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIG1v
dmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFwcGx5RnVuY3Rp
b24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omhh
c0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApAQCAtMzEwMSw3ICszMDg1
LDcgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVu
Y3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHMu
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAgICAgICAgcmV0dXJuIE5v
RXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlz
LCBmdW5jLCBTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykp
OworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3Rh
bnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KSwgcmVhbENhbGwtPmJpbmQodGhp
cykpOwogICAgICAgICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAgICAg
ICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBAIC0zMTE3LDcgKzMxMDEsNyBAQCBFeHBlY3Rl
ZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQo
UmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpID4gMikKICAgICAgICAgICAgIHJldHVybiBOb0V4cGVjdGVkRnVuY3Rp
b247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgU3BlY2lh
bDo6QXJyYXlDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykpOworICAgICAgICBPcEpu
ZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6QXJyYXkpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICAgICAgaWYgKGNh
bGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9PSAyKQpAQCAtMzI4NSw3
ICszMjY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9wZXJ0
eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICBpZiAoYXR0cmlidXRlcy5o
YXNHZXQoKSB8fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZXMuaGFz
R2V0KCkgfHwgIWF0dHJpYnV0ZXMuaGFzU2V0KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
ckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFu
dDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvckZ1
bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdl
dHRlcjsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCkBAIC00NDc0LDEwICs0NDU4
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9y
KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKLSAgICBhdXRvIHZhckNyZWF0ZUFzeW5jRnJvbVN5bmNJ
dGVyYXRvciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5jcmVhdGVB
c3luY0Zyb21TeW5jSXRlcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBtb3ZlKHNjb3BlLmdldCgpLCBlbWl0UmVz
b2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJDcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IpKTsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gZW1p
dEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFzeW5j
RnJvbVN5bmNJdGVyYXRvciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yKTsKIAog
ICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMik7CiAgICAgZW1pdExvYWQo
YXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmQ3
MjFlYjc3OTBiMzczMDIzNzhmZmFjYjkxMjI3MmRmYjhlN2M0Zi4uZjViMzU2OGQxZDc1NTAyODc0
ZmQ2N2FkNTVmZDhkODJmM2FlNzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDEsNiArNDEsNyBAQAog
I2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGFiZWwu
aCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNsdWRl
ICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgpAQCAtMTIxNiw3ICsxMjE3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0
ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVyaXZlZENvbnN0dWN0b3IgeyBudWxscHRy
IH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tMaW5r
VGltZUNvbnN0YW50Q291bnRdOworICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29uc3Rh
bnRSZWdpc3RlcnNbbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50c10geyB9OwogICAgICAgICBSZWdp
c3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
eyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fcHJvbWlzZVJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggMmUwM2JlMGI3Yzc1ZGRiMDI3ZWM0ZTZmNjU2MjE4ZDhlMGZl
NTFhNi4uNzk0NDVmYWU1YmUzMzQ0ZTRkYjQwODJjYmUyMGQ2NWMzNDZkOWU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMjExLDcgKzIxMSw3IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVySUQq
IEltcG9ydE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVsZSA9
IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW1wb3J0TW9kdWxlUHJp
dmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVsZSA9IGdlbmVy
YXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjppbXBv
cnRNb2R1bGUpOwogICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0
ciwgMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3VtZW50cy5hcmd1bWVu
dFJlZ2lzdGVyKDApLCBtX2V4cHIpOwpAQCAtOTg1LDcgKzk4NSwxMSBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAg
ICByZXR1cm4gKHRoaXMtPiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0KTsKKyAgICBpZiAobV9l
bnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcikK
KyAgICAgICAgcmV0dXJuICh0aGlzLT4qbV9lbnRyeS5lbWl0dGVyKCkpKGdlbmVyYXRvciwgZHN0
KTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQo
ZHN0LCBtX2VudHJ5LmxpbmtUaW1lQ29uc3RhbnQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QnlJZERpcmVjdChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xMDEzLDkgKzEwMTcsMTAg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRC
eUlkRGlyZWN0UHJpdmF0ZShCeXRlY29kZUcKIAogc3RhdGljIEpTUHJvbWlzZTo6RmllbGQgcHJv
bWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0g
ICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkudHlwZSgp
ID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChu
b2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKICAgICAgICAgcmV0dXJuIEpTUHJvbWlzZTo6Rmll
bGQ6OkZsYWdzOwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQpCisgICAg
aWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KQogICAgICAgICByZXR1
cm4gSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQ7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3M7CkBA
IC0xMDIzLDEzICsxMDI4LDE0IEBAIHN0YXRpYyBKU1Byb21pc2U6OkZpZWxkIHByb21pc2VJbnRl
cm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogCiBzdGF0aWMgSlNH
ZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJp
bnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAgIEFT
U0VSVChub2RlLT5lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlw
ZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCiAgICAg
ICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwotICAgIGlmIChub2RlLT5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9y
RmllbGROZXh0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCiAgICAgICAg
IHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKICAgICAgICAgcmV0
dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJh
bWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVy
biBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBAIC0xMDM3LDE5
ICsxMDQzLDIwIEBAIHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxG
aWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kCiAKIHN0YXRpYyBKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUlu
dHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAg
IEFTU0VSVChub2RlLT5lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCiAg
ICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Ci0gICAgaWYgKG5v
ZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19n
ZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkTmV4dCkK
ICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0OwotICAgIGlmIChu
b2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAm
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFRoaXMp
CiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKLSAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJh
bWUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWU7Ci0gICAg
aWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKKyAgICBpZiAobm9kZS0+ZW50
cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
YXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCiAgICAgICAgIHJldHVybiBKU0FzeW5j
R2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbjsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigp
ID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9y
RmllbGRRdWV1ZUZpcnN0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVl
dWVGaXJzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUZp
cnN0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKKyAgICBpZiAobm9k
ZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5
bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3Q7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwpAQCAt
NDA5NiwxMCArNDEwMyw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQo
KSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgIC8vIGxvYWQgYW5kIGNhbGwgQGFzeW5j
RnVuY3Rpb25SZXN1bWUKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1bmN0aW9uUmVzdW1l
UHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoc2NvcGUuZ2V0KCks
IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsKLSAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1bWUgPSBnZW5lcmF0b3IuZW1pdEdl
dEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRo
cm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhc3luY0Z1bmN0aW9u
UmVzdW1lID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1l
Q29uc3RhbnQ6OmFzeW5jRnVuY3Rpb25SZXN1bWUpOwogCiAgICAgICAgIENhbGxBcmd1bWVudHMg
YXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDQpOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENv
dW50ID0gMDsKQEAgLTQ1NzgsMTEgKzQ1ODIsNyBAQCB2b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjpi
aW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQog
ICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFk
ZE1ldGhvZDsKICAgICBpZiAobV9jb250YWluc1Jlc3RFbGVtZW50ICYmIG1fY29udGFpbnNDb21w
dXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGF1dG8gdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuU2V0UHJpdmF0ZU5hbWUoKSk7
Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5tb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpTZXQpOwogCiAgICAg
ICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOwogICAgICAgICBl
eGNsdWRlZExpc3QgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBzZXRDb25zdHJ1Y3Rvci5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpA
QCAtNDYzMywxMSArNDYzMyw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0ID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3Qo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
bG9hZCBhbmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0gICAgICAgICAgICBhdXRvIHZhciA9
IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLmNvcHlEYXRhUHJvcGVydGllc1ByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZv
dW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5RGF0YVByb3BlcnRpZXMg
PSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFu
dDo6Y29weURhdGFQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CkBAIC00ODEw
LDExICs0ODA2LDcgQEAgUmVnaXN0ZXJJRCogT2JqZWN0U3ByZWFkRXhwcmVzc2lvbk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG8KICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoc3JjLmdldCgpLCBtX2V4cHJlc3Npb24pOwogICAgIAogICAgIC8vIGxvYWQgYW5kIGNh
bGwgQGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucwotICAgIGF1dG8gdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY29w
eURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zUHJpdmF0ZU5hbWUoKSk7Ci0gICAgCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgIGdl
bmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShzY29w
ZS5nZXQoKSwgdmFyKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGll
cyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51
bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucyk7
CiAgICAgCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMik7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCBlMGVlZjQ5MTdhYTY4MWZhYzI5NGM5ODg0OTgyNWIyZDkzZjAwZjFhLi4zMzc4YWQwOTJm
NmEyNDIwMzNjZjQwNzY4M2Q5Mzg5NWQzZDNjZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjM0MiwxMSArNjM0Miw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwotICAgICAgICAgICAgU3Bl
Y2lhbDo6UG9pbnRlciBzcGVjaWFsUG9pbnRlciA9IGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXI7
Ci0gICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzQ2VsbChzcGVjaWFsUG9pbnRlcikpOwotICAg
ICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oCi0g
ICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZvcihtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKLSAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW5Q
b2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFsUG9pbnRlcik7CisgICAgICAgICAgICBGcm96
ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVy
Lm9mZnNldCgpKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGp1bXBU
YXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9
IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChieXRlY29kZS5tZXRhZGF0
YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAppbmRleCAwZDA0OTk0NTgwZDliMzg4MWM5MDJiMDFhYmEzZTYxZDk2MDM2ZTU5
Li44ZWJlNDlmZWJiZjUxMzViNTM1ZTNjZGQ3Njk2NTY4MTUwNTNkYTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ3MSwxMSArNDcxLDEyIEBAIHZvaWQg
SklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRy
PigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
OwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAgIFNwZWNpYWw6
OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKKyAgICBKU1ZhbHVlIHNw
ZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50
ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9pbnRlci5pc0NlbGwoKSk7CiAgICAg
dW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2Rl
Lm1fdGFyZ2V0TGFiZWwpOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCBy
ZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCBy
ZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29kZUJsb2NrLCBwdHIpKSk7
CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwg
VHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIHN0b3JlOChUcnVz
dGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRkSnVtcChqdW1wKCks
IHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzZTBjZWI0NjkzYTU4OTVmM2FmZWJjOTYy
YTljMTQzZjA4MjhjNTMxLi40ZTk0MjQ1NDc5ZjNmNDc2OTdhOGI2OTNjNWRmMWYwMTBlYjIzMmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBA
IC00NzgsMTIgKzQ3OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgc3JjID0gYnl0ZWNvZGUubV92YWx1
ZS5vZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5dGVjb2RlLm1fc3BlY2lh
bFBvaW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdldENvbnN0YW50T3BlcmFu
ZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKTsKKyAgICBBU1NFUlQoc3BlY2lh
bFBvaW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3Vy
cmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAgIGVtaXRMb2Fk
KHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwo
cmVnVDEpOwotICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVk
SW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikpKTsKKyAgICBKdW1wIGVx
dWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRl
ci5hc0NlbGwoKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAgICBzdG9yZTgoVHJ1c3Rl
ZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQpOwogICAgIGFkZEp1bXAoanVtcCgpLCB0
YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMzdlZTIyYjQ5M2QwYjVhZTRkMzc0MmRiMTIy
ZjUyM2JlYWYzZjZhLi40YzYwZGJlZTEzM2FlYmY2OTlkMjRmYzk3OTNhODQ0MmUyMTExOGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtMTcxMCwxMiArMTcxMCwxMCBAQCB1bmRlZmluZWRPck51bGxK
dW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9yTnVsbCwKIAogbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1ZSwgdDApCi0gICAgZ2V0
dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQotICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0
MgorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIHQxLCB0MywgdDIpCiAgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBD
ZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fc3Bl
Y2lhbFBvaW50ZXJzW3QyLCB0MSwgNF0sIHQxCi0gICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MiwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCiAub3BKbmVxUHRyQnJhbmNo
OgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BKbmVxUHRyOjpNZXRhZGF0
YTo6bV9oYXNKdW1wZWRbdDVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDA0NDNmMGNmZThiMzcyN2VjOTRiZDRk
NTg5NzA5NjEwYjQyOWM4NmEuLjA1ZThmZGEzZGU1ZjRiYjUzMTk2N2QzMDg4OWI3NjViN2FkYTJm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCkBAIC0xODE2LDExICsxODE2LDkgQEAgdW5kZWZpbmVkT3JOdWxsSnVt
cE9wKGpudW5kZWZpbmVkX29yX251bGwsIE9wSm51bmRlZmluZWRPck51bGwsCiAKIGxsaW50T3BX
aXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFsdWUsIHQwKQotICAgIGdldHUo
c2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNpYWxQb2ludGVyLCB0MSkKLSAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIK
LSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVjaWFsUG9pbnRlcnNbdDIsIHQxLCBQdHJT
aXplXSwgdDEKLSAgICBicG5lcSB0MSwgW2NmciwgdDAsIDhdLCAub3BKbmVxUHRyVGFyZ2V0Cisg
ICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQyKQorICAgIGJwbmVxIHQyLCBbY2ZyLCB0MCwgOF0sIC5vcEpuZXFQdHJUYXJn
ZXQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEpuZXFQdHJUYXJnZXQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNhZjAzMDgyOTIxZDEyOTVhMDQyOGRiMGNi
ZTA0MTJjM2FjZjBjOTkuLmNjNTk3ZjViNDRiOWU3MTc5ZjVkZTU1YjBlZWQyYmY4NjkwNWVkODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yMDAsOCAr
MjAwLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7
CiAKICAgICAgICAgaWYgKGlkZW50LmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgIGlmIChCeXRl
Y29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIGVtaXR0ZXIgPSBtX3ZtLmJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNp
Y05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2NhdGlvbiwgZW1pdHRlciwgaWRlbnQsIG51bGxwdHIs
IHN0YXJ0LCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGF1dG8gZW50cnkgPSBtX3ZtLmJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpOworICAgICAgICAgICAgaWYgKGVu
dHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2Rl
SW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2Nh
dGlvbiwgZW50cnkudmFsdWUoKSwgaWRlbnQsIG51bGxwdHIsIHN0YXJ0LCBzdGFydCwgZW5kKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlc29sdmVO
b2RlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOwpAQCAtMTM4NCw4ICsxMzg1LDggQEAgRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24KICAgICBpZiAoZnVuYy0+aXNCeXRlY29kZUludHJpbnNpY05vZGUo
KSkgewogICAgICAgICBBU1NFUlQoIWlzT3B0aW9uYWxDYWxsKTsKICAgICAgICAgQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlKiBpbnRyaW5zaWMgPSBzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05v
ZGUqPihmdW5jKTsKLSAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQpCi0gICAgICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpU
eXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW1pdHRlcigpLCBpbnRyaW5zaWMt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAg
ICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6
Q29uc3RhbnQgJiYgaW50cmluc2ljLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlw
ZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVudHJ5KCksIGludHJpbnNpYy0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIH0KIAog
ICAgIGlmIChmdW5jLT5pc09wdGlvbmFsQ2hhaW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA3NTg5ZDdjOTFlODk1ZWIyZDk5
NjMzZGJmNWI0YWE1ZDI2YWViODRlLi45YzdiOWEyODIwNzNjNTc2YTYzNDllNGQ2OWMyMjBiYTVj
Y2RlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2lj
Tm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEVtaXR0ZXJU
eXBlIGVtaXR0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdz
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgaW5saW5lIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUgdHlwZSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50
cnkgZW50cnksIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fZW1pdHRlcihlbWl0dGVyKQorICAg
ICAgICAsIG1fZW50cnkoZW50cnkpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAg
LCBtX2FyZ3MoYXJncykKICAgICAgICAgLCBtX3R5cGUodHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCBhYTQ0ODY2NGQxZDQ4MTQwZDEwYTQ1OTBjMDY3ZDUwMWE4YjYy
ODdmLi5mYWQ1MzI4YTJiOTQ0MzdkYjJkYWU3ZjFjODZiMjg5YzFhMzQxZmFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC05NDQsMTQgKzk0NCwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIEZ1bmN0aW9uCiAgICAgICAgIH07CiAKLSAgICAgICAgdHlwZWRl
ZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJUeXBlKShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKLQotICAgICAgICBCeXRlY29kZUludHJpbnNp
Y05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRlclR5cGUsIGNvbnN0IElk
ZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKTsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5LCBjb25zdCBJZGVu
dGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICAgICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KLSAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZW1pdHRlcjsgfQorICAgICAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRy
eSBlbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnk7IH0KICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogI2RlZmluZSBK
U0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TKG5hbWUpIFJlZ2lzdGVySUQq
IGVtaXRfaW50cmluc2ljXyMjbmFtZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsK
QEAgLTk2NCw3ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzRnVu
Y3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkZ1bmN0
aW9uOyB9CiAKLSAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOworICAgICAgICBCeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBtX2VudHJ5OwogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CiAgICAgICAgIFR5
cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCmluZGV4IDYwMzVhNDkwOTI2YzRhZTVmYzMzMjdhZmZlZGY0Mjc2YjkzZjA2NTcuLmViOWQ5
OTNiMjUxNGM2NzI5ZTEwMmY2NWU3MjBhNzI4YWYyYzI0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MDEsNyArMTgwMSw2IEBAIGNs
YXNzIENhY2hlZENvZGVCbG9jayA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8Q29kZUJsb2NrVHlwZT4g
ewogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKLSAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCBM
aW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7CiAKICAgICB1bnNpZ25l
ZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CkBAIC0y
MDM5LDkgKzIwMzgsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtl
ZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2RlQmxvY2tUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxDb2Rl
QmxvY2tUeXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlua2VkQ29kZUJsb2NrJiBj
b2RlQmxvY2spIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gTGlua1RpbWVDb25zdGFu
dENvdW50OyBpLS07KQotICAgICAgICBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXSA9
IG1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmRlY29k
ZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywgJmNvZGVCbG9jayk7CiAg
ICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVjb2RlKGRlY29kZXIsIGNv
ZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgbV9leHBy
ZXNzaW9uSW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhwcmVzc2lvbkluZm8pOwpA
QCAtMjIwNyw5ICsyMjAzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxD
b2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBtX2NvZGVH
ZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9uTW9kZTsKICAgICBtX2Nv
ZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBM
aW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIG1fbGlua1RpbWVDb25zdGFudHNb
aV0gPSBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAgIG1fbWV0YWRhdGEu
ZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX21ldGFkYXRhLmdldCgpKTsKICAgICBtX3JhcmVE
YXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9yYXJlRGF0YS5nZXQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA0N2ZjZDMzOGI0MDU5
ODM2Y2QzNjgxZTg0ZTAxZmFiNzQzMzk3Njc0Li4yNTk5ZTJjNTYyOTEwZjk4MTQ2YzkxOGI1MjI0
OWM4NTViZDJhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCkBAIC0xMjksNyArMTI5LDggQEAgYm9vbCBpc0ludDUyKGRvdWJsZSk7CiBlbnVtIGNsYXNz
IFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA6IHVpbnQ4X3QgewogICAgIE90aGVyLAogICAgIElu
dGVnZXIsCi0gICAgRG91YmxlCisgICAgRG91YmxlLAorICAgIExpbmtUaW1lQ29uc3RhbnQsCiB9
OwogCiBjbGFzcyBKU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjNjViMGIzNzBkMDI1NzVlMDBiMWY1MDQ5MDk5MTA3
ZTc3MGU3MjhkLi5hNDkyZWJjZjU3NzQ3N2JlMTMzYWY5MzBmMTE5OTA0Nzc3NGQzZWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC05OTMsMTA0ICs5OTMsMTA4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgbV9yZXNv
bHZlUHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVzb2x2ZVByb21pc2VQcml2YXRlRnVu
Y3Rpb24pOwogICAgIG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVqZWN0
UHJvbWlzZVByaXZhdGVGdW5jdGlvbik7CiAKLSAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGlj
R2xvYmFsc1tdID0gewotI2RlZmluZSBJTklUX1BSSVZBVEVfR0xPQkFMKHZhck5hbWUsIGZ1bmNO
YW1lLCBjb2RlKSBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZnVuY05hbWUgIyMgUHJpdmF0ZU5hbWUoKSwgdmFyTmFtZSAjIyBQcml2YXRlRnVuY3Rp
b24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9C
QUwpCisgICAgLy8gRklYTUU6IFdpbGwgbWFrZSB0aGVtIExhenlQcm9wZXJ0eSEKKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNzk1CisKKyNkZWZpbmUg
SU5JVF9QUklWQVRFX0dMT0JBTCh2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgbGlua1RpbWVDb25z
dGFudChMaW5rVGltZUNvbnN0YW50OjpmdW5jTmFtZSkuc2V0KHZtLCB0aGlzLCB2YXJOYW1lICMj
IFByaXZhdGVGdW5jdGlvbik7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklW
QVRFX0dMT0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCiAjdW5kZWYgSU5JVF9QUklWQVRF
X0dMT0JBTAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TmFO
LCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1iZXIoc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNPd25LZXlzLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwgcHJp
dmF0ZUZ1bmNNYWtlVHlwZUVycm9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS50eXBlZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5
TGVuZ3RoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5
R2V0T3JpZ2luYWxDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJh
eUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnR5cGVkQXJyYXlTb3J0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5
U29ydCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNUeXBlZEFycmF5
Vmlld1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldywgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlUHJp
dmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQm91bmRGdW5jdGlvblByaXZhdGVOYW1l
KCksIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5oYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaW5zdGFuY2VPZlByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSW5zdGFu
Y2VPZiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQnVpbHRpbkxvZ1By
aXZhdGVOYW1lKCksIGJ1aWx0aW5Mb2csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLkJ1aWx0aW5EZXNjcmliZVByaXZhdGVOYW1lKCksIGJ1aWx0aW5EZXNjcmliZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUmVnRXhwUHJpdmF0ZU5hbWUoKSwg
cmVnRXhwQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnRydW5jUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUcnVuYywgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCksIHByb21pc2VDb25zdHJ1
Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW50ZXJuYWxQcm9t
aXNlUHJpdmF0ZU5hbWUoKSwgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmF1bHRQcm9taXNlVGhlblByaXZhdGVOYW1l
KCksIHByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnJlcGVhdENoYXJhY3RlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJh
Y3RlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFycmF5U3BlY2ll
c0NyZWF0ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3Ry
aW5nKCksIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9y
LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0FycmF5U2xvd1ByaXZhdGVOYW1lKCksIHByaXZh
dGVGdW5jSXNBcnJheVNsb3csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmNvbmNhdE1lbWNweVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5LCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBlbmRNZW1jcHlQcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5ob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXJQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFBy
b21pc2VSZWplY3Rpb25UcmFja2VyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRl
TmFtZSgpLCBzZXRDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkudGhpc1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgIGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6aW1wb3J0TW9kdWxlKS5zZXQodm0sIHRoaXMsIHByaXZhdGVG
dW5jSW1wb3J0TW9kdWxlKTsKKyAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgorICAgIGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0SGVhZCkuc2V0KHZtLCB0aGlz
LCBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1Rp
bWVDb25zdGFudDo6bWFwQnVja2V0TmV4dCkuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY01hcEJ1
Y2tldE5leHQpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6bWFwQnVj
a2V0S2V5KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jTWFwQnVja2V0S2V5KTsKKyAgICBsaW5r
VGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldFZhbHVlKS5zZXQodm0sIHRo
aXMsIHByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6c2V0QnVja2V0SGVhZCkuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY1Nl
dEJ1Y2tldEhlYWQpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6c2V0
QnVja2V0TmV4dCkuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY1NldEJ1Y2tldE5leHQpOworICAg
IGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6c2V0QnVja2V0S2V5KS5zZXQodm0s
IHRoaXMsIHByaXZhdGVGdW5jU2V0QnVja2V0S2V5KTsKKworICAgIGxpbmtUaW1lQ29uc3RhbnQo
TGlua1RpbWVDb25zdGFudDo6cHJvcGVydHlJc0VudW1lcmFibGUpLnNldCh2bSwgdGhpcywgcHJp
dmF0ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50Ojpvd25LZXlzKS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jT3duS2V5cyk7
CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjplbnF1ZXVlSm9iKS5zZXQo
dm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgImVucXVldWVKb2IiX3Ms
IGVucXVldWVKb2IpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Om1h
a2VUeXBlRXJyb3IpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNNYWtlVHlwZUVycm9yKTsKKyAg
ICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlMZW5ndGgpLnNl
dCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoKTsKKyAgICBsaW5rVGltZUNv
bnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9y
KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jVHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0
b3IpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheVNv
cnQpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCk7CisgICAgbGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojppc1R5cGVkQXJyYXlWaWV3KS5zZXQodm0sIHRo
aXMsIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmlldyk7CisgICAgbGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpLnNldCh2bSwgdGhpcywg
cHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpOworICAgIGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6aXNCb3VuZEZ1bmN0aW9uKS5zZXQodm0sIHRoaXMsIHByaXZh
dGVGdW5jSXNCb3VuZEZ1bmN0aW9uKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6Omhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVu
Y0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGlt
ZUNvbnN0YW50OjppbnN0YW5jZU9mKS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jSW5zdGFuY2VP
Zik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluTG9nKS5z
ZXQodm0sIHRoaXMsIGJ1aWx0aW5Mb2cpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6QnVpbHRpbkRlc2NyaWJlKS5zZXQodm0sIHRoaXMsIGJ1aWx0aW5EZXNjcmliZSk7
CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpSZWdFeHApLnNldCh2bSwg
dGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6dHJ1bmMpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUcnVuYyk7CisgICAgbGlu
a1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKS5zZXQodm0sIHRoaXMsIHBy
b21pc2VDb25zdHJ1Y3Rvcik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpJbnRlcm5hbFByb21pc2UpLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6ZGVmYXVsdFByb21p
c2VUaGVuKS5zZXQodm0sIHRoaXMsIHByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpKTsKKworICAg
IGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVwZWF0Q2hhcmFjdGVyKS5zZXQo
dm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmlu
Z1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlcikpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1Rp
bWVDb25zdGFudDo6YXJyYXlTcGVjaWVzQ3JlYXRlKS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0
ZSkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aXNBcnJheSkuc2V0
KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmlzQXJyYXkpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Omlz
QXJyYXlTbG93KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jSXNBcnJheVNsb3cpOworICAgIGxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6Y29uY2F0TWVtY3B5KS5zZXQodm0sIHRo
aXMsIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtU
aW1lQ29uc3RhbnQ6OmFwcGVuZE1lbWNweSkuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY0FwcGVu
ZE1lbWNweSk7CisKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Omhvc3RQ
cm9taXNlUmVqZWN0aW9uVHJhY2tlcikuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFj
a2VyKSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24pLnNldCh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBs
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldCkuc2V0KHZtLCB0aGlzLCBzZXRD
b25zdHJ1Y3Rvcik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojp0aGlz
VGltZVZhbHVlKS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSk7CisKKyAg
ICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmlzQ29uc3RydWN0b3IpLnNldCh2
bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgZXNTcGVj
SXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKKworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9GbGFnc0dldHRlcikuc2V0KHZtLCB0aGlzLCByZWdF
eHBQcm90b0ZsYWdzR2V0dGVyKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvR2xv
YmFsR2V0dGVyKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4
cFByb3RvSWdub3JlQ2FzZUdldHRlcikuc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b0lnbm9yZUNh
c2VHZXR0ZXIpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhw
UHJvdG9NdWx0aWxpbmVHZXR0ZXIpLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9NdWx0aWxpbmVH
ZXR0ZXIpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJv
dG9Tb3VyY2VHZXR0ZXIpLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIpOwor
ICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9TdGlja3lH
ZXR0ZXIpLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpOworICAgIGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKS5z
ZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcik7CisKKyAgICAvLyBSZWdFeHAu
cHJvdG90eXBlIGhlbHBlcnMuCisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpyZWdFeHBCdWlsdGluRXhlYykuc2V0KHZtLCB0aGlzLCBidWlsdGluUmVnRXhwRXhlYyk7Cisg
ICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBDcmVhdGUpLnNldCh2
bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZXNTcGVj
UmVnRXhwQ3JlYXRlLCBOb0ludHJpbnNpYykpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1Rp
bWVDb25zdGFudDo6aXNSZWdFeHApLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmluc2ljKSk7CisgICAg
bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBNYXRjaEZhc3QpLnNldCh2
bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhw
UHJvdG9GdW5jTWF0Y2hGYXN0LCBSZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMpKTsKKyAgICBsaW5r
VGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNlYXJjaEZhc3QpLnNldCh2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJv
dG9GdW5jU2VhcmNoRmFzdCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6cmVnRXhwU3BsaXRGYXN0KS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMiwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCkpOworICAgIGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFj
ZSkuc2V0KHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGlt
ZUNvbnN0YW50OjpyZWdFeHBUZXN0RmFzdCkuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVnRXhw
VGVzdEZhc3RJbnRyaW5zaWMpKTsKKworICAgIC8vIFN0cmluZy5wcm90b3R5cGUgaGVscGVycy4K
KyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnN0cmluZ0luY2x1ZGVzSW50
ZXJuYWwpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpKTsKKyAgICBsaW5rVGltZUNvbnN0
YW50KExpbmtUaW1lQ29uc3RhbnQ6OnN0cmluZ1NwbGl0RmFzdCkuc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNTcGxp
dEZhc3QpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnN0cmluZ1N1
YnN0ckludGVybmFsKS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCkpOworCisgICAgLy8gRnVu
Y3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjptYWtlQm91bmRGdW5jdGlvbikuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDUsIFN0cmluZygpLCBtYWtlQm91bmRGdW5jdGlvbikpOworICAgIGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aGFzT3duTGVuZ3RoUHJvcGVydHkpLnNldCh2
bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgaGFzT3du
TGVuZ3RoUHJvcGVydHkpKTsKKwogI2lmIEVOQUJMRShJTlRMKQotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGF0ZVRpbWVGb3JtYXRQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0RhdGVUaW1lRm9ybWF0LCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpkYXRlVGltZUZvcm1hdCkuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY0RhdGVUaW1lRm9ybWF0
KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNDb25zdHJ1Y3RvclByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lzQ29u
c3RydWN0b3IsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWdFeHBQcm90b0ZsYWdzR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9G
bGFnc0dldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
UHJvdG9HbG9iYWxHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b0dsb2JhbEdldHRlciwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9JZ25vcmVD
YXNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b011bHRpbGluZUdl
dHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1NvdXJjZUdldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1N0aWNreUdldHRlclByaXZhdGVOYW1lKCksIHJl
Z0V4cFByb3RvU3RpY2t5R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1Vu
aWNvZGVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAg
ICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBCdWlsdGluRXhlY1ByaXZh
dGVOYW1lKCksIGJ1aWx0aW5SZWdFeHBFeGVjLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5yZWdFeHBDcmVhdGVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDIsIFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVhdGUsIE5vSW50cmluc2ljKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWdFeHBQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc1Jl
Z0V4cCwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5yZWdFeHBNYXRjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QsIFJlZ0V4cE1hdGNoRmFz
dEludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4
cFNlYXJjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEs
IFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU3BsaXRGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRG
YXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG90
eXBlU3ltYm9sUmVwbGFjZVByaXZhdGVOYW1lKCksIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBUZXN0RmFzdFByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1Rlc3RG
YXN0LCBSZWdFeHBUZXN0RmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLQotICAgICAgICAvLyBTdHJpbmcucHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJp
bmdJbmNsdWRlc0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdTcGxpdEZhc3RQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90
b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5z
dHJpbmdTdWJzdHJJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBGdW5jdGlvbiBwcm90b3R5
cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLm1ha2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCA1LCBTdHJpbmcoKSwgbWFrZUJvdW5kRnVuY3Rpb24pLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25MZW5ndGhQcm9wZXJ0eVBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGhh
c093bkxlbmd0aFByb3BlcnR5KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
Ci0gICAgICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRIZWFkUHJpdmF0
ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNN
YXBCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBC
dWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEtleSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0VmFsdWVQcml2YXRlTmFtZSgp
LCBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5zZXRCdWNrZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNr
ZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRO
ZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY1NldEJ1Y2tldEtleSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZX1NUUkVBTUlOR19B
UEkpCi0gICAgICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLndlYkFzc2VtYmx5
Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJu
YWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS53ZWJBc3NlbWJseUlu
c3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5n
SW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgLy8gV2Vi
QXNzZW1ibHkgU3RyZWFtaW5nIEFQSQorICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudDo6d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpLnNldCh2bSwgdGhpcywg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlDb21w
aWxlU3RyZWFtaW5nSW50ZXJuYWwpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJs
eUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpKTsKICNlbmRpZgorCisgICAgbGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rpb24pLnNldCh2bSwgdGhpcywgbV9j
YWxsRnVuY3Rpb24uZ2V0KCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6YXBwbHlGdW5jdGlvbikuc2V0KHZtLCB0aGlzLCBtX2FwcGx5RnVuY3Rpb24uZ2V0KCkpOwor
ICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KS5zZXQodm0sIHRo
aXMsIG9iamVjdENvbnN0cnVjdG9yKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6OkFycmF5KS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOworICAgIGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbikuc2V0
KHZtLCB0aGlzLCBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCkpOworCisgICAgR2xvYmFs
UHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZp
bmVkKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5hc3NlcnRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDEsIFN0cmluZygpLCBhc3NlcnRDYWxsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAogI2VuZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIAotICAgIG1fc3BlY2lh
bFBvaW50ZXJzW1NwZWNpYWw6OkNhbGxGdW5jdGlvbl0gPSBtX2NhbGxGdW5jdGlvbi5nZXQoKTsK
LSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlG
dW5jdGlvbi5nZXQoKTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25z
dHJ1Y3Rvcl0gPSBvYmplY3RDb25zdHJ1Y3RvcjsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVj
aWFsOjpBcnJheUNvbnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0KLSAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJv
d1R5cGVFcnJvckZ1bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7Ci0K
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpCiAgICAgICAgIGV4cG9z
ZURvbGxhclZNKHZtKTsKIApAQCAtMTc5NCw2ICsxNzk4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAg
dGhpc09iamVjdC0+bV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2xpbmtUaW1lQ29uc3Rh
bnRzLCBudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzKTsKICAgICAKICNpZiBFTkFCTEUoU0hBUkVE
X0FSUkFZX0JVRkZFUikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYXJlZEFy
cmF5QnVmZmVyUHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IDg5MjZhYWFkZmQ2OGQxYWYxMjkyODA0ZTJkMDM0MjJkN2Zm
NDRmNjUuLmJlZmIzYjZiYzI3NDc4YWMyYWRlZjhkYWVlZmZjNmJmMGY4OGY5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzgsMTEg
KzM4LDExIEBACiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCIKICNpbmNs
dWRlICJMYXp5UHJvcGVydHkuaCIKICNpbmNsdWRlICJMYXp5Q2xhc3NTdHJ1Y3R1cmUuaCIKKyNp
bmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHBHbG9iYWxEYXRhLmgi
CiAjaW5jbHVkZSAiUnVudGltZUZsYWdzLmgiCi0jaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIK
ICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJWTS5oIgpAQCAtNDMwLDggKzQzMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEUoREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NUUlVDVFVSRSkKICN1bmRl
ZiBERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFCiAKLSAgICBKU0NlbGwqIG1fc3Bl
Y2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNl
ZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KLSAgICBKU0NlbGwqIG1fbGlua1RpbWVDb25zdGFudHNb
TGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9saW5r
VGltZUNvbnN0YW50c1tudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzXTsKIAogICAgIFN0cmluZyBt
X25hbWU7CiAKQEAgLTkxMSwxNiArOTEwLDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBsYXp5VHlwZWRB
cnJheVN0cnVjdHVyZSh0eXBlKS5jb25zdHJ1Y3Rvcih0aGlzKTsKICAgICB9CiAKLSAgICBKU0Nl
bGwqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQorICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiYgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtU
aW1lQ29uc3RhbnQpCiAgICAgewotICAgICAgICBBU1NFUlQocG9pbnRlciA8IFNwZWNpYWw6OlRh
YmxlU2l6ZSk7Ci0gICAgICAgIHJldHVybiBtX3NwZWNpYWxQb2ludGVyc1twb2ludGVyXTsKLSAg
ICB9Ci0gICAgSlNDZWxsKiBqc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQgdHlwZSkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291
bnQpOwotICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50c1tpbmRleF07CisgICAgICAg
IHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5rVGlt
ZUNvbnN0YW50KV07CiAgICAgfQogCiAgICAgV2F0Y2hwb2ludFNldCogbWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnQoKSB7IHJldHVybiBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50LmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382692</attachid>
            <date>2019-11-02 21:56:02 -0700</date>
            <delta_ts>2019-11-03 00:18:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191102215601.patch</filename>
            <type>text/plain</type>
            <size>102457</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi44YzkyNGMzZmRkYTI2NGUy
Mjg0YzU0MmYzZWViNTIyMDYxZDhmMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0xMS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0YW50IG1lY2hhbmlzbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAg
ICAgKG5ha2VkQ29uc3RydWN0b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9y
LkludGVybmFsUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UucmVq
ZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuSW50ZXJuYWxQcm9taXNl
LnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDb25z
dGFudHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
bG9va3VwIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpF
bnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5Ojp0
eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50
cnk6OmxpbmtUaW1lQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6ZW1pdHRlciBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6
CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaC4KKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpyZWdp
c3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OnByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlND
OjpnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjphc3luY0dlbmVy
YXRvckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSBj
b25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRyKToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2puZXFfcHRyKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
cGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVz
b2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZSk6CisgICAgICAgICogcGFy
c2VyL05vZGVzLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAg
IChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsaW5rVGlt
ZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFjdHVhbFBvaW50ZXJG
b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6anNDZWxsRm9yTGlu
a1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisKIDIwMTktMTEtMDIgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvcjI1MTg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYyNWZmNjFk
Yjk5MGFkN2Y2ODhhYThlYzE2ZjFkZjlkOGI2ZWM3NjIuLmQ2MGI5YTNlZjZkMGI0MTJiYzNkMTJi
YWI4MTUyZGYzOWRjYTk2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTUyMiw2ICs1MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKICAgICBieXRlY29kZS9MTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAogICAgIGJ5dGVjb2Rl
L0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKKyAgICBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmgKICAgICBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKICAgICBieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYjg0NjlhMmFiMWM1OGYyOGYxMTcyMWI0
NWI0YjNmYzJjOTAwMjg1Li4wNDNjODY0OTAxZDVkNDUxZTBlZDFjNTg5NmMwNjY5NmQxM2VkZmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzYyLDcgKzM2Miw2IEBACiAJCTBG
NEY4MjhDMUUzMUI5NzYwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVk
dWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
RjgyOEExRTMxQjk3MTAwNzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1
bGVyLmggKi87IH07CiAJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUu
aCAqLzsgfTsKIAkJMEY1NTEzQTYxRDVBNjgyQzAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1MTNBNTFENUE2ODJB
MDBDMzJCRDggLyogRnJlZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU0
MUIwMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0
MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY1NkExRDMxNTAwMEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQxMTUw
MDBGMzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MTIsNiArMTgxMSw3IEBACiAJCUUzNUNB
MTU0MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAv
KiBET01KSVRIZWFwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RI
ZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVD
QTE1MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1RTAzNjAxQjdBQjQzRTAw
NzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAv
KiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNkI3
NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIyRjhENjExMDBE
MDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZDQzk0NzIwODYz
MTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21D
cmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNTg1LDggKzI1ODUsNiBAQAogCQkwRjUwQUYzQjE5
M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBwYXRoID0g
ZGZnL0RGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjU1MTNBNTFENUE2ODJBMDBDMzJCRDggLyogRnJlZUxpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJlZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1NTEzQTcxRDVBNjhDQjAwQzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyZWVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWNpYWxQb2ludGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNwZWNpYWxQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTU5ODk3
MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
b05hdGl2ZUZyb21WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1QzE5
MzE3Mjc2RTQ2MDBDRUFCRkQgLyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFZhbHVlLmNwcDsgcGF0aCA9IGRmZy9E
RkdBYnN0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYw
RjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00OTM1LDYgKzQ5MzMsOCBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExp
bmtUaW1lQ29uc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGlua1RpbWVDb25zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3
NjZFMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVu
dHJ5UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNt
Q3JlYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVh
dGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMzcsNiArODIzNyw4
IEBACiAJCQkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLAogCQkJ
CTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAg
Ki8sCiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmggKi8sCisJCQkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3Rh
bnQuY3BwICovLAorCQkJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0
YW50LmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJ
bmZvLmggKi8sCiAJCQkJNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJNTNGQTJBRTAxQ0Yz
N0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5oICovLApAQCAtODI4NCw4ICs4Mjg2LDYgQEAKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAy
MkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLAogCQkJCTBGRjYwQUJGMTY3NDBGODEwMDAy
OTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLywKIAkJCQkwRkY2MEFDMDE2NzQwRjgxMDAw
Mjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICovLAotCQkJCTBGNTU0MUFGMTYxM0MxRkIwMENF
M0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCi0JCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0
IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKIAkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQg
LyogU3BlY3VsYXRlZFR5cGUuaCAqLywKIAkJCQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyog
U3RydWN0dXJlU2V0LmNwcCAqLywKQEAgLTk0NDgsNiArOTQ0OCw3IEBACiAJCQkJMEYyQjY2QUUx
N0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZBRjE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRT
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYg
LyogR0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjI5MjdENTIzNUZEMEI5MDA1Q0Ix
NjkgLyogR0NNZW1vcnlPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3MTUzMTFF
QjI4QkVFMDBBMTY0NUQgLyogR0NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRFOEVC
MDE4QkZGQkJCMDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTk4NDMsNiArOTg0NCw3IEBACiAJCQkJQkMxOEM0MzEwRTE2RjVD
RDAwQjM0NDYwIC8qIExleGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0Ux
MDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5
RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2MzdFRTky
MzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MERFOUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJ
bmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDk2LDcgKzEwMDk4LDYgQEAKIAkJCQkwRkRFODdG
QzFERkU2RTUxMDA2NEMzOTAgLyogU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVj
aWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjU1NDFCMjE2MTNDMUZCMDBD
RTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQx
REFFRUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4
NUY2QkMxOEM1NTNGRTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzQUM3NTIxODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxpZ25tZW50LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjOTA4YWZiNTBlMDVj
MThjZTZkZTFiMWQ3Y2Q2NWQ2YzU4OGRlMzI4Li41MTkyMWQ3MTg2MDliYTFlN2I0ODE0MTA2MzQ3
YWVkMjJlODYwODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNDQsNiArMjQ0
LDcgQEAgYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL0p1
bXBUYWJsZS5jcHAKIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5jcHAKIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorYnl0
ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHAKIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCiBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAogYnl0ZWNvZGUvTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKQEAgLTI2Myw3ICsyNjQsNiBAQCBieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9SZWNv
cmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKLWJ5dGVjb2Rl
L1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCiBieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CmluZGV4IGRkMzNjYTgwMzZhMzBiZjY0ZTA4YTBhMzg3ZWUxYjViNzExYTc4ZjEuLmQ0M2U0OGYw
YmEzMWViZGNmOGJlZDE4YjZlOWFiMGI4ZGJmNTYyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hf
TkFNRShtYWNybykgXAogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5U
U19FQUNIX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhhZGQpIFwKKyAgICBtYWNybyhhcHBseUZ1
bmN0aW9uKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHRJbmRleCkgXAogICAgIG1hY3Jv
KGFycmF5SXRlcmF0aW9uS2luZCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JOZXh0KSBcCkBA
IC01Miw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JL
aW5kKSBcCiAgICAgbWFjcm8oYXJyYXlTcGVjaWVzQ3JlYXRlKSBcCiAgICAgbWFjcm8oYXNzZXJ0
KSBcCisgICAgbWFjcm8oY2FsbEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY2hhckNvZGVBdCkgXAog
ICAgIG1hY3JvKGV4ZWN1dG9yKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCkBAIC03Myw2ICs3NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKICAg
ICBtYWNybyhvd25LZXlzKSBcCiAgICAgbWFjcm8oU2V0KSBcCisgICAgbWFjcm8odGhyb3dUeXBl
RXJyb3JGdW5jdGlvbikgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlMZW5ndGgpIFwKICAgICBtYWNy
byh0eXBlZEFycmF5U29ydCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0
cnVjdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJv
bWlzZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21p
c2VDb25zdHJ1Y3Rvci5qcwppbmRleCAzMGZjNjZlNGI4OWYyZWEwYmQ2OWE3YjgxZGUxMzg1MGYw
MWNkYjc0Li42NmY5NTFmYjRmYzZkMWM2NTFlMDMwNzcwZGVkNTE1ZTkwZGViOWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3Iu
anMKQEAgLTIzNywxOSArMjM3LDE2IEBAIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpCiAgICAg
dmFyIHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAq
LyBmYWxzZSk7CiAgICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAg
IHZhciBAcmVqZWN0ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJu
IEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVy
ZWRQcm9taXNlLCByZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRv
cigKICAgICAgICAgICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAg
ICAgICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25D
YWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEBy
ZWplY3QpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVh
c29uKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAg
ICAgICAgfSk7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7
CisgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hl
Y2socHJvbWlzZSwgZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMjY2
LDE5ICsyNjMsMTYgQEAgZnVuY3Rpb24gSW50ZXJuYWxQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZh
ciBwcm9taXNlID0gQGNyZWF0ZVByb21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8g
dHJ1ZSk7CiAgICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZh
ciBAcmVqZWN0ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEBy
ZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQ
cm9taXNlLCByZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigK
ICAgICAgICAgICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxs
Q2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWpl
Y3QpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29u
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAg
ICAgfSk7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7Cisg
ICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2so
cHJvbWlzZSwgZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggYWY4
MDc2OTMzMmM5Y2I1MGUyMmNjMzNkYWM3NDVhMmRiZTBmZTMwNC4uODU4YWI5MDUwMmU4NGQ3MDc5
MTUzMjVmNjkzZWUzZDVkNTg1YzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0xMzYsNiArMTM2LDkgQEAgdm9pZCBDb2Rl
QmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDb25zdGFudHMoKQogICAgICAgICAgICAg
Y2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyOgogICAgICAgICAgICAgICAgIHNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIiI7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1Rp
bWVDb25zdGFudDoKKyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNj
cmlwdGlvbiA9ICI6IGluIHNvdXJjZSBhcyBsaW5rZS10aW1lLWNvbnN0YW50IjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnBy
aW50ZigiICAgayV1ID0gJXMlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB0b0NTdHJp
bmcoY29uc3RhbnQuZ2V0KCkpLmRhdGEoKSwgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3Jp
cHRpb24pOwogICAgICAgICAgICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IGQ0
MTYzM2M1NWI2MDljZDU3ZTI0M2IyYjFhNGM0NDA5MjE0YzVhZGEuLmJkYmI3OTJmNGY3MDU1Nzhm
OGViYTZjYzJlMGFjYjQzZDQ3MzhjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTQy
LDcgKzQyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CWVRF
Q09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAu
YWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCku
aW1wbCgpLCAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY18jI25hbWUpOwor
I2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQobmFtZSkg
bV9ieXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkubmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksIEVudHJ5KCZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljXyMjbmFtZSkpOworI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RF
X0lOVFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVChhMCwgbmFtZSwg
YTEpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1wbCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6
Om5hbWUpOwogCiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5KFZNJiB2bSkKICAgICA6IG1fdm0odm0pCkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewog
ICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5J
VElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05f
QllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09E
RV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQorICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05T
VEFOVFMoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5L
X1RJTUVfQ09OU1RBTlQpCiAKICAgICBtX3VuZGVmaW5lZC5zZXQobV92bSwganNVbmRlZmluZWQo
KSk7CiAgICAgbV9JbmZpbml0eS5zZXQobV92bSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQog
ICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZS5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNw
ZW5kUmVhc29uOjpOb25lKSkpOwogfQogCi1CeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJU
eXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKK09wdGlvbmFsPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IGNvbnN0CiB7CiAgICAgaWYgKCFpZGVudC5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0
b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJh
dG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBl
ZTVmOTQ5MzVmMzhhNzRhNjE1Njc4NjliZi4uNTY3YjAyNmI1ZTFkMDVjODM2YzAxOWM5MzdjODUw
OTUzYzgyNWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNv
bnN0YW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtMTM3LDcgKzEzOCw0NCBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsK
IAogICAgIHR5cGVkZWYgUmVnaXN0ZXJJRCogKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6KiBFbWl0
dGVyVHlwZSkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik7CiAKLSAgICBFbWl0dGVy
VHlwZSBsb29rdXAoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgeworICAgICAgICBFbWl0dGVyID0gMCwKKyAgICAgICAgTGlua1RpbWVDb25z
dGFudCA9IDEsCisgICAgfTsKKworICAgIGNsYXNzIEVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIEVudHJ5KCkKKyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fZW1pdHRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAg
ICBFbnRyeShFbWl0dGVyVHlwZSBlbWl0dGVyKQorICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6
RW1pdHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9lbWl0dGVyID0gZW1pdHRlcjsKKyAg
ICAgICAgfQorCisgICAgICAgIEVudHJ5KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFu
dCkKKyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudCA9IGxpbmtUaW1lQ29uc3RhbnQ7Cisg
ICAgICAgIH0KKworICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
KyAgICAgICAgTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1
cm4gbV9saW5rVGltZUNvbnN0YW50OyB9CisgICAgICAgIEVtaXR0ZXJUeXBlIGVtaXR0ZXIoKSBj
b25zdCB7IHJldHVybiBtX2VtaXR0ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuaW9u
IHsKKyAgICAgICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsKKyAgICAgICAgICAgIExpbmtU
aW1lQ29uc3RhbnQgbV9saW5rVGltZUNvbnN0YW50OworICAgICAgICB9OworICAgICAgICBUeXBl
IG1fdHlwZTsKKyAgICB9OworCisgICAgT3B0aW9uYWw8RW50cnk+IGxvb2t1cChjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lD
X0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgSlNWYWx1ZSBuYW1lIyNWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYpOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19F
QUNIX05BTUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRP
UlMpCkBAIC0xNDUsNyArMTgzLDcgQEAgY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7
CiAKIHByaXZhdGU6CiAgICAgVk0mIG1fdm07Ci0gICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+LCBFbWl0dGVyVHlwZSwgSWRlbnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRy
aW5zaWNNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7CiAKICNkZWZpbmUgSlND
X0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgU3Ry
b25nPFVua25vd24+IG1fIyNuYW1lOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lD
X0NPTlNUQU5UU19TSU1QTEVfRUFDSF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJ
Q19DT05TVEFOVF9HRU5FUkFUT1JTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKaW5kZXggZDY1MmI2NTg4NGM3OGIwM2JkODBkMmQ2N2Q0OGYxNjg2
MTBiOWE3OC4uMzRjMTUyYTBkNjYyZjM1Mjk3ZGYxNDQ0ODY0ZmI0YmJhMzQwZWY4YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NCwx
MCArNjQsNiBAQAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKIF0KIAotbmFtZXNwYWNl
IDpTcGVjaWFsIGRvCi0gICAgdHlwZXMgWyA6UG9pbnRlciBdCi1lbmQKLQogdGVtcGxhdGVzIFsK
ICAgICA6V3JpdGVCYXJyaWVyLAogICAgIDpXcml0ZUJhcnJpZXJCYXNlLApAQCAtNjc1LDcgKzY3
MSw3IEBACiBvcCA6am5lcV9wdHIsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBzcGVjaWFsUG9pbnRlcjogU3BlY2lhbDo6UG9pbnRlciwKKyAg
ICAgICAgc3BlY2lhbFBvaW50ZXI6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFi
ZWw6IEJvdW5kTGFiZWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1ZWMyNDZjOTFkODJlY2U2MjRk
ZGRjMjZhYmI1ZDU1NDI0M2RiOTgyLi4yNTMwM2VmMDU1NThkODI4N2EwYTk3NWM1ZDRjMGRmMGFl
MjU2ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMzk5LDEyICszOTksNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIHNldENv
bnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1
bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRv
cExldmVsRXhlY3V0YWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25zdGFudENv
dW50OyBpKyspIHsKLSAgICAgICAgTGlua1RpbWVDb25zdGFudCB0eXBlID0gc3RhdGljX2Nhc3Q8
TGlua1RpbWVDb25zdGFudD4oaSk7Ci0gICAgICAgIGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4
ID0gdW5saW5rZWRDb2RlQmxvY2stPnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KHR5
cGUpKQotICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQo
dm0sIHRoaXMsIG1fZ2xvYmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUp
KTsKLSAgICB9Ci0KICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFi
bGUgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgc2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0
ZQogICAgIC8vIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2Rl
IGJsb2NrLiBXZSByZXBsYWNlIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVh
ZHkgY2xvbmVkIG9uZS4KICAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayo+KHZtLCB1bmxpbmtlZENvZGVCbG9jaykpIHsKQEAgLTkwNSwy
OSArODk5LDM2IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBW
ZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhCiAgICAgfQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0g
Y29uc3RhbnRzW2ldLmdldCgpOwotCi0gICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICBK
U0NlbGwqIGNlbGwgPSBjb25zdGFudC5hc0NlbGwoKTsKLSAgICAgICAgICAgICAgICBpZiAoU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBj
ZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBp
bGVkV2l0aFR5cGVQcm9maWxlck9wY29kZXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2Nr
ZXIpOworICAgICAgICBzd2l0Y2ggKGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltp
XSkgeworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25z
dGFudDoKKyAgICAgICAgICAgIGNvbnN0YW50ID0gZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0
YW50KHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGNvbnN0YW50LmFzSW50MzJBc0FueUlu
dCgpKSkuZ2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb246Ok90aGVyOgorICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbjo6SW50ZWdlcjoKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRv
dWJsZToKKyAgICAgICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGNvbnN0YW50LmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTQ2Vs
bCogY2VsbCA9IGNvbnN0YW50LmFzQ2VsbCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBj
ZWxsKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXND
b21waWxlZFdpdGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVBy
b2ZpbGluZyhsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogY2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29w
ZVBhcnQodm0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhc0NvbXBpbGVkV2l0aERl
YnVnZ2luZ09wY29kZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0
UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
YW50ID0gY2xvbmU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3Jp
cHRvciA9IGpzRHluYW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2Vs
bCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9w
TGV2ZWxFeGVjdXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2Ny
aXB0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVP
YmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBTeW1i
b2xUYWJsZSogY2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOwotICAgICAg
ICAgICAgICAgICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOwot
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvKiB0
ZW1wbGF0ZU9iamVjdCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQg
PSB0ZW1wbGF0ZU9iamVjdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotCiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNb
aV0uc2V0KHZtLCB0aGlzLCBjb25zdGFudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ZpdHMuaAppbmRleCBlMjQ0ZmQ2MjcwOWI0MjVhNjI4ZTIyNDU2NjM4YjBlNTYzY2Rh
ZTA5Li5lZGEyNGJlNDY5NTY0YjJlNTBjNjRmZTYwODFiYTIxZjljZWQ5YWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQ
cm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2lu
Y2x1ZGUgIlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1
ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwOTI3NTNjMzRh
OTUzYWI5ZWUxZjQwYjViOTdiZjJlYjNlOTY0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKKworI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKK25hbWVzcGFjZSBXVEYgeworCisjZGVmaW5lIFBSSU5UX0xJTktfVElNRV9DT05TVEFO
VCh2YXJOYW1lLCBuYW1lLCBjb2RlKSBcCisgICAgY2FzZSBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6
Om5hbWU6IFwKKyAgICAgICAgb3V0LnByaW50KCNuYW1lKTsgXAorICAgICAgICByZXR1cm47CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkxpbmtUaW1lQ29uc3Rh
bnQgY29uc3RhbnQpCit7CisgICAgc3dpdGNoIChjb25zdGFudCkgeworICAgICAgICBKU0NfRk9S
RUFDSF9MSU5LX1RJTUVfQ09OU1RBTlRTKFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCkKKyAgICB9
Cit9CisKKyN1bmRlZiBQUklOVF9MSU5LX1RJTUVfQ09OU1RBTlQKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YzkxZGM0ODIyOTk4ZjI4OWViNGZkYjBlYTk5Zjc4M2ZjZTMwNWMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtU
aW1lQ29uc3RhbnQuaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDQnVpbHRp
bnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEpTR2xv
YmFsT2JqZWN0OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFModikg
XAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRSh2
KSBcCisgICAgdih0aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9u
LCBudWxscHRyKSBcCisgICAgdihpbXBvcnRNb2R1bGUsIGltcG9ydE1vZHVsZSwgbnVsbHB0cikg
XAorICAgIHYobWFwQnVja2V0SGVhZCwgbWFwQnVja2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYo
bWFwQnVja2V0TmV4dCwgbWFwQnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0
S2V5LCBtYXBCdWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldFZhbHVlLCBtYXBC
dWNrZXRWYWx1ZSwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0SGVhZCwgc2V0QnVja2V0SGVh
ZCwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0TmV4dCwgc2V0QnVja2V0TmV4dCwgbnVsbHB0
cikgXAorICAgIHYoc2V0QnVja2V0S2V5LCBzZXRCdWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2
KHByb3BlcnR5SXNFbnVtZXJhYmxlLCBwcm9wZXJ0eUlzRW51bWVyYWJsZSwgbnVsbHB0cikgXAor
ICAgIHYob3duS2V5cywgb3duS2V5cywgbnVsbHB0cikgXAorICAgIHYoZW5xdWV1ZUpvYiwgZW5x
dWV1ZUpvYiwgbnVsbHB0cikgXAorICAgIHYobWFrZVR5cGVFcnJvciwgbWFrZVR5cGVFcnJvciwg
bnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheUxlbmd0aCwgdHlwZWRBcnJheUxlbmd0aCwgbnVs
bHB0cikgXAorICAgIHYodHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIHR5cGVkQXJy
YXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAgdih0eXBlZEFycmF5U29y
dCwgdHlwZWRBcnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KGlzVHlwZWRBcnJheVZpZXcsIGlz
VHlwZWRBcnJheVZpZXcsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0
ZSwgdHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0JvdW5kRnVu
Y3Rpb24sIGlzQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzSW5zdGFuY2VCb3Vu
ZEZ1bmN0aW9uLCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGlu
c3RhbmNlT2YsIGluc3RhbmNlT2YsIG51bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5Mb2csIEJ1aWx0
aW5Mb2csIG51bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5EZXNjcmliZSwgQnVpbHRpbkRlc2NyaWJl
LCBudWxscHRyKSBcCisgICAgdihSZWdFeHAsIFJlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYodHJ1
bmMsIHRydW5jLCBudWxscHRyKSBcCisgICAgdihQcm9taXNlLCBQcm9taXNlLCBudWxscHRyKSBc
CisgICAgdihJbnRlcm5hbFByb21pc2UsIEludGVybmFsUHJvbWlzZSwgbnVsbHB0cikgXAorICAg
IHYoZGVmYXVsdFByb21pc2VUaGVuLCBkZWZhdWx0UHJvbWlzZVRoZW4sIG51bGxwdHIpIFwKKyAg
ICB2KHJlcGVhdENoYXJhY3RlciwgcmVwZWF0Q2hhcmFjdGVyLCBudWxscHRyKSBcCisgICAgdihh
cnJheVNwZWNpZXNDcmVhdGUsIGFycmF5U3BlY2llc0NyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYo
aXNBcnJheSwgaXNBcnJheSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheVNsb3csIGlzQXJyYXlT
bG93LCBudWxscHRyKSBcCisgICAgdihjb25jYXRNZW1jcHksIGNvbmNhdE1lbWNweSwgbnVsbHB0
cikgXAorICAgIHYoYXBwZW5kTWVtY3B5LCBhcHBlbmRNZW1jcHksIG51bGxwdHIpIFwKKyAgICB2
KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2Vy
LCBudWxscHRyKSBcCisgICAgdihJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiwgbnVsbHB0cikgXAorICAgIHYoU2V0LCBTZXQsIG51bGxwdHIpIFwKKyAg
ICB2KHRoaXNUaW1lVmFsdWUsIHRoaXNUaW1lVmFsdWUsIG51bGxwdHIpIFwKKyAgICB2KGlzQ29u
c3RydWN0b3IsIGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvRmxh
Z3NHZXR0ZXIsIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4
cFByb3RvR2xvYmFsR2V0dGVyLCByZWdFeHBQcm90b0dsb2JhbEdldHRlciwgbnVsbHB0cikgXAor
ICAgIHYocmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyLCByZWdFeHBQcm90b0lnbm9yZUNhc2VH
ZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCByZWdF
eHBQcm90b011bHRpbGluZUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9Tb3Vy
Y2VHZXR0ZXIsIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdF
eHBQcm90b1N0aWNreUdldHRlciwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIG51bGxwdHIpIFwK
KyAgICB2KHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciwgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVy
LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBCdWlsdGluRXhlYywgcmVnRXhwQnVpbHRpbkV4ZWMs
IG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cENyZWF0ZSwgcmVnRXhwQ3JlYXRlLCBudWxscHRyKSBc
CisgICAgdihpc1JlZ0V4cCwgaXNSZWdFeHAsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cE1hdGNo
RmFzdCwgcmVnRXhwTWF0Y2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTZWFyY2hGYXN0
LCByZWdFeHBTZWFyY2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTcGxpdEZhc3QsIHJl
Z0V4cFNwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG90eXBlU3ltYm9sUmVw
bGFjZSwgcmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgbnVsbHB0cikgXAorICAgIHYocmVn
RXhwVGVzdEZhc3QsIHJlZ0V4cFRlc3RGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdJbmNs
dWRlc0ludGVybmFsLCBzdHJpbmdJbmNsdWRlc0ludGVybmFsLCBudWxscHRyKSBcCisgICAgdihz
dHJpbmdTcGxpdEZhc3QsIHN0cmluZ1NwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYoc3RyaW5n
U3Vic3RySW50ZXJuYWwsIHN0cmluZ1N1YnN0ckludGVybmFsLCBudWxscHRyKSBcCisgICAgdiht
YWtlQm91bmRGdW5jdGlvbiwgbWFrZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGhh
c093bkxlbmd0aFByb3BlcnR5LCBoYXNPd25MZW5ndGhQcm9wZXJ0eSwgbnVsbHB0cikgXAorICAg
IHYoZGF0ZVRpbWVGb3JtYXQsIGRhdGVUaW1lRm9ybWF0LCBudWxscHRyKSBcCisgICAgdih3ZWJB
c3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFt
aW5nSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJl
YW1pbmdJbnRlcm5hbCwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsLCBu
dWxscHRyKSBcCisgICAgdihPYmplY3QsIE9iamVjdCwgbnVsbHB0cikgXAorICAgIHYoQXJyYXks
IEFycmF5LCBudWxscHRyKSBcCisgICAgdihhcHBseUZ1bmN0aW9uLCBhcHBseUZ1bmN0aW9uLCBu
dWxscHRyKSBcCisgICAgdihjYWxsRnVuY3Rpb24sIGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAor
CisKKyNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQodmFyTmFtZSwgbmFtZSwgY29k
ZSkgbmFtZSwKK2VudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3QgeworICAgIEpT
Q19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQp
Cit9OworI3VuZGVmIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UCisjZGVmaW5lIENPVU5UX0xJ
TktfVElNRV9DT05TVEFOVCh2YXJOYW1lLCBuYW1lLCBjb2RlKSAxICsKK3N0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cyA9IEpTQ19GT1JFQUNIX0xJTktf
VElNRV9DT05TVEFOVFMoQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKSAwOworI3VuZGVmIENPVU5U
X0xJTktfVElNRV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdU
RiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWQzZjI0Y2EwNDgxZDExYTY3ZWJkMWJmYmFiZTg2
NmZkMzFkNDhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9p
bnRlci5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lk
KiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNwZWNpYWw6
OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2lu
dGVyRm9yKHBvaW50ZXIpOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGFjdHVh
bFBvaW50ZXJGb3IoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcG9pbnRlcik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAg
IHN3aXRjaCAocG9pbnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVuY3Rpb246
Ci0gICAgICAgIG91dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEpTQzo6U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJB
cHBseUZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6
T2JqZWN0Q29uc3RydWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3RydWN0b3Ii
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNvbnN0cnVj
dG9yOgotICAgICAgICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91dC5wcmlu
dCgiVGFibGVTaXplIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNp
YWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5MmJhYjc2ZWEyYmZmN2U2ZTg4
MzUzNWVhNGQ3NmM0MWIwNDY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotCi1uYW1lc3Bh
Y2UgU3BlY2lhbCB7Ci1lbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7Ci0gICAgQ2FsbEZ1bmN0aW9u
LAotICAgIEFwcGx5RnVuY3Rpb24sCi0gICAgT2JqZWN0Q29uc3RydWN0b3IsCi0gICAgQXJyYXlD
b25zdHJ1Y3RvciwKLSAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50ZXIu
IFVzZSB0aGlzIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgotfTsKLX0gLy8g
bmFtZXNwYWNlIFNwZWNpYWwKLQotZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBU
aHJvd1R5cGVFcnJvckZ1bmN0aW9uLAotfTsKLWNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3Rh
bnRDb3VudCA9IDE7Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBv
aW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBT
cGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBw
b2ludGVySXNDZWxsKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5V
U0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiwgU3BlY2lh
bDo6UG9pbnRlcik7Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayosIFNwZWNpYWw6
OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNs
YXNzIFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6
OlNwZWNpYWw6OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDIz
NGZhNTc3YzVhZjBhMTIxNmM3YjRkNmQwNDQ3ZDBiY2Y4ZDRjNDkuLmQ1ZGRlZThkNTYwNzcwMzIz
YjFmZDVmMWFjY2NjYzA1MDJjMTI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzYsOCArNzYsNiBAQCBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVy
YXRpb25Nb2RlKQogICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0
ZSgpKQogewotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlckluZGV4IDogbV9saW5rVGlt
ZUNvbnN0YW50cykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlckluZGV4ID0gMDsKICAgICBBU1NF
UlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3Ry
dWN0b3JLaW5kKCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY29kZVR5cGUpKTsKICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NzM5ZGE3ODM1NjhkM2ViMjYz
MWVlZjFhNzI0MjkyODc5N2Y1NjY5Li5kNjA3MzYwMTRkZDFlMzE1NzEzYTg1MmU4N2RhNjU2MTQx
NjMwMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2lu
Y2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCi0jaW5jbHVkZSAiU3Bl
Y2lhbFBvaW50ZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdp
c3Rlci5oIgpAQCAtMTgwLDI3ICsxNzksMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24uYXBwZW5kKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlw
ZSkKKyAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29u
c3RhbnQpCiAgICAgewogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICBhdXRv
IGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNlbGxMb2NrKCkpOwogICAgICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAgICAg
QVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291
bnQpOwotICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XSA9IHJlc3VsdDsKICAgICAg
ICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwot
ICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMu
bGFzdCgpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGlua1Rp
bWVDb25zdGFudCkpKTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24uYXBwZW5kKFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRl
eEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAg
ICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAg
IEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBt
X2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8V3Jp
dGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0
YW50UmVnaXN0ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFu
dFJlZ2lzdGVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tp
bmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlu
ZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CkBAIC00MDYsOCArMzk1LDYgQEAg
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3Rl
cjsKIAotICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9s
aW5rVGltZUNvbnN0YW50czsKLQogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVu
c2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3Ig
OiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAyZGI4MThmMGI5YjU0YjIxNWJhZjA2Y2NjNmFlMzFj
M2MyOWFkZmFlLi44MzZmZDU3OGYyYzE4NGZiMzM2MjU1ODcxYzZiMTJjM2MxMzY3YTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMzA4LDkgKzMwOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQ
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNj
b3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lz
dGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lz
dGVyID0gbnVsbHB0cjsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAv
LyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM2MCw5
ICszNTcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBkYXRl
QXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8
IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNv
ZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdGFu
dFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFu
dFJlZ2lzdGVyID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRh
YmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxl
LT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3lt
Ym9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwxMSArNzgyLDcgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29s
dmluZ0Z1bmN0aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJvd25WYWx1ZSk7CiAgICAgICAgIC8v
IHJldHVybiBAcHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJSZWplY3RQcm9taXNlID0gdmFyaWFi
bGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlamVjdFByb21pc2VXaXRoRmlyc3RS
ZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgbW92ZShzY29wZS5n
ZXQoKSwgZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSkpOwot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IGVtaXRHZXRGcm9tU2Nv
cGUobmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlLCBUaHJvd0lm
Tm90Rm91bmQpOwotCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0g
bW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJv
bWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKTsKICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICAgICAgZW1pdExvYWQoYXJncy50
aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIG1vdmUoYXJncy5hcmd1bWVu
dFJlZ2lzdGVyKDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBAIC04NDgsOSArODM4LDYgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxO
b2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25D
b250ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZh
bCgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwot
CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKICAgICBwdXNoVERaVmFy
aWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRv
Tm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CkBAIC05MTAsOSArODk3LDYg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKLSAg
ICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3Rl
cnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgU3ltYm9sVGFi
bGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1f
dm0pOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RF
dmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGUtPnNldFNjb3BlVHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwpA
QCAtMTQ0MiwxMiArMTQyNiwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElm
RmFsc2UoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIAogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJl
bCYgdGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpD
YWxsRnVuY3Rpb24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhp
cywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6
Y2FsbEZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJl
bCYgdGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpB
cHBseUZ1bmN0aW9uLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0KHRo
aXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6
OmFwcGx5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVH
ZW5lcmF0b3I6Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApAQCAt
MzEwMSw3ICszMDg1LDcgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYgKGNh
bGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAgICAg
ICAgcmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0
cjo6ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvciwgcmVhbENhbGwt
PmJpbmQodGhpcykpOworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxp
bmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KSwgcmVhbENh
bGwtPmJpbmQodGhpcykpOwogICAgICAgICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVz
dWx0KCkpCiAgICAgICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBAIC0zMTE3LDcgKzMxMDEs
NyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5j
dGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID4gMikKICAgICAgICAgICAgIHJldHVybiBOb0V4
cGVjdGVkRnVuY3Rpb247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywg
ZnVuYywgU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykpOwor
ICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3RhbnQo
bnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6QXJyYXkpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7
CiAgICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAg
ICAgICAgaWYgKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9PSAy
KQpAQCAtMzI4NSw3ICszMjY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxE
ZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICBpZiAo
YXR0cmlidXRlcy5oYXNHZXQoKSB8fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgICAgICBpZiAoIWF0
dHJpYnV0ZXMuaGFzR2V0KCkgfHwgIWF0dHJpYnV0ZXMuaGFzU2V0KCkpCi0gICAgICAgICAgICB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGdldHRlcjsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCkBAIC00
NDc0LDEwICs0NDU4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRB
c3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKIAogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJh
dG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKLSAgICBhdXRvIHZhckNyZWF0ZUFz
eW5jRnJvbVN5bmNJdGVyYXRvciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5jcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBtb3ZlKHNjb3BlLmdl
dCgpLCBlbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJDcmVhdGVBc3luY0Zyb21TeW5j
SXRlcmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0
ZXJhdG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZh
ckNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gbW92ZUxpbmtUaW1l
Q29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlQXN5bmNGcm9tU3luY0l0
ZXJhdG9yKTsKIAogICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMik7CiAg
ICAgZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggMmQ3MjFlYjc3OTBiMzczMDIzNzhmZmFjYjkxMjI3MmRmYjhlN2M0Zi4uZjViMzU2
OGQxZDc1NTAyODc0ZmQ2N2FkNTVmZDhkODJmM2FlNzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5j
bHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCisjaW5jbHVkZSAiTGlua1Rp
bWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3Iu
aCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgpAQCAtMTIxNiw3ICsxMjE3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVyaXZlZENvbnN0dWN0
b3IgeyBudWxscHRyIH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJl
Z2lzdGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdOworICAgICAgICBSZWdpc3RlcklEKiBtX2xp
bmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50c10geyB9Owog
ICAgICAgICBSZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25t
ZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fcHJvbWlzZVJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMmUwM2JlMGI3Yzc1ZGRiMDI3ZWM0ZTZm
NjU2MjE4ZDhlMGZlNTFhNi4uNzk0NDVmYWU1YmUzMzQ0ZTRkYjQwODJjYmUyMGQ2NWMzNDZkOWU4
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAK
IFJlZ2lzdGVySUQqIEltcG9ydE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGlt
cG9ydE1vZHVsZSA9IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW1w
b3J0TW9kdWxlUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1v
ZHVsZSA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50OjppbXBvcnRNb2R1bGUpOwogICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVy
YXRvciwgbnVsbHB0ciwgMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3Vt
ZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBtX2V4cHIpOwpAQCAtOTg1LDcgKzk4NSwxMSBAQCBS
ZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKLSAgICByZXR1cm4gKHRoaXMtPiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0KTsK
KyAgICBpZiAobV9lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlw
ZTo6RW1pdHRlcikKKyAgICAgICAgcmV0dXJuICh0aGlzLT4qbV9lbnRyeS5lbWl0dGVyKCkpKGdl
bmVyYXRvciwgZHN0KTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZUxpbmtU
aW1lQ29uc3RhbnQoZHN0LCBtX2VudHJ5LmxpbmtUaW1lQ29uc3RhbnQoKSk7CiB9CiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QnlJZERpcmVj
dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xMDEz
LDkgKzEwMTcsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19nZXRCeUlkRGlyZWN0UHJpdmF0ZShCeXRlY29kZUcKIAogc3RhdGljIEpTUHJvbWlz
ZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUq
IG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKKyAgICBBU1NFUlQobm9kZS0+
ZW50cnkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIp
OworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKICAgICAgICAgcmV0dXJuIEpT
UHJvbWlzZTo6RmllbGQ6OkZsYWdzOwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JS
ZXN1bHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KQog
ICAgICAgICByZXR1cm4gSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQ7CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNQcm9taXNlOjpGaWVs
ZDo6RmxhZ3M7CkBAIC0xMDIzLDEzICsxMDI4LDE0IEBAIHN0YXRpYyBKU1Byb21pc2U6OkZpZWxk
IHByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQog
CiBzdGF0aWMgSlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChC
eXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9
PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0
YXRlKQorICAgIEFTU0VSVChub2RlLT5lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigp
ID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxk
U3RhdGUpCiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwotICAgIGlm
IChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfZ2VuZXJhdG9yRmllbGROZXh0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9
PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5l
eHQpCiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5v
ZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19n
ZW5lcmF0b3JGaWVsZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykK
ICAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKLSAgICBpZiAobm9kZS0+
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCiAg
ICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOwogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7
CkBAIC0xMDM3LDE5ICsxMDQzLDIwIEBAIHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJh
dG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kCiAKIHN0YXRp
YyBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRl
eChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFN0YXRlKQorICAgIEFTU0VSVChub2RlLT5lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRl
cigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZp
ZWxkU3RhdGUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7
Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkTmV4dCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0
OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVt
aXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0
b3JGaWVsZFRoaXMpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6VGhp
czsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCku
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6
RnJhbWU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKKyAgICBp
ZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCiAgICAgICAgIHJl
dHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbjsKLSAgICBpZiAobm9k
ZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2Fz
eW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVy
YXRvckZpZWxkUXVldWVGaXJzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZp
ZWxkOjpRdWV1ZUZpcnN0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkK
KyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKICAgICAgICAg
cmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3Q7CiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6
OlN0YXRlOwpAQCAtNDA5NiwxMCArNDEwMyw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwg
c3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgIC8vIGxvYWQgYW5k
IGNhbGwgQGFzeW5jRnVuY3Rpb25SZXN1bWUKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1
bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUo
c2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIp
KTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1bWUgPSBnZW5l
cmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdl
dCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBh
c3luY0Z1bmN0aW9uUmVzdW1lID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxw
dHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFzeW5jRnVuY3Rpb25SZXN1bWUpOwogCiAgICAgICAgIENh
bGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDQpOwogICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudENvdW50ID0gMDsKQEAgLTQ1NzgsMTEgKzQ1ODIsNyBAQCB2b2lkIE9iamVjdFBh
dHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogcmhzKQogICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGFkZE1ldGhvZDsKICAgICBpZiAobV9jb250YWluc1Jlc3RFbGVtZW50ICYmIG1f
Y29udGFpbnNDb21wdXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGF1dG8gdmFyID0gZ2VuZXJhdG9y
LnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuU2V0UHJp
dmF0ZU5hbWUoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwg
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9IGdl
bmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpT
ZXQpOwogCiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDAp
OwogICAgICAgICBleGNsdWRlZExpc3QgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBzZXRDb25zdHJ1Y3Rvci5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwpAQCAtNDYzMywxMSArNDYzMyw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMp
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0ID0gZ2VuZXJhdG9yLmVt
aXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0gICAgICAgICAg
ICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmNvcHlEYXRhUHJvcGVydGllc1ByaXZhdGVOYW1lKCkpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwg
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5RGF0
YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CkBAIC00ODEwLDExICs0ODA2LDcgQEAgUmVnaXN0ZXJJRCogT2JqZWN0U3ByZWFkRXhwcmVz
c2lvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG8KICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoc3JjLmdldCgpLCBtX2V4cHJlc3Npb24pOwogICAgIAogICAgIC8v
IGxvYWQgYW5kIGNhbGwgQGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucwotICAgIGF1dG8g
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zUHJpdmF0ZU5hbWUoKSk7Ci0g
ICAgCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwotICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlE
YXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGlt
ZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJvcGVydGllc05v
RXhjbHVzaW9ucyk7CiAgICAgCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVs
bHB0ciwgMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpz
VW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCBlMGVlZjQ5MTdhYTY4MWZhYzI5NGM5ODg0OTgyNWIyZDkzZjAwZjFh
Li4zMzc4YWQwOTJmNmEyNDIwMzNjZjQwNzY4M2Q5Mzg5NWQzZDNjZDQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjM0MiwxMSAr
NjM0Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwotICAg
ICAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBzcGVjaWFsUG9pbnRlciA9IGJ5dGVjb2RlLm1fc3Bl
Y2lhbFBvaW50ZXI7Ci0gICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzQ2VsbChzcGVjaWFsUG9p
bnRlcikpOwotICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyID0gc3RhdGljX2Nhc3Q8
SlNDZWxsKj4oCi0gICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZvcihtX2lubGluZVN0YWNr
VG9wLT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKLSAgICAgICAgICAgIEZyb3plblZh
bHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFsUG9pbnRlcik7CisgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ryb25n
KG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5tX3Nw
ZWNpYWxQb2ludGVyLm9mZnNldCgpKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9m
ZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBO
b2RlKiBjaGlsZCA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwZDA0OTk0NTgwZDliMzg4MWM5MDJiMDFhYmEz
ZTYxZDk2MDM2ZTU5Li44ZWJlNDlmZWJiZjUxMzViNTM1ZTNjZGQ3Njk2NTY4MTUwNTNkYTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ3MSwxMSArNDcx
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwot
ICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKKyAg
ICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2RlLm1f
c3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9pbnRlci5pc0Nl
bGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoc3JjLCByZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNo
UHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29kZUJs
b2NrLCBwdHIpKSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVx
dWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAg
IHN0b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRk
SnVtcChqdW1wKCksIHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzZTBjZWI0NjkzYTU4
OTVmM2FmZWJjOTYyYTljMTQzZjA4MjhjNTMxLi40ZTk0MjQ1NDc5ZjNmNDc2OTdhOGI2OTNjNWRm
MWYwMTBlYjIzMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCkBAIC00NzgsMTIgKzQ3OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0
cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgc3JjID0gYnl0
ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5dGVj
b2RlLm1fc3BlY2lhbFBvaW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdldENv
bnN0YW50T3BlcmFuZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKTsKKyAgICBB
U1NFUlQoc3BlY2lhbFBvaW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1
bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAog
ICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENlbGwgPSBicmFu
Y2hJZk5vdENlbGwocmVnVDEpOwotICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJl
Z1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikpKTsK
KyAgICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihz
cGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAgICBz
dG9yZTgoVHJ1c3RlZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQpOwogICAgIGFkZEp1
bXAoanVtcCgpLCB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMzdlZTIyYjQ5M2QwYjVh
ZTRkMzc0MmRiMTIyZjUyM2JlYWYzZjZhLi40YzYwZGJlZTEzM2FlYmY2OTlkMjRmYzk3OTNhODQ0
MmUyMTExOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTcxMCwxMiArMTcxMCwxMCBAQCB1bmRl
ZmluZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9yTnVs
bCwKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1ZSwg
dDApCi0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQotICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxP
YmplY3RbdDJdLCB0MgorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MywgdDIpCiAgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCi0gICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fc3BlY2lhbFBvaW50ZXJzW3QyLCB0MSwgNF0sIHQxCi0gICAgYnBlcSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisgICAgYnBlcSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCiAub3BK
bmVxUHRyQnJhbmNoOgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BKbmVx
UHRyOjpNZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDA0NDNmMGNmZThi
MzcyN2VjOTRiZDRkNTg5NzA5NjEwYjQyOWM4NmEuLjA1ZThmZGEzZGU1ZjRiYjUzMTk2N2QzMDg4
OWI3NjViN2FkYTJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE2LDExICsxODE2LDkgQEAgdW5kZWZp
bmVkT3JOdWxsSnVtcE9wKGpudW5kZWZpbmVkX29yX251bGwsIE9wSm51bmRlZmluZWRPck51bGws
CiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFsdWUsIHQw
KQotICAgIGdldHUoc2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNpYWxQb2ludGVyLCB0MSkKLSAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVjaWFsUG9pbnRlcnNb
dDIsIHQxLCBQdHJTaXplXSwgdDEKLSAgICBicG5lcSB0MSwgW2NmciwgdDAsIDhdLCAub3BKbmVx
UHRyVGFyZ2V0CisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQorICAgIGJwbmVxIHQyLCBbY2ZyLCB0MCwgOF0sIC5v
cEpuZXFQdHJUYXJnZXQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEpuZXFQdHJUYXJnZXQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNhZjAzMDgyOTIxZDEy
OTVhMDQyOGRiMGNiZTA0MTJjM2FjZjBjOTkuLmNjNTk3ZjViNDRiOWU3MTc5ZjVkZTU1YjBlZWQy
YmY4NjkwNWVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CkBAIC0yMDAsOCArMjAwLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICB1c2Vz
QXJndW1lbnRzKCk7CiAKICAgICAgICAgaWYgKGlkZW50LmlzU3ltYm9sKCkpIHsKLSAgICAgICAg
ICAgIGlmIChCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIGVtaXR0ZXIgPSBtX3Zt
LmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRl
Y29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2NhdGlvbiwgZW1pdHRlciwgaWRl
bnQsIG51bGxwdHIsIHN0YXJ0LCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGF1dG8gZW50cnkg
PSBtX3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpOworICAgICAg
ICAgICAgaWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNv
bnN0YW50LCBsb2NhdGlvbiwgZW50cnkudmFsdWUoKSwgaWRlbnQsIG51bGxwdHIsIHN0YXJ0LCBz
dGFydCwgZW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOwpAQCAtMTM4NCw4ICsxMzg1
LDggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBpZiAoZnVuYy0+aXNCeXRlY29kZUlu
dHJpbnNpY05vZGUoKSkgewogICAgICAgICBBU1NFUlQoIWlzT3B0aW9uYWxDYWxsKTsKICAgICAg
ICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBpbnRyaW5zaWMgPSBzdGF0aWNfY2FzdDxCeXRlY29k
ZUludHJpbnNpY05vZGUqPihmdW5jKTsKLSAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQpCi0gICAgICAgICAgICByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW1pdHRlcigp
LCBpbnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kKTsKKyAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6VHlwZTo6Q29uc3RhbnQgJiYgaW50cmluc2ljLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVudHJ5KCksIGlu
dHJpbnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
OwogICAgIH0KIAogICAgIGlmIChmdW5jLT5pc09wdGlvbmFsQ2hhaW4oKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA3NTg5ZDdj
OTFlODk1ZWIyZDk5NjMzZGJmNWI0YWE1ZDI2YWViODRlLi45YzdiOWEyODIwNzNjNTc2YTYzNDll
NGQ2OWMyMjBiYTVjY2RlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVj
b2RlSW50cmluc2ljTm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEVtaXR0ZXJUeXBlIGVtaXR0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAg
aW5saW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUg
dHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6RW50cnkgZW50cnksIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNO
b2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fZW1pdHRlcihl
bWl0dGVyKQorICAgICAgICAsIG1fZW50cnkoZW50cnkpCiAgICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICAgICAgLCBtX3R5cGUodHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBhYTQ0ODY2NGQxZDQ4MTQwZDEwYTQ1OTBj
MDY3ZDUwMWE4YjYyODdmLi5mYWQ1MzI4YTJiOTQ0MzdkYjJkYWU3ZjFjODZiMjg5YzFhMzQxZmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC05NDQsMTQgKzk0NCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEZ1bmN0aW9uCiAgICAgICAgIH07CiAKLSAg
ICAgICAgdHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0
ZXJUeXBlKShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKLQotICAgICAgICBCeXRl
Y29kZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRlclR5
cGUsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5
LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2ljTm9k
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsgfQorICAgICAgICBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpFbnRyeSBlbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnk7IH0KICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
IAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TKG5hbWUp
IFJlZ2lzdGVySUQqIGVtaXRfaW50cmluc2ljXyMjbmFtZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqKTsKQEAgLTk2NCw3ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09
IFR5cGU6OkZ1bmN0aW9uOyB9CiAKLSAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOworICAg
ICAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBtX2VudHJ5OwogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7
CiAgICAgICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IDYwMzVhNDkwOTI2YzRhZTVmYzMzMjdhZmZlZGY0Mjc2Yjkz
ZjA2NTcuLmViOWQ5OTNiMjUxNGM2NzI5ZTEwMmY2NWU3MjBhNzI4YWYyYzI0MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MDEsNyAr
MTgwMSw2IEBAIGNsYXNzIENhY2hlZENvZGVCbG9jayA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8Q29k
ZUJsb2NrVHlwZT4gewogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKLSAgICBzdGQ6OmFycmF5
PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7CiAK
ICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9k
ZSA6IDE7CkBAIC0yMDM5LDkgKzIwMzgsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJs
b2NrOjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENv
ZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlua2Vk
Q29kZUJsb2NrJiBjb2RlQmxvY2spIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gTGlu
a1RpbWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBjb2RlQmxvY2subV9saW5rVGltZUNv
bnN0YW50c1tpXSA9IG1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX2NvbnN0YW50UmVn
aXN0ZXJzLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywgJmNv
ZGVCbG9jayk7CiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVjb2Rl
KGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7
CiAgICAgbV9leHByZXNzaW9uSW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhwcmVz
c2lvbkluZm8pOwpAQCAtMjIwNyw5ICsyMjAzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hl
ZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMK
ICAgICBtX2NvZGVHZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9uTW9k
ZTsKICAgICBtX2NvZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbaV0gPSBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAg
IG1fbWV0YWRhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX21ldGFkYXRhLmdldCgpKTsK
ICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9yYXJlRGF0YS5nZXQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA0
N2ZjZDMzOGI0MDU5ODM2Y2QzNjgxZTg0ZTAxZmFiNzQzMzk3Njc0Li4yNTk5ZTJjNTYyOTEwZjk4
MTQ2YzkxOGI1MjI0OWM4NTViZDJhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCkBAIC0xMjksNyArMTI5LDggQEAgYm9vbCBpc0ludDUyKGRvdWJsZSk7
CiBlbnVtIGNsYXNzIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA6IHVpbnQ4X3QgewogICAgIE90
aGVyLAogICAgIEludGVnZXIsCi0gICAgRG91YmxlCisgICAgRG91YmxlLAorICAgIExpbmtUaW1l
Q29uc3RhbnQsCiB9OwogCiBjbGFzcyBKU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjNjViMGIzNzBkMDI1NzVlMDBi
MWY1MDQ5MDk5MTA3ZTc3MGU3MjhkLi5hNDkyZWJjZjU3NzQ3N2JlMTMzYWY5MzBmMTE5OTA0Nzc3
NGQzZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC05OTMsMTA0ICs5OTMsMTA4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAgICAgbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVzb2x2ZVByb21p
c2VQcml2YXRlRnVuY3Rpb24pOwogICAgIG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwg
dGhpcywgcmVqZWN0UHJvbWlzZVByaXZhdGVGdW5jdGlvbik7CiAKLSAgICBHbG9iYWxQcm9wZXJ0
eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewotI2RlZmluZSBJTklUX1BSSVZBVEVfR0xPQkFMKHZh
ck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZnVuY05hbWUgIyMgUHJpdmF0ZU5hbWUoKSwgdmFyTmFtZSAjIyBQ
cml2YXRlRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKElOSVRf
UFJJVkFURV9HTE9CQUwpCisgICAgLy8gRklYTUU6IFdpbGwgbWFrZSB0aGVtIExhenlQcm9wZXJ0
eSEKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNzk1
CisKKyNkZWZpbmUgSU5JVF9QUklWQVRFX0dMT0JBTCh2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkg
bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpmdW5jTmFtZSkuc2V0KHZtLCB0aGlz
LCB2YXJOYW1lICMjIFByaXZhdGVGdW5jdGlvbik7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCiAjdW5kZWYg
SU5JVF9QUklWQVRFX0dMT0JBTAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwg
anNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2
YXRlTmFtZSgpLCBwcml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNPd25LZXlzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRN
b2R1bGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlVHlwZUVycm9yUHJpdmF0
ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYWtlVHlwZUVycm9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNUeXBlZEFycmF5TGVuZ3RoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS50eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIHByaXZhdGVG
dW5jVHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlTb3J0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNUeXBlZEFycmF5U29ydCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
aXNUeXBlZEFycmF5Vmlld1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmll
dywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVN1YmFy
cmF5Q3JlYXRlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVh
dGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQm91bmRGdW5jdGlv
blByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb25Qcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5zdGFuY2VPZlByaXZhdGVOYW1lKCksIHByaXZh
dGVGdW5jSW5zdGFuY2VPZiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
QnVpbHRpbkxvZ1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5Mb2csIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLkJ1aWx0aW5EZXNjcmliZVByaXZhdGVOYW1lKCksIGJ1aWx0aW5E
ZXNjcmliZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUmVnRXhwUHJp
dmF0ZU5hbWUoKSwgcmVnRXhwQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnRydW5jUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUcnVuYywgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCksIHBy
b21pc2VDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
SW50ZXJuYWxQcm9taXNlUHJpdmF0ZU5hbWUoKSwgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Is
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmF1bHRQcm9taXNlVGhl
blByaXZhdGVOYW1lKCksIHByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcGVhdENoYXJhY3RlclByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVu
Y1JlcGVhdENoYXJhY3RlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmFycmF5U3BlY2llc0NyZWF0ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJh
eUNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0FycmF5U2xvd1ByaXZhdGVO
YW1lKCksIHByaXZhdGVGdW5jSXNBcnJheVNsb3csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmNvbmNhdE1lbWNweVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jQ29uY2F0
TWVtY3B5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBlbmRNZW1j
cHlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXJQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9i
YWxGdW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5TZXRQcml2YXRlTmFtZSgpLCBzZXRDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudGhpc1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
VGhpc1RpbWVWYWx1ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgIGxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aW1wb3J0TW9kdWxlKS5zZXQodm0sIHRo
aXMsIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlKTsKKyAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJz
LgorICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0SGVhZCku
c2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQpOworICAgIGxpbmtUaW1lQ29u
c3RhbnQoTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0TmV4dCkuc2V0KHZtLCB0aGlzLCBwcml2
YXRlRnVuY01hcEJ1Y2tldE5leHQpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudDo6bWFwQnVja2V0S2V5KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jTWFwQnVja2V0S2V5
KTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldFZhbHVl
KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUpOworICAgIGxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6c2V0QnVja2V0SGVhZCkuc2V0KHZtLCB0aGlzLCBw
cml2YXRlRnVuY1NldEJ1Y2tldEhlYWQpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6c2V0QnVja2V0TmV4dCkuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY1NldEJ1Y2tl
dE5leHQpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6c2V0QnVja2V0
S2V5KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jU2V0QnVja2V0S2V5KTsKKworICAgIGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cHJvcGVydHlJc0VudW1lcmFibGUpLnNldCh2
bSwgdGhpcywgcHJpdmF0ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk7CisgICAgbGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50Ojpvd25LZXlzKS5zZXQodm0sIHRoaXMsIHByaXZhdGVG
dW5jT3duS2V5cyk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjplbnF1
ZXVlSm9iKS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgImVu
cXVldWVKb2IiX3MsIGVucXVldWVKb2IpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNNYWtlVHlw
ZUVycm9yKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJy
YXlMZW5ndGgpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoKTsKKyAg
ICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlHZXRPcmlnaW5h
bENvbnN0cnVjdG9yKS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jVHlwZWRBcnJheUdldE9yaWdp
bmFsQ29uc3RydWN0b3IpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6
dHlwZWRBcnJheVNvcnQpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCk7
CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojppc1R5cGVkQXJyYXlWaWV3
KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmlldyk7CisgICAgbGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpLnNl
dCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpOworICAgIGxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aXNCb3VuZEZ1bmN0aW9uKS5zZXQodm0s
IHRoaXMsIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uKTsKKyAgICBsaW5rVGltZUNvbnN0YW50
KExpbmtUaW1lQ29uc3RhbnQ6Omhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikuc2V0KHZtLCB0aGlz
LCBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7CisgICAgbGlua1RpbWVDb25z
dGFudChMaW5rVGltZUNvbnN0YW50OjppbnN0YW5jZU9mKS5zZXQodm0sIHRoaXMsIHByaXZhdGVG
dW5jSW5zdGFuY2VPZik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpC
dWlsdGluTG9nKS5zZXQodm0sIHRoaXMsIGJ1aWx0aW5Mb2cpOworICAgIGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkRlc2NyaWJlKS5zZXQodm0sIHRoaXMsIGJ1aWx0
aW5EZXNjcmliZSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpSZWdF
eHApLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOworICAgIGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6dHJ1bmMpLnNldCh2bSwgdGhpcywgcHJpdmF0ZUZ1bmNUcnVu
Yyk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKS5zZXQo
dm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6
ZGVmYXVsdFByb21pc2VUaGVuKS5zZXQodm0sIHRoaXMsIHByb21pc2VQcm90b1RoZW5GdW5jdGlv
bigpKTsKKworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVwZWF0Q2hh
cmFjdGVyKS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3Ry
aW5nKCksIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlcikpOworICAgIGxpbmtUaW1lQ29u
c3RhbnQoTGlua1RpbWVDb25zdGFudDo6YXJyYXlTcGVjaWVzQ3JlYXRlKS5zZXQodm0sIHRoaXMs
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9GdW5j
U3BlY2llc0NyZWF0ZSkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6
aXNBcnJheSkuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6OmlzQXJyYXlTbG93KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jSXNBcnJheVNs
b3cpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6Y29uY2F0TWVtY3B5
KS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KTsKKyAgICBsaW5rVGltZUNv
bnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGVuZE1lbWNweSkuc2V0KHZtLCB0aGlzLCBwcml2
YXRlRnVuY0FwcGVuZE1lbWNweSk7CisKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6Omhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcikuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VS
ZWplY3Rpb25UcmFja2VyKSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pLnNldCh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldCkuc2V0KHZt
LCB0aGlzLCBzZXRDb25zdHJ1Y3Rvcik7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50Ojp0aGlzVGltZVZhbHVlKS5zZXQodm0sIHRoaXMsIHByaXZhdGVGdW5jVGhpc1RpbWVW
YWx1ZSk7CisKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmlzQ29uc3Ry
dWN0b3IpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKKworICAgIGxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9GbGFnc0dldHRlcikuc2V0KHZt
LCB0aGlzLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKS5zZXQodm0sIHRoaXMsIHJl
Z0V4cFByb3RvR2xvYmFsR2V0dGVyKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6OnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlcikuc2V0KHZtLCB0aGlzLCByZWdFeHBQ
cm90b0lnbm9yZUNhc2VHZXR0ZXIpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudDo6cmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpLnNldCh2bSwgdGhpcywgcmVnRXhwUHJv
dG9NdWx0aWxpbmVHZXR0ZXIpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6cmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIpLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Tb3Vy
Y2VHZXR0ZXIpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhw
UHJvdG9TdGlja3lHZXR0ZXIpLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIp
OworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9Vbmlj
b2RlR2V0dGVyKS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcik7CisKKyAg
ICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCisgICAgbGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYykuc2V0KHZtLCB0aGlzLCBidWlsdGluUmVn
RXhwRXhlYyk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBD
cmVhdGUpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJp
bmcoKSwgZXNTcGVjUmVnRXhwQ3JlYXRlLCBOb0ludHJpbnNpYykpOworICAgIGxpbmtUaW1lQ29u
c3RhbnQoTGlua1RpbWVDb25zdGFudDo6aXNSZWdFeHApLnNldCh2bSwgdGhpcywgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmlu
c2ljKSk7CisgICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBNYXRj
aEZhc3QpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0LCBSZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMp
KTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNlYXJjaEZh
c3QpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmco
KSwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6cmVnRXhwU3BsaXRGYXN0KS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCkp
OworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG90eXBl
U3ltYm9sUmVwbGFjZSkuc2V0KHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSk7CisgICAgbGlua1RpbWVDb25z
dGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBUZXN0RmFzdCkuc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNUZXN0
RmFzdCwgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMpKTsKKworICAgIC8vIFN0cmluZy5wcm90b3R5
cGUgaGVscGVycy4KKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnN0cmlu
Z0luY2x1ZGVzSW50ZXJuYWwpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpKTsKKyAgICBs
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnN0cmluZ1NwbGl0RmFzdCkuc2V0KHZt
LCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQ
cm90b0Z1bmNTcGxpdEZhc3QpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6OnN0cmluZ1N1YnN0ckludGVybmFsKS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCkpOwor
CisgICAgLy8gRnVuY3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCisgICAgbGlua1RpbWVDb25zdGFu
dChMaW5rVGltZUNvbnN0YW50OjptYWtlQm91bmRGdW5jdGlvbikuc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDUsIFN0cmluZygpLCBtYWtlQm91bmRGdW5jdGlvbikp
OworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6aGFzT3duTGVuZ3RoUHJv
cGVydHkpLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpKTsKKwogI2lmIEVOQUJMRShJTlRMKQotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGF0
ZVRpbWVGb3JtYXRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0RhdGVUaW1lRm9ybWF0LCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgbGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50OjpkYXRlVGltZUZvcm1hdCkuc2V0KHZtLCB0aGlzLCBwcml2YXRlRnVuY0Rh
dGVUaW1lRm9ybWF0KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKLQotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNDb25zdHJ1Y3Rv
clByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCks
IGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0ZsYWdzR2V0dGVyUHJpdmF0ZU5hbWUoKSwg
cmVnRXhwUHJvdG9GbGFnc0dldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b0ds
b2JhbEdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
UHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9JZ25vcmVDYXNl
R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90
b011bHRpbGluZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVy
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1NvdXJj
ZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1N0aWNreUdldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJQcml2YXRlTmFtZSgpLCBy
ZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLQotICAgICAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBCdWls
dGluRXhlY1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5SZWdFeHBFeGVjLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBDcmVhdGVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVhdGUsIE5v
SW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWdF
eHBQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygp
LCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5yZWdFeHBNYXRjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QsIFJl
Z0V4cE1hdGNoRmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlZ0V4cFNlYXJjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU3BsaXRGYXN0UHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJv
dG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZVByaXZhdGVOYW1lKCksIG1fcmVnRXhwUHJvdG90
eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBUZXN0RmFzdFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFBy
b3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0RmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBTdHJpbmcucHJvdG90eXBlIGhlbHBl
cnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5zdHJpbmdJbmNsdWRlc0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJu
YWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdTcGxpdEZh
c3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygp
LCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5zdHJpbmdTdWJzdHJJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5h
bCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBGdW5j
dGlvbiBwcm90b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA1LCBTdHJpbmcoKSwgbWFrZUJvdW5kRnVu
Y3Rpb24pLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25MZW5n
dGhQcm9wZXJ0eVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwg
U3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNr
ZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5tYXBCdWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEtl
eSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0VmFsdWVQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0
ZUZ1bmNTZXRCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5zZXRCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRLZXlQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZ
X1NUUkVBTUlOR19BUEkpCi0gICAgICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlDb21waWxlU3Ry
ZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS53
ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUluc3RhbnRp
YXRlU3RyZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
CisgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQorICAgIGxpbmtUaW1lQ29uc3RhbnQo
TGlua1RpbWVDb25zdGFudDo6d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpKTsKKyAgICBsaW5rVGltZUNvbnN0YW50
KExpbmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5h
bCkuc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygp
LCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpKTsKICNlbmRpZgorCisg
ICAgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rpb24pLnNldCh2
bSwgdGhpcywgbV9jYWxsRnVuY3Rpb24uZ2V0KCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbikuc2V0KHZtLCB0aGlzLCBtX2FwcGx5RnVuY3Rp
b24uZ2V0KCkpOworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6T2JqZWN0
KS5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKKyAgICBsaW5rVGltZUNvbnN0YW50
KExpbmtUaW1lQ29uc3RhbnQ6OkFycmF5KS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3Ip
OworICAgIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JG
dW5jdGlvbikuc2V0KHZtLCB0aGlzLCBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCkpOwor
CisgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQsIGpzVW5kZWZpbmVkKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hc3NlcnRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBhc3NlcnRDYWxsKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2VuZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxz
KHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIAot
ICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkNhbGxGdW5jdGlvbl0gPSBtX2NhbGxGdW5j
dGlvbi5nZXQoKTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9u
XSA9IG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFs
OjpPYmplY3RDb25zdHJ1Y3Rvcl0gPSBvYmplY3RDb25zdHJ1Y3RvcjsKLSAgICBtX3NwZWNpYWxQ
b2ludGVyc1tTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0K
LSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rp
b24uZ2V0KCk7Ci0KICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpCiAg
ICAgICAgIGV4cG9zZURvbGxhclZNKHZtKTsKIApAQCAtMTc5NCw2ICsxNzk4LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2xp
bmtUaW1lQ29uc3RhbnRzLCBudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzKTsKICAgICAKICNpZiBF
TkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3NoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDg5MjZhYWFkZmQ2OGQxYWYxMjkyODA0
ZTJkMDM0MjJkN2ZmNDRmNjUuLmJlZmIzYjZiYzI3NDc4YWMyYWRlZjhkYWVlZmZjNmJmMGY4OGY5
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJu
YWwuaCIKICNpbmNsdWRlICJMYXp5UHJvcGVydHkuaCIKICNpbmNsdWRlICJMYXp5Q2xhc3NTdHJ1
Y3R1cmUuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiTnVtYmVy
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHBH
bG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiUnVudGltZUZsYWdzLmgiCi0jaW5jbHVkZSAiU3BlY2lh
bFBvaW50ZXIuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTeW1i
b2xQcm90b3R5cGUuaCIKICNpbmNsdWRlICJWTS5oIgpAQCAtNDMwLDggKzQzMCw3IEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAg
IEZPUl9FQUNIX1RZUEVEX0FSUkFZX1RZUEUoREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NUUlVD
VFVSRSkKICN1bmRlZiBERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFCiAKLSAgICBK
U0NlbGwqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwg
cG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KLSAgICBKU0NlbGwqIG1fbGlua1Rp
bWVDb25zdGFudHNbTGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gbV9saW5rVGltZUNvbnN0YW50c1tudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzXTsKIAog
ICAgIFN0cmluZyBtX25hbWU7CiAKQEAgLTkxMSwxNiArOTEwLDkgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVy
biBsYXp5VHlwZWRBcnJheVN0cnVjdHVyZSh0eXBlKS5jb25zdHJ1Y3Rvcih0aGlzKTsKICAgICB9
CiAKLSAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVy
KQorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50IGxpbmtUaW1lQ29uc3RhbnQpCiAgICAgewotICAgICAgICBBU1NFUlQocG9pbnRlciA8
IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgICAgIHJldHVybiBtX3NwZWNpYWxQb2ludGVyc1tw
b2ludGVyXTsKLSAgICB9Ci0gICAgSlNDZWxsKiBqc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KExp
bmtUaW1lQ29uc3RhbnQgdHlwZSkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGlt
ZUNvbnN0YW50Q291bnQpOwotICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50c1tpbmRl
eF07CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihsaW5rVGltZUNvbnN0YW50KV07CiAgICAgfQogCiAgICAgV2F0Y2hwb2ludFNldCogbWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKSB7IHJldHVybiBtX21hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50LmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382695</attachid>
            <date>2019-11-03 00:18:52 -0700</date>
            <delta_ts>2019-11-03 00:30:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103001851.patch</filename>
            <type>text/plain</type>
            <size>138578</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi41NThhODA0ZTcxZTIxODZk
OWI4ODgzYzU5N2IzZTM4M2JhMjc5NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzcgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
TmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAg
ICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rv
ci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9taXNlLnJl
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFsUHJvbWlz
ZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ29u
c3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVu
dHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmguCisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cmVn
aXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJl
c29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1Rp
bWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVy
Rm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmpzQ2VsbEZvckxp
bmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAg
ICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAgICAgIChuYWtlZENv
bnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5JbnRlcm5hbFBy
b21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9taXNlLnJlamVjdCk6IERlbGV0
ZWQuCisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFsUHJvbWlzZS5yZWplY3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ29uc3RhbnRzKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6RW50cnkpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6dHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpsaW5rVGlt
ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eTo6RW50cnk6OmVtaXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRD
b25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmguCisgICAgICAgIChXVEY6OnByaW50
SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cmVnaXN0ZXJJbmRleEZv
ckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVt
cElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdG9y
SW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RC
dWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgICog
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNo
ZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlDb25zdHJ1Y3RvciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBDb25zdHJ1Y3RvciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3RvciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlQ29uc3RydWN0b3Ig
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dGhyb3dUeXBl
RXJyb3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpuZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlc29sdmVQcm9taXNlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6cmVqZWN0UHJvbWlzZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b1RoZW5GdW5jdGlvbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0V4ZWNGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlciBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1RpbWVDb25zdGFu
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsRnVuY3Rpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXBwbHlGdW5jdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQ
b2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmpzQ2Vs
bEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorCiAyMDE5LTExLTAyICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCBodHRwOi8vdHJhYy53
ZWJraXQub3JnL3IyNTE4NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBm
MjVmZjYxZGI5OTBhZDdmNjg4YWE4ZWMxNmYxZGY5ZDhiNmVjNzYyLi5mZTcwYTM1MjJkNmUzZmFj
NjkwMTZmZDY4ZmIwNTM5OTY3M2UxNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC01MjIsNiArNTIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCiAgICAgYnl0ZWNv
ZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKICAgICBi
eXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCisgICAgYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCiAgICAgYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCiAgICAgYnl0ZWNvZGUvT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uLmgKQEAgLTUyOSw3ICs1MzAsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wY29kZVNpemUuaAogICAgIGJ5dGVjb2RlL1By
b3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAg
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYjg0NjlhMmFiMWM1OGYyOGYxMTcyMWI0NWI0
YjNmYzJjOTAwMjg1Li4wNDNjODY0OTAxZDVkNDUxZTBlZDFjNTg5NmMwNjY5NmQxM2VkZmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzYyLDcgKzM2Miw2IEBACiAJCTBGNEY4
MjhDMUUzMUI5NzYwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Rjgy
OEExRTMxQjk3MTAwNzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVy
LmggKi87IH07CiAJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAq
LzsgfTsKIAkJMEY1NTEzQTYxRDVBNjgyQzAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1MTNBNTFENUE2ODJBMDBD
MzJCRDggLyogRnJlZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU0MUIw
MTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAv
KiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1
NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1NkExRDMxNTAwMEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQxMTUwMDBG
MzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MTIsNiArMTgxMSw3IEBACiAJCUUzNUNBMTU0
MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAvKiBE
T01KSVRIZWFwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1
MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1RTAzNjAxQjdBQjQzRTAwNzNB
RDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAvKiBM
aW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNkI3Njcw
MjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIyRjhENjExMDBEMDk4
MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZDQzk0NzIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVh
dGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcw
MDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNTg1LDggKzI1ODUsNiBAQAogCQkwRjUwQUYzQjE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBwYXRoID0gZGZn
L0RGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjU1MTNBNTFENUE2ODJBMDBDMzJCRDggLyogRnJlZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJlZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NTEzQTcxRDVBNjhDQjAwQzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyZWVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWNpYWxQb2ludGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWNpYWxQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTU5ODk3MTdD
ODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUb05h
dGl2ZUZyb21WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1QzE5MzE3
Mjc2RTQ2MDBDRUFCRkQgLyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFZhbHVlLmNwcDsgcGF0aCA9IGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjEx
NEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00OTM1LDYgKzQ5MzMsOCBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtU
aW1lQ29uc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlu
a1RpbWVDb25zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3NjZF
MjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5
UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVhdGlv
bk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMzcsNiArODIzNyw4IEBA
CiAJCQkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLAogCQkJCTBG
QjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8s
CiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
LmggKi8sCisJCQkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQu
Y3BwICovLAorCQkJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50
LmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggKi8sCiAJCQkJNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJNTNGQTJBRTAxQ0YzN0Yz
RjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5oICovLApAQCAtODI4NCw4ICs4Mjg2LDYgQEAKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLAogCQkJCTBGRjYwQUJGMTY3NDBGODEwMDAyOTc3
OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLywKIAkJCQkwRkY2MEFDMDE2NzQwRjgxMDAwMjk3
NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICovLAotCQkJCTBGNTU0MUFGMTYxM0MxRkIwMENFM0Uy
NSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCi0JCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKIAkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyog
U3BlY3VsYXRlZFR5cGUuaCAqLywKIAkJCQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3Ry
dWN0dXJlU2V0LmNwcCAqLywKQEAgLTk0NDgsNiArOTQ0OCw3IEBACiAJCQkJMEYyQjY2QUUxN0I2
QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZBRjE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyog
R0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjI5MjdENTIzNUZEMEI5MDA1Q0IxNjkg
LyogR0NNZW1vcnlPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3MTUzMTFFQjI4
QkVFMDBBMTY0NUQgLyogR0NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRFOEVCMDE4
QkZGQkJCMDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTk4NDMsNiArOTg0NCw3IEBACiAJCQkJQkMxOEM0MzEwRTE2RjVDRDAw
QjM0NDYwIC8qIExleGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBC
MzQ0NjAgLyogTGV4ZXIubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdG
MDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2MzdFRTkyMzZF
NTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MERFOUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDk2LDcgKzEwMDk4LDYgQEAKIAkJCQkwRkRFODdGQzFE
RkU2RTUxMDA2NEMzOTAgLyogU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFs
aXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NUY2
QkMxOEM1NTNGRTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzQUM3NTIxODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxpZ25tZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjOTA4YWZiNTBlMDVjMThj
ZTZkZTFiMWQ3Y2Q2NWQ2YzU4OGRlMzI4Li41MTkyMWQ3MTg2MDliYTFlN2I0ODE0MTA2MzQ3YWVk
MjJlODYwODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNDQsNiArMjQ0LDcg
QEAgYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL0p1bXBU
YWJsZS5jcHAKIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAKIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5jcHAKIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAogYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5jcHAKQEAgLTI2Myw3ICsyNjQsNiBAQCBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKLWJ5dGVjb2RlL1Nw
ZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCiBieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmlu
ZGV4IGRkMzNjYTgwMzZhMzBiZjY0ZTA4YTBhMzg3ZWUxYjViNzExYTc4ZjEuLmQ0M2U0OGYwYmEz
MWViZGNmOGJlZDE4YjZlOWFiMGI4ZGJmNTYyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFN
RShtYWNybykgXAogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19F
QUNIX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhhZGQpIFwKKyAgICBtYWNybyhhcHBseUZ1bmN0
aW9uKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHRJbmRleCkgXAogICAgIG1hY3JvKGFy
cmF5SXRlcmF0aW9uS2luZCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JOZXh0KSBcCkBAIC01
Miw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JLaW5k
KSBcCiAgICAgbWFjcm8oYXJyYXlTcGVjaWVzQ3JlYXRlKSBcCiAgICAgbWFjcm8oYXNzZXJ0KSBc
CisgICAgbWFjcm8oY2FsbEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY2hhckNvZGVBdCkgXAogICAg
IG1hY3JvKGV4ZWN1dG9yKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCkBAIC03Myw2ICs3NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKICAgICBt
YWNybyhvd25LZXlzKSBcCiAgICAgbWFjcm8oU2V0KSBcCisgICAgbWFjcm8odGhyb3dUeXBlRXJy
b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlMZW5ndGgpIFwKICAgICBtYWNybyh0
eXBlZEFycmF5U29ydCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVj
dG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlz
ZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VD
b25zdHJ1Y3Rvci5qcwppbmRleCAzMGZjNjZlNGI4OWYyZWEwYmQ2OWE3YjgxZGUxMzg1MGYwMWNk
Yjc0Li42NmY5NTFmYjRmYzZkMWM2NTFlMDMwNzcwZGVkNTE1ZTkwZGViOWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMK
QEAgLTIzNywxOSArMjM3LDE2IEBAIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFy
IHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyBm
YWxzZSk7CiAgICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZh
ciBAcmVqZWN0ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEBy
ZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQ
cm9taXNlLCByZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigK
ICAgICAgICAgICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxs
Q2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWpl
Y3QpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29u
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAg
ICAgfSk7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7Cisg
ICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2so
cHJvbWlzZSwgZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMjY2LDE5
ICsyNjMsMTYgQEAgZnVuY3Rpb24gSW50ZXJuYWxQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZhciBw
cm9taXNlID0gQGNyZWF0ZVByb21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gdHJ1
ZSk7CiAgICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZhciBA
cmVqZWN0ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEByZWpl
Y3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9t
aXNlLCByZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigKICAg
ICAgICAgICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hl
Y2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWplY3Qp
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29uKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5n
RnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAgICAg
fSk7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7CisgICAg
ICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJv
bWlzZSwgZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggYWY4MDc2
OTMzMmM5Y2I1MGUyMmNjMzNkYWM3NDVhMmRiZTBmZTMwNC4uODU4YWI5MDUwMmU4NGQ3MDc5MTUz
MjVmNjkzZWUzZDVkNTg1YzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0xMzYsNiArMTM2LDkgQEAgdm9pZCBDb2RlQmxv
Y2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDb25zdGFudHMoKQogICAgICAgICAgICAgY2Fz
ZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyOgogICAgICAgICAgICAgICAgIHNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIiI7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVD
b25zdGFudDoKKyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlw
dGlvbiA9ICI6IGluIHNvdXJjZSBhcyBsaW5rZS10aW1lLWNvbnN0YW50IjsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50
ZigiICAgayV1ID0gJXMlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB0b0NTdHJpbmco
Y29uc3RhbnQuZ2V0KCkpLmRhdGEoKSwgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRp
b24pOwogICAgICAgICAgICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IGQ0MTYz
M2M1NWI2MDljZDU3ZTI0M2IyYjFhNGM0NDA5MjE0YzVhZGEuLmJkYmI3OTJmNGY3MDU1NzhmOGVi
YTZjYzJlMGFjYjQzZDQ3MzhjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTQyLDcg
KzQyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CWVRFQ09E
RV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRk
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1w
bCgpLCAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY18jI25hbWUpOworI2Rl
ZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQobmFtZSkgbV9i
eXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksIEVudHJ5KCZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljXyMjbmFtZSkpOworI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lO
VFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVChhMCwgbmFtZSwgYTEp
IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1wbCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5h
bWUpOwogCiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5KFZNJiB2bSkKICAgICA6IG1fdm0odm0pCkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewogICAg
IEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5JVElB
TElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05fQllU
RUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9J
TlRSSU5TSUNfTkFNRVNfVE9fU0VUKQorICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFO
VFMoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5LX1RJ
TUVfQ09OU1RBTlQpCiAKICAgICBtX3VuZGVmaW5lZC5zZXQobV92bSwganNVbmRlZmluZWQoKSk7
CiAgICAgbV9JbmZpbml0eS5zZXQobV92bSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAg
IG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uOjpOb25lKSkpOwogfQogCi1CeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBl
IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKK09wdGlvbmFsPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFpZGVudC5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRl
cmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9y
LT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBlZTVm
OTQ5MzVmMzhhNzRhNjE1Njc4NjliZi4uNTY3YjAyNmI1ZTFkMDVjODM2YzAxOWM5MzdjODUwOTUz
YzgyNWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0
YW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMTM3LDcgKzEzOCw0NCBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAog
ICAgIHR5cGVkZWYgUmVnaXN0ZXJJRCogKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6KiBFbWl0dGVy
VHlwZSkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik7CiAKLSAgICBFbWl0dGVyVHlw
ZSBsb29rdXAoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGVudW0gY2xhc3MgVHlwZSA6
IHVpbnQ4X3QgeworICAgICAgICBFbWl0dGVyID0gMCwKKyAgICAgICAgTGlua1RpbWVDb25zdGFu
dCA9IDEsCisgICAgfTsKKworICAgIGNsYXNzIEVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IEVudHJ5KCkKKyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fZW1pdHRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBF
bnRyeShFbWl0dGVyVHlwZSBlbWl0dGVyKQorICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6RW1p
dHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9lbWl0dGVyID0gZW1pdHRlcjsKKyAgICAg
ICAgfQorCisgICAgICAgIEVudHJ5KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkK
KyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudCA9IGxpbmtUaW1lQ29uc3RhbnQ7CisgICAg
ICAgIH0KKworICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAg
ICAgICAgTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4g
bV9saW5rVGltZUNvbnN0YW50OyB9CisgICAgICAgIEVtaXR0ZXJUeXBlIGVtaXR0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2VtaXR0ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuaW9uIHsK
KyAgICAgICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsKKyAgICAgICAgICAgIExpbmtUaW1l
Q29uc3RhbnQgbV9saW5rVGltZUNvbnN0YW50OworICAgICAgICB9OworICAgICAgICBUeXBlIG1f
dHlwZTsKKyAgICB9OworCisgICAgT3B0aW9uYWw8RW50cnk+IGxvb2t1cChjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NP
TlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgSlNWYWx1ZSBuYW1lIyNWYWx1ZShCeXRlY29kZUdlbmVy
YXRvciYpOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNI
X05BTUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMp
CkBAIC0xNDUsNyArMTgzLDcgQEAgY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAK
IHByaXZhdGU6CiAgICAgVk0mIG1fdm07Ci0gICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBFbWl0dGVyVHlwZSwgSWRlbnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5z
aWNNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7CiAKICNkZWZpbmUgSlNDX0RF
Q0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgU3Ryb25n
PFVua25vd24+IG1fIyNuYW1lOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NP
TlNUQU5UU19TSU1QTEVfRUFDSF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19D
T05TVEFOVF9HRU5FUkFUT1JTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKaW5kZXggZDY1MmI2NTg4NGM3OGIwM2JkODBkMmQ2N2Q0OGYxNjg2MTBi
OWE3OC4uMzRjMTUyYTBkNjYyZjM1Mjk3ZGYxNDQ0ODY0ZmI0YmJhMzQwZWY4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NCwxMCAr
NjQsNiBAQAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKIF0KIAotbmFtZXNwYWNlIDpT
cGVjaWFsIGRvCi0gICAgdHlwZXMgWyA6UG9pbnRlciBdCi1lbmQKLQogdGVtcGxhdGVzIFsKICAg
ICA6V3JpdGVCYXJyaWVyLAogICAgIDpXcml0ZUJhcnJpZXJCYXNlLApAQCAtNjc1LDcgKzY3MSw3
IEBACiBvcCA6am5lcV9wdHIsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAotICAgICAgICBzcGVjaWFsUG9pbnRlcjogU3BlY2lhbDo6UG9pbnRlciwKKyAgICAg
ICAgc3BlY2lhbFBvaW50ZXI6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6
IEJvdW5kTGFiZWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1ZWMyNDZjOTFkODJlY2U2MjRkZGRj
MjZhYmI1ZDU1NDI0M2RiOTgyLi4wZjhlN2Y4YjRmOTI0NDQ3MzgyYTVkOGU4ODEzNzYwN2Q0OWMy
NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMzk5LDEyICszOTksNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIHNldENvbnN0
YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxp
bmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExl
dmVsRXhlY3V0YWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50
OyBpKyspIHsKLSAgICAgICAgTGlua1RpbWVDb25zdGFudCB0eXBlID0gc3RhdGljX2Nhc3Q8TGlu
a1RpbWVDb25zdGFudD4oaSk7Ci0gICAgICAgIGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4ID0g
dW5saW5rZWRDb2RlQmxvY2stPnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUp
KQotICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQodm0s
IHRoaXMsIG1fZ2xvYmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsK
LSAgICB9Ci0KICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFibGUg
Zm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgc2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0ZQog
ICAgIC8vIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2RlIGJs
b2NrLiBXZSByZXBsYWNlIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVhZHkg
Y2xvbmVkIG9uZS4KICAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayo+KHZtLCB1bmxpbmtlZENvZGVCbG9jaykpIHsKQEAgLTkwNSwyOSAr
ODk5LDM2IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0
b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhCiAgICAgfQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gY29u
c3RhbnRzW2ldLmdldCgpOwotCi0gICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICBKU0Nl
bGwqIGNlbGwgPSBjb25zdGFudC5hc0NlbGwoKTsKLSAgICAgICAgICAgICAgICBpZiAoU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxs
KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVk
V2l0aFR5cGVQcm9maWxlck9wY29kZXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIp
OworICAgICAgICBzd2l0Y2ggKGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpXSkg
eworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFu
dDoKKyAgICAgICAgICAgIGNvbnN0YW50ID0gZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50
KHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGNvbnN0YW50LmFzSW50MzJBc0FueUludCgp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb246Ok90aGVyOgorICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6SW50
ZWdlcjoKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToKKyAg
ICAgICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNvbnN0YW50LmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IGNvbnN0YW50LmFzQ2VsbCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdp
dGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhs
b2NrZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBTeW1ib2xUYWJsZSogY2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0p
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09w
Y29kZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFD
b2RlQmxvY2sodGhpcyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xv
bmU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVj
dXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSog
Y2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOwotICAgICAgICAgICAgICAg
ICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOwotCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcio+KHZtLCBjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvKiB0ZW1wbGF0ZU9i
amVjdCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBkZXNjcmlwdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0
ZU9iamVjdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotCiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KHZt
LCB0aGlzLCBjb25zdGFudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Zp
dHMuaAppbmRleCBlMjQ0ZmQ2MjcwOWI0MjVhNjI4ZTIyNDU2NjM4YjBlNTYzY2RhZTA5Li5lZGEy
NGJlNDY5NTY0YjJlNTBjNjRmZTYwODFiYTIxZjljZWQ5YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQcm9maWxlVHlw
ZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlJl
c3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwOTI3NTNjMzRhOTUzYWI5ZWUx
ZjQwYjViOTdiZjJlYjNlOTY0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25h
bWVzcGFjZSBXVEYgeworCisjZGVmaW5lIFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCh2YXJOYW1l
LCBuYW1lLCBjb2RlKSBcCisgICAgY2FzZSBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWU6IFwK
KyAgICAgICAgb3V0LnByaW50KCNuYW1lKTsgXAorICAgICAgICByZXR1cm47CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQgY29uc3Rh
bnQpCit7CisgICAgc3dpdGNoIChjb25zdGFudCkgeworICAgICAgICBKU0NfRk9SRUFDSF9MSU5L
X1RJTUVfQ09OU1RBTlRTKFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCkKKyAgICB9Cit9CisKKyN1
bmRlZiBQUklOVF9MSU5LX1RJTUVfQ09OU1RBTlQKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YzkxZGM0ODIyOTk4ZjI4OWViNGZkYjBlYTk5Zjc4M2ZjZTMwNWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFModikgXAorICAgIEpT
Q19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRSh2KSBcCisgICAg
dih0aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCBudWxscHRy
KSBcCisgICAgdihpbXBvcnRNb2R1bGUsIGltcG9ydE1vZHVsZSwgbnVsbHB0cikgXAorICAgIHYo
bWFwQnVja2V0SGVhZCwgbWFwQnVja2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0
TmV4dCwgbWFwQnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0S2V5LCBtYXBC
dWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldFZhbHVlLCBtYXBCdWNrZXRWYWx1
ZSwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0SGVhZCwgc2V0QnVja2V0SGVhZCwgbnVsbHB0
cikgXAorICAgIHYoc2V0QnVja2V0TmV4dCwgc2V0QnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAg
IHYoc2V0QnVja2V0S2V5LCBzZXRCdWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KHByb3BlcnR5
SXNFbnVtZXJhYmxlLCBwcm9wZXJ0eUlzRW51bWVyYWJsZSwgbnVsbHB0cikgXAorICAgIHYob3du
S2V5cywgb3duS2V5cywgbnVsbHB0cikgXAorICAgIHYoZW5xdWV1ZUpvYiwgZW5xdWV1ZUpvYiwg
bnVsbHB0cikgXAorICAgIHYobWFrZVR5cGVFcnJvciwgbWFrZVR5cGVFcnJvciwgbnVsbHB0cikg
XAorICAgIHYodHlwZWRBcnJheUxlbmd0aCwgdHlwZWRBcnJheUxlbmd0aCwgbnVsbHB0cikgXAor
ICAgIHYodHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIHR5cGVkQXJyYXlHZXRPcmln
aW5hbENvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAgdih0eXBlZEFycmF5U29ydCwgdHlwZWRB
cnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KGlzVHlwZWRBcnJheVZpZXcsIGlzVHlwZWRBcnJh
eVZpZXcsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgdHlwZWRB
cnJheVN1YmFycmF5Q3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0JvdW5kRnVuY3Rpb24sIGlz
Qm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
LCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGluc3RhbmNlT2Ys
IGluc3RhbmNlT2YsIG51bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5Mb2csIEJ1aWx0aW5Mb2csIG51
bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5EZXNjcmliZSwgQnVpbHRpbkRlc2NyaWJlLCBudWxscHRy
KSBcCisgICAgdihSZWdFeHAsIFJlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYodHJ1bmMsIHRydW5j
LCBudWxscHRyKSBcCisgICAgdihQcm9taXNlLCBQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihJ
bnRlcm5hbFByb21pc2UsIEludGVybmFsUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoZGVmYXVs
dFByb21pc2VUaGVuLCBkZWZhdWx0UHJvbWlzZVRoZW4sIG51bGxwdHIpIFwKKyAgICB2KHJlcGVh
dENoYXJhY3RlciwgcmVwZWF0Q2hhcmFjdGVyLCBudWxscHRyKSBcCisgICAgdihhcnJheVNwZWNp
ZXNDcmVhdGUsIGFycmF5U3BlY2llc0NyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheSwg
aXNBcnJheSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheVNsb3csIGlzQXJyYXlTbG93LCBudWxs
cHRyKSBcCisgICAgdihjb25jYXRNZW1jcHksIGNvbmNhdE1lbWNweSwgbnVsbHB0cikgXAorICAg
IHYoYXBwZW5kTWVtY3B5LCBhcHBlbmRNZW1jcHksIG51bGxwdHIpIFwKKyAgICB2KGhvc3RQcm9t
aXNlUmVqZWN0aW9uVHJhY2tlciwgaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyLCBudWxscHRy
KSBcCisgICAgdihJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbiwgbnVsbHB0cikgXAorICAgIHYoU2V0LCBTZXQsIG51bGxwdHIpIFwKKyAgICB2KHRoaXNU
aW1lVmFsdWUsIHRoaXNUaW1lVmFsdWUsIG51bGxwdHIpIFwKKyAgICB2KGlzQ29uc3RydWN0b3Is
IGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIs
IHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvR2xv
YmFsR2V0dGVyLCByZWdFeHBQcm90b0dsb2JhbEdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVn
RXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIsIG51
bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCByZWdFeHBQcm90b011
bHRpbGluZUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIs
IHJlZ0V4cFByb3RvU291cmNlR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1N0
aWNreUdldHRlciwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJl
Z0V4cFByb3RvVW5pY29kZUdldHRlciwgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLCBudWxscHRy
KSBcCisgICAgdihyZWdFeHBCdWlsdGluRXhlYywgcmVnRXhwQnVpbHRpbkV4ZWMsIG51bGxwdHIp
IFwKKyAgICB2KHJlZ0V4cENyZWF0ZSwgcmVnRXhwQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihp
c1JlZ0V4cCwgaXNSZWdFeHAsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cE1hdGNoRmFzdCwgcmVn
RXhwTWF0Y2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTZWFyY2hGYXN0LCByZWdFeHBT
ZWFyY2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTcGxpdEZhc3QsIHJlZ0V4cFNwbGl0
RmFzdCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgcmVn
RXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwVGVzdEZh
c3QsIHJlZ0V4cFRlc3RGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdJbmNsdWRlc0ludGVy
bmFsLCBzdHJpbmdJbmNsdWRlc0ludGVybmFsLCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTcGxp
dEZhc3QsIHN0cmluZ1NwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYoc3RyaW5nU3Vic3RySW50
ZXJuYWwsIHN0cmluZ1N1YnN0ckludGVybmFsLCBudWxscHRyKSBcCisgICAgdihtYWtlQm91bmRG
dW5jdGlvbiwgbWFrZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGhhc093bkxlbmd0
aFByb3BlcnR5LCBoYXNPd25MZW5ndGhQcm9wZXJ0eSwgbnVsbHB0cikgXAorICAgIHYoZGF0ZVRp
bWVGb3JtYXQsIGRhdGVUaW1lRm9ybWF0LCBudWxscHRyKSBcCisgICAgdih3ZWJBc3NlbWJseUNv
bXBpbGVTdHJlYW1pbmdJbnRlcm5hbCwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJu
YWwsIG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRl
cm5hbCwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsLCBudWxscHRyKSBc
CisgICAgdihPYmplY3QsIE9iamVjdCwgbnVsbHB0cikgXAorICAgIHYoQXJyYXksIEFycmF5LCBu
dWxscHRyKSBcCisgICAgdihhcHBseUZ1bmN0aW9uLCBhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihjYWxsRnVuY3Rpb24sIGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAorCisKKyNkZWZp
bmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQodmFyTmFtZSwgbmFtZSwgY29kZSkgbmFtZSwK
K2VudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3QgeworICAgIEpTQ19GT1JFQUNI
X0xJTktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQpCit9OworI3Vu
ZGVmIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UCisjZGVmaW5lIENPVU5UX0xJTktfVElNRV9D
T05TVEFOVCh2YXJOYW1lLCBuYW1lLCBjb2RlKSAxICsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cyA9IEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05T
VEFOVFMoQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKSAwOworI3VuZGVmIENPVU5UX0xJTktfVElN
RV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2Ns
YXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6
OkxpbmtUaW1lQ29uc3RhbnQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1YWQzZjI0Y2EwNDgxZDExYTY3ZWJkMWJmYmFiZTg2NmZkMzFkNDhi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgot
Ci0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkKiBhY3R1YWxQ
b2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNwZWNpYWw6OlBvaW50ZXIg
cG9pbnRlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2ludGVyRm9yKHBv
aW50ZXIpOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayogY29kZUJsb2Nr
LCBTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGFjdHVhbFBvaW50ZXJG
b3IoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcG9pbnRlcik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIHN3aXRjaCAo
cG9pbnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVuY3Rpb246Ci0gICAgICAg
IG91dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpT
Qzo6U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJBcHBseUZ1bmN0
aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6T2JqZWN0Q29u
c3RydWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3RydWN0b3IiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yOgotICAg
ICAgICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91dC5wcmludCgiVGFibGVT
aXplIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5MmJhYjc2ZWEyYmZmN2U2ZTg4MzUzNWVhNGQ3
NmM0MWIwNDY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNs
YXNzIENvZGVCbG9jazsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotCi1uYW1lc3BhY2UgU3BlY2lh
bCB7Ci1lbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7Ci0gICAgQ2FsbEZ1bmN0aW9uLAotICAgIEFw
cGx5RnVuY3Rpb24sCi0gICAgT2JqZWN0Q29uc3RydWN0b3IsCi0gICAgQXJyYXlDb25zdHJ1Y3Rv
ciwKLSAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50ZXIuIFVzZSB0aGlz
IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgotfTsKLX0gLy8gbmFtZXNwYWNl
IFNwZWNpYWwKLQotZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBUaHJvd1R5cGVF
cnJvckZ1bmN0aW9uLAotfTsKLWNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9
IDE7Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50ZXIgcG9p
bnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpU
YWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBwb2ludGVySXND
ZWxsKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50
ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiwgU3BlY2lhbDo6UG9pbnRl
cik7Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayosIFNwZWNpYWw6OlBvaW50ZXIp
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFByaW50
U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlNwZWNpYWw6
OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDIzNGZhNTc3YzVh
ZjBhMTIxNmM3YjRkNmQwNDQ3ZDBiY2Y4ZDRjNDkuLmQ1ZGRlZThkNTYwNzcwMzIzYjFmZDVmMWFj
Y2NjYzA1MDJjMTI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzYsOCArNzYsNiBAQCBVbmxpbmtlZENvZGVC
bG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29k
ZVR5cGUgY29kZQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSgpKQogewot
ICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlckluZGV4IDogbV9saW5rVGltZUNvbnN0YW50
cykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlckluZGV4ID0gMDsKICAgICBBU1NFUlQobV9jb25z
dHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5k
KCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZVR5cGUpKTsKICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTWl4ZWRUcmlTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NzM5ZGE3ODM1NjhkM2ViMjYzMWVlZjFhNzI0
MjkyODc5N2Y1NjY5Li5kNjA3MzYwMTRkZDFlMzE1NzEzYTg1MmU4N2RhNjU2MTQxNjMwMDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlBh
cnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCi0jaW5jbHVkZSAiU3BlY2lhbFBvaW50
ZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
IlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpA
QCAtMTgwLDI3ICsxNzksMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5k
KHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKKyAgICB1
bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29uc3RhbnQpCiAg
ICAgewogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICBhdXRvIGxvY2tlciA9
IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNlbGxMb2NrKCkpOwogICAgICAgICB1bnNpZ25l
ZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAgICAgQVNTRVJUKHJl
c3VsdCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5
cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAg
ICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XSA9IHJlc3VsdDsKICAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwotICAgICAgICBt
X2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMubGFzdCgpLnNl
dCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGlua1RpbWVDb25zdGFu
dCkpKTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5k
KFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZvckxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFTU0VSVChp
bmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xpbmtUaW1l
Q29uc3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0
ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVy
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Nv
bnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CkBAIC00MDYsOCArMzk1LDYgQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90
aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKIAotICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNv
bnN0YW50czsKLQogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCAyZGI4MThmMGI5YjU0YjIxNWJhZjA2Y2NjNmFlMzFjM2MyOWFkZmFl
Li44MzZmZDU3OGYyYzE4NGZiMzM2MjU1ODcxYzZiMTJjM2MxMzY3YTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMzA4LDkgKzMwOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFy
aWFibGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9s
aW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVs
bHB0cjsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0
ZSBzcGFjZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM2MCw5ICszNTcsNiBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5v
ZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9u
Tm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+
ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVy
IDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVy
ID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3lt
Ym9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2Vz
Tm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVD
b25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwxMSArNzgyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0
aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJvd25WYWx1ZSk7CiAgICAgICAgIC8vIHJldHVybiBA
cHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJSZWplY3RQcm9taXNlID0gdmFyaWFibGUocHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdG
dW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgbW92ZShzY29wZS5nZXQoKSwgZW1p
dFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSkpOwotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVt
cG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlLCBUaHJvd0lmTm90Rm91bmQp
OwotCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0gbW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZVdpdGhG
aXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBh
cmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICAgICAgZW1pdExvYWQoYXJncy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIG1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVy
KDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBAIC04NDgsOSArODM4LDYgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxp
bmtlZEV2YWxDb2QKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2
YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQogICAg
ICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkK
IHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRS
ZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgbV9j
b2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKICAgICBwdXNoVERaVmFyaWFibGVzKCpw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1p
emUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CkBAIC05MTAsOSArODk3LDYgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUq
IG1vZHVsZVByb2dyYW1Ob2QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKLSAgICBmb3IgKGF1
dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAg
ICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgU3ltYm9sVGFibGUqIG1vZHVs
ZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwogICAg
IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNl
c05vblN0cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFNj
b3BlVHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwpAQCAtMTQ0Miwx
MiArMTQyNiwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmRmFsc2UoUmVn
aXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0
KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpDYWxsRnVuY3Rp
b24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwg
bW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y2FsbEZ1bmN0
aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0
KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpBcHBseUZ1bmN0
aW9uLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQs
IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFwcGx5RnVu
Y3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApAQCAtMzEwMSw3ICsz
MDg1LDcgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVk
RnVuY3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYgKGNhbGxBcmd1bWVu
dHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAgICAgICAgcmV0dXJu
IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0
aGlzLCBmdW5jLCBTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhp
cykpOworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29u
c3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KSwgcmVhbENhbGwtPmJpbmQo
dGhpcykpOwogICAgICAgICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBAIC0zMTE3LDcgKzMxMDEsNyBAQCBFeHBl
Y3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBw
ZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpID4gMikKICAgICAgICAgICAgIHJldHVybiBOb0V4cGVjdGVkRnVu
Y3Rpb247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgU3Bl
Y2lhbDo6QXJyYXlDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykpOworICAgICAgICBP
cEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
TGlua1RpbWVDb25zdGFudDo6QXJyYXkpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CiAgICAgICAg
IAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICAgICAgaWYg
KGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9PSAyKQpAQCAtMzI4
NSw3ICszMjY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9w
ZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICBpZiAoYXR0cmlidXRl
cy5oYXNHZXQoKSB8fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZXMu
aGFzR2V0KCkgfHwgIWF0dHJpYnV0ZXMuaGFzU2V0KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25z
dGFudDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
ckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFu
dDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGdldHRlcjsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCkBAIC00NDc0LDEwICs0
NDU4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJh
dG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKIAogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKLSAgICBhdXRvIHZhckNyZWF0ZUFzeW5jRnJvbVN5
bmNJdGVyYXRvciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5jcmVh
dGVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBtb3ZlKHNjb3BlLmdldCgpLCBlbWl0
UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJDcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3Ip
KTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0g
ZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFz
eW5jRnJvbVN5bmNJdGVyYXRvciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQo
bnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yKTsK
IAogICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMik7CiAgICAgZW1pdExv
YWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
MmQ3MjFlYjc3OTBiMzczMDIzNzhmZmFjYjkxMjI3MmRmYjhlN2M0Zi4uZjViMzU2OGQxZDc1NTAy
ODc0ZmQ2N2FkNTVmZDhkODJmM2FlNzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGFi
ZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFu
dC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNs
dWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgpAQCAtMTIxNiw3ICsxMjE3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsg
bnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVyaXZlZENvbnN0dWN0b3IgeyBudWxs
cHRyIH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tM
aW5rVGltZUNvbnN0YW50Q291bnRdOworICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnNbbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50c10geyB9OwogICAgICAgICBS
ZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fcHJvbWlzZVJlZ2lzdGVyIHsg
bnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMmUwM2JlMGI3Yzc1ZGRiMDI3ZWM0ZTZmNjU2MjE4ZDhl
MGZlNTFhNi4uNTI0NjhlMWYyYWExMWUxMjA2YWU3ZjQ1YTE1ZjI5MGIzOWRhZjQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjExLDcgKzIxMSw3IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVy
SUQqIEltcG9ydE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVs
ZSA9IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW1wb3J0TW9kdWxl
UHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVsZSA9IGdl
bmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50Ojpp
bXBvcnRNb2R1bGUpOwogICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVs
bHB0ciwgMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3VtZW50cy5hcmd1
bWVudFJlZ2lzdGVyKDApLCBtX2V4cHIpOwpAQCAtOTg1LDcgKzk4NSwxMSBAQCBSZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsK
LSAgICByZXR1cm4gKHRoaXMtPiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0KTsKKyAgICBpZiAo
bV9lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRl
cikKKyAgICAgICAgcmV0dXJuICh0aGlzLT4qbV9lbnRyeS5lbWl0dGVyKCkpKGdlbmVyYXRvciwg
ZHN0KTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3Rh
bnQoZHN0LCBtX2VudHJ5LmxpbmtUaW1lQ29uc3RhbnQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QnlJZERpcmVjdChCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xMDEzLDkgKzEwMTcs
MTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19n
ZXRCeUlkRGlyZWN0UHJpdmF0ZShCeXRlY29kZUcKIAogc3RhdGljIEpTUHJvbWlzZTo6RmllbGQg
cHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7
Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50
eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAg
aWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX3Byb21pc2VGaWVsZEZsYWdzKQogICAgICAgICByZXR1cm4gSlNQcm9taXNl
OjpGaWVsZDo6RmxhZ3M7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdCkK
KyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQpCiAgICAgICAg
IHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdDsKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpGbGFn
czsKQEAgLTEwMjMsMTMgKzEwMjgsMTQgQEAgc3RhdGljIEpTUHJvbWlzZTo6RmllbGQgcHJvbWlz
ZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiAKIHN0YXRp
YyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2Rl
SW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCisg
ICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAm
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRl
KQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBpZiAobm9k
ZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dl
bmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQog
ICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0OwotICAgIGlmIChub2RlLT5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJh
dG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFRoaXMpCiAgICAg
ICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXM7Ci0gICAgaWYgKG5vZGUtPmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JG
aWVsZEZyYW1lKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZEZyYW1lKQogICAgICAg
ICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwpAQCAt
MTAzNywxOSArMTA0MywyMCBAQCBzdGF0aWMgSlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvcklu
dGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZAogCiBzdGF0aWMgSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQgYXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0
ZSkKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigp
ID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxk
U3RhdGUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Ci0g
ICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRl
cigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZp
ZWxkTmV4dCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0Owot
ICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JG
aWVsZFRoaXMpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsK
LSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6RnJh
bWU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKKyAgICBpZiAo
bm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCiAgICAgICAgIHJldHVy
biBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbjsKLSAgICBpZiAobm9kZS0+
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5j
R2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRv
ckZpZWxkUXVldWVGaXJzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxk
OjpRdWV1ZUZpcnN0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKKyAg
ICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKICAgICAgICAgcmV0
dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3Q7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0
YXRlOwpAQCAtNDA5NiwxMCArNDEwMyw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgIC8vIGxvYWQgYW5kIGNh
bGwgQGFzeW5jRnVuY3Rpb25SZXN1bWUKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1bmN0
aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoc2Nv
cGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsK
LSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1bWUgPSBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
LCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhc3lu
Y0Z1bmN0aW9uUmVzdW1lID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIs
IExpbmtUaW1lQ29uc3RhbnQ6OmFzeW5jRnVuY3Rpb25SZXN1bWUpOwogCiAgICAgICAgIENhbGxB
cmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDQpOwogICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudENvdW50ID0gMDsKQEAgLTQ1NzgsMTEgKzQ1ODIsNyBAQCB2b2lkIE9iamVjdFBhdHRl
cm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogcmhzKQogICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFkZE1ldGhvZDsKICAgICBpZiAobV9jb250YWluc1Jlc3RFbGVtZW50ICYmIG1fY29u
dGFpbnNDb21wdXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGF1dG8gdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuU2V0UHJpdmF0
ZU5hbWUoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RG
b3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVy
YXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpTZXQp
OwogCiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOwog
ICAgICAgICBleGNsdWRlZExpc3QgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBzZXRDb25zdHJ1Y3Rvci5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwpAQCAtNDYzMywxMSArNDYzMyw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJp
bmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0ID0gZ2VuZXJhdG9yLmVtaXRO
ZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0gICAgICAgICAgICBh
dXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmNvcHlEYXRhUHJvcGVydGllc1ByaXZhdGVOYW1lKCkpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhy
b3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5RGF0YVBy
b3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CkBAIC00ODEwLDExICs0ODA2LDcgQEAgUmVnaXN0ZXJJRCogT2JqZWN0U3ByZWFkRXhwcmVzc2lv
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG8KICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoc3JjLmdldCgpLCBtX2V4cHJlc3Npb24pOwogICAgIAogICAgIC8vIGxv
YWQgYW5kIGNhbGwgQGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucwotICAgIGF1dG8gdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zUHJpdmF0ZU5hbWUoKSk7Ci0gICAg
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwotICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRh
UHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNv
bnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJvcGVydGllc05vRXhj
bHVzaW9ucyk7CiAgICAgCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0
ciwgMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5k
ZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBlMGVlZjQ5MTdhYTY4MWZhYzI5NGM5ODg0OTgyNWIyZDkzZjAwZjFhLi4z
Mzc4YWQwOTJmNmEyNDIwMzNjZjQwNzY4M2Q5Mzg5NWQzZDNjZDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjM0MiwxMSArNjM0
Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwotICAgICAg
ICAgICAgU3BlY2lhbDo6UG9pbnRlciBzcGVjaWFsUG9pbnRlciA9IGJ5dGVjb2RlLm1fc3BlY2lh
bFBvaW50ZXI7Ci0gICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzQ2VsbChzcGVjaWFsUG9pbnRl
cikpOwotICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyID0gc3RhdGljX2Nhc3Q8SlND
ZWxsKj4oCi0gICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZvcihtX2lubGluZVN0YWNrVG9w
LT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKLSAgICAgICAgICAgIEZyb3plblZhbHVl
KiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFsUG9pbnRlcik7CisgICAgICAg
ICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5tX3NwZWNp
YWxQb2ludGVyLm9mZnNldCgpKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNl
dCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2Rl
KiBjaGlsZCA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwZDA0OTk0NTgwZDliMzg4MWM5MDJiMDFhYmEzZTYx
ZDk2MDM2ZTU5Li44ZWJlNDlmZWJiZjUxMzViNTM1ZTNjZGQ3Njk2NTY4MTUwNTNkYTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ3MSwxMSArNDcxLDEy
IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAg
IFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKKyAgICBK
U1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2RlLm1fc3Bl
Y2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9pbnRlci5pc0NlbGwo
KSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24s
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoc3JjLCByZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29kZUJsb2Nr
LCBwdHIpKSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFs
LCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIHN0
b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRkSnVt
cChqdW1wKCksIHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzZTBjZWI0NjkzYTU4OTVm
M2FmZWJjOTYyYTljMTQzZjA4MjhjNTMxLi40ZTk0MjQ1NDc5ZjNmNDc2OTdhOGI2OTNjNWRmMWYw
MTBlYjIzMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCkBAIC00NzgsMTIgKzQ3OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgc3JjID0gYnl0ZWNv
ZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5dGVjb2Rl
Lm1fc3BlY2lhbFBvaW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdldENvbnN0
YW50T3BlcmFuZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKTsKKyAgICBBU1NF
UlQoc3BlY2lhbFBvaW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAg
IGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJ
Zk5vdENlbGwocmVnVDEpOwotICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1Qw
LCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikpKTsKKyAg
ICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVj
aWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAgICBzdG9y
ZTgoVHJ1c3RlZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQpOwogICAgIGFkZEp1bXAo
anVtcCgpLCB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMzdlZTIyYjQ5M2QwYjVhZTRk
Mzc0MmRiMTIyZjUyM2JlYWYzZjZhLi40YzYwZGJlZTEzM2FlYmY2OTlkMjRmYzk3OTNhODQ0MmUy
MTExOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTcxMCwxMiArMTcxMCwxMCBAQCB1bmRlZmlu
ZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9yTnVsbCwK
IAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1ZSwgdDAp
Ci0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQotICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDJdLCB0MgorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MywgdDIpCiAgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCi0gICAgbG9hZHAgSlNHbG9iYWxPYmpl
Y3Q6Om1fc3BlY2lhbFBvaW50ZXJzW3QyLCB0MSwgNF0sIHQxCi0gICAgYnBlcSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisgICAgYnBlcSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCiAub3BKbmVx
UHRyQnJhbmNoOgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BKbmVxUHRy
OjpNZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDA0NDNmMGNmZThiMzcy
N2VjOTRiZDRkNTg5NzA5NjEwYjQyOWM4NmEuLjA1ZThmZGEzZGU1ZjRiYjUzMTk2N2QzMDg4OWI3
NjViN2FkYTJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE2LDExICsxODE2LDkgQEAgdW5kZWZpbmVk
T3JOdWxsSnVtcE9wKGpudW5kZWZpbmVkX29yX251bGwsIE9wSm51bmRlZmluZWRPck51bGwsCiAK
IGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFsdWUsIHQwKQot
ICAgIGdldHUoc2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNpYWxQb2ludGVyLCB0MSkKLSAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVjaWFsUG9pbnRlcnNbdDIs
IHQxLCBQdHJTaXplXSwgdDEKLSAgICBicG5lcSB0MSwgW2NmciwgdDAsIDhdLCAub3BKbmVxUHRy
VGFyZ2V0CisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDEsIHQyKQorICAgIGJwbmVxIHQyLCBbY2ZyLCB0MCwgOF0sIC5vcEpu
ZXFQdHJUYXJnZXQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEpuZXFQdHJUYXJnZXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNhZjAzMDgyOTIxZDEyOTVh
MDQyOGRiMGNiZTA0MTJjM2FjZjBjOTkuLmNjNTk3ZjViNDRiOWU3MTc5ZjVkZTU1YjBlZWQyYmY4
NjkwNWVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC0yMDAsOCArMjAwLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICB1c2VzQXJn
dW1lbnRzKCk7CiAKICAgICAgICAgaWYgKGlkZW50LmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAg
IGlmIChCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIGVtaXR0ZXIgPSBtX3ZtLmJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29k
ZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2NhdGlvbiwgZW1pdHRlciwgaWRlbnQs
IG51bGxwdHIsIHN0YXJ0LCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGF1dG8gZW50cnkgPSBt
X3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpOworICAgICAgICAg
ICAgaWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0
YW50LCBsb2NhdGlvbiwgZW50cnkudmFsdWUoKSwgaWRlbnQsIG51bGxwdHIsIHN0YXJ0LCBzdGFy
dCwgZW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOwpAQCAtMTM4NCw4ICsxMzg1LDgg
QEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBpZiAoZnVuYy0+aXNCeXRlY29kZUludHJp
bnNpY05vZGUoKSkgewogICAgICAgICBBU1NFUlQoIWlzT3B0aW9uYWxDYWxsKTsKICAgICAgICAg
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBpbnRyaW5zaWMgPSBzdGF0aWNfY2FzdDxCeXRlY29kZUlu
dHJpbnNpY05vZGUqPihmdW5jKTsKLSAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW1pdHRlcigpLCBp
bnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKKyAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6VHlwZTo6Q29uc3RhbnQgJiYgaW50cmluc2ljLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVudHJ5KCksIGludHJp
bnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwog
ICAgIH0KIAogICAgIGlmIChmdW5jLT5pc09wdGlvbmFsQ2hhaW4oKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA3NTg5ZDdjOTFl
ODk1ZWIyZDk5NjMzZGJmNWI0YWE1ZDI2YWViODRlLi45YzdiOWEyODIwNzNjNTc2YTYzNDllNGQ2
OWMyMjBiYTVjY2RlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2Rl
SW50cmluc2ljTm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEVtaXR0ZXJUeXBlIGVtaXR0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNO
b2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgaW5s
aW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUgdHlw
ZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6RW50cnkgZW50cnksIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fZW1pdHRlcihlbWl0
dGVyKQorICAgICAgICAsIG1fZW50cnkoZW50cnkpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICAgICAgLCBtX3R5cGUodHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBhYTQ0ODY2NGQxZDQ4MTQwZDEwYTQ1OTBjMDY3
ZDUwMWE4YjYyODdmLi5mYWQ1MzI4YTJiOTQ0MzdkYjJkYWU3ZjFjODZiMjg5YzFhMzQxZmFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC05NDQsMTQgKzk0NCwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEZ1bmN0aW9uCiAgICAgICAgIH07CiAKLSAgICAg
ICAgdHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJU
eXBlKShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKLQotICAgICAgICBCeXRlY29k
ZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRlclR5cGUs
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5LCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2ljTm9kZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsgfQorICAgICAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5OjpFbnRyeSBlbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnk7IH0KICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAog
I2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TKG5hbWUpIFJl
Z2lzdGVySUQqIGVtaXRfaW50cmluc2ljXyMjbmFtZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqKTsKQEAgLTk2NCw3ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBi
b29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OkZ1bmN0aW9uOyB9CiAKLSAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOworICAgICAg
ICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBtX2VudHJ5OwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CiAg
ICAgICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDYwMzVhNDkwOTI2YzRhZTVmYzMzMjdhZmZlZGY0Mjc2YjkzZjA2
NTcuLmViOWQ5OTNiMjUxNGM2NzI5ZTEwMmY2NWU3MjBhNzI4YWYyYzI0MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MDEsNyArMTgw
MSw2IEBAIGNsYXNzIENhY2hlZENvZGVCbG9jayA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8Q29kZUJs
b2NrVHlwZT4gewogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKLSAgICBzdGQ6OmFycmF5PHVu
c2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7CiAKICAg
ICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6
IDE7CkBAIC0yMDM5LDkgKzIwMzgsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVC
bG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlua2VkQ29k
ZUJsb2NrJiBjb2RlQmxvY2spIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gTGlua1Rp
bWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0
YW50c1tpXSA9IG1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX2NvbnN0YW50UmVnaXN0
ZXJzLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywgJmNvZGVC
bG9jayk7CiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVjb2RlKGRl
Y29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAg
ICAgbV9leHByZXNzaW9uSW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhwcmVzc2lv
bkluZm8pOwpAQCAtMjIwNyw5ICsyMjAzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENv
ZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAg
ICBtX2NvZGVHZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9uTW9kZTsK
ICAgICBtX2NvZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIG1fbGlua1RpbWVD
b25zdGFudHNbaV0gPSBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAgIG1f
bWV0YWRhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX21ldGFkYXRhLmdldCgpKTsKICAg
ICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9yYXJlRGF0YS5nZXQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA0N2Zj
ZDMzOGI0MDU5ODM2Y2QzNjgxZTg0ZTAxZmFiNzQzMzk3Njc0Li4yNTk5ZTJjNTYyOTEwZjk4MTQ2
YzkxOGI1MjI0OWM4NTViZDJhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCkBAIC0xMjksNyArMTI5LDggQEAgYm9vbCBpc0ludDUyKGRvdWJsZSk7CiBl
bnVtIGNsYXNzIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA6IHVpbnQ4X3QgewogICAgIE90aGVy
LAogICAgIEludGVnZXIsCi0gICAgRG91YmxlCisgICAgRG91YmxlLAorICAgIExpbmtUaW1lQ29u
c3RhbnQsCiB9OwogCiBjbGFzcyBKU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjNjViMGIzNzBkMDI1NzVlMDBiMWY1
MDQ5MDk5MTA3ZTc3MGU3MjhkLi4xNmQ0ODI4ZThkZWJiMzA5M2JjMzMyNWM1ODk4NmI0NmMwNjBh
ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC01MjIsOCArNTIyLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgSlNGdW5j
dGlvbiogaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKHZtLCB0aGlzLCAmY2FsbEZ1bmN0aW9u
LCAmYXBwbHlGdW5jdGlvbiwgJmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwotICAgIG1fY2Fs
bEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKLSAgICBtX2FwcGx5RnVuY3Rp
b24uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKICAgICBtX2FycmF5UHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVu
Y3Rpb24+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5z
dHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKQEAgLTcyMyw3
ICs3MjEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2dlbmVy
YXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
LnNldCh2bSwgdGhpcywgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
QXN5bmNHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9hc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogCi0gICAgbV9wcm9taXNlUHJvdG9UaGVuRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5
cGVUaGVuQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0
UHJvbWlzZVRoZW4gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVu
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbildLnNl
dCh2bSwgdGhpcywgZGVmYXVsdFByb21pc2VUaGVuKTsKIAogI2RlZmluZSBDUkVBVEVfUFJPVE9U
WVBFX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBp
bnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIGlmIChmZWF0
dXJlRmxhZykgeyBcCiAgICAgICAgIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIGNhcGl0YWxO
YW1lIyNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV8gIyMgcHJvdG90eXBl
QmFzZSAjIyBQcm90b3R5cGUuZ2V0KCkpKSk7IFwKQEAgLTc0OSwxOSArNzQ4LDE5IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIC8vIENvbnN0cnVjdG9ycwogCiAgICAg
T2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKLSAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0
b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6Ok9iamVjdCldLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwog
CiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik7Ci0g
ICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbildLnNldCh2bSwgdGhpcywg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKiBmdW5j
dGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBtX2Z1bmN0aW9uQ29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogICAgIEFycmF5
Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2ll
c0dldHRlclNldHRlci5nZXQoKSk7Ci0gICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QXJyYXkpXS5zZXQodm0sIHRoaXMsIGFycmF5
Q29uc3RydWN0b3IpOwogICAgIAogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1
Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJlZ0V4cENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3Jl
Z0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKLSAgICBt
X3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1fcmVn
RXhwR2xvYmFsRGF0YS5jYWNoZWRSZXN1bHQoKS5yZWNvcmQodm0sIHRoaXMsIG51bGxwdHIsIGpz
RW1wdHlTdHJpbmcodm0pLCBNYXRjaFJlc3VsdCgwLCAwKSk7CiAgICAgCiAjaWYgRU5BQkxFKFNI
QVJFRF9BUlJBWV9CVUZGRVIpCkBAIC03ODEsOCArNzgwLDggQEAgY2FwaXRhbE5hbWUgIyMgQ29u
c3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRh
bE5hbWUKICAgICAKICN1bmRlZiBDUkVBVEVfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFCiAK
LSAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rv
cik7Ci0gICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBw
cm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwgdGhp
cywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwogICAgIAogICAgIG1fZXZhbEVycm9yU3Ry
dWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlh
bGl6ZXImIGluaXQpIHsKQEAgLTg0Miw5ICs4NDEsNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1
Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFt
ZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5B
cnJheSwgYXJyYXlDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5SZWdFeHAsIHJlZ0V4cENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuT2Jq
ZWN0UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0
cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0KICNpZiBFTkFCTEUo
U0hBUkVEX0FSUkFZX0JVRkZFUikKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+U2hhcmVkQXJyYXlCdWZmZXIsIHNoYXJlZEFycmF5QnVmZmVyQ29u
c3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIkF0b21pY3MiKSwgYXRvbWljc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtOTE3LDE4MCArOTEzLDIyNiBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIGlmIChPcHRpb25zOjpleHBvc2VJbnRlcm5h
bE1vZHVsZUxvYWRlcigpKQogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+TG9hZGVyLCBtb2R1bGVMb2FkZXIoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiog
YnVpbHRpbkxvZyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7Ci0g
ICAgSlNGdW5jdGlvbiogYnVpbHRpbkRlc2NyaWJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2Jh
bEZ1bmNCdWlsdGluRGVzY3JpYmUpOwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUcnVu
YyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1
bmNUcnVuYywgVHJ1bmNJbnRyaW5zaWMpOwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk7Ci0gICAgSlNGdW5jdGlvbiog
cHJpdmF0ZUZ1bmNPd25LZXlzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY093bktleXMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW1w
b3J0TW9kdWxlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xv
YmFsRnVuY0ltcG9ydE1vZHVsZSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYWtlVHlw
ZUVycm9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFs
RnVuY01ha2VUeXBlRXJyb3IpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJh
eUxlbmd0aCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
VHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxD
b25zdHJ1Y3Rvcik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNTb3J0KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzVHlwZWRBcnJh
eVZpZXcgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJp
bnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVh
dGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5
Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVG
dW5jSXNCb3VuZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgaXNCb3VuZEZ1bmN0aW9uKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0hhc0lu
c3RhbmNlQm91bmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0
ZUZ1bmNJbnN0YW5jZU9mID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY1RoaXNUaW1lVmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmlu
ZygpLCBkYXRlUHJvdG9GdW5jR2V0VGltZSk7Ci0jaWYgRU5BQkxFKElOVEwpCi0gICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNEYXRlVGltZUZvcm1hdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk7Ci0jZW5kaWYKLSAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQXJyYXlTbG93ID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJh
eVNsb3cpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5ID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5j
Q29uY2F0TWVtY3B5KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2
YXRlRnVuY0FwcGVuZE1lbWNweSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNr
ZXRIZWFkID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJp
dmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpOwotICAgIEpT
RnVuY3Rpb24qIHByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBC
dWNrZXROZXh0SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tl
dEtleSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZh
dGVGdW5jTWFwQnVja2V0S2V5LCBKU01hcEJ1Y2tldEtleUludHJpbnNpYyk7Ci0gICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIEpTTWFwQnVj
a2V0VmFsdWVJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0
SGVhZCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZh
dGVGdW5jU2V0QnVja2V0SGVhZCwgSlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKTsKLSAgICBKU0Z1
bmN0aW9uKiBwcml2YXRlRnVuY1NldEJ1Y2tldE5leHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVj
a2V0TmV4dEludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNTZXRCdWNrZXRL
ZXkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRl
RnVuY1NldEJ1Y2tldEtleSwgSlNTZXRCdWNrZXRLZXlJbnRyaW5zaWMpOwotCiAgICAgR2V0dGVy
U2V0dGVyKiByZWdFeHBQcm90b0ZsYWdzR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3Jl
Z0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOwogICAgIGNhdGNo
U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0ZsYWdzR2V0dGVy
KV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0
ZXIqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4
cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+Z2xvYmFsKTsKICAgICBjYXRjaFNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5z
ZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90
b0dsb2JhbEdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpOwog
ICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyID0gZ2V0R2V0dGVy
QnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+aWdu
b3JlQ2FzZSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cFByb3RvSWdub3JlQ2FzZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9JZ25v
cmVDYXNlR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0
dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJv
cGVydHlOYW1lcy0+bXVsdGlsaW5lKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6cmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJl
Z0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3Rv
U291cmNlR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSwgdm0ucHJvcGVydHlOYW1lcy0+c291cmNlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIpXS5zZXQodm0sIHRoaXMs
IHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3Rv
U3RpY2t5R2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSwgdm0ucHJvcGVydHlOYW1lcy0+c3RpY2t5KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpXS5zZXQodm0sIHRoaXMs
IHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3Rv
VW5pY29kZUdldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0
KCksIHZtLnByb3BlcnR5TmFtZXMtPnVuaWNvZGUpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKLSAgICBtX3JlZ0V4cFByb3RvVW5pY29kZUdldHRlci5zZXQodm0sIHRoaXMs
IHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcik7Ci0gICAgSlNPYmplY3QqIGJ1aWx0aW5SZWdFeHBF
eGVjID0gYXNPYmplY3QobV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZXhlYykuYXNDZWxsKCkpOwotICAgIG1fcmVnRXhwUHJvdG9FeGVjLnNldCh2bSwg
dGhpcywgYnVpbHRpblJlZ0V4cEV4ZWMpOwotICAgIEpTT2JqZWN0KiByZWdFeHBTeW1ib2xSZXBs
YWNlID0gYXNPYmplY3QobV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cmVwbGFjZVN5bWJvbCkuYXNDZWxsKCkpOworICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKKyAg
ICBKU0Z1bmN0aW9uKiByZWdFeHBTeW1ib2xSZXBsYWNlID0ganNDYXN0PEpTRnVuY3Rpb24qPiht
X3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNl
U3ltYm9sKSk7CiAgICAgbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2Uuc2V0KHZtLCB0aGlzLCBy
ZWdFeHBTeW1ib2xSZXBsYWNlKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYyldLnNldCh2bSwg
dGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjKSkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvdHlwZVN5bWJv
bFJlcGxhY2UpXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0NlbGwqPihtX3JlZ0V4cFByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSkpOworCisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6U2V0KV0uc2V0KHZtLCB0aGlzLCBzZXRDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNBcnJh
eSldLnNldCh2bSwgdGhpcywganNDYXN0PEpTQ2VsbCo+KGFycmF5Q29uc3RydWN0b3ItPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSkpKTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rp
b24pXS5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlvbik7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbild
LnNldCh2bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CisKKyNkZWZpbmUgSU5JVF9QUklWQVRFX0dM
T0JBTCh2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgXAorICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmNOYW1lKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7IFwKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKTsgXAorICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgZ2xvYmFsT2JqZWN0KSk7IFwK
KyAgICAgICAgfSk7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dM
T0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCisjdW5kZWYgSU5JVF9QUklWQVRFX0dMT0JB
TAogCi0jZGVmaW5lIENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTih2YXJOYW1lLCBmdW5j
TmFtZSwgY29kZSkgSlNGdW5jdGlvbiogdmFyTmFtZSAjIyBQcml2YXRlRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOwotICAg
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShDUkVBVEVf
UFJJVkFURV9HTE9CQUxfRlVOQ1RJT04pCi0jdW5kZWYgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZV
TkNUSU9OCi0KKyAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZW0gbGF6aWx5LgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3OTUKICAgICBKU09i
amVjdCogYXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgdGhpcywgQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgYXJyYXlJdGVyYXRvckNv
bnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0
Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpBcnJheUl0ZXJhdG9yKSktPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yUHJv
dG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUg
PSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXN5bmNG
cm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBhc3luY0Zyb21TeW5jSXRlcmF0b3JDb25zdHJ1
Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2Jq
ZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpBc3luY0Zyb21TeW5jSXRl
cmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFzeW5j
RnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogbWFwSXRlcmF0b3JQ
cm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBNYXBJdGVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90
eXBlLmdldCgpKSk7Ci0gICAgbWFwSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1hcEl0ZXJhdG9yUHJv
dG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6Ok1hcEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogcmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgPSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6
Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgcmVnRXhw
U3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
KTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6OlJlZ0V4cFN0cmluZ0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCByZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09i
amVjdCogc2V0SXRlcmF0b3JQcm90b3R5cGUgPSBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgc2V0SXRlcmF0b3JDb25zdHJ1Y3Rv
clByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHNldEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGlt
ZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVyYXRvclByb3RvdHlwZSk7CiAKLSAg
ICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBuZXdQcm9taXNl
Q2FwYWJpbGl0eVByaXZhdGVGdW5jdGlvbik7Ci0gICAgbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9u
LnNldCh2bSwgdGhpcywgcmVzb2x2ZVByb21pc2VQcml2YXRlRnVuY3Rpb24pOwotICAgIG1fcmVq
ZWN0UHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVqZWN0UHJvbWlzZVByaXZhdGVGdW5j
dGlvbik7CisgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRIZWFk
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1
Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjptYXBCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQ
cml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIEpTTWFwQnVja2V0TmV4dEludHJpbnNpYykpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRLZXkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBKU01hcEJ1Y2tldEtleUludHJp
bnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRWYWx1ZSldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSwgSlNN
YXBCdWNrZXRWYWx1ZUludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXRI
ZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1Nl
dEJ1Y2tldEhlYWQsIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpzZXRCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBz
ZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVja2V0TmV4dEludHJpbnNpYykpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXRLZXkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBKU1NldEJ1Y2tldEtleUlu
dHJpbnNpYykpOworICAgICAgICB9KTsKKworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydE1vZHVsZSldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZSkpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZSldLmluaXRMYXRlcihbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6Om93bktleXMpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5n
KCksIGdsb2JhbEZ1bmNPd25LZXlzKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmVucXVldWVKb2Ip
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6bWFrZVR5cGVFcnJvcildLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpKTsKKyAgICAgICAgfSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6dHlwZWRBcnJheUxlbmd0aCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCkpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
Ojp0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcildLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3Ry
dWN0b3IpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheVNvcnQpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzVHlwZWRBcnJheVZpZXcpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlW
aWV3LCBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5
cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKSk7CisgICAgICAgIH0p
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmlzQm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJp
bmcoKSwgaXNCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaGFzSW5z
dGFuY2VCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omluc3RhbmNlT2YpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG9iamVjdFByaXZhdGVGdW5jSW5zdGFu
Y2VPZikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluTG9nKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZykpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpCdWlsdGluRGVzY3JpYmUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5n
KCksIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dHJ1
bmMpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNUcnVu
YywgVHJ1bmNJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVwZWF0Q2hhcmFjdGVy
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNSZXBl
YXRDaGFyYWN0ZXIpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXJyYXlTcGVjaWVzQ3JlYXRlKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBhcnJheVByb3RvRnVuY1NwZWNpZXND
cmVhdGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNBcnJheVNsb3cpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlT
bG93KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNvbmNhdE1lbWNweSldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGVuZE1lbWNweSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6Omhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcildLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdDo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojp0aGlzVGltZVZhbHVlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBk
YXRlUHJvdG9GdW5jR2V0VGltZSwgRGF0ZVByb3RvdHlwZUdldFRpbWVJbnRyaW5zaWMpKTsKKyAg
ICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6aXNDb25zdHJ1Y3RvcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAx
LCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKKyAgICAgICAg
fSk7CisKKyAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwQ3Jl
YXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVh
dGUsIE5vSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzUmVnRXhwKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMp
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwTWF0Y2hGYXN0KV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QsIFJlZ0V4cE1hdGNo
RmFzdEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBTZWFyY2hGYXN0KV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTZWFyY2hG
YXN0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNwbGl0RmFzdCldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFRlc3RGYXN0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEs
IFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVnRXhwVGVzdEZhc3RJbnRyaW5z
aWMpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBTdHJpbmcucHJvdG90eXBlIGhlbHBlcnMuCisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6c3RyaW5nSW5jbHVkZXNJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBT
dHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpKTsKKyAgICAgICAgfSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6c3RyaW5nU3BsaXRGYXN0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygp
LCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6c3RyaW5n
U3Vic3RySW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGJ1aWx0
aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCkpOworICAgICAgICB9KTsKKworICAgIC8vIEZ1bmN0aW9u
IHByb3RvdHlwZSBoZWxwZXJzLgorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDUsIFN0cmluZygpLCBtYWtlQm91bmRGdW5jdGlvbikpOworICAgICAgICB9
KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpoYXNPd25MZW5ndGhQcm9wZXJ0eSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAx
LCBTdHJpbmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpKTsKKyAgICAgICAgfSk7CiAKLSAgICBH
bG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewotI2RlZmluZSBJTklUX1BSSVZB
VEVfR0xPQkFMKHZhck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY05hbWUgIyMgUHJpdmF0ZU5hbWUoKSwg
dmFyTmFtZSAjIyBQcml2YXRlRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JB
TF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCi0jdW5kZWYgSU5JVF9QUklWQVRFX0dMT0JBTAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5k
ZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNPd25LZXlzLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5tYWtlVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNN
YWtlVHlwZUVycm9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBl
ZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5R2V0T3JpZ2lu
YWxDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheUdldE9yaWdp
bmFsQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5
cGVkQXJyYXlTb3J0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNUeXBlZEFycmF5Vmlld1ByaXZh
dGVOYW1lKCksIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldywgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlUHJpdmF0ZU5hbWUo
KSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIHByaXZh
dGVGdW5jSXNCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5oYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0hh
c0luc3RhbmNlQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaW5zdGFuY2VPZlByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSW5zdGFuY2VPZiwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQnVpbHRpbkxvZ1ByaXZhdGVOYW1l
KCksIGJ1aWx0aW5Mb2csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkJ1
aWx0aW5EZXNjcmliZVByaXZhdGVOYW1lKCksIGJ1aWx0aW5EZXNjcmliZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUmVnRXhwUHJpdmF0ZU5hbWUoKSwgcmVnRXhwQ29u
c3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRydW5jUHJp
dmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUcnVuYywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCksIHByb21pc2VDb25zdHJ1Y3RvciwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW50ZXJuYWxQcm9taXNlUHJpdmF0
ZU5hbWUoKSwgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmF1bHRQcm9taXNlVGhlblByaXZhdGVOYW1lKCksIHByb21p
c2VQcm90b1RoZW5GdW5jdGlvbigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlcGVhdENoYXJhY3RlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlciksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFycmF5U3BlY2llc0NyZWF0ZVBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGFy
cmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmlzQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pc0FycmF5U2xvd1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNB
cnJheVNsb3csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNvbmNhdE1l
bWNweVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBlbmRNZW1jcHlQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0FwcGVuZE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5ob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWpl
Y3Rpb25UcmFja2VyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRlTmFtZSgpLCBz
ZXRDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhp
c1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmIEVOQUJMRShJTlRMKQotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGF0ZVRp
bWVGb3JtYXRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0RhdGVUaW1lRm9ybWF0LCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZGF0ZVRpbWVGb3JtYXQpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCkp
OworICAgICAgICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKLQotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNDb25zdHJ1Y3Rv
clByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCks
IGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0ZsYWdzR2V0dGVyUHJpdmF0ZU5hbWUoKSwg
cmVnRXhwUHJvdG9GbGFnc0dldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b0ds
b2JhbEdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
UHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9JZ25vcmVDYXNl
R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90
b011bHRpbGluZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVy
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1NvdXJj
ZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1N0aWNreUdldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJQcml2YXRlTmFtZSgpLCBy
ZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLQotICAgICAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBCdWls
dGluRXhlY1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5SZWdFeHBFeGVjLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBDcmVhdGVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVhdGUsIE5v
SW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWdF
eHBQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygp
LCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5yZWdFeHBNYXRjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QsIFJl
Z0V4cE1hdGNoRmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlZ0V4cFNlYXJjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU3BsaXRGYXN0UHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJv
dG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZVByaXZhdGVOYW1lKCksIG1fcmVnRXhwUHJvdG90
eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBUZXN0RmFzdFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFBy
b3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0RmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBTdHJpbmcucHJvdG90eXBlIGhlbHBl
cnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5zdHJpbmdJbmNsdWRlc0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJu
YWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdTcGxpdEZh
c3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygp
LCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5zdHJpbmdTdWJzdHJJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5h
bCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBGdW5j
dGlvbiBwcm90b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA1LCBTdHJpbmcoKSwgbWFrZUJvdW5kRnVu
Y3Rpb24pLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25MZW5n
dGhQcm9wZXJ0eVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwg
U3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNr
ZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5tYXBCdWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEtl
eSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0VmFsdWVQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0
ZUZ1bmNTZXRCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5zZXRCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRLZXlQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZ
X1NUUkVBTUlOR19BUEkpCi0gICAgICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlDb21waWxlU3Ry
ZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS53
ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUluc3RhbnRp
YXRlU3RyZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
CisgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQorICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5Q29t
cGlsZVN0cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygp
LCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojp3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJ
bnRlcm5hbCkpOworICAgICAgICB9KTsKICNlbmRpZgorCisgICAgR2xvYmFsUHJvcGVydHlJbmZv
IHN0YXRpY0dsb2JhbHNbXSA9IHsKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHks
IGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5h
c3NlcnRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmlu
ZygpLCBhc3NlcnRDYWxsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2Vu
ZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJB
WV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIAotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1Nw
ZWNpYWw6OkNhbGxGdW5jdGlvbl0gPSBtX2NhbGxGdW5jdGlvbi5nZXQoKTsKLSAgICBtX3NwZWNp
YWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlGdW5jdGlvbi5nZXQo
KTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rvcl0gPSBv
YmplY3RDb25zdHJ1Y3RvcjsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcnJheUNv
bnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0KLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1
bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7Ci0KICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpCiAgICAgICAgIGV4cG9zZURvbGxhclZNKHZt
KTsKIApAQCAtMTY5MiwxMiArMTczNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0
LT5tX3N5bnRheEVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fdHlwZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
VVJJRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9hcnJheUNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2Z1bmN0aW9uQ29uc3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogI2lmIEVOQUJMRShJTlRMKQogICAgIHRoaXNP
YmplY3QtPm1fZGVmYXVsdENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwpAQCAtMTcxMSwyMiArMTc0
OCwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24u
dmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsRnVu
Y3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7
Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9u
KTsKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZp
c2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNp
dG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25ld1Byb21pc2VDYXBhYmls
aXR5RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVzb2x2ZVBy
b21pc2VGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWplY3RQ
cm9taXNlRnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29i
amVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAg
dGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFj
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3Vt
ZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1
bGVMb2FkZXIudmlzaXQodmlzaXRvcik7CiAKQEAgLTE3OTQsNiArMTgyNSw5IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3Byb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOworCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHRoaXNPYmplY3QtPm1fbGlu
a1RpbWVDb25zdGFudHMpCisgICAgICAgIHByb3BlcnR5LnZpc2l0KHZpc2l0b3IpOwogICAgIAog
I2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggODkyNmFhYWRmZDY4ZDFhZjEy
OTI4MDRlMmQwMzQyMmQ3ZmY0NGY2NS4uOTM2MDhiNjQ4NzBkZGIxYzFjNDA4MTlhMjc4YTgwNWZi
N2JmOGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNsdWRlICJKU1dlYWtPYmplY3RNYXBSZWZJ
bnRlcm5hbC5oIgogI2luY2x1ZGUgIkxhenlQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkxhenlDbGFz
c1N0cnVjdHVyZS5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRlICJO
dW1iZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJl
Z0V4cEdsb2JhbERhdGEuaCIKICNpbmNsdWRlICJSdW50aW1lRmxhZ3MuaCIKLSNpbmNsdWRlICJT
cGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlN5bWJvbFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC0yNzcsMTIgKzI3Nyw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3R5cGVFcnJvclN0cnVjdHVyZTsKICAgICBMYXp5
Q2xhc3NTdHJ1Y3R1cmUgbV9VUklFcnJvclN0cnVjdHVyZTsKIAotICAgIFdyaXRlQmFycmllcjxP
YmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKLSAgICBXcml0ZUJhcnJpZXI8
QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOwotICAgIFdyaXRlQmFycmllcjxS
ZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwotICAgIFdyaXRlQmFy
cmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I7CiAKICNpZiBFTkFCTEUoSU5UTCkKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CkBAIC0yOTcsMjYgKzI5
MiwxNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
cGFyc2VJbnRGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVu
Y3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9uOwogCi0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fY2FsbEZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5
RnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
YXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29s
RnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X3Byb21pc2VSZXNvbHZlRnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBtX3JlamVjdFByb21pc2VGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9y
R2V0dGVyU2V0dGVyOwotICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9yZWdFeHBQcm90b0V4
ZWM7CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFj
ZTsKLSAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0
dGVyOwotICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fcmVnRXhwUHJvdG9Vbmljb2Rl
R2V0dGVyOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXI7CiAKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTTW9kdWxlTG9hZGVyPiBtX21vZHVsZUxvYWRlcjsKQEAgLTQzMCw4
ICs0MTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFKERFQ0xBUkVfVFlQRURf
QVJSQVlfVFlQRV9TVFJVQ1RVUkUpCiAjdW5kZWYgREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NU
UlVDVFVSRQogCi0gICAgSlNDZWxsKiBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNp
emVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCi0gICAg
SlNDZWxsKiBtX2xpbmtUaW1lQ29uc3RhbnRzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CisgICAg
c3RkOjphcnJheTxMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTQ2VsbD4sIG51bWJlck9m
TGlua1RpbWVDb25zdGFudHM+IG1fbGlua1RpbWVDb25zdGFudHMgeyB9OwogCiAgICAgU3RyaW5n
IG1fbmFtZTsKIApAQCAtNTk4LDEyICs1ODIsMTIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIHNw
ZWNpZXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIu
Z2V0KCk7IH0KIAotICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2FycmF5Q29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICBSZWdFeHBDb25zdHJ1
Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVj
dG9yLmdldCgpOyB9Ci0gICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIEFycmF5Q29u
c3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
QXJyYXlDb25zdHJ1Y3Rvcio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6QXJy
YXkpKTsgfQorICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6UmVnRXhwKSk7IH0KKyAgICBPYmplY3RDb25zdHJ1Y3Rvciog
b2JqZWN0Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8T2JqZWN0Q29u
c3RydWN0b3IqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Ok9iamVjdCkpOyB9
CiAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogZnVuY3Rpb25Db25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgIEpTUHJvbWlzZUNvbnN0
cnVjdG9yKiBwcm9taXNlQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDb25z
dHJ1Y3Rvci5nZXQoKTsgfQotICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIGludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBwcm9taXNlQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0
b3IqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpKTsgfQorICAg
IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSkp
OyB9CiAKICNpZiBFTkFCTEUoSU5UTCkKICAgICBJbnRsQ29sbGF0b3IqIGRlZmF1bHRDb2xsYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdENvbGxhdG9yLmdldCh0aGlzKTsgfQpAQCAtNjE2
LDI0ICs2MDAsMjIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogcGFyc2VGbG9hdEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZUZsb2F0RnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAKICAgICBKU0Z1
bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQo
dGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2NhbGxGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd1R5cGVFcnJvckZ1
bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSk7IH0KICAgICBKU0Z1bmN0aW9u
KiBhcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90
b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rp
b24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9
Ci0gICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVu
Y3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6bmV3UHJv
bWlzZUNhcGFiaWxpdHkpKTsgfQogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9
Ci0gICAgSlNGdW5jdGlvbiogcmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIHJlamVj
dFByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9u
LmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1
bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpT
RnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlc29sdmVQcm9t
aXNlKSk7IH0KKyAgICBKU0Z1bmN0aW9uKiByZWplY3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudDo6cmVqZWN0UHJvbWlzZSkpOyB9CisgICAgSlNGdW5jdGlvbiogcHJvbWlzZVByb3RvVGhl
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNv
bnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbikpOyB9CiAgICAgSlNG
dW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29i
amVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbnVtYmVy
UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3Ry
aW5nRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU09iamVjdCogcmVnRXhwUHJvdG9F
eGVjRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvRXhlYy5nZXQoKTsgfQor
ICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
anNDYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cEJ1aWx0aW5FeGVjKSk7IH0KICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBs
YWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5n
ZXQoKTsgfQotICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLmdldCgpOyB9Ci0gICAgR2V0dGVy
U2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cFByb3RvVW5pY29kZUdldHRlci5nZXQoKTsgfQorICAgIEdldHRlclNldHRlciogcmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVy
Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdl
dHRlcikpOyB9CisgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBj
b25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFu
dChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpKTsgfQogICAgIEdl
dHRlclNldHRlciogdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJT
ZXR0ZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHND
YWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIuZ2V0KCk7CkBAIC05MTEsMTYgKzg5Myw5IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgICAgICByZXR1cm4gbGF6eVR5cGVkQXJyYXlTdHJ1Y3R1cmUodHlwZSkuY29uc3RydWN0b3Io
dGhpcyk7CiAgICAgfQogCi0gICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBv
aW50ZXIgcG9pbnRlcikKKyAgICBKU0NlbGwqIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudCB2YWx1ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lh
bDo6VGFibGVTaXplKTsKLSAgICAgICAgcmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJd
OwotICAgIH0KLSAgICBKU0NlbGwqIGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3Rh
bnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAg
ICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZh
bHVlKV0uZ2V0KHRoaXMpOwogICAgIH0KIAogICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
V2F0Y2hwb2ludC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2ZWJjOTM3ZjJmNTg1MjA5YTQ2NTE1ODNmYTBm
NzRmNmNlMzk5YTYuLjM5ZmYyOTY1NjI2YzE5N2YzNGM1NzdjMTU1NjUyNmI3OTE4YzA5MjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0YW50IG1l
Y2hhbmlzbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUzNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJh
bWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTExLTAyICBZdXJ5IFNlbWlraGF0
c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIF0g
aW5zcGVjdG9yL2RvbS9nZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUuaHRtbCBpcyBm
YWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1k
ZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFp
bC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dAppbmRleCBlODJhNzk5NzZk
YzZmM2ZmY2Y4YTVlZTgzN2M4N2FlMjgxMWEyYTg5Li4yMTI1ZmI1Mjk3MWNlY2VhYjdjMDgwMzRm
MmQ1MzZjN2EyYTRiNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0
ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQKQEAg
LTE0LDYgKzE0LDYgQEAgQ0FMTCBTVEFDSzoKIDM6IFtGXSBzdGFydEFCQwogICB0aGlzOiB1bmRl
ZmluZWQKIDQ6IFtQXSBHbG9iYWwgQ29kZQotICB0aGlzOiB0ZXN0IC0gCisgIHRoaXM6IGMgLSAK
IFJFU1VNRUQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382696</attachid>
            <date>2019-11-03 00:30:21 -0700</date>
            <delta_ts>2019-11-03 00:58:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103003020.patch</filename>
            <type>text/plain</type>
            <size>138614</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi41NThhODA0ZTcxZTIxODZk
OWI4ODgzYzU5N2IzZTM4M2JhMjc5NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzcgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
TmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAg
ICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rv
ci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9taXNlLnJl
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFsUHJvbWlz
ZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ29u
c3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVu
dHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmguCisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cmVn
aXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJl
c29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1Rp
bWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQb2ludGVy
Rm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmpzQ2VsbEZvckxp
bmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAg
ICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAgICAgIChuYWtlZENv
bnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5JbnRlcm5hbFBy
b21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9taXNlLnJlamVjdCk6IERlbGV0
ZWQuCisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFsUHJvbWlzZS5yZWplY3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ29uc3RhbnRzKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6RW50cnkpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6dHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpsaW5rVGlt
ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eTo6RW50cnk6OmVtaXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRD
b25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmguCisgICAgICAgIChXVEY6OnByaW50
SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cmVnaXN0ZXJJbmRleEZv
ckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVt
cElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdG9y
SW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RC
dWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgICog
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNo
ZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlDb25zdHJ1Y3RvciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBDb25zdHJ1Y3RvciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3RvciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlQ29uc3RydWN0b3Ig
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dGhyb3dUeXBl
RXJyb3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpuZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlc29sdmVQcm9taXNlRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6cmVqZWN0UHJvbWlzZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b1RoZW5GdW5jdGlvbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0V4ZWNGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlciBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1RpbWVDb25zdGFu
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsRnVuY3Rpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXBwbHlGdW5jdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphY3R1YWxQ
b2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmpzQ2Vs
bEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorCiAyMDE5LTExLTAyICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCBodHRwOi8vdHJhYy53
ZWJraXQub3JnL3IyNTE4NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBm
MjVmZjYxZGI5OTBhZDdmNjg4YWE4ZWMxNmYxZGY5ZDhiNmVjNzYyLi5mZTcwYTM1MjJkNmUzZmFj
NjkwMTZmZDY4ZmIwNTM5OTY3M2UxNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC01MjIsNiArNTIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCiAgICAgYnl0ZWNv
ZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgKICAgICBi
eXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCisgICAgYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCiAgICAgYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCiAgICAgYnl0ZWNvZGUvT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uLmgKQEAgLTUyOSw3ICs1MzAsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wY29kZVNpemUuaAogICAgIGJ5dGVjb2RlL1By
b3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAotICAgIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAg
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYjg0NjlhMmFiMWM1OGYyOGYxMTcyMWI0NWI0
YjNmYzJjOTAwMjg1Li4wNDNjODY0OTAxZDVkNDUxZTBlZDFjNTg5NmMwNjY5NmQxM2VkZmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzYyLDcgKzM2Miw2IEBACiAJCTBGNEY4
MjhDMUUzMUI5NzYwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Rjgy
OEExRTMxQjk3MTAwNzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVy
LmggKi87IH07CiAJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAq
LzsgfTsKIAkJMEY1NTEzQTYxRDVBNjgyQzAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1MTNBNTFENUE2ODJBMDBD
MzJCRDggLyogRnJlZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU0MUIw
MTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAv
KiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1
NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1NkExRDMxNTAwMEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQxMTUwMDBG
MzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MTIsNiArMTgxMSw3IEBACiAJCUUzNUNBMTU0
MURCQzNBNUMwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUyMURCQzNBNTYwMEY4MzUxNiAvKiBE
T01KSVRIZWFwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzVDQTE1NjFEQkMzQTVGMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1
MDFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1RTAzNjAxQjdBQjQzRTAwNzNB
RDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAvKiBM
aW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNkI3Njcw
MjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIyRjhENjExMDBEMDk4
MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZDQzk0NzIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVh
dGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcw
MDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNTg1LDggKzI1ODUsNiBAQAogCQkwRjUwQUYzQjE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBwYXRoID0gZGZn
L0RGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjU1MTNBNTFENUE2ODJBMDBDMzJCRDggLyogRnJlZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJlZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NTEzQTcxRDVBNjhDQjAwQzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyZWVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWNpYWxQb2ludGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWNpYWxQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTU5ODk3MTdD
ODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUb05h
dGl2ZUZyb21WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1QzE5MzE3
Mjc2RTQ2MDBDRUFCRkQgLyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFZhbHVlLmNwcDsgcGF0aCA9IGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjEx
NEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00OTM1LDYgKzQ5MzMsOCBAQAogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtU
aW1lQ29uc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlu
a1RpbWVDb25zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkI3NjZF
MjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5
UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVhdGlv
bk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyMzcsNiArODIzNyw4IEBA
CiAJCQkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLAogCQkJCTBG
QjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8s
CiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
LmggKi8sCisJCQkJRTM2MzdFRTgyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQu
Y3BwICovLAorCQkJCUUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50
LmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggKi8sCiAJCQkJNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJNTNGQTJBRTAxQ0YzN0Yz
RjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5oICovLApAQCAtODI4NCw4ICs4Mjg2LDYgQEAKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLAogCQkJCTBGRjYwQUJGMTY3NDBGODEwMDAyOTc3
OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLywKIAkJCQkwRkY2MEFDMDE2NzQwRjgxMDAwMjk3
NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICovLAotCQkJCTBGNTU0MUFGMTYxM0MxRkIwMENFM0Uy
NSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCi0JCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8q
IFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKIAkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyog
U3BlY3VsYXRlZFR5cGUuaCAqLywKIAkJCQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3Ry
dWN0dXJlU2V0LmNwcCAqLywKQEAgLTk0NDgsNiArOTQ0OCw3IEBACiAJCQkJMEYyQjY2QUUxN0I2
QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZBRjE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyog
R0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjI5MjdENTIzNUZEMEI5MDA1Q0IxNjkg
LyogR0NNZW1vcnlPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3MTUzMTFFQjI4
QkVFMDBBMTY0NUQgLyogR0NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRFOEVCMDE4
QkZGQkJCMDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTk4NDMsNiArOTg0NCw3IEBACiAJCQkJQkMxOEM0MzEwRTE2RjVDRDAw
QjM0NDYwIC8qIExleGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBC
MzQ0NjAgLyogTGV4ZXIubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjNDMzEwMTU5RDdG
MDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2MzdFRTkyMzZF
NTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RTJFQTZCMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MERFOUEwOTFCRTdENjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDk2LDcgKzEwMDk4LDYgQEAKIAkJCQkwRkRFODdGQzFE
RkU2RTUxMDA2NEMzOTAgLyogU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFs
aXplZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NUY2
QkMxOEM1NTNGRTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzQUM3NTIxODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxpZ25tZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjOTA4YWZiNTBlMDVjMThj
ZTZkZTFiMWQ3Y2Q2NWQ2YzU4OGRlMzI4Li41MTkyMWQ3MTg2MDliYTFlN2I0ODE0MTA2MzQ3YWVk
MjJlODYwODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNDQsNiArMjQ0LDcg
QEAgYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL0p1bXBU
YWJsZS5jcHAKIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAKIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5jcHAKIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAogYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5jcHAKQEAgLTI2Myw3ICsyNjQsNiBAQCBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKLWJ5dGVjb2RlL1Nw
ZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCiBieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuY3BwCiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmlu
ZGV4IGRkMzNjYTgwMzZhMzBiZjY0ZTA4YTBhMzg3ZWUxYjViNzExYTc4ZjEuLmQ0M2U0OGYwYmEz
MWViZGNmOGJlZDE4YjZlOWFiMGI4ZGJmNTYyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFN
RShtYWNybykgXAogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19F
QUNIX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhhZGQpIFwKKyAgICBtYWNybyhhcHBseUZ1bmN0
aW9uKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHRJbmRleCkgXAogICAgIG1hY3JvKGFy
cmF5SXRlcmF0aW9uS2luZCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JOZXh0KSBcCkBAIC01
Miw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JLaW5k
KSBcCiAgICAgbWFjcm8oYXJyYXlTcGVjaWVzQ3JlYXRlKSBcCiAgICAgbWFjcm8oYXNzZXJ0KSBc
CisgICAgbWFjcm8oY2FsbEZ1bmN0aW9uKSBcCiAgICAgbWFjcm8oY2hhckNvZGVBdCkgXAogICAg
IG1hY3JvKGV4ZWN1dG9yKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCkBAIC03Myw2ICs3NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKICAgICBt
YWNybyhvd25LZXlzKSBcCiAgICAgbWFjcm8oU2V0KSBcCisgICAgbWFjcm8odGhyb3dUeXBlRXJy
b3JGdW5jdGlvbikgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlMZW5ndGgpIFwKICAgICBtYWNybyh0
eXBlZEFycmF5U29ydCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVj
dG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlz
ZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VD
b25zdHJ1Y3Rvci5qcwppbmRleCAzMGZjNjZlNGI4OWYyZWEwYmQ2OWE3YjgxZGUxMzg1MGYwMWNk
Yjc0Li42NmY5NTFmYjRmYzZkMWM2NTFlMDMwNzcwZGVkNTE1ZTkwZGViOWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMK
QEAgLTIzNywxOSArMjM3LDE2IEBAIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFy
IHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyBm
YWxzZSk7CiAgICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZh
ciBAcmVqZWN0ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEBy
ZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQ
cm9taXNlLCByZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigK
ICAgICAgICAgICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxs
Q2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWpl
Y3QpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29u
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAg
ICAgfSk7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7Cisg
ICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2so
cHJvbWlzZSwgZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMjY2LDE5
ICsyNjMsMTYgQEAgZnVuY3Rpb24gSW50ZXJuYWxQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZhciBw
cm9taXNlID0gQGNyZWF0ZVByb21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gdHJ1
ZSk7CiAgICAgdmFyIGNhcHR1cmVkUHJvbWlzZSA9IHByb21pc2U7CiAKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGFsbG93IHVzaW5nIGZ1bmN0aW9uLWRlY2xhcmF0aW9uIGhlcmUuCi0gICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzUwMgotICAgIHZhciBA
cmVqZWN0ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKLSAgICAgICAgcmV0dXJuIEByZWpl
Y3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9t
aXNlLCByZWFzb24pOwotICAgIH07Ci0KICAgICB0cnkgewogICAgICAgICBleGVjdXRvcigKICAg
ICAgICAgICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hl
Y2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0sIEByZWplY3Qp
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZWplY3QocmVhc29uKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5n
RnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICAgICAg
fSk7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgQHJlamVjdChlcnJvcik7CisgICAg
ICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJv
bWlzZSwgZXJyb3IpOwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggYWY4MDc2
OTMzMmM5Y2I1MGUyMmNjMzNkYWM3NDVhMmRiZTBmZTMwNC4uODU4YWI5MDUwMmU4NGQ3MDc5MTUz
MjVmNjkzZWUzZDVkNTg1YzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0xMzYsNiArMTM2LDkgQEAgdm9pZCBDb2RlQmxv
Y2tCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDb25zdGFudHMoKQogICAgICAgICAgICAgY2Fz
ZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyOgogICAgICAgICAgICAgICAgIHNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIiI7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVD
b25zdGFudDoKKyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlw
dGlvbiA9ICI6IGluIHNvdXJjZSBhcyBsaW5rZS10aW1lLWNvbnN0YW50IjsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMtPm1fb3V0LnByaW50
ZigiICAgayV1ID0gJXMlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCB0b0NTdHJpbmco
Y29uc3RhbnQuZ2V0KCkpLmRhdGEoKSwgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRp
b24pOwogICAgICAgICAgICAgKytpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IGQ0MTYz
M2M1NWI2MDljZDU3ZTI0M2IyYjFhNGM0NDA5MjE0YzVhZGEuLmJkYmI3OTJmNGY3MDU1NzhmOGVi
YTZjYzJlMGFjYjQzZDQ3MzhjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTQyLDcg
KzQyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CWVRFQ09E
RV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRk
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1w
bCgpLCAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY18jI25hbWUpOworI2Rl
ZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQobmFtZSkgbV9i
eXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksIEVudHJ5KCZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljXyMjbmFtZSkpOworI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lO
VFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVChhMCwgbmFtZSwgYTEp
IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1wbCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5h
bWUpOwogCiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5KFZNJiB2bSkKICAgICA6IG1fdm0odm0pCkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewogICAg
IEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5JVElB
TElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05fQllU
RUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9J
TlRSSU5TSUNfTkFNRVNfVE9fU0VUKQorICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFO
VFMoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5LX1RJ
TUVfQ09OU1RBTlQpCiAKICAgICBtX3VuZGVmaW5lZC5zZXQobV92bSwganNVbmRlZmluZWQoKSk7
CiAgICAgbV9JbmZpbml0eS5zZXQobV92bSwganNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAg
IG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uOjpOb25lKSkpOwogfQogCi1CeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBl
IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKK09wdGlvbmFsPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFpZGVudC5pc1ByaXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRl
cmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9y
LT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBlZTVm
OTQ5MzVmMzhhNzRhNjE1Njc4NjliZi4uNTY3YjAyNmI1ZTFkMDVjODM2YzAxOWM5MzdjODUwOTUz
YzgyNWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0
YW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMTM3LDcgKzEzOCw0NCBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAog
ICAgIHR5cGVkZWYgUmVnaXN0ZXJJRCogKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6KiBFbWl0dGVy
VHlwZSkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik7CiAKLSAgICBFbWl0dGVyVHlw
ZSBsb29rdXAoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgIGVudW0gY2xhc3MgVHlwZSA6
IHVpbnQ4X3QgeworICAgICAgICBFbWl0dGVyID0gMCwKKyAgICAgICAgTGlua1RpbWVDb25zdGFu
dCA9IDEsCisgICAgfTsKKworICAgIGNsYXNzIEVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IEVudHJ5KCkKKyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fZW1pdHRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBF
bnRyeShFbWl0dGVyVHlwZSBlbWl0dGVyKQorICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6RW1p
dHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9lbWl0dGVyID0gZW1pdHRlcjsKKyAgICAg
ICAgfQorCisgICAgICAgIEVudHJ5KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkK
KyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6OkxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudCA9IGxpbmtUaW1lQ29uc3RhbnQ7CisgICAg
ICAgIH0KKworICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAg
ICAgICAgTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4g
bV9saW5rVGltZUNvbnN0YW50OyB9CisgICAgICAgIEVtaXR0ZXJUeXBlIGVtaXR0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2VtaXR0ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuaW9uIHsK
KyAgICAgICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsKKyAgICAgICAgICAgIExpbmtUaW1l
Q29uc3RhbnQgbV9saW5rVGltZUNvbnN0YW50OworICAgICAgICB9OworICAgICAgICBUeXBlIG1f
dHlwZTsKKyAgICB9OworCisgICAgT3B0aW9uYWw8RW50cnk+IGxvb2t1cChjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NP
TlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgSlNWYWx1ZSBuYW1lIyNWYWx1ZShCeXRlY29kZUdlbmVy
YXRvciYpOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNI
X05BTUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMp
CkBAIC0xNDUsNyArMTgzLDcgQEAgY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAK
IHByaXZhdGU6CiAgICAgVk0mIG1fdm07Ci0gICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBFbWl0dGVyVHlwZSwgSWRlbnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5z
aWNNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7CiAKICNkZWZpbmUgSlNDX0RF
Q0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgU3Ryb25n
PFVua25vd24+IG1fIyNuYW1lOwogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NP
TlNUQU5UU19TSU1QTEVfRUFDSF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19D
T05TVEFOVF9HRU5FUkFUT1JTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKaW5kZXggZDY1MmI2NTg4NGM3OGIwM2JkODBkMmQ2N2Q0OGYxNjg2MTBi
OWE3OC4uMzRjMTUyYTBkNjYyZjM1Mjk3ZGYxNDQ0ODY0ZmI0YmJhMzQwZWY4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NCwxMCAr
NjQsNiBAQAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKIF0KIAotbmFtZXNwYWNlIDpT
cGVjaWFsIGRvCi0gICAgdHlwZXMgWyA6UG9pbnRlciBdCi1lbmQKLQogdGVtcGxhdGVzIFsKICAg
ICA6V3JpdGVCYXJyaWVyLAogICAgIDpXcml0ZUJhcnJpZXJCYXNlLApAQCAtNjc1LDcgKzY3MSw3
IEBACiBvcCA6am5lcV9wdHIsCiAgICAgYXJnczogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJl
Z2lzdGVyLAotICAgICAgICBzcGVjaWFsUG9pbnRlcjogU3BlY2lhbDo6UG9pbnRlciwKKyAgICAg
ICAgc3BlY2lhbFBvaW50ZXI6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6
IEJvdW5kTGFiZWwsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1ZWMyNDZjOTFkODJlY2U2MjRkZGRj
MjZhYmI1ZDU1NDI0M2RiOTgyLi4wZjhlN2Y4YjRmOTI0NDQ3MzgyYTVkOGU4ODEzNzYwN2Q0OWMy
NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMzk5LDEyICszOTksNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIHNldENvbnN0
YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxp
bmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExl
dmVsRXhlY3V0YWJsZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50
OyBpKyspIHsKLSAgICAgICAgTGlua1RpbWVDb25zdGFudCB0eXBlID0gc3RhdGljX2Nhc3Q8TGlu
a1RpbWVDb25zdGFudD4oaSk7Ci0gICAgICAgIGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4ID0g
dW5saW5rZWRDb2RlQmxvY2stPnJlZ2lzdGVySW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUp
KQotICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQodm0s
IHRoaXMsIG1fZ2xvYmFsT2JqZWN0LT5qc0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsK
LSAgICB9Ci0KICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFibGUg
Zm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgc2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0ZQog
ICAgIC8vIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2RlIGJs
b2NrLiBXZSByZXBsYWNlIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVhZHkg
Y2xvbmVkIG9uZS4KICAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayo+KHZtLCB1bmxpbmtlZENvZGVCbG9jaykpIHsKQEAgLTkwNSwyOSAr
ODk5LDM2IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0
b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhCiAgICAgfQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gY29u
c3RhbnRzW2ldLmdldCgpOwotCi0gICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICBKU0Nl
bGwqIGNlbGwgPSBjb25zdGFudC5hc0NlbGwoKTsKLSAgICAgICAgICAgICAgICBpZiAoU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxs
KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVk
V2l0aFR5cGVQcm9maWxlck9wY29kZXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIp
OworICAgICAgICBzd2l0Y2ggKGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpXSkg
eworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFu
dDoKKyAgICAgICAgICAgIGNvbnN0YW50ID0gZ2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50
KHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGNvbnN0YW50LmFzSW50MzJBc0FueUludCgp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb246Ok90aGVyOgorICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6SW50
ZWdlcjoKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToKKyAg
ICAgICAgICAgIGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNvbnN0YW50LmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IGNvbnN0YW50LmFzQ2VsbCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlID0ganNEeW5hbWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdp
dGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhs
b2NrZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBTeW1ib2xUYWJsZSogY2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0p
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09w
Y29kZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFD
b2RlQmxvY2sodGhpcyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xv
bmU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVj
dXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAg
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSog
Y2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOwotICAgICAgICAgICAgICAg
ICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOwotCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcio+KHZtLCBjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvKiB0ZW1wbGF0ZU9i
amVjdCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBkZXNjcmlwdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0
ZU9iamVjdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotCiAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KHZt
LCB0aGlzLCBjb25zdGFudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Zp
dHMuaAppbmRleCBlMjQ0ZmQ2MjcwOWI0MjVhNjI4ZTIyNDU2NjM4YjBlNTYzY2RhZTA5Li5lZGEy
NGJlNDY5NTY0YjJlNTBjNjRmZTYwODFiYTIxZjljZWQ5YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQcm9maWxlVHlw
ZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlJl
c3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5j
bHVkZSA8dHlwZV90cmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwOTI3NTNjMzRhOTUzYWI5ZWUx
ZjQwYjViOTdiZjJlYjNlOTY0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25h
bWVzcGFjZSBXVEYgeworCisjZGVmaW5lIFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCh2YXJOYW1l
LCBuYW1lLCBjb2RlKSBcCisgICAgY2FzZSBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWU6IFwK
KyAgICAgICAgb3V0LnByaW50KCNuYW1lKTsgXAorICAgICAgICByZXR1cm47CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQgY29uc3Rh
bnQpCit7CisgICAgc3dpdGNoIChjb25zdGFudCkgeworICAgICAgICBKU0NfRk9SRUFDSF9MSU5L
X1RJTUVfQ09OU1RBTlRTKFBSSU5UX0xJTktfVElNRV9DT05TVEFOVCkKKyAgICB9Cit9CisKKyN1
bmRlZiBQUklOVF9MSU5LX1RJTUVfQ09OU1RBTlQKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YzkxZGM0ODIyOTk4ZjI4OWViNGZkYjBlYTk5Zjc4M2ZjZTMwNWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFModikgXAorICAgIEpT
Q19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRSh2KSBcCisgICAg
dih0aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCBudWxscHRy
KSBcCisgICAgdihpbXBvcnRNb2R1bGUsIGltcG9ydE1vZHVsZSwgbnVsbHB0cikgXAorICAgIHYo
bWFwQnVja2V0SGVhZCwgbWFwQnVja2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0
TmV4dCwgbWFwQnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0S2V5LCBtYXBC
dWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldFZhbHVlLCBtYXBCdWNrZXRWYWx1
ZSwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0SGVhZCwgc2V0QnVja2V0SGVhZCwgbnVsbHB0
cikgXAorICAgIHYoc2V0QnVja2V0TmV4dCwgc2V0QnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAg
IHYoc2V0QnVja2V0S2V5LCBzZXRCdWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KHByb3BlcnR5
SXNFbnVtZXJhYmxlLCBwcm9wZXJ0eUlzRW51bWVyYWJsZSwgbnVsbHB0cikgXAorICAgIHYob3du
S2V5cywgb3duS2V5cywgbnVsbHB0cikgXAorICAgIHYoZW5xdWV1ZUpvYiwgZW5xdWV1ZUpvYiwg
bnVsbHB0cikgXAorICAgIHYobWFrZVR5cGVFcnJvciwgbWFrZVR5cGVFcnJvciwgbnVsbHB0cikg
XAorICAgIHYodHlwZWRBcnJheUxlbmd0aCwgdHlwZWRBcnJheUxlbmd0aCwgbnVsbHB0cikgXAor
ICAgIHYodHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIHR5cGVkQXJyYXlHZXRPcmln
aW5hbENvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAgdih0eXBlZEFycmF5U29ydCwgdHlwZWRB
cnJheVNvcnQsIG51bGxwdHIpIFwKKyAgICB2KGlzVHlwZWRBcnJheVZpZXcsIGlzVHlwZWRBcnJh
eVZpZXcsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgdHlwZWRB
cnJheVN1YmFycmF5Q3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0JvdW5kRnVuY3Rpb24sIGlz
Qm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
LCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGluc3RhbmNlT2Ys
IGluc3RhbmNlT2YsIG51bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5Mb2csIEJ1aWx0aW5Mb2csIG51
bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5EZXNjcmliZSwgQnVpbHRpbkRlc2NyaWJlLCBudWxscHRy
KSBcCisgICAgdihSZWdFeHAsIFJlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYodHJ1bmMsIHRydW5j
LCBudWxscHRyKSBcCisgICAgdihQcm9taXNlLCBQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihJ
bnRlcm5hbFByb21pc2UsIEludGVybmFsUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoZGVmYXVs
dFByb21pc2VUaGVuLCBkZWZhdWx0UHJvbWlzZVRoZW4sIG51bGxwdHIpIFwKKyAgICB2KHJlcGVh
dENoYXJhY3RlciwgcmVwZWF0Q2hhcmFjdGVyLCBudWxscHRyKSBcCisgICAgdihhcnJheVNwZWNp
ZXNDcmVhdGUsIGFycmF5U3BlY2llc0NyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheSwg
aXNBcnJheSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheVNsb3csIGlzQXJyYXlTbG93LCBudWxs
cHRyKSBcCisgICAgdihjb25jYXRNZW1jcHksIGNvbmNhdE1lbWNweSwgbnVsbHB0cikgXAorICAg
IHYoYXBwZW5kTWVtY3B5LCBhcHBlbmRNZW1jcHksIG51bGxwdHIpIFwKKyAgICB2KGhvc3RQcm9t
aXNlUmVqZWN0aW9uVHJhY2tlciwgaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyLCBudWxscHRy
KSBcCisgICAgdihJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbiwgbnVsbHB0cikgXAorICAgIHYoU2V0LCBTZXQsIG51bGxwdHIpIFwKKyAgICB2KHRoaXNU
aW1lVmFsdWUsIHRoaXNUaW1lVmFsdWUsIG51bGxwdHIpIFwKKyAgICB2KGlzQ29uc3RydWN0b3Is
IGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIs
IHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvR2xv
YmFsR2V0dGVyLCByZWdFeHBQcm90b0dsb2JhbEdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVn
RXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIsIG51
bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCByZWdFeHBQcm90b011
bHRpbGluZUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIs
IHJlZ0V4cFByb3RvU291cmNlR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1N0
aWNreUdldHRlciwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJl
Z0V4cFByb3RvVW5pY29kZUdldHRlciwgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLCBudWxscHRy
KSBcCisgICAgdihyZWdFeHBCdWlsdGluRXhlYywgcmVnRXhwQnVpbHRpbkV4ZWMsIG51bGxwdHIp
IFwKKyAgICB2KHJlZ0V4cENyZWF0ZSwgcmVnRXhwQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihp
c1JlZ0V4cCwgaXNSZWdFeHAsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cE1hdGNoRmFzdCwgcmVn
RXhwTWF0Y2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTZWFyY2hGYXN0LCByZWdFeHBT
ZWFyY2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTcGxpdEZhc3QsIHJlZ0V4cFNwbGl0
RmFzdCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgcmVn
RXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwVGVzdEZh
c3QsIHJlZ0V4cFRlc3RGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdJbmNsdWRlc0ludGVy
bmFsLCBzdHJpbmdJbmNsdWRlc0ludGVybmFsLCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTcGxp
dEZhc3QsIHN0cmluZ1NwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYoc3RyaW5nU3Vic3RySW50
ZXJuYWwsIHN0cmluZ1N1YnN0ckludGVybmFsLCBudWxscHRyKSBcCisgICAgdihtYWtlQm91bmRG
dW5jdGlvbiwgbWFrZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGhhc093bkxlbmd0
aFByb3BlcnR5LCBoYXNPd25MZW5ndGhQcm9wZXJ0eSwgbnVsbHB0cikgXAorICAgIHYoZGF0ZVRp
bWVGb3JtYXQsIGRhdGVUaW1lRm9ybWF0LCBudWxscHRyKSBcCisgICAgdih3ZWJBc3NlbWJseUNv
bXBpbGVTdHJlYW1pbmdJbnRlcm5hbCwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJu
YWwsIG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRl
cm5hbCwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsLCBudWxscHRyKSBc
CisgICAgdihPYmplY3QsIE9iamVjdCwgbnVsbHB0cikgXAorICAgIHYoQXJyYXksIEFycmF5LCBu
dWxscHRyKSBcCisgICAgdihhcHBseUZ1bmN0aW9uLCBhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihjYWxsRnVuY3Rpb24sIGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAorCisKKyNkZWZp
bmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQodmFyTmFtZSwgbmFtZSwgY29kZSkgbmFtZSwK
K2VudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3QgeworICAgIEpTQ19GT1JFQUNI
X0xJTktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQpCit9OworI3Vu
ZGVmIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UCisjZGVmaW5lIENPVU5UX0xJTktfVElNRV9D
T05TVEFOVCh2YXJOYW1lLCBuYW1lLCBjb2RlKSAxICsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cyA9IEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05T
VEFOVFMoQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKSAwOworI3VuZGVmIENPVU5UX0xJTktfVElN
RV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2Ns
YXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6
OkxpbmtUaW1lQ29uc3RhbnQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1YWQzZjI0Y2EwNDgxZDExYTY3ZWJkMWJmYmFiZTg2NmZkMzFkNDhi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgot
Ci0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkKiBhY3R1YWxQ
b2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNwZWNpYWw6OlBvaW50ZXIg
cG9pbnRlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2ludGVyRm9yKHBv
aW50ZXIpOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayogY29kZUJsb2Nr
LCBTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGFjdHVhbFBvaW50ZXJG
b3IoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcG9pbnRlcik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIHN3aXRjaCAo
cG9pbnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVuY3Rpb246Ci0gICAgICAg
IG91dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpT
Qzo6U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJBcHBseUZ1bmN0
aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6T2JqZWN0Q29u
c3RydWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3RydWN0b3IiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yOgotICAg
ICAgICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91dC5wcmludCgiVGFibGVT
aXplIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5MmJhYjc2ZWEyYmZmN2U2ZTg4MzUzNWVhNGQ3
NmM0MWIwNDY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNs
YXNzIENvZGVCbG9jazsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotCi1uYW1lc3BhY2UgU3BlY2lh
bCB7Ci1lbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7Ci0gICAgQ2FsbEZ1bmN0aW9uLAotICAgIEFw
cGx5RnVuY3Rpb24sCi0gICAgT2JqZWN0Q29uc3RydWN0b3IsCi0gICAgQXJyYXlDb25zdHJ1Y3Rv
ciwKLSAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50ZXIuIFVzZSB0aGlz
IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgotfTsKLX0gLy8gbmFtZXNwYWNl
IFNwZWNpYWwKLQotZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBUaHJvd1R5cGVF
cnJvckZ1bmN0aW9uLAotfTsKLWNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9
IDE7Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50ZXIgcG9p
bnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpU
YWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBwb2ludGVySXND
ZWxsKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50
ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiwgU3BlY2lhbDo6UG9pbnRl
cik7Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayosIFNwZWNpYWw6OlBvaW50ZXIp
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFByaW50
U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlNwZWNpYWw6
OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDIzNGZhNTc3YzVh
ZjBhMTIxNmM3YjRkNmQwNDQ3ZDBiY2Y4ZDRjNDkuLmQ1ZGRlZThkNTYwNzcwMzIzYjFmZDVmMWFj
Y2NjYzA1MDJjMTI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzYsOCArNzYsNiBAQCBVbmxpbmtlZENvZGVC
bG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29k
ZVR5cGUgY29kZQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2Rl
KQogICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSgpKQogewot
ICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlckluZGV4IDogbV9saW5rVGltZUNvbnN0YW50
cykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlckluZGV4ID0gMDsKICAgICBBU1NFUlQobV9jb25z
dHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5k
KCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29k
ZVR5cGUpKTsKICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTWl4ZWRUcmlTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NzM5ZGE3ODM1NjhkM2ViMjYzMWVlZjFhNzI0
MjkyODc5N2Y1NjY5Li5kNjA3MzYwMTRkZDFlMzE1NzEzYTg1MmU4N2RhNjU2MTQxNjMwMDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlBh
cnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCi0jaW5jbHVkZSAiU3BlY2lhbFBvaW50
ZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
IlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpA
QCAtMTgwLDI3ICsxNzksMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5k
KHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKKyAgICB1
bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29uc3RhbnQpCiAg
ICAgewogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICBhdXRvIGxvY2tlciA9
IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNlbGxMb2NrKCkpOwogICAgICAgICB1bnNpZ25l
ZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAgICAgQVNTRVJUKHJl
c3VsdCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5
cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAg
ICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XSA9IHJlc3VsdDsKICAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwotICAgICAgICBt
X2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMubGFzdCgpLnNl
dCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGlua1RpbWVDb25zdGFu
dCkpKTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5k
KFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZvckxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFTU0VSVChp
bmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xpbmtUaW1l
Q29uc3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0
ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVy
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Nv
bnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CkBAIC00MDYsOCArMzk1LDYgQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90
aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKIAotICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNv
bnN0YW50czsKLQogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCAyZGI4MThmMGI5YjU0YjIxNWJhZjA2Y2NjNmFlMzFjM2MyOWFkZmFl
Li44MzZmZDU3OGYyYzE4NGZiMzM2MjU1ODcxYzZiMTJjM2MxMzY3YTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMzA4LDkgKzMwOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFy
aWFibGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9s
aW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVs
bHB0cjsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0
ZSBzcGFjZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM2MCw5ICszNTcsNiBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5v
ZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9u
Tm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+
ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVy
IDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVy
ID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3lt
Ym9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2Vz
Tm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVD
b25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwxMSArNzgyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0
aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJvd25WYWx1ZSk7CiAgICAgICAgIC8vIHJldHVybiBA
cHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJSZWplY3RQcm9taXNlID0gdmFyaWFibGUocHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdG
dW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgbW92ZShzY29wZS5nZXQoKSwgZW1p
dFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSkpOwotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVt
cG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlLCBUaHJvd0lmTm90Rm91bmQp
OwotCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0gbW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZVdpdGhG
aXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBh
cmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICAgICAgZW1pdExvYWQoYXJncy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIG1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVy
KDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBAIC04NDgsOSArODM4LDYgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxp
bmtlZEV2YWxDb2QKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2
YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQogICAg
ICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkK
IHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRS
ZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgbV9j
b2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKICAgICBwdXNoVERaVmFyaWFibGVzKCpw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1p
emUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CkBAIC05MTAsOSArODk3LDYgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUq
IG1vZHVsZVByb2dyYW1Ob2QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKLSAgICBmb3IgKGF1
dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAg
ICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgU3ltYm9sVGFibGUqIG1vZHVs
ZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwogICAg
IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNl
c05vblN0cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFNj
b3BlVHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwpAQCAtMTQ0Miwx
MiArMTQyNiwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmRmFsc2UoUmVn
aXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0
KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpDYWxsRnVuY3Rp
b24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwg
bW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y2FsbEZ1bmN0
aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0
KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpBcHBseUZ1bmN0
aW9uLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQs
IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFwcGx5RnVu
Y3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApAQCAtMzEwMSw3ICsz
MDg1LDcgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVk
RnVuY3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYgKGNhbGxBcmd1bWVu
dHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAgICAgICAgcmV0dXJu
IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0
aGlzLCBmdW5jLCBTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhp
cykpOworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29u
c3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KSwgcmVhbENhbGwtPmJpbmQo
dGhpcykpOwogICAgICAgICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBAIC0zMTE3LDcgKzMxMDEsNyBAQCBFeHBl
Y3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBw
ZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpID4gMikKICAgICAgICAgICAgIHJldHVybiBOb0V4cGVjdGVkRnVu
Y3Rpb247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgU3Bl
Y2lhbDo6QXJyYXlDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykpOworICAgICAgICBP
cEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
TGlua1RpbWVDb25zdGFudDo6QXJyYXkpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CiAgICAgICAg
IAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICAgICAgaWYg
KGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9PSAyKQpAQCAtMzI4
NSw3ICszMjY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcm9w
ZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICBpZiAoYXR0cmlidXRl
cy5oYXNHZXQoKSB8fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZXMu
aGFzR2V0KCkgfHwgIWF0dHJpYnV0ZXMuaGFzU2V0KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25z
dGFudDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
ckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFu
dDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGdldHRlcjsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCkBAIC00NDc0LDEwICs0
NDU4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJh
dG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKIAogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKLSAgICBhdXRvIHZhckNyZWF0ZUFzeW5jRnJvbVN5
bmNJdGVyYXRvciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5jcmVh
dGVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBtb3ZlKHNjb3BlLmdldCgpLCBlbWl0
UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJDcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3Ip
KTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0g
ZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFz
eW5jRnJvbVN5bmNJdGVyYXRvciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQo
bnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yKTsK
IAogICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMik7CiAgICAgZW1pdExv
YWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
MmQ3MjFlYjc3OTBiMzczMDIzNzhmZmFjYjkxMjI3MmRmYjhlN2M0Zi4uZjViMzU2OGQxZDc1NTAy
ODc0ZmQ2N2FkNTVmZDhkODJmM2FlNzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGFi
ZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFu
dC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNs
dWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgpAQCAtMTIxNiw3ICsxMjE3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsg
bnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVyaXZlZENvbnN0dWN0b3IgeyBudWxs
cHRyIH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tM
aW5rVGltZUNvbnN0YW50Q291bnRdOworICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnNbbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50c10geyB9OwogICAgICAgICBS
ZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fcHJvbWlzZVJlZ2lzdGVyIHsg
bnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMmUwM2JlMGI3Yzc1ZGRiMDI3ZWM0ZTZmNjU2MjE4ZDhl
MGZlNTFhNi4uNTI0NjhlMWYyYWExMWUxMjA2YWU3ZjQ1YTE1ZjI5MGIzOWRhZjQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjExLDcgKzIxMSw3IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVy
SUQqIEltcG9ydE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVs
ZSA9IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW1wb3J0TW9kdWxl
UHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVsZSA9IGdl
bmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50Ojpp
bXBvcnRNb2R1bGUpOwogICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVs
bHB0ciwgMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3VtZW50cy5hcmd1
bWVudFJlZ2lzdGVyKDApLCBtX2V4cHIpOwpAQCAtOTg1LDcgKzk4NSwxMSBAQCBSZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsK
LSAgICByZXR1cm4gKHRoaXMtPiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0KTsKKyAgICBpZiAo
bV9lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRl
cikKKyAgICAgICAgcmV0dXJuICh0aGlzLT4qbV9lbnRyeS5lbWl0dGVyKCkpKGdlbmVyYXRvciwg
ZHN0KTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3Rh
bnQoZHN0LCBtX2VudHJ5LmxpbmtUaW1lQ29uc3RhbnQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QnlJZERpcmVjdChCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xMDEzLDkgKzEwMTcs
MTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19n
ZXRCeUlkRGlyZWN0UHJpdmF0ZShCeXRlY29kZUcKIAogc3RhdGljIEpTUHJvbWlzZTo6RmllbGQg
cHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7
Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50
eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAg
aWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX3Byb21pc2VGaWVsZEZsYWdzKQogICAgICAgICByZXR1cm4gSlNQcm9taXNl
OjpGaWVsZDo6RmxhZ3M7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdCkK
KyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQpCiAgICAgICAg
IHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdDsKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpGbGFn
czsKQEAgLTEwMjMsMTMgKzEwMjgsMTQgQEAgc3RhdGljIEpTUHJvbWlzZTo6RmllbGQgcHJvbWlz
ZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiAKIHN0YXRp
YyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2Rl
SW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCisg
ICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAm
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRl
KQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBpZiAobm9k
ZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dl
bmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQog
ICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0OwotICAgIGlmIChub2RlLT5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJh
dG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFRoaXMpCiAgICAg
ICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXM7Ci0gICAgaWYgKG5vZGUtPmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JG
aWVsZEZyYW1lKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZEZyYW1lKQogICAgICAg
ICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwpAQCAt
MTAzNywxOSArMTA0MywyMCBAQCBzdGF0aWMgSlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvcklu
dGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZAogCiBzdGF0aWMgSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQgYXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0
ZSkKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigp
ID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxk
U3RhdGUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Ci0g
ICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRl
cigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZp
ZWxkTmV4dCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0Owot
ICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JG
aWVsZFRoaXMpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsK
LSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6RnJh
bWU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKKyAgICBpZiAo
bm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCiAgICAgICAgIHJldHVy
biBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbjsKLSAgICBpZiAobm9kZS0+
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5j
R2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRv
ckZpZWxkUXVldWVGaXJzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxk
OjpRdWV1ZUZpcnN0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKKyAg
ICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKICAgICAgICAgcmV0
dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3Q7CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0
YXRlOwpAQCAtNDA5NiwxMCArNDEwMyw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgIC8vIGxvYWQgYW5kIGNh
bGwgQGFzeW5jRnVuY3Rpb25SZXN1bWUKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1bmN0
aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoc2Nv
cGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsK
LSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1bWUgPSBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
LCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhc3lu
Y0Z1bmN0aW9uUmVzdW1lID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIs
IExpbmtUaW1lQ29uc3RhbnQ6OmFzeW5jRnVuY3Rpb25SZXN1bWUpOwogCiAgICAgICAgIENhbGxB
cmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDQpOwogICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudENvdW50ID0gMDsKQEAgLTQ1NzgsMTEgKzQ1ODIsNyBAQCB2b2lkIE9iamVjdFBhdHRl
cm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogcmhzKQogICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFkZE1ldGhvZDsKICAgICBpZiAobV9jb250YWluc1Jlc3RFbGVtZW50ICYmIG1fY29u
dGFpbnNDb21wdXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGF1dG8gdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuU2V0UHJpdmF0
ZU5hbWUoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RG
b3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVy
YXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpTZXQp
OwogCiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOwog
ICAgICAgICBleGNsdWRlZExpc3QgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBzZXRDb25zdHJ1Y3Rvci5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwpAQCAtNDYzMywxMSArNDYzMyw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJp
bmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0ID0gZ2VuZXJhdG9yLmVtaXRO
ZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0gICAgICAgICAgICBh
dXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmNvcHlEYXRhUHJvcGVydGllc1ByaXZhdGVOYW1lKCkpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhy
b3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5RGF0YVBy
b3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CkBAIC00ODEwLDExICs0ODA2LDcgQEAgUmVnaXN0ZXJJRCogT2JqZWN0U3ByZWFkRXhwcmVzc2lv
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG8KICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoc3JjLmdldCgpLCBtX2V4cHJlc3Npb24pOwogICAgIAogICAgIC8vIGxv
YWQgYW5kIGNhbGwgQGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucwotICAgIGF1dG8gdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zUHJpdmF0ZU5hbWUoKSk7Ci0gICAg
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwotICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRh
UHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNv
bnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJvcGVydGllc05vRXhj
bHVzaW9ucyk7CiAgICAgCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0
ciwgMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5k
ZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCBlMGVlZjQ5MTdhYTY4MWZhYzI5NGM5ODg0OTgyNWIyZDkzZjAwZjFhLi4z
Mzc4YWQwOTJmNmEyNDIwMzNjZjQwNzY4M2Q5Mzg5NWQzZDNjZDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjM0MiwxMSArNjM0
Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwotICAgICAg
ICAgICAgU3BlY2lhbDo6UG9pbnRlciBzcGVjaWFsUG9pbnRlciA9IGJ5dGVjb2RlLm1fc3BlY2lh
bFBvaW50ZXI7Ci0gICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzQ2VsbChzcGVjaWFsUG9pbnRl
cikpOwotICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyID0gc3RhdGljX2Nhc3Q8SlND
ZWxsKj4oCi0gICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZvcihtX2lubGluZVN0YWNrVG9w
LT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKLSAgICAgICAgICAgIEZyb3plblZhbHVl
KiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFsUG9pbnRlcik7CisgICAgICAg
ICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5tX3NwZWNp
YWxQb2ludGVyLm9mZnNldCgpKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNl
dCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAgICBOb2Rl
KiBjaGlsZCA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwZDA0OTk0NTgwZDliMzg4MWM5MDJiMDFhYmEzZTYx
ZDk2MDM2ZTU5Li44ZWJlNDlmZWJiZjUxMzViNTM1ZTNjZGQ3Njk2NTY4MTUwNTNkYTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ3MSwxMSArNDcxLDEy
IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAg
IFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKKyAgICBK
U1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2RlLm1fc3Bl
Y2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9pbnRlci5pc0NlbGwo
KSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24s
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoc3JjLCByZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29kZUJsb2Nr
LCBwdHIpKSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFs
LCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIHN0
b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRkSnVt
cChqdW1wKCksIHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzZTBjZWI0NjkzYTU4OTVm
M2FmZWJjOTYyYTljMTQzZjA4MjhjNTMxLi40ZTk0MjQ1NDc5ZjNmNDc2OTdhOGI2OTNjNWRmMWYw
MTBlYjIzMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCkBAIC00NzgsMTIgKzQ3OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgc3JjID0gYnl0ZWNv
ZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5dGVjb2Rl
Lm1fc3BlY2lhbFBvaW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdldENvbnN0
YW50T3BlcmFuZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKTsKKyAgICBBU1NF
UlQoc3BlY2lhbFBvaW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAg
IGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJ
Zk5vdENlbGwocmVnVDEpOwotICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1Qw
LCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikpKTsKKyAg
ICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVj
aWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAgICBzdG9y
ZTgoVHJ1c3RlZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQpOwogICAgIGFkZEp1bXAo
anVtcCgpLCB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMzdlZTIyYjQ5M2QwYjVhZTRk
Mzc0MmRiMTIyZjUyM2JlYWYzZjZhLi40YzYwZGJlZTEzM2FlYmY2OTlkMjRmYzk3OTNhODQ0MmUy
MTExOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTcxMCwxMiArMTcxMCwxMCBAQCB1bmRlZmlu
ZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9yTnVsbCwK
IAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1ZSwgdDAp
Ci0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQotICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDJdLCB0MgorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MywgdDIpCiAgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCi0gICAgbG9hZHAgSlNHbG9iYWxPYmpl
Y3Q6Om1fc3BlY2lhbFBvaW50ZXJzW3QyLCB0MSwgNF0sIHQxCi0gICAgYnBlcSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisgICAgYnBlcSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCiAub3BKbmVx
UHRyQnJhbmNoOgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BKbmVxUHRy
OjpNZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDA0NDNmMGNmZThiMzcy
N2VjOTRiZDRkNTg5NzA5NjEwYjQyOWM4NmEuLjA1ZThmZGEzZGU1ZjRiYjUzMTk2N2QzMDg4OWI3
NjViN2FkYTJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE2LDExICsxODE2LDkgQEAgdW5kZWZpbmVk
T3JOdWxsSnVtcE9wKGpudW5kZWZpbmVkX29yX251bGwsIE9wSm51bmRlZmluZWRPck51bGwsCiAK
IGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFsdWUsIHQwKQot
ICAgIGdldHUoc2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNpYWxQb2ludGVyLCB0MSkKLSAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVjaWFsUG9pbnRlcnNbdDIs
IHQxLCBQdHJTaXplXSwgdDEKLSAgICBicG5lcSB0MSwgW2NmciwgdDAsIDhdLCAub3BKbmVxUHRy
VGFyZ2V0CisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDEsIHQyKQorICAgIGJwbmVxIHQyLCBbY2ZyLCB0MCwgOF0sIC5vcEpu
ZXFQdHJUYXJnZXQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEpuZXFQdHJUYXJnZXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNhZjAzMDgyOTIxZDEyOTVh
MDQyOGRiMGNiZTA0MTJjM2FjZjBjOTkuLmNjNTk3ZjViNDRiOWU3MTc5ZjVkZTU1YjBlZWQyYmY4
NjkwNWVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC0yMDAsOCArMjAwLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICB1c2VzQXJn
dW1lbnRzKCk7CiAKICAgICAgICAgaWYgKGlkZW50LmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAg
IGlmIChCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIGVtaXR0ZXIgPSBtX3ZtLmJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29k
ZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2NhdGlvbiwgZW1pdHRlciwgaWRlbnQs
IG51bGxwdHIsIHN0YXJ0LCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGF1dG8gZW50cnkgPSBt
X3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpOworICAgICAgICAg
ICAgaWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0
YW50LCBsb2NhdGlvbiwgZW50cnkudmFsdWUoKSwgaWRlbnQsIG51bGxwdHIsIHN0YXJ0LCBzdGFy
dCwgZW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOwpAQCAtMTM4NCw4ICsxMzg1LDgg
QEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBpZiAoZnVuYy0+aXNCeXRlY29kZUludHJp
bnNpY05vZGUoKSkgewogICAgICAgICBBU1NFUlQoIWlzT3B0aW9uYWxDYWxsKTsKICAgICAgICAg
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBpbnRyaW5zaWMgPSBzdGF0aWNfY2FzdDxCeXRlY29kZUlu
dHJpbnNpY05vZGUqPihmdW5jKTsKLSAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW1pdHRlcigpLCBp
bnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKKyAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6VHlwZTo6Q29uc3RhbnQgJiYgaW50cmluc2ljLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVudHJ5KCksIGludHJp
bnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwog
ICAgIH0KIAogICAgIGlmIChmdW5jLT5pc09wdGlvbmFsQ2hhaW4oKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA3NTg5ZDdjOTFl
ODk1ZWIyZDk5NjMzZGJmNWI0YWE1ZDI2YWViODRlLi45YzdiOWEyODIwNzNjNTc2YTYzNDllNGQ2
OWMyMjBiYTVjY2RlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2Rl
SW50cmluc2ljTm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEVtaXR0ZXJUeXBlIGVtaXR0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNO
b2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgaW5s
aW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUgdHlw
ZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6RW50cnkgZW50cnksIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fZW1pdHRlcihlbWl0
dGVyKQorICAgICAgICAsIG1fZW50cnkoZW50cnkpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICAgICAgLCBtX3R5cGUodHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBhYTQ0ODY2NGQxZDQ4MTQwZDEwYTQ1OTBjMDY3
ZDUwMWE4YjYyODdmLi5mYWQ1MzI4YTJiOTQ0MzdkYjJkYWU3ZjFjODZiMjg5YzFhMzQxZmFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC05NDQsMTQgKzk0NCwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEZ1bmN0aW9uCiAgICAgICAgIH07CiAKLSAgICAg
ICAgdHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJU
eXBlKShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKLQotICAgICAgICBCeXRlY29k
ZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRlclR5cGUs
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5LCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2ljTm9kZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsgfQorICAgICAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5OjpFbnRyeSBlbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnk7IH0KICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAog
I2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TKG5hbWUpIFJl
Z2lzdGVySUQqIGVtaXRfaW50cmluc2ljXyMjbmFtZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqKTsKQEAgLTk2NCw3ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBi
b29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OkZ1bmN0aW9uOyB9CiAKLSAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOworICAgICAg
ICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBtX2VudHJ5OwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CiAg
ICAgICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCmluZGV4IDYwMzVhNDkwOTI2YzRhZTVmYzMzMjdhZmZlZGY0Mjc2YjkzZjA2
NTcuLmViOWQ5OTNiMjUxNGM2NzI5ZTEwMmY2NWU3MjBhNzI4YWYyYzI0MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MDEsNyArMTgw
MSw2IEBAIGNsYXNzIENhY2hlZENvZGVCbG9jayA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8Q29kZUJs
b2NrVHlwZT4gewogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKLSAgICBzdGQ6OmFycmF5PHVu
c2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7CiAKICAg
ICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0TW9kZSA6
IDE7CkBAIC0yMDM5LDkgKzIwMzgsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVC
bG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlua2VkQ29k
ZUJsb2NrJiBjb2RlQmxvY2spIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gTGlua1Rp
bWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0
YW50c1tpXSA9IG1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX2NvbnN0YW50UmVnaXN0
ZXJzLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywgJmNvZGVC
bG9jayk7CiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVjb2RlKGRl
Y29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAg
ICAgbV9leHByZXNzaW9uSW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhwcmVzc2lv
bkluZm8pOwpAQCAtMjIwNyw5ICsyMjAzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENv
ZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAg
ICBtX2NvZGVHZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9uTW9kZTsK
ICAgICBtX2NvZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIG1fbGlua1RpbWVD
b25zdGFudHNbaV0gPSBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAgIG1f
bWV0YWRhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX21ldGFkYXRhLmdldCgpKTsKICAg
ICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9yYXJlRGF0YS5nZXQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCA0N2Zj
ZDMzOGI0MDU5ODM2Y2QzNjgxZTg0ZTAxZmFiNzQzMzk3Njc0Li4yNTk5ZTJjNTYyOTEwZjk4MTQ2
YzkxOGI1MjI0OWM4NTViZDJhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCkBAIC0xMjksNyArMTI5LDggQEAgYm9vbCBpc0ludDUyKGRvdWJsZSk7CiBl
bnVtIGNsYXNzIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA6IHVpbnQ4X3QgewogICAgIE90aGVy
LAogICAgIEludGVnZXIsCi0gICAgRG91YmxlCisgICAgRG91YmxlLAorICAgIExpbmtUaW1lQ29u
c3RhbnQsCiB9OwogCiBjbGFzcyBKU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjNjViMGIzNzBkMDI1NzVlMDBiMWY1
MDQ5MDk5MTA3ZTc3MGU3MjhkLi4xNmQ0ODI4ZThkZWJiMzA5M2JjMzMyNWM1ODk4NmI0NmMwNjBh
ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC01MjIsOCArNTIyLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgSlNGdW5j
dGlvbiogaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKHZtLCB0aGlzLCAmY2FsbEZ1bmN0aW9u
LCAmYXBwbHlGdW5jdGlvbiwgJmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwotICAgIG1fY2Fs
bEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKLSAgICBtX2FwcGx5RnVuY3Rp
b24uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKICAgICBtX2FycmF5UHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVu
Y3Rpb24+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5z
dHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKQEAgLTcyMyw3
ICs3MjEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2dlbmVy
YXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
LnNldCh2bSwgdGhpcywgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
QXN5bmNHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9hc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogCi0gICAgbV9wcm9taXNlUHJvdG9UaGVuRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5
cGVUaGVuQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0
UHJvbWlzZVRoZW4gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVu
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbildLnNl
dCh2bSwgdGhpcywgZGVmYXVsdFByb21pc2VUaGVuKTsKIAogI2RlZmluZSBDUkVBVEVfUFJPVE9U
WVBFX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBp
bnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIGlmIChmZWF0
dXJlRmxhZykgeyBcCiAgICAgICAgIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIGNhcGl0YWxO
YW1lIyNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV8gIyMgcHJvdG90eXBl
QmFzZSAjIyBQcm90b3R5cGUuZ2V0KCkpKSk7IFwKQEAgLTc0OSwxOSArNzQ4LDE5IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIC8vIENvbnN0cnVjdG9ycwogCiAgICAg
T2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KTsKLSAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0
b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6Ok9iamVjdCldLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwog
CiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik7Ci0g
ICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbildLnNldCh2bSwgdGhpcywg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKiBmdW5j
dGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBtX2Z1bmN0aW9uQ29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogICAgIEFycmF5
Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2ll
c0dldHRlclNldHRlci5nZXQoKSk7Ci0gICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QXJyYXkpXS5zZXQodm0sIHRoaXMsIGFycmF5
Q29uc3RydWN0b3IpOwogICAgIAogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1
Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJlZ0V4cENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3Jl
Z0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKLSAgICBt
X3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1fcmVn
RXhwR2xvYmFsRGF0YS5jYWNoZWRSZXN1bHQoKS5yZWNvcmQodm0sIHRoaXMsIG51bGxwdHIsIGpz
RW1wdHlTdHJpbmcodm0pLCBNYXRjaFJlc3VsdCgwLCAwKSk7CiAgICAgCiAjaWYgRU5BQkxFKFNI
QVJFRF9BUlJBWV9CVUZGRVIpCkBAIC03ODEsOCArNzgwLDggQEAgY2FwaXRhbE5hbWUgIyMgQ29u
c3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRh
bE5hbWUKICAgICAKICN1bmRlZiBDUkVBVEVfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFCiAK
LSAgICBtX3Byb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rv
cik7Ci0gICAgbV9pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBw
cm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwgdGhp
cywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOwogICAgIAogICAgIG1fZXZhbEVycm9yU3Ry
dWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlh
bGl6ZXImIGluaXQpIHsKQEAgLTg0Miw5ICs4NDEsNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1
Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFt
ZQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5B
cnJheSwgYXJyYXlDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5SZWdFeHAsIHJlZ0V4cENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuT2Jq
ZWN0UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0
cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0KICNpZiBFTkFCTEUo
U0hBUkVEX0FSUkFZX0JVRkZFUikKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+U2hhcmVkQXJyYXlCdWZmZXIsIHNoYXJlZEFycmF5QnVmZmVyQ29u
c3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIkF0b21pY3MiKSwgYXRvbWljc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtOTE3LDE4MCArOTEzLDIyNiBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIGlmIChPcHRpb25zOjpleHBvc2VJbnRlcm5h
bE1vZHVsZUxvYWRlcigpKQogICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+TG9hZGVyLCBtb2R1bGVMb2FkZXIoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiog
YnVpbHRpbkxvZyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7Ci0g
ICAgSlNGdW5jdGlvbiogYnVpbHRpbkRlc2NyaWJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2Jh
bEZ1bmNCdWlsdGluRGVzY3JpYmUpOwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUcnVu
YyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1
bmNUcnVuYywgVHJ1bmNJbnRyaW5zaWMpOwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSk7Ci0gICAgSlNGdW5jdGlvbiog
cHJpdmF0ZUZ1bmNPd25LZXlzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY093bktleXMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW1w
b3J0TW9kdWxlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xv
YmFsRnVuY0ltcG9ydE1vZHVsZSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYWtlVHlw
ZUVycm9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFs
RnVuY01ha2VUeXBlRXJyb3IpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJh
eUxlbmd0aCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
VHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxD
b25zdHJ1Y3Rvcik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNTb3J0KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzVHlwZWRBcnJh
eVZpZXcgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJp
bnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVh
dGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5
Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVG
dW5jSXNCb3VuZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgaXNCb3VuZEZ1bmN0aW9uKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0hhc0lu
c3RhbmNlQm91bmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0
ZUZ1bmNJbnN0YW5jZU9mID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgb2JqZWN0UHJpdmF0ZUZ1bmNJbnN0YW5jZU9mKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY1RoaXNUaW1lVmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmlu
ZygpLCBkYXRlUHJvdG9GdW5jR2V0VGltZSk7Ci0jaWYgRU5BQkxFKElOVEwpCi0gICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNEYXRlVGltZUZvcm1hdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk7Ci0jZW5kaWYKLSAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQXJyYXlTbG93ID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJh
eVNsb3cpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5ID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5j
Q29uY2F0TWVtY3B5KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2
YXRlRnVuY0FwcGVuZE1lbWNweSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNr
ZXRIZWFkID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJp
dmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpOwotICAgIEpT
RnVuY3Rpb24qIHByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBC
dWNrZXROZXh0SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tl
dEtleSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZh
dGVGdW5jTWFwQnVja2V0S2V5LCBKU01hcEJ1Y2tldEtleUludHJpbnNpYyk7Ci0gICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIEpTTWFwQnVj
a2V0VmFsdWVJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0
SGVhZCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZh
dGVGdW5jU2V0QnVja2V0SGVhZCwgSlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKTsKLSAgICBKU0Z1
bmN0aW9uKiBwcml2YXRlRnVuY1NldEJ1Y2tldE5leHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVj
a2V0TmV4dEludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNTZXRCdWNrZXRL
ZXkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRl
RnVuY1NldEJ1Y2tldEtleSwgSlNTZXRCdWNrZXRLZXlJbnRyaW5zaWMpOwotCiAgICAgR2V0dGVy
U2V0dGVyKiByZWdFeHBQcm90b0ZsYWdzR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3Jl
Z0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOwogICAgIGNhdGNo
U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0ZsYWdzR2V0dGVy
KV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0
ZXIqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4
cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+Z2xvYmFsKTsKICAgICBjYXRjaFNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5z
ZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90
b0dsb2JhbEdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpOwog
ICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyID0gZ2V0R2V0dGVy
QnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+aWdu
b3JlQ2FzZSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cFByb3RvSWdub3JlQ2FzZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9JZ25v
cmVDYXNlR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0
dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJv
cGVydHlOYW1lcy0+bXVsdGlsaW5lKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6cmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJl
Z0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3Rv
U291cmNlR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSwgdm0ucHJvcGVydHlOYW1lcy0+c291cmNlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIpXS5zZXQodm0sIHRoaXMs
IHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3Rv
U3RpY2t5R2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSwgdm0ucHJvcGVydHlOYW1lcy0+c3RpY2t5KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpXS5zZXQodm0sIHRoaXMs
IHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3Rv
VW5pY29kZUdldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0
KCksIHZtLnByb3BlcnR5TmFtZXMtPnVuaWNvZGUpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKLSAgICBtX3JlZ0V4cFByb3RvVW5pY29kZUdldHRlci5zZXQodm0sIHRoaXMs
IHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcik7Ci0gICAgSlNPYmplY3QqIGJ1aWx0aW5SZWdFeHBF
eGVjID0gYXNPYmplY3QobV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZXhlYykuYXNDZWxsKCkpOwotICAgIG1fcmVnRXhwUHJvdG9FeGVjLnNldCh2bSwg
dGhpcywgYnVpbHRpblJlZ0V4cEV4ZWMpOwotICAgIEpTT2JqZWN0KiByZWdFeHBTeW1ib2xSZXBs
YWNlID0gYXNPYmplY3QobV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cmVwbGFjZVN5bWJvbCkuYXNDZWxsKCkpOworICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKKyAg
ICBKU0Z1bmN0aW9uKiByZWdFeHBTeW1ib2xSZXBsYWNlID0ganNDYXN0PEpTRnVuY3Rpb24qPiht
X3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNl
U3ltYm9sKSk7CiAgICAgbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2Uuc2V0KHZtLCB0aGlzLCBy
ZWdFeHBTeW1ib2xSZXBsYWNlKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYyldLnNldCh2bSwg
dGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjKSkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvdHlwZVN5bWJv
bFJlcGxhY2UpXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0NlbGwqPihtX3JlZ0V4cFByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSkpOworCisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6U2V0KV0uc2V0KHZtLCB0aGlzLCBzZXRDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNBcnJh
eSldLnNldCh2bSwgdGhpcywganNDYXN0PEpTQ2VsbCo+KGFycmF5Q29uc3RydWN0b3ItPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSkpKTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rp
b24pXS5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlvbik7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbild
LnNldCh2bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CisKKyNkZWZpbmUgSU5JVF9QUklWQVRFX0dM
T0JBTCh2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgXAorICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmNOYW1lKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7IFwKKyAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKTsgXAorICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgZ2xvYmFsT2JqZWN0KSk7IFwK
KyAgICAgICAgfSk7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dM
T0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCisjdW5kZWYgSU5JVF9QUklWQVRFX0dMT0JB
TAogCi0jZGVmaW5lIENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTih2YXJOYW1lLCBmdW5j
TmFtZSwgY29kZSkgSlNGdW5jdGlvbiogdmFyTmFtZSAjIyBQcml2YXRlRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOwotICAg
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShDUkVBVEVf
UFJJVkFURV9HTE9CQUxfRlVOQ1RJT04pCi0jdW5kZWYgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZV
TkNUSU9OCi0KKyAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZW0gbGF6aWx5LgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3OTUKICAgICBKU09i
amVjdCogYXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgdGhpcywgQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgYXJyYXlJdGVyYXRvckNv
bnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0
Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpBcnJheUl0ZXJhdG9yKSktPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yUHJv
dG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUg
PSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXN5bmNG
cm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBhc3luY0Zyb21TeW5jSXRlcmF0b3JDb25zdHJ1
Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2Jq
ZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpBc3luY0Zyb21TeW5jSXRl
cmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFzeW5j
RnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogbWFwSXRlcmF0b3JQ
cm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBNYXBJdGVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90
eXBlLmdldCgpKSk7Ci0gICAgbWFwSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1hcEl0ZXJhdG9yUHJv
dG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6Ok1hcEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogcmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgPSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6
Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgcmVnRXhw
U3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
KTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6OlJlZ0V4cFN0cmluZ0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCByZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09i
amVjdCogc2V0SXRlcmF0b3JQcm90b3R5cGUgPSBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgc2V0SXRlcmF0b3JDb25zdHJ1Y3Rv
clByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHNldEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGlt
ZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVyYXRvclByb3RvdHlwZSk7CiAKLSAg
ICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBuZXdQcm9taXNl
Q2FwYWJpbGl0eVByaXZhdGVGdW5jdGlvbik7Ci0gICAgbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9u
LnNldCh2bSwgdGhpcywgcmVzb2x2ZVByb21pc2VQcml2YXRlRnVuY3Rpb24pOwotICAgIG1fcmVq
ZWN0UHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVqZWN0UHJvbWlzZVByaXZhdGVGdW5j
dGlvbik7CisgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRIZWFk
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1
Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjptYXBCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQ
cml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIEpTTWFwQnVja2V0TmV4dEludHJpbnNpYykpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRLZXkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBKU01hcEJ1Y2tldEtleUludHJp
bnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRWYWx1ZSldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSwgSlNN
YXBCdWNrZXRWYWx1ZUludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXRI
ZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1Nl
dEJ1Y2tldEhlYWQsIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpzZXRCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBz
ZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVja2V0TmV4dEludHJpbnNpYykpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXRLZXkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBKU1NldEJ1Y2tldEtleUlu
dHJpbnNpYykpOworICAgICAgICB9KTsKKworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydE1vZHVsZSldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZSkpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZSldLmluaXRMYXRlcihbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6Om93bktleXMpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5n
KCksIGdsb2JhbEZ1bmNPd25LZXlzKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmVucXVldWVKb2Ip
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6bWFrZVR5cGVFcnJvcildLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpKTsKKyAgICAgICAgfSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6dHlwZWRBcnJheUxlbmd0aCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCkpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
Ojp0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcildLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3Ry
dWN0b3IpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheVNvcnQpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzVHlwZWRBcnJheVZpZXcpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlW
aWV3LCBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5
cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKSk7CisgICAgICAgIH0p
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmlzQm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJp
bmcoKSwgaXNCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaGFzSW5z
dGFuY2VCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omluc3RhbmNlT2YpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG9iamVjdFByaXZhdGVGdW5jSW5zdGFu
Y2VPZikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluTG9nKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZykpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpCdWlsdGluRGVzY3JpYmUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5n
KCksIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dHJ1
bmMpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNUcnVu
YywgVHJ1bmNJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVwZWF0Q2hhcmFjdGVy
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNSZXBl
YXRDaGFyYWN0ZXIpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXJyYXlTcGVjaWVzQ3JlYXRlKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBhcnJheVByb3RvRnVuY1NwZWNpZXND
cmVhdGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNBcnJheVNsb3cpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlT
bG93KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNvbmNhdE1lbWNweSldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGVuZE1lbWNweSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6Omhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcildLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdDo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojp0aGlzVGltZVZhbHVlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBk
YXRlUHJvdG9GdW5jR2V0VGltZSwgRGF0ZVByb3RvdHlwZUdldFRpbWVJbnRyaW5zaWMpKTsKKyAg
ICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6aXNDb25zdHJ1Y3RvcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAx
LCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKKyAgICAgICAg
fSk7CisKKyAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwQ3Jl
YXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVh
dGUsIE5vSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzUmVnRXhwKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMp
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwTWF0Y2hGYXN0KV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QsIFJlZ0V4cE1hdGNo
RmFzdEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBTZWFyY2hGYXN0KV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTZWFyY2hG
YXN0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNwbGl0RmFzdCldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFRlc3RGYXN0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEs
IFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVnRXhwVGVzdEZhc3RJbnRyaW5z
aWMpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBTdHJpbmcucHJvdG90eXBlIGhlbHBlcnMuCisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6c3RyaW5nSW5jbHVkZXNJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBT
dHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpKTsKKyAgICAgICAgfSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6c3RyaW5nU3BsaXRGYXN0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygp
LCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6c3RyaW5n
U3Vic3RySW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGJ1aWx0
aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCkpOworICAgICAgICB9KTsKKworICAgIC8vIEZ1bmN0aW9u
IHByb3RvdHlwZSBoZWxwZXJzLgorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDUsIFN0cmluZygpLCBtYWtlQm91bmRGdW5jdGlvbikpOworICAgICAgICB9
KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpoYXNPd25MZW5ndGhQcm9wZXJ0eSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAx
LCBTdHJpbmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpKTsKKyAgICAgICAgfSk7CiAKLSAgICBH
bG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewotI2RlZmluZSBJTklUX1BSSVZB
VEVfR0xPQkFMKHZhck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY05hbWUgIyMgUHJpdmF0ZU5hbWUoKSwg
dmFyTmFtZSAjIyBQcml2YXRlRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JB
TF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCi0jdW5kZWYgSU5JVF9QUklWQVRFX0dMT0JBTAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5k
ZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNPd25LZXlzLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5tYWtlVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNN
YWtlVHlwZUVycm9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBl
ZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5R2V0T3JpZ2lu
YWxDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheUdldE9yaWdp
bmFsQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5
cGVkQXJyYXlTb3J0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNUeXBlZEFycmF5Vmlld1ByaXZh
dGVOYW1lKCksIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldywgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlUHJpdmF0ZU5hbWUo
KSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIHByaXZh
dGVGdW5jSXNCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5oYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0hh
c0luc3RhbmNlQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaW5zdGFuY2VPZlByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSW5zdGFuY2VPZiwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQnVpbHRpbkxvZ1ByaXZhdGVOYW1l
KCksIGJ1aWx0aW5Mb2csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkJ1
aWx0aW5EZXNjcmliZVByaXZhdGVOYW1lKCksIGJ1aWx0aW5EZXNjcmliZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUmVnRXhwUHJpdmF0ZU5hbWUoKSwgcmVnRXhwQ29u
c3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRydW5jUHJp
dmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUcnVuYywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCksIHByb21pc2VDb25zdHJ1Y3RvciwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW50ZXJuYWxQcm9taXNlUHJpdmF0
ZU5hbWUoKSwgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmF1bHRQcm9taXNlVGhlblByaXZhdGVOYW1lKCksIHByb21p
c2VQcm90b1RoZW5GdW5jdGlvbigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlcGVhdENoYXJhY3RlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlciksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFycmF5U3BlY2llc0NyZWF0ZVBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGFy
cmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmlzQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pc0FycmF5U2xvd1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNB
cnJheVNsb3csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNvbmNhdE1l
bWNweVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBlbmRNZW1jcHlQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0FwcGVuZE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5ob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWpl
Y3Rpb25UcmFja2VyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRlTmFtZSgpLCBz
ZXRDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhp
c1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmIEVOQUJMRShJTlRMKQotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGF0ZVRp
bWVGb3JtYXRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0RhdGVUaW1lRm9ybWF0LCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZGF0ZVRpbWVGb3JtYXQpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCkp
OworICAgICAgICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKLQotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNDb25zdHJ1Y3Rv
clByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCks
IGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0ZsYWdzR2V0dGVyUHJpdmF0ZU5hbWUoKSwg
cmVnRXhwUHJvdG9GbGFnc0dldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b0ds
b2JhbEdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
UHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9JZ25vcmVDYXNl
R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90
b011bHRpbGluZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVy
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1NvdXJj
ZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1N0aWNreUdldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJQcml2YXRlTmFtZSgpLCBy
ZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLQotICAgICAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBCdWls
dGluRXhlY1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5SZWdFeHBFeGVjLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBDcmVhdGVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVhdGUsIE5v
SW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNSZWdF
eHBQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygp
LCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5yZWdFeHBNYXRjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QsIFJl
Z0V4cE1hdGNoRmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlZ0V4cFNlYXJjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTZWFyY2hGYXN0KSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU3BsaXRGYXN0UHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJv
dG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZVByaXZhdGVOYW1lKCksIG1fcmVnRXhwUHJvdG90
eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBUZXN0RmFzdFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFBy
b3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0RmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBTdHJpbmcucHJvdG90eXBlIGhlbHBl
cnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5zdHJpbmdJbmNsdWRlc0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJu
YWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdTcGxpdEZh
c3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygp
LCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5zdHJpbmdTdWJzdHJJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5h
bCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBGdW5j
dGlvbiBwcm90b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA1LCBTdHJpbmcoKSwgbWFrZUJvdW5kRnVu
Y3Rpb24pLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNPd25MZW5n
dGhQcm9wZXJ0eVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwg
U3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNr
ZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5tYXBCdWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEtl
eSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0VmFsdWVQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0
ZUZ1bmNTZXRCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5zZXRCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRLZXlQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZ
X1NUUkVBTUlOR19BUEkpCi0gICAgICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlDb21waWxlU3Ry
ZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS53
ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUluc3RhbnRp
YXRlU3RyZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
CisgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQorICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5Q29t
cGlsZVN0cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygp
LCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojp3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJ
bnRlcm5hbCkpOworICAgICAgICB9KTsKICNlbmRpZgorCisgICAgR2xvYmFsUHJvcGVydHlJbmZv
IHN0YXRpY0dsb2JhbHNbXSA9IHsKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHks
IGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5h
c3NlcnRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmlu
ZygpLCBhc3NlcnRDYWxsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2Vu
ZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJB
WV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIAotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1Nw
ZWNpYWw6OkNhbGxGdW5jdGlvbl0gPSBtX2NhbGxGdW5jdGlvbi5nZXQoKTsKLSAgICBtX3NwZWNp
YWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlGdW5jdGlvbi5nZXQo
KTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rvcl0gPSBv
YmplY3RDb25zdHJ1Y3RvcjsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcnJheUNv
bnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0KLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1
bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7Ci0KICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpCiAgICAgICAgIGV4cG9zZURvbGxhclZNKHZt
KTsKIApAQCAtMTY5MiwxMiArMTczNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0
LT5tX3N5bnRheEVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fdHlwZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
VVJJRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9hcnJheUNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2Z1bmN0aW9uQ29uc3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogI2lmIEVOQUJMRShJTlRMKQogICAgIHRoaXNP
YmplY3QtPm1fZGVmYXVsdENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwpAQCAtMTcxMSwyMiArMTc0
OCwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rp
b24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24u
dmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsRnVu
Y3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7
Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9u
KTsKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZp
c2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNp
dG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25ld1Byb21pc2VDYXBhYmls
aXR5RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVzb2x2ZVBy
b21pc2VGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWplY3RQ
cm9taXNlRnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29i
amVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAg
dGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFj
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3Vt
ZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1
bGVMb2FkZXIudmlzaXQodmlzaXRvcik7CiAKQEAgLTE3OTQsNiArMTgyNSw5IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3Byb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOworCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHRoaXNPYmplY3QtPm1fbGlu
a1RpbWVDb25zdGFudHMpCisgICAgICAgIHByb3BlcnR5LnZpc2l0KHZpc2l0b3IpOwogICAgIAog
I2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggODkyNmFhYWRmZDY4ZDFhZjEy
OTI4MDRlMmQwMzQyMmQ3ZmY0NGY2NS4uZDVjNTg4NzkwZDVmNTk5ZWM1M2M3MWY0Y2M2ZDhjMmZm
YmI4ZTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNsdWRlICJKU1dlYWtPYmplY3RNYXBSZWZJ
bnRlcm5hbC5oIgogI2luY2x1ZGUgIkxhenlQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkxhenlDbGFz
c1N0cnVjdHVyZS5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRlICJO
dW1iZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJl
Z0V4cEdsb2JhbERhdGEuaCIKICNpbmNsdWRlICJSdW50aW1lRmxhZ3MuaCIKLSNpbmNsdWRlICJT
cGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlN5bWJvbFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC0yNzcsMTIgKzI3Nyw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3R5cGVFcnJvclN0cnVjdHVyZTsKICAgICBMYXp5
Q2xhc3NTdHJ1Y3R1cmUgbV9VUklFcnJvclN0cnVjdHVyZTsKIAotICAgIFdyaXRlQmFycmllcjxP
YmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKLSAgICBXcml0ZUJhcnJpZXI8
QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOwotICAgIFdyaXRlQmFycmllcjxS
ZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwotICAgIFdyaXRlQmFy
cmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+IG1faW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I7CiAKICNpZiBFTkFCTEUoSU5UTCkKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CkBAIC0yOTcsMjYgKzI5
MiwxNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
cGFyc2VJbnRGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVu
Y3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9uOwogCi0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fY2FsbEZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5
RnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1f
YXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29s
RnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X3Byb21pc2VSZXNvbHZlRnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBtX3JlamVjdFByb21pc2VGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9y
R2V0dGVyU2V0dGVyOwotICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9yZWdFeHBQcm90b0V4
ZWM7CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFj
ZTsKLSAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0
dGVyOwotICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fcmVnRXhwUHJvdG9Vbmljb2Rl
R2V0dGVyOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXI7CiAKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTTW9kdWxlTG9hZGVyPiBtX21vZHVsZUxvYWRlcjsKQEAgLTQzMCw4
ICs0MTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFKERFQ0xBUkVfVFlQRURf
QVJSQVlfVFlQRV9TVFJVQ1RVUkUpCiAjdW5kZWYgREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NU
UlVDVFVSRQogCi0gICAgSlNDZWxsKiBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNp
emVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCi0gICAg
SlNDZWxsKiBtX2xpbmtUaW1lQ29uc3RhbnRzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CisgICAg
c3RkOjphcnJheTxMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTQ2VsbD4sIG51bWJlck9m
TGlua1RpbWVDb25zdGFudHM+IG1fbGlua1RpbWVDb25zdGFudHMgeyB9OwogCiAgICAgU3RyaW5n
IG1fbmFtZTsKIApAQCAtNTk4LDEyICs1ODIsMTIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIHNw
ZWNpZXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIu
Z2V0KCk7IH0KIAotICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2FycmF5Q29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICBSZWdFeHBDb25zdHJ1
Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVj
dG9yLmdldCgpOyB9Ci0gICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIEFycmF5Q29u
c3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
QXJyYXlDb25zdHJ1Y3Rvcio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6QXJy
YXkpKTsgfQorICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6UmVnRXhwKSk7IH0KKyAgICBPYmplY3RDb25zdHJ1Y3Rvciog
b2JqZWN0Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8T2JqZWN0Q29u
c3RydWN0b3IqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Ok9iamVjdCkpOyB9
CiAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogZnVuY3Rpb25Db25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgIEpTUHJvbWlzZUNvbnN0
cnVjdG9yKiBwcm9taXNlQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VDb25z
dHJ1Y3Rvci5nZXQoKTsgfQotICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIGludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBwcm9taXNlQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNQcm9taXNlQ29uc3RydWN0
b3IqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpKTsgfQorICAg
IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkludGVybmFsUHJvbWlzZSkp
OyB9CiAKICNpZiBFTkFCTEUoSU5UTCkKICAgICBJbnRsQ29sbGF0b3IqIGRlZmF1bHRDb2xsYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdENvbGxhdG9yLmdldCh0aGlzKTsgfQpAQCAtNjE2
LDI0ICs2MDAsMjIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogcGFyc2VGbG9hdEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZUZsb2F0RnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAKICAgICBKU0Z1
bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQo
dGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2NhbGxGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd1R5cGVFcnJvckZ1
bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFu
dChMaW5rVGltZUNvbnN0YW50Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSk7IH0KICAgICBKU0Z1
bmN0aW9uKiBhcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJy
YXlQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJy
YXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9Ci0gICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5nZXQoKTsgfQorICAg
IEpTRnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudDo6bmV3UHJvbWlzZUNhcGFiaWxpdHkpKTsgfQogICAgIEpTRnVuY3Rpb24qIHByb21pc2VS
ZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24u
Z2V0KHRoaXMpOyB9Ci0gICAgSlNGdW5jdGlvbiogcmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVu
Y3Rpb24qIHJlamVjdFByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVqZWN0UHJv
bWlzZUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogcHJvbWlzZVByb3RvVGhlbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24uZ2V0KCk7
IH0KKyAgICBKU0Z1bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6OnJlc29sdmVQcm9taXNlKSk7IH0KKyAgICBKU0Z1bmN0aW9uKiByZWplY3RQcm9taXNl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZSkpOyB9CisgICAgSlNG
dW5jdGlvbiogcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmRl
ZmF1bHRQcm9taXNlVGhlbikpOyB9CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uZ2V0KCk7
IH0KLSAgICBKU09iamVjdCogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3JlZ0V4cFByb3RvRXhlYy5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3Rv
RXhlY0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihs
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cEJ1aWx0aW5FeGVjKSk7IH0K
ICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQotICAgIEdldHRlclNl
dHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFBy
b3RvR2xvYmFsR2V0dGVyLmdldCgpOyB9Ci0gICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1Vu
aWNvZGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvVW5pY29kZUdldHRlci5n
ZXQoKTsgfQorICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcikpOyB9CisgICAgR2V0dGVy
U2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojpy
ZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpKTsgfQogICAgIEdldHRlclNldHRlciogdGhyb3dUeXBl
RXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJT
ZXR0ZXIuZ2V0KCk7CkBAIC05MTEsMTYgKzg5Myw5IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4gbGF6eVR5
cGVkQXJyYXlTdHJ1Y3R1cmUodHlwZSkuY29uc3RydWN0b3IodGhpcyk7CiAgICAgfQogCi0gICAg
SlNDZWxsKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKKyAgICBK
U0NlbGwqIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB2YWx1ZSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKLSAgICAg
ICAgcmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwotICAgIH0KLSAgICBKU0NlbGwq
IGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsK
LSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0g
ICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJl
dHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICAgICAgcmV0dXJuIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKV0uZ2V0KHRoaXMpOwogICAg
IH0KIAogICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
KCkgeyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDg2ZWJjOTM3ZjJmNTg1MjA5YTQ2NTE1ODNmYTBmNzRmNmNlMzk5YTYuLjM5ZmYyOTY1
NjI2YzE5N2YzNGM1NzdjMTU1NjUyNmI3OTE4YzA5MjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxOS0xMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0YW50IG1lY2hhbmlzbQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNzkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
dGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0
ZWQudHh0OgorCiAyMDE5LTExLTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIF0gaW5zcGVjdG9yL2RvbS9nZXRBY2Nl
c3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUuaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRl
bGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlz
LXZhbHVlLWV4cGVjdGVkLnR4dAppbmRleCBlODJhNzk5NzZkYzZmM2ZmY2Y4YTVlZTgzN2M4N2Fl
MjgxMWEyYTg5Li4yMTI1ZmI1Mjk3MWNlY2VhYjdjMDgwMzRmMmQ1MzZjN2EyYTRiNGU4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1l
cy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRl
ZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQKQEAgLTE0LDYgKzE0LDYgQEAgQ0FMTCBT
VEFDSzoKIDM6IFtGXSBzdGFydEFCQwogICB0aGlzOiB1bmRlZmluZWQKIDQ6IFtQXSBHbG9iYWwg
Q29kZQotICB0aGlzOiB0ZXN0IC0gCisgIHRoaXM6IGMgLSAKIFJFU1VNRUQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382699</attachid>
            <date>2019-11-03 00:58:17 -0700</date>
            <delta_ts>2019-11-03 01:00:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103005816.patch</filename>
            <type>text/plain</type>
            <size>139202</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi5lYTRiOGE0ZGZlNDk2NDVk
MmU4NWRjNjMyODI0OGNkYTdjNmI5ZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTcgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
TmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAg
ICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rv
ci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9taXNlLnJl
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFsUHJvbWlz
ZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ29u
c3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVu
dHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmguCisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cmVn
aXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJl
c29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlD
b25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBD
b25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RD
b25zdHJ1Y3RvciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNl
Q29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjpuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc29sdmVQcm9taXNlRnVuY3Rpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVqZWN0UHJvbWlzZUZ1bmN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b1RoZW5GdW5jdGlvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0V4ZWNGdW5jdGlv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0dsb2Jh
bEdldHRlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90
b1VuaWNvZGVHZXR0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlu
a1RpbWVDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxs
RnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
YXBwbHlGdW5jdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphY3R1YWxQb2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9C
dWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6
CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25z
dHJ1Y3Rvci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9t
aXNlLnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFs
UHJvbWlzZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQ29uc3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnk6Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpF
bnRyeTo6RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpF
bnRyeTo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk6OkVudHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvZGUv
Rml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmguCisg
ICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SW1wb3J0Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6YXN5
bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5k
VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAg
ICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxs
Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgor
ICAgICAgICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2Rl
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFs
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1RpbWVD
b25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsRnVuY3Rp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXBwbHlG
dW5jdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9t
aXNlRnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFBy
b3RvVW5pY29kZUdldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjphY3R1YWxQb2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rpb24gY29uc3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1
bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3Rv
R2xvYmFsR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4
cFByb3RvVW5pY29kZUdldHRlciBjb25zdCk6CisKIDIwMTktMTEtMDIgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvcjI1MTg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYyNWZm
NjFkYjk5MGFkN2Y2ODhhYThlYzE2ZjFkZjlkOGI2ZWM3NjIuLmZlNzBhMzUyMmQ2ZTNmYWM2OTAx
NmZkNjhmYjA1Mzk5NjczZTE0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTUyMiw2ICs1MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKICAgICBieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAogICAgIGJ5dGVj
b2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKKyAgICBieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKICAgICBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKICAgICBieXRlY29kZS9PYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24u
aApAQCAtNTI5LDcgKzUzMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCiAgICAgYnl0ZWNvZGUvUHJvcGVy
dHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUv
U3BlY2lhbFBvaW50ZXIuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFiODQ2OWEyYWIxYzU4ZjI4ZjExNzIxYjQ1YjRiM2Zj
MmM5MDAyODUuLjA0M2M4NjQ5MDFkNWQ0NTFlMGVkMWM1ODk2YzA2Njk2ZDEzZWRmYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNjIsNyArMzYyLDYgQEAKIAkJMEY0RjgyOEMx
RTMxQjk3NjAwNzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRGODI4QTFF
MzFCOTcxMDA3NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCAq
LzsgfTsKIAkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
MEFGM0IxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovOyB9
OwogCQkwRjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTUxM0E1MUQ1QTY4MkEwMEMzMkJE
OCAvKiBGcmVlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTQxQjAxNjEz
QzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRv
TmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjU1OTg5NzE3Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBG
NTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3Ry
YWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjU2QTFEMzE1MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NkExRDExNTAwMEYzMTAw
Mjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTgxMiw2ICsxODExLDcgQEAKIAkJRTM1Q0ExNTQxREJD
M0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJ
VEhlYXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURC
QzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtU
aW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2Qjc2NzAyMkY4
RDYxOTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAv
KiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUx
RkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9u
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI1ODUsOCArMjU4NSw2IEBACiAJCTBGNTBBRjNCMTkzRThCMzkw
MDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZH
U3RydWN0dXJlQ2xvYmJlclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NTUxM0E1MUQ1QTY4MkEwMEMzMkJEOCAvKiBGcmVlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGcmVlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjU1MTNBNzFENUE2OENCMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnJlZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyog
U3BlY2lhbFBvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY2lh
bFBvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTk4OTcxN0M4NkM1
NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRvTmF0aXZl
RnJvbVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVDMTkzMTcyNzZF
NDYwMENFQUJGRCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0VmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEw
NjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ5MzUsNiArNDkzMyw4IEBACiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVD
b25zdGFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rVGlt
ZUNvbnN0YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkUyMkY4
RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlv
bk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIzNyw2ICs4MjM3LDggQEAKIAkJ
CQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2
NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJ
CQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAq
LywKKwkJCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5jcHAg
Ki8sCisJCQkJRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAq
LywKIAkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAq
LywKIAkJCQk1M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQk1M0ZBMkFFMDFDRjM3RjNGMDAy
MjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmgg
Ki8sCkBAIC04Mjg0LDggKzgyODYsNiBAQAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5IC8q
IFJlZHVjZVdoaXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAv
KiBSZWR1Y2VXaGl0ZXNwYWNlLmggKi8sCi0JCQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8q
IFNwZWNpYWxQb2ludGVyLmNwcCAqLywKLQkJCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyog
U3BlY2lhbFBvaW50ZXIuaCAqLywKIAkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3Bl
Y3VsYXRlZFR5cGUuY3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVj
dWxhdGVkVHlwZS5oICovLAogCQkJCTBGQjQzOEEyMTkyNzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1
cmVTZXQuY3BwICovLApAQCAtOTQ0OCw2ICs5NDQ4LDcgQEAKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1
MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkFGMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xv
Z2dpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyMjkyN0Q1MjM1RkQwQjkwMDVDQjE2OSAvKiBH
Q01lbW9yeU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTcxNTMxMUVCMjhCRUUw
MEExNjQ1RCAvKiBHQ1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NEU4RUIwMThCRkZC
QkIwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRF
OEVCMTE4QkZGQkJFMDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTg0Myw2ICs5ODQ0LDcgQEAKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0
NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2
MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4
NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzYzN0VFOTIzNkU1NkIw
MDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVB
NkIwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcwREU5QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBp
biBIZWFkZXJzICovLApAQCAtMTAwOTYsNyArMTAwOTgsNiBAQAogCQkJCTBGREU4N0ZDMURGRTZF
NTEwMDY0QzM5MCAvKiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVk
VGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAw
MTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg1RjZCQzE4
QzU1M0ZFMDBGMTA2MjYgLyogU3BpbGxSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjNBQzc1MjE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGlnbm1lbnQuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGM5MDhhZmI1MGUwNWMxOGNlNmRl
MWIxZDdjZDY1ZDZjNTg4ZGUzMjguLjUxOTIxZDcxODYwOWJhMWU3YjQ4MTQxMDYzNDdhZWQyMmU4
NjA4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI0NCw2ICsyNDQsNyBAQCBi
eXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSnVtcFRhYmxl
LmNwcAogYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmNwcAogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCitieXRlY29kZS9M
aW5rVGltZUNvbnN0YW50LmNwcAogYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKIGJ5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCiBieXRlY29kZS9Nb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlLmNwcApAQCAtMjYzLDcgKzI2NCw2IEBAIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAotYnl0ZWNvZGUvU3BlY2lh
bFBvaW50ZXIuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKIGJ5dGVjb2RlL1N0cnVj
dHVyZVNldC5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXgg
ZGQzM2NhODAzNmEzMGJmNjRlMDhhMGEzODdlZTFiNWI3MTFhNzhmMS4uZDQzZTQ4ZjBiYTMxZWJk
Y2Y4YmVkMThiNmU5YWIwYjhkYmY1NjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1h
Y3JvKSBcCiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hf
TkFNRShtYWNybykgXAogICAgIG1hY3JvKGFkZCkgXAorICAgIG1hY3JvKGFwcGx5RnVuY3Rpb24p
IFwKICAgICBtYWNybyhhcnJheUl0ZXJhdG9yTmV4dEluZGV4KSBcCiAgICAgbWFjcm8oYXJyYXlJ
dGVyYXRpb25LaW5kKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHQpIFwKQEAgLTUyLDYg
KzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvcktpbmQpIFwK
ICAgICBtYWNybyhhcnJheVNwZWNpZXNDcmVhdGUpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKKyAg
ICBtYWNybyhjYWxsRnVuY3Rpb24pIFwKICAgICBtYWNybyhjaGFyQ29kZUF0KSBcCiAgICAgbWFj
cm8oZXhlY3V0b3IpIFwKICAgICBtYWNybyhpc1ZpZXcpIFwKQEAgLTczLDYgKzc1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAogICAgIG1hY3Jv
KG93bktleXMpIFwKICAgICBtYWNybyhTZXQpIFwKKyAgICBtYWNybyh0aHJvd1R5cGVFcnJvckZ1
bmN0aW9uKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVk
QXJyYXlTb3J0KSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3Ip
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29u
c3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0
cnVjdG9yLmpzCmluZGV4IDMwZmM2NmU0Yjg5ZjJlYTBiZDY5YTdiODFkZTEzODUwZjAxY2RiNzQu
LjY2Zjk1MWZiNGZjNmQxYzY1MWUwMzA3NzBkZWQ1MTVlOTBkZWI5YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAt
MjM3LDE5ICsyMzcsMTYgQEAgZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJv
bWlzZSA9IEBjcmVhdGVQcm9taXNlKHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNl
KTsKICAgICB2YXIgY2FwdHVyZWRQcm9taXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYWxsb3cgdXNpbmcgZnVuY3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEBy
ZWplY3QgPSBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVj
dFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21p
c2UsIHJlYXNvbik7Ci0gICAgfTsKLQogICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAg
ICAgICAgICAgZnVuY3Rpb24gQHJlc29sdmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAg
IHJldHVybiBAcmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVj
ayhjYXB0dXJlZFByb21pc2UsIHJlc29sdXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdG
dW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9
KTsKICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAg
ICAgQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9t
aXNlLCBlcnJvcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0yNjYsMTkgKzI2
MywxNiBAQCBmdW5jdGlvbiBJbnRlcm5hbFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFyIHByb21p
c2UgPSBAY3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyB0cnVlKTsK
ICAgICB2YXIgY2FwdHVyZWRQcm9taXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYWxsb3cgdXNpbmcgZnVuY3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWpl
Y3QgPSBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFBy
b21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2Us
IHJlYXNvbik7Ci0gICAgfTsKLQogICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAg
ICAgICAgZnVuY3Rpb24gQHJlc29sdmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJl
dHVybiBAcmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhj
YXB0dXJlZFByb21pc2UsIHJlc29sdXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5j
dGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsK
ICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAg
QHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNl
LCBlcnJvcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBhZjgwNzY5MzMy
YzljYjUwZTIyY2MzM2RhYzc0NWEyZGJlMGZlMzA0Li44NThhYjkwNTAyZTg0ZDcwNzkxNTMyNWY2
OTNlZTNkNWQ1ODVjOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkIENvZGVCbG9ja0J5
dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENvbnN0YW50cygpCiAgICAgICAgICAgICBjYXNlIFNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXI6CiAgICAgICAgICAgICAgICAgc291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiIjsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0
YW50OgorICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9u
ID0gIjogaW4gc291cmNlIGFzIGxpbmtlLXRpbWUtY29uc3RhbnQiOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIg
ICBrJXUgPSAlcyVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRvQ1N0cmluZyhjb25z
dGFudC5nZXQoKSkuZGF0YSgpLCBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbik7
CiAgICAgICAgICAgICArK2k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggZDQxNjMzYzU1
YjYwOWNkNTdlMjQzYjJiMWE0YzQ0MDkyMTRjNWFkYS4uYmRiYjc5MmY0ZjcwNTU3OGY4ZWJhNmNj
MmUwYWNiNDNkNDczOGM4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtNDIsNyArNDIs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lO
VFJJTlNJQ19OQU1FU19UT19TRVQobmFtZSkgbV9ieXRlY29kZUludHJpbnNpY01hcC5hZGQodm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCks
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljXyMjbmFtZSk7CisjZGVmaW5l
IElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RPX1NFVChuYW1lKSBtX2J5dGVj
b2RlSW50cmluc2ljTWFwLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uYW1l
IyNQcml2YXRlTmFtZSgpLmltcGwoKSwgRW50cnkoJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfIyNuYW1lKSk7CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklO
U0lDX05BTUVTX1RPX1NFVF9GT1JfTElOS19USU1FX0NPTlNUQU5UKGEwLCBuYW1lLCBhMSkgbV9i
eXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksIEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZSk7
CiAKIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnko
Vk0mIHZtKQogICAgIDogbV92bSh2bSkKQEAgLTUwLDYgKzUxLDcgQEAgQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiB7CiAgICAgSlND
X0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShJTklUSUFMSVpF
X0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQpCiAgICAgSlNDX0NPTU1PTl9CWVRFQ09E
RV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJ
TlNJQ19OQU1FU19UT19TRVQpCisgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhJ
TklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9D
T05TVEFOVCkKIAogICAgIG1fdW5kZWZpbmVkLnNldChtX3ZtLCBqc1VuZGVmaW5lZCgpKTsKICAg
ICBtX0luZmluaXR5LnNldChtX3ZtLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCkpKTsKQEAgLTk4LDEzICsxMDAsMTMgQEAgQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9B
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b246Ok5vbmUpKSk7CiB9CiAKLUJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBj
b25zdAorT3B0aW9uYWw8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk+IEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
IHsKICAgICBpZiAoIWlkZW50LmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgYXV0byBpdGVyYXRvciA9IG1f
Ynl0ZWNvZGVJbnRyaW5zaWNNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyYXRv
ciA9PSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCBmYWViMjM4OWI4ZmQ3MGVlNWY5NDkz
NWYzOGE3NGE2MTU2Nzg2OWJmLi41NjdiMDI2YjVlMWQwNWM4MzZjMDE5YzkzN2M4NTA5NTNjODI1
ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0x
MzcsNyArMTM4LDQ0IEBAIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogCiAgICAg
dHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJUeXBl
KShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKIAotICAgIEVtaXR0ZXJUeXBlIGxv
b2t1cChjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWlu
dDhfdCB7CisgICAgICAgIEVtaXR0ZXIgPSAwLAorICAgICAgICBMaW5rVGltZUNvbnN0YW50ID0g
MSwKKyAgICB9OworCisgICAgY2xhc3MgRW50cnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgRW50
cnkoKQorICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9lbWl0dGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIEVudHJ5
KEVtaXR0ZXJUeXBlIGVtaXR0ZXIpCisgICAgICAgICAgICA6IG1fdHlwZShUeXBlOjpFbWl0dGVy
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2VtaXR0ZXIgPSBlbWl0dGVyOworICAgICAgICB9
CisKKyAgICAgICAgRW50cnkoTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KQorICAg
ICAgICAgICAgOiBtX3R5cGUoVHlwZTo6TGlua1RpbWVDb25zdGFudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9saW5rVGltZUNvbnN0YW50ID0gbGlua1RpbWVDb25zdGFudDsKKyAgICAgICAg
fQorCisgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAg
ICBMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xp
bmtUaW1lQ29uc3RhbnQ7IH0KKyAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZW1pdHRlcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5pb24geworICAg
ICAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOworICAgICAgICAgICAgTGlua1RpbWVDb25z
dGFudCBtX2xpbmtUaW1lQ29uc3RhbnQ7CisgICAgICAgIH07CisgICAgICAgIFR5cGUgbV90eXBl
OworICAgIH07CisKKyAgICBPcHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0IElkZW50aWZpZXIm
KSBjb25zdDsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RB
TlRfR0VORVJBVE9SUyhuYW1lKSBKU1ZhbHVlIG5hbWUjI1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
Jik7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFN
RShKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKQEAg
LTE0NSw3ICsxODMsNyBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogcHJp
dmF0ZToKICAgICBWTSYgbV92bTsKLSAgICBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIEVtaXR0ZXJUeXBlLCBJZGVudGlmaWVyUmVwSGFzaD4gbV9ieXRlY29kZUludHJpbnNpY01h
cDsKKyAgICBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVudHJ5LCBJZGVudGlm
aWVyUmVwSGFzaD4gbV9ieXRlY29kZUludHJpbnNpY01hcDsKIAogI2RlZmluZSBKU0NfREVDTEFS
RV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1lKSBTdHJvbmc8VW5r
bm93bj4gbV8jI25hbWU7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RB
TlRTX1NJTVBMRV9FQUNIX05BTUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNU
QU5UX0dFTkVSQVRPUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgppbmRleCBkNjUyYjY1ODg0Yzc4YjAzYmQ4MGQyZDY3ZDQ4ZjE2ODYxMGI5YTc4
Li4zNGMxNTJhMGQ2NjJmMzUyOTdkZjE0NDQ4NjRmYjRiYmEzNDBlZjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTY0LDEwICs2NCw2
IEBACiAgICAgOk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLAogXQogCi1uYW1lc3BhY2UgOlNwZWNp
YWwgZG8KLSAgICB0eXBlcyBbIDpQb2ludGVyIF0KLWVuZAotCiB0ZW1wbGF0ZXMgWwogICAgIDpX
cml0ZUJhcnJpZXIsCiAgICAgOldyaXRlQmFycmllckJhc2UsCkBAIC02NzUsNyArNjcxLDcgQEAK
IG9wIDpqbmVxX3B0ciwKICAgICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCi0gICAgICAgIHNwZWNpYWxQb2ludGVyOiBTcGVjaWFsOjpQb2ludGVyLAorICAgICAgICBz
cGVjaWFsUG9pbnRlcjogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91
bmRMYWJlbCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDVlYzI0NmM5MWQ4MmVjZTYyNGRkZGMyNmFi
YjVkNTU0MjQzZGI5ODIuLjBmOGU3ZjhiNGY5MjQ0NDczODJhNWQ4ZTg4MTM3NjA3ZDQ5YzI0YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0z
OTksMTIgKzM5OSw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgc2V0Q29uc3RhbnRS
ZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVubGlua2Vk
Q29kZUJsb2NrLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSwgdG9wTGV2ZWxF
eGVjdXRhYmxlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
IAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGkr
KykgewotICAgICAgICBMaW5rVGltZUNvbnN0YW50IHR5cGUgPSBzdGF0aWNfY2FzdDxMaW5rVGlt
ZUNvbnN0YW50PihpKTsKLSAgICAgICAgaWYgKHVuc2lnbmVkIHJlZ2lzdGVySW5kZXggPSB1bmxp
bmtlZENvZGVCbG9jay0+cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpCi0g
ICAgICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZ2lzdGVySW5kZXhdLnNldCh2bSwgdGhp
cywgbV9nbG9iYWxPYmplY3QtPmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOwotICAg
IH0KLQogICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmb3Ig
dGhlIG1vZHVsZSBlbnZpcm9ubWVudCBzaW5jZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlCiAgICAg
Ly8gdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMgYmVmb3JlIGxpbmtpbmcgdGhlIGNvZGUgYmxvY2su
IFdlIHJlcGxhY2UgdGhlIHN0b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0aGUgYWxyZWFkeSBjbG9u
ZWQgb25lLgogICAgIGlmIChVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKj4odm0sIHVubGlua2VkQ29kZUJsb2NrKSkgewpAQCAtOTA1LDI5ICs4OTks
MzYgQEAgdm9pZCBDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxX
cml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGEKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBjb25zdGFu
dHNbaV0uZ2V0KCk7Ci0KLSAgICAgICAgaWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIGlmIChjb25zdGFudC5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgIEpTQ2VsbCog
Y2VsbCA9IGNvbnN0YW50LmFzQ2VsbCgpOwotICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUgPSBqc0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3VubGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRo
VHlwZVByb2ZpbGVyT3Bjb2RlcygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7Cisg
ICAgICAgIHN3aXRjaCAoY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2ldKSB7Cisg
ICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50Ogor
ICAgICAgICAgICAgY29uc3RhbnQgPSBnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3RhbnQoc3Rh
dGljX2Nhc3Q8TGlua1RpbWVDb25zdGFudD4oY29uc3RhbnQuYXNJbnQzMkFzQW55SW50KCkpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bjo6T3RoZXI6CisgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpJbnRlZ2Vy
OgorICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6RG91YmxlOgorICAgICAg
ICAgICAgaWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29u
c3RhbnQuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gY29u
c3RhbnQuYXNDZWxsKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUgPSBqc0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5
cGVQcm9maWxlck9wY29kZXMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tl
cik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IFN5bWJvbFRhYmxlKiBjbG9uZSA9IHN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2Rl
cygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0YUNvZGVC
bG9jayh0aGlzKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5h
bWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFi
bGUtPmNyZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9iamVjdDsKICAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBjbG9u
ZSA9IHN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh3YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1
dG8qIGRlc2NyaXB0b3IgPSBqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Kj4odm0sIGNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0
ID0gdG9wTGV2ZWxFeGVjdXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3Qs
IGRlc2NyaXB0b3IpOwotICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotICAgICAgICAgICAgICAgICAgICBjb25zdGFudCA9IHRlbXBsYXRlT2Jq
ZWN0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0KICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQodm0sIHRo
aXMsIGNvbnN0YW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5o
CmluZGV4IGUyNDRmZDYyNzA5YjQyNWE2MjhlMjI0NTY2MzhiMGU1NjNjZGFlMDkuLmVkYTI0YmU0
Njk1NjRiMmU1MGM2NGZlNjA4MWJhMjFmOWNlZDlhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ZpdHMuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0
ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0
VHlwZS5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFi
bGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
aW5rVGltZUNvbnN0YW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTA5Mjc1M2MzNGE5NTNhYjllZTFmNDBi
NWI5N2JmMmViM2U5NjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNw
YWNlIFdURiB7CisKKyNkZWZpbmUgUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKHZhck5hbWUsIG5h
bWUsIGNvZGUpIFwKKyAgICBjYXNlIEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZTogXAorICAg
ICAgICBvdXQucHJpbnQoI25hbWUpOyBcCisgICAgICAgIHJldHVybjsKKwordm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TGlua1RpbWVDb25zdGFudCBjb25zdGFudCkK
K3sKKyAgICBzd2l0Y2ggKGNvbnN0YW50KSB7CisgICAgICAgIEpTQ19GT1JFQUNIX0xJTktfVElN
RV9DT05TVEFOVFMoUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKQorICAgIH0KK30KKworI3VuZGVm
IFBSSU5UX0xJTktfVElNRV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjljOTFkYzQ4MjI5OThmMjg5ZWI0ZmRiMGVhOTlmNzgzZmNlMzA1YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
CkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisK
KyNkZWZpbmUgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyh2KSBcCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKHYpIFwKKyAgICB2KHRo
cm93VHlwZUVycm9yRnVuY3Rpb24sIHRocm93VHlwZUVycm9yRnVuY3Rpb24sIG51bGxwdHIpIFwK
KyAgICB2KGltcG9ydE1vZHVsZSwgaW1wb3J0TW9kdWxlLCBudWxscHRyKSBcCisgICAgdihtYXBC
dWNrZXRIZWFkLCBtYXBCdWNrZXRIZWFkLCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXROZXh0
LCBtYXBCdWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRLZXksIG1hcEJ1Y2tl
dEtleSwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0VmFsdWUsIG1hcEJ1Y2tldFZhbHVlLCBu
dWxscHRyKSBcCisgICAgdihzZXRCdWNrZXRIZWFkLCBzZXRCdWNrZXRIZWFkLCBudWxscHRyKSBc
CisgICAgdihzZXRCdWNrZXROZXh0LCBzZXRCdWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihz
ZXRCdWNrZXRLZXksIHNldEJ1Y2tldEtleSwgbnVsbHB0cikgXAorICAgIHYocHJvcGVydHlJc0Vu
dW1lcmFibGUsIHByb3BlcnR5SXNFbnVtZXJhYmxlLCBudWxscHRyKSBcCisgICAgdihvd25LZXlz
LCBvd25LZXlzLCBudWxscHRyKSBcCisgICAgdihlbnF1ZXVlSm9iLCBlbnF1ZXVlSm9iLCBudWxs
cHRyKSBcCisgICAgdihtYWtlVHlwZUVycm9yLCBtYWtlVHlwZUVycm9yLCBudWxscHRyKSBcCisg
ICAgdih0eXBlZEFycmF5TGVuZ3RoLCB0eXBlZEFycmF5TGVuZ3RoLCBudWxscHRyKSBcCisgICAg
dih0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgdHlwZWRBcnJheUdldE9yaWdpbmFs
Q29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTb3J0LCB0eXBlZEFycmF5
U29ydCwgbnVsbHB0cikgXAorICAgIHYoaXNUeXBlZEFycmF5VmlldywgaXNUeXBlZEFycmF5Vmll
dywgbnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCB0eXBlZEFycmF5
U3ViYXJyYXlDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzQm91bmRGdW5jdGlvbiwgaXNCb3Vu
ZEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIGhh
c0luc3RhbmNlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaW5zdGFuY2VPZiwgaW5z
dGFuY2VPZiwgbnVsbHB0cikgXAorICAgIHYoQnVpbHRpbkxvZywgQnVpbHRpbkxvZywgbnVsbHB0
cikgXAorICAgIHYoQnVpbHRpbkRlc2NyaWJlLCBCdWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwK
KyAgICB2KFJlZ0V4cCwgUmVnRXhwLCBudWxscHRyKSBcCisgICAgdih0cnVuYywgdHJ1bmMsIG51
bGxwdHIpIFwKKyAgICB2KFByb21pc2UsIFByb21pc2UsIG51bGxwdHIpIFwKKyAgICB2KEludGVy
bmFsUHJvbWlzZSwgSW50ZXJuYWxQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihkZWZhdWx0UHJv
bWlzZVRoZW4sIGRlZmF1bHRQcm9taXNlVGhlbiwgbnVsbHB0cikgXAorICAgIHYocmVwZWF0Q2hh
cmFjdGVyLCByZXBlYXRDaGFyYWN0ZXIsIG51bGxwdHIpIFwKKyAgICB2KGFycmF5U3BlY2llc0Ny
ZWF0ZSwgYXJyYXlTcGVjaWVzQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0FycmF5LCBpc0Fy
cmF5LCBudWxscHRyKSBcCisgICAgdihpc0FycmF5U2xvdywgaXNBcnJheVNsb3csIG51bGxwdHIp
IFwKKyAgICB2KGNvbmNhdE1lbWNweSwgY29uY2F0TWVtY3B5LCBudWxscHRyKSBcCisgICAgdihh
cHBlbmRNZW1jcHksIGFwcGVuZE1lbWNweSwgbnVsbHB0cikgXAorICAgIHYoaG9zdFByb21pc2VS
ZWplY3Rpb25UcmFja2VyLCBob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwK
KyAgICB2KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LCBudWxscHRyKSBcCisgICAgdihTZXQsIFNldCwgbnVsbHB0cikgXAorICAgIHYodGhpc1RpbWVW
YWx1ZSwgdGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAorICAgIHYoaXNDb25zdHJ1Y3RvciwgaXND
b25zdHJ1Y3RvciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9GbGFnc0dldHRlciwgcmVn
RXhwUHJvdG9GbGFnc0dldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9HbG9iYWxH
ZXR0ZXIsIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQ
cm90b0lnbm9yZUNhc2VHZXR0ZXIsIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlciwgbnVsbHB0
cikgXAorICAgIHYocmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIsIHJlZ0V4cFByb3RvTXVsdGls
aW5lR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1NvdXJjZUdldHRlciwgcmVn
RXhwUHJvdG9Tb3VyY2VHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvU3RpY2t5
R2V0dGVyLCByZWdFeHBQcm90b1N0aWNreUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyLCByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIG51bGxwdHIpIFwK
KyAgICB2KHJlZ0V4cEJ1aWx0aW5FeGVjLCByZWdFeHBCdWlsdGluRXhlYywgbnVsbHB0cikgXAor
ICAgIHYocmVnRXhwQ3JlYXRlLCByZWdFeHBDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzUmVn
RXhwLCBpc1JlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwTWF0Y2hGYXN0LCByZWdFeHBN
YXRjaEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNlYXJjaEZhc3QsIHJlZ0V4cFNlYXJj
aEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNwbGl0RmFzdCwgcmVnRXhwU3BsaXRGYXN0
LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlLCByZWdFeHBQ
cm90b3R5cGVTeW1ib2xSZXBsYWNlLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBUZXN0RmFzdCwg
cmVnRXhwVGVzdEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ0luY2x1ZGVzSW50ZXJuYWws
IHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ1NwbGl0RmFz
dCwgc3RyaW5nU3BsaXRGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTdWJzdHJJbnRlcm5h
bCwgc3RyaW5nU3Vic3RySW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KG1ha2VCb3VuZEZ1bmN0
aW9uLCBtYWtlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzT3duTGVuZ3RoUHJv
cGVydHksIGhhc093bkxlbmd0aFByb3BlcnR5LCBudWxscHRyKSBcCisgICAgdihkYXRlVGltZUZv
cm1hdCwgZGF0ZVRpbWVGb3JtYXQsIG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5Q29tcGls
ZVN0cmVhbWluZ0ludGVybmFsLCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCwg
bnVsbHB0cikgXAorICAgIHYod2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFs
LCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAg
ICB2KE9iamVjdCwgT2JqZWN0LCBudWxscHRyKSBcCisgICAgdihBcnJheSwgQXJyYXksIG51bGxw
dHIpIFwKKyAgICB2KGFwcGx5RnVuY3Rpb24sIGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKKyAg
ICB2KGNhbGxGdW5jdGlvbiwgY2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisKKworI2RlZmluZSBE
RUNMQVJFX0xJTktfVElNRV9DT05TVEFOVCh2YXJOYW1lLCBuYW1lLCBjb2RlKSBuYW1lLAorZW51
bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdCB7CisgICAgSlNDX0ZPUkVBQ0hfTElO
S19USU1FX0NPTlNUQU5UUyhERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVCkKK307CisjdW5kZWYg
REVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQKKyNkZWZpbmUgQ09VTlRfTElOS19USU1FX0NPTlNU
QU5UKHZhck5hbWUsIG5hbWUsIGNvZGUpIDEgKworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBu
dW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzID0gSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5U
UyhDT1VOVF9MSU5LX1RJTUVfQ09OU1RBTlQpIDA7CisjdW5kZWYgQ09VTlRfTElOS19USU1FX0NP
TlNUQU5UCisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
UHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6TGlu
a1RpbWVDb25zdGFudCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDVhZDNmMjRjYTA0ODFkMTFhNjdlYmQxYmZiYWJlODY2ZmQzMWQ0OGIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCi0KLSNp
bmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXZvaWQqIGFjdHVhbFBvaW50
ZXJGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3BlY2lhbDo6UG9pbnRlciBwb2lu
dGVyKQotewotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9pbnRl
cik7Ci19Ci0KLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFNw
ZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gYWN0dWFsUG9pbnRlckZvcihj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBwb2ludGVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgc3dpdGNoIChwb2lu
dGVyKSB7Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkNhbGxGdW5jdGlvbjoKLSAgICAgICAgb3V0
LnByaW50KCJDYWxsRnVuY3Rpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpT
cGVjaWFsOjpBcHBseUZ1bmN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkFwcGx5RnVuY3Rpb24i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpPYmplY3RDb25zdHJ1
Y3RvcjoKLSAgICAgICAgb3V0LnByaW50KCJPYmplY3RDb25zdHJ1Y3RvciIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkFycmF5Q29uc3RydWN0b3I6Ci0gICAgICAg
IG91dC5wcmludCgiQXJyYXlDb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBKU0M6OlNwZWNpYWw6OlRhYmxlU2l6ZToKLSAgICAgICAgb3V0LnByaW50KCJUYWJsZVNpemUi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDkyYmFiNzZlYTJiZmY3ZTZlODgzNTM1ZWE0ZDc2YzQx
YjA0Njc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3Mg
Q29kZUJsb2NrOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0KLW5hbWVzcGFjZSBTcGVjaWFsIHsK
LWVudW0gUG9pbnRlciA6IHVuc2lnbmVkIHsKLSAgICBDYWxsRnVuY3Rpb24sCi0gICAgQXBwbHlG
dW5jdGlvbiwKLSAgICBPYmplY3RDb25zdHJ1Y3RvciwKLSAgICBBcnJheUNvbnN0cnVjdG9yLAot
ICAgIFRhYmxlU2l6ZSAvLyBOb3QgYSByZWFsIHNwZWNpYWwgcG9pbnRlci4gVXNlIHRoaXMgdG8g
ZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcG9pbnRlcnMuCi19OwotfSAvLyBuYW1lc3BhY2UgU3Bl
Y2lhbAotCi1lbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIFRocm93VHlwZUVycm9y
RnVuY3Rpb24sCi19OwotY29uc3QgdW5zaWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0gMTsK
LQotaW5saW5lIGJvb2wgcG9pbnRlcklzRnVuY3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2ludGVy
KQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwgcG9pbnRlciA8IFNwZWNpYWw6OlRhYmxl
U2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0NlbGwo
U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwg
cG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZv
aWQqIGFjdHVhbFBvaW50ZXJGb3IoSlNHbG9iYWxPYmplY3QqLCBTcGVjaWFsOjpQb2ludGVyKTsK
LXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiwgU3BlY2lhbDo6UG9pbnRlcik7Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJl
YW07Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6U3BlY2lhbDo6UG9p
bnRlcik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjM0ZmE1NzdjNWFmMGEx
MjE2YzdiNGQ2ZDA0NDdkMGJjZjhkNGM0OS4uZDVkZGVlOGQ1NjA3NzAzMjNiMWZkNWYxYWNjY2Nj
MDUwMmMxMjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC03Niw4ICs3Niw2IEBAIFVubGlua2VkQ29kZUJsb2Nr
OjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlw
ZSBjb2RlCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAg
ICAgLCBtX21ldGFkYXRhKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCkpCiB7Ci0gICAg
Zm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVySW5kZXggOiBtX2xpbmtUaW1lQ29uc3RhbnRzKQot
ICAgICAgICBjb25zdGFudFJlZ2lzdGVySW5kZXggPSAwOwogICAgIEFTU0VSVChtX2NvbnN0cnVj
dG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkp
OwogICAgIEFTU0VSVChtX2NvZGVUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlw
ZSkpOwogICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihN
aXhlZFRyaVN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDQ3MzlkYTc4MzU2OGQzZWIyNjMxZWVmMWE3MjQyOTI4
Nzk3ZjU2NjkuLmQ2MDczNjAxNGRkMWUzMTU3MTNhODUyZTg3ZGE2NTYxNDE2MzAwODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
TW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5o
IgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5s
aW5rZWRNZXRhZGF0YVRhYmxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0x
ODAsMjcgKzE3OSwxNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoc291
cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0g
ICAgdW5zaWduZWQgYWRkQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAgIHVuc2ln
bmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkKICAgICB7
CiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gbG9j
a0R1cmluZ01hcmtpbmcodm0uaGVhcCwgY2VsbExvY2soKSk7CiAgICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOwotICAgICAgICBBU1NFUlQocmVzdWx0
KTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7
Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAg
IG1fbGlua1RpbWVDb25zdGFudHNbaW5kZXhdID0gcmVzdWx0OwogICAgICAgICBtX2NvbnN0YW50
UmVnaXN0ZXJzLmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7Ci0gICAgICAgIG1fY29u
c3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVuZChTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb246Ok90aGVyKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0KHZt
LCB0aGlzLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihsaW5rVGltZUNvbnN0YW50KSkp
OworICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZWdpc3RlckluZGV4Rm9yTGlua1RpbWVD
b25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBp
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKLSAgICAgICAgQVNTRVJUKGluZGV4
IDwgTGlua1RpbWVDb25zdGFudENvdW50KTsKLSAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25z
dGFudHNbaW5kZXhdOwotICAgIH0KLQogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5r
bm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7
IH0KICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50
IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXg7IH0KQEAgLTQwNiw4ICszOTUsNiBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNS
ZWdpc3RlcjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogCi0gICAgc3Rk
OjphcnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3Rh
bnRzOwotCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1N0
cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDJkYjgxOGYwYjliNTRiMjE1YmFmMDZjY2M2YWUzMWMzYzI5YWRmYWUuLjgz
NmZkNTc4ZjJjMTg0ZmIzMzYyNTU4NzFjNmIxMmMzYzEzNjdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0zMDgsOSArMzA4LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMtPnNpemUoKSk7CiAKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRy
OwotCiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNw
YWNlIGZvciAidGhpcyIKIAogICAgIGVtaXRFbnRlcigpOwpAQCAtMzYwLDkgKzM1Nyw2IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9u
Q29udGV4dChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2Rl
LT51c2VzRXZhbCgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJp
dmVkQ29udGV4dFR5cGUoKSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBt
X2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBu
dWxscHRyOwotCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xU
YWJsZTo6Y3JlYXRlKG1fdm0pOwogICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldFVzZXNOb25T
dHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIGludCBzeW1ib2xUYWJsZUNvbnN0
YW50SW5kZXggPSAwOwpAQCAtNzg4LDExICs3ODIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogCiAgICAgICAgIC8vIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25D
YWxsQ2hlY2soQHByb21pc2UsIHRocm93blZhbHVlKTsKICAgICAgICAgLy8gcmV0dXJuIEBwcm9t
aXNlOwotICAgICAgICBhdXRvIHZhclJlamVjdFByb21pc2UgPSB2YXJpYWJsZShwcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkucmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0
aW9uQ2FsbENoZWNrUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICBtb3ZlKHNjb3BlLmdldCgpLCBlbWl0UmVz
b2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlKSk7Ci0gICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3Jh
cnkoKSwgc2NvcGUuZ2V0KCksIHZhclJlamVjdFByb21pc2UsIFRocm93SWZOb3RGb3VuZCk7Ci0K
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdFByb21pc2UgPSBtb3ZlTGlua1RpbWVD
b25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpyZWplY3RQcm9taXNlV2l0aEZpcnN0
UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2spOwogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3Mo
KnRoaXMsIG51bGxwdHIsIDIpOwogICAgICAgICBlbWl0TG9hZChhcmdzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgbW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCks
IHByb21pc2VSZWdpc3RlcigpKTsKQEAgLTg0OCw5ICs4MzgsNiBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZXZhbE5v
ZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUtPnVzZXNFdmFsKCkpCiAgICAgLCBt
X2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewot
ICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVycykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBtX2NvZGVC
bG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIAogICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwg
VERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKQEAgLTkxMCw5ICs4OTcsNiBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9k
dWxlUHJvZ3JhbU5vZAogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIAotICAgIGZvciAoYXV0byYg
Y29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKLSAgICAgICAg
Y29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7CiAgICAgbW9k
dWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9u
U3RyaWN0RXZhbCk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0U2NvcGVU
eXBlKFN5bWJvbFRhYmxlOjpTY29wZVR5cGU6OkxleGljYWxTY29wZSk7CkBAIC0xNDQyLDEyICsx
NDI2LDEyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZGYWxzZShSZWdpc3Rl
cklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCiB7
Ci0gICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6OkNhbGxGdW5jdGlvbiwg
dGFyZ2V0LmJpbmQodGhpcykpOworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rpb24p
LCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRK
dW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCiB7
Ci0gICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6OkFwcGx5RnVuY3Rpb24s
IHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgbW92
ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6YXBwbHlGdW5jdGlv
biksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aGFz
Q29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CkBAIC0zMTAxLDcgKzMwODUs
NyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5j
dGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID49IDIpCiAgICAgICAgICAgICByZXR1cm4gTm9F
eHBlY3RlZEZ1bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMs
IGZ1bmMsIFNwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7
CisgICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFu
dChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpLCByZWFsQ2FsbC0+YmluZCh0aGlz
KSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkKICAgICAg
ICAgICAgIGVtaXROZXdPYmplY3QoZHN0KTsKQEAgLTMxMTcsNyArMzEwMSw3IEBAIEV4cGVjdGVk
RnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldChS
ZWdpc3RlcklEKiBkc3QsCiAgICAgICAgIGlmIChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkgPiAyKQogICAgICAgICAgICAgcmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlv
bjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFs
OjpBcnJheUNvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CisgICAgICAgIE9wSm5l
cVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5r
VGltZUNvbnN0YW50OjpBcnJheSksIHJlYWxDYWxsLT5iaW5kKHRoaXMpKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBpZiAoY2Fs
bEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID09IDIpCkBAIC0zMjg1LDcg
KzMyNjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5
KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcAogICAgIGlmIChhdHRyaWJ1dGVzLmhh
c0dldCgpIHx8IGF0dHJpYnV0ZXMuaGFzU2V0KCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHRocm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNH
ZXQoKSB8fCAhYXR0cmlidXRlcy5oYXNTZXQoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
RnVuY3Rpb24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50
OjpUaHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVu
Y3Rpb24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50Ojp0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyOwogICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKQEAgLTQ0NzQsMTAgKzQ0NTgs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3Io
UmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5l
eHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS5uZXh0KTsKIAotICAgIGF1dG8gdmFyQ3JlYXRlQXN5bmNGcm9tU3luY0l0
ZXJhdG9yID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNyZWF0ZUFz
eW5jRnJvbVN5bmNJdGVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgIG1vdmUoc2NvcGUuZ2V0KCksIGVtaXRSZXNv
bHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvcikpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBlbWl0
R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyQ3JlYXRlQXN5bmNG
cm9tU3luY0l0ZXJhdG9yLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxs
cHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IpOwogCiAg
ICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICBlbWl0TG9hZChh
cmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyZDcy
MWViNzc5MGIzNzMwMjM3OGZmYWNiOTEyMjcyZGZiOGU3YzRmLi5mNWIzNTY4ZDFkNzU1MDI4NzRm
ZDY3YWQ1NWZkOGQ4MmYzYWU3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5o
IgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50Lmgi
CiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUg
IlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCkBAIC0xMjE2LDcgKzEyMTcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxs
cHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRy
IH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1faXNEZXJpdmVkQ29uc3R1Y3RvciB7IG51bGxwdHIg
fTsKLSAgICAgICAgUmVnaXN0ZXJJRCogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW0xpbmtU
aW1lQ29uc3RhbnRDb3VudF07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFu
dFJlZ2lzdGVyc1tudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzXSB7IH07CiAgICAgICAgIFJlZ2lz
dGVySUQqIG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7
IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9wcm9taXNlUmVnaXN0ZXIgeyBudWxs
cHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCAyZTAzYmUwYjdjNzVkZGIwMjdlYzRlNmY2NTYyMThkOGUwZmU1
MWE2Li41MjQ2OGUxZjJhYTExZTEyMDZhZTdmNDVhMTVmMjkwYjM5ZGFmNDVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yMTEsNyArMjExLDcgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0g
Z2VuZXJhdG9yLmVtaXRHZXRHbG9iYWxQcml2YXRlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2
YXRlTmFtZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2VuZXJh
dG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmltcG9y
dE1vZHVsZSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRy
LCAxKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJndW1lbnRzLmFyZ3VtZW50
UmVnaXN0ZXIoMCksIG1fZXhwcik7CkBAIC05ODUsNyArOTg1LDExIEBAIFJlZ2lzdGVySUQqIEZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IHJldHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOworICAgIGlmIChtX2Vu
dHJ5LnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQor
ICAgICAgICByZXR1cm4gKHRoaXMtPiptX2VudHJ5LmVtaXR0ZXIoKSkoZ2VuZXJhdG9yLCBkc3Qp
OworICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChk
c3QsIG1fZW50cnkubGlua1RpbWVDb25zdGFudCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRCeUlkRGlyZWN0KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTEwMTMsOSArMTAxNywxMCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEJ5
SWREaXJlY3RQcml2YXRlKEJ5dGVjb2RlRwogCiBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9t
aXNlSW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX3Byb21pc2VGaWVsZEZsYWdzKQorICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUo
KSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAo
bm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfcHJvbWlzZUZpZWxkRmxhZ3MpCiAgICAgICAgIHJldHVybiBKU1Byb21pc2U6OkZp
ZWxkOjpGbGFnczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KQorICAg
IGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0OwogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwpA
QCAtMTAyMywxMyArMTAyOCwxNCBAQCBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50
ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIAogc3RhdGljIEpT
R2VuZXJhdG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkKKyAgICBB
U1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCiAg
ICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwotICAgIGlmIChub2RlLT5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJh
dG9yRmllbGROZXh0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCiAgICAg
ICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5vZGUtPmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JG
aWVsZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKICAgICAgICAg
cmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigp
ID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxk
RnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJl
dHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBAIC0xMDM3
LDE5ICsxMDQzLDIwIEBAIHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJu
YWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kCiAKIHN0YXRpYyBKU0FzeW5j
R2VuZXJhdG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29k
ZUludHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQor
ICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0
ZSkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dlbmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRO
ZXh0KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAg
aWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19nZW5lcmF0b3JGaWVsZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigp
ID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxk
VGhpcykKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOwotICAg
IGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmll
bGRGcmFtZSkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsK
LSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQorICAgIGlmIChub2Rl
LT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKICAgICAgICAgcmV0dXJuIEpT
QXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uOwotICAgIGlmIChub2RlLT5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5l
cmF0b3JGaWVsZFF1ZXVlRmlyc3QpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmll
bGRRdWV1ZUZpcnN0KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1
ZXVlRmlyc3Q7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQorICAgIGlm
IChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQogICAgICAgICByZXR1cm4g
SlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdDsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7
CkBAIC00MDk2LDEwICs0MTAzLDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9m
ZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBA
YXN5bmNGdW5jdGlvblJlc3VtZQotICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25S
ZXN1bWVQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5n
ZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXN5bmNGdW5jdGlvblJlc3VtZSA9IGdlbmVyYXRvci5l
bWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZh
ciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVu
Y3Rpb25SZXN1bWUgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6YXN5bmNGdW5jdGlvblJlc3VtZSk7CiAKICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgNCk7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3Vt
ZW50Q291bnQgPSAwOwpAQCAtNDU3OCwxMSArNDU4Miw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAgICAgSWRlbnRpZmllclNldCBleGNsdWRlZFNldDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gYWRkTWV0aG9kOwogICAgIGlmIChtX2NvbnRhaW5zUmVzdEVsZW1lbnQgJiYgbV9jb250YWlu
c0NvbXB1dGVkUHJvcGVydHkpIHsKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRlTmFt
ZSgpKTsKLQotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5k
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldENvbnN0cnVjdG9yID0gZ2VuZXJhdG9y
Lm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlNldCk7CiAK
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CiAgICAg
ICAgIGV4Y2x1ZGVkTGlzdCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgc2V0Q29uc3RydWN0b3IuZ2V0KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CkBAIC00NjMzLDExICs0NjMzLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZh
bHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXdPYmplY3QgPSBnZW5lcmF0b3IuZW1pdE5ld09i
amVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBsb2FkIGFuZCBjYWxsIEBjb3B5RGF0YVByb3BlcnRpZXMKLSAgICAgICAgICAgIGF1dG8g
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuY29weURhdGFQcm9wZXJ0aWVzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lm
Tm90Rm91bmQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVy
dGllcyA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50Ojpjb3B5RGF0YVByb3BlcnRpZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAzKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKQEAg
LTQ4MTAsMTEgKzQ4MDYsNyBAQCBSZWdpc3RlcklEKiBPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0bwogICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShzcmMuZ2V0KCksIG1fZXhwcmVzc2lvbik7CiAgICAgCiAgICAgLy8gbG9hZCBh
bmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zCi0gICAgYXV0byB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5jb3B5RGF0YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnNQcml2YXRlTmFtZSgpKTsKLSAgICAKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0g
ICAgZ2VuZXJhdG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3Bl
KHNjb3BlLmdldCgpLCB2YXIpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9w
ZXJ0aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBjb3B5RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3Rh
bnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNp
b25zKTsKICAgICAKICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAy
KTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmlu
ZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IGUwZWVmNDkxN2FhNjgxZmFjMjk0Yzk4ODQ5ODI1YjJkOTNmMDBmMWEuLjMzNzhh
ZDA5MmY2YTI0MjAzM2NmNDA3NjgzZDkzODk1ZDNkM2NkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02MzQyLDExICs2MzQyLDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7Ci0gICAgICAgICAg
ICBTcGVjaWFsOjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9p
bnRlcjsKLSAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNDZWxsKHNwZWNpYWxQb2ludGVyKSk7
Ci0gICAgICAgICAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXIgPSBzdGF0aWNfY2FzdDxKU0NlbGwq
PigKLSAgICAgICAgICAgICAgICBhY3R1YWxQb2ludGVyRm9yKG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLCBzcGVjaWFsUG9pbnRlcikpOwotICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZy
b3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZShhY3R1YWxQb2ludGVyKTsKKyAgICAgICAgICAg
IEZyb3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBv
aW50ZXIub2Zmc2V0KCkpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0g
anVtcFRhcmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIGNo
aWxkID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jaykubV9oYXNKdW1wZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCmluZGV4IDBkMDQ5OTQ1ODBkOWIzODgxYzkwMmIwMWFiYTNlNjFkOTYw
MzZlNTkuLjhlYmU0OWZlYmJmNTEzNWI1MzVlM2NkZDc2OTY1NjgxNTA1M2RhNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNDcxLDExICs0NzEsMTIgQEAg
dm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpu
ZXFQdHI+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayk7CiAgICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7Ci0gICAgU3Bl
Y2lhbDo6UG9pbnRlciBwdHIgPSBieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyOworICAgIEpTVmFs
dWUgc3BlY2lhbFBvaW50ZXIgPSBnZXRDb25zdGFudE9wZXJhbmQoYnl0ZWNvZGUubV9zcGVjaWFs
UG9pbnRlci5vZmZzZXQoKSk7CisgICAgQVNTRVJUKHNwZWNpYWxQb2ludGVyLmlzQ2VsbCgpKTsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihz
cmMsIHJlZ1QwKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0
cikpKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJl
Z1QwLCBUcnVzdGVkSW1tUHRyKHNwZWNpYWxQb2ludGVyLmFzQ2VsbCgpKSk7CiAgICAgc3RvcmU4
KFRydXN0ZWRJbW0zMigxKSwgJm1ldGFkYXRhLm1faGFzSnVtcGVkKTsKICAgICBhZGRKdW1wKGp1
bXAoKSwgdGFyZ2V0KTsKICAgICBlcXVhbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDNlMGNlYjQ2OTNhNTg5NWYzYWZl
YmM5NjJhOWMxNDNmMDgyOGM1MzEuLjRlOTQyNDU0NzlmM2Y0NzY5N2E4YjY5M2M1ZGYxZjAxMGVi
MjMyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTQ3OCwxMiArNDc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5t
X3ZhbHVlLm9mZnNldCgpOwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9z
cGVjaWFsUG9pbnRlcjsKKyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRP
cGVyYW5kKGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChz
cGVjaWFsUG9pbnRlci5pc0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdl
dChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1p
dExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90
Q2VsbChyZWdUMSk7Ci0gICAgSnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDAsIFRy
dXN0ZWRJbW1QdHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRyKSkpOworICAgIEp1
bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHNwZWNpYWxQ
b2ludGVyLmFzQ2VsbCgpKSk7CiAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwogICAgIHN0b3JlOChU
cnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRkSnVtcChqdW1w
KCksIHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDMzN2VlMjJiNDkzZDBiNWFlNGQzNzQy
ZGIxMjJmNTIzYmVhZjNmNmEuLjRjNjBkYmVlMTMzYWViZjY5OWQyNGZjOTc5M2E4NDQyZTIxMTE4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNzEwLDEyICsxNzEwLDEwIEBAIHVuZGVmaW5lZE9y
TnVsbEp1bXBPcChqbnVuZGVmaW5lZF9vcl9udWxsLCBPcEpudW5kZWZpbmVkT3JOdWxsLAogCiBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQdHIsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldChtX3ZhbHVlLCB0MCkKLSAg
ICBnZXR1KHNpemUsIE9wSm5lcVB0ciwgbV9zcGVjaWFsUG9pbnRlciwgdDEpCi0gICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0
Ml0sIHQyCisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUoc2l6ZSwgdDEsIHQzLCB0MikKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6
bV9zcGVjaWFsUG9pbnRlcnNbdDIsIHQxLCA0XSwgdDEKLSAgICBicGVxIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKyAgICBicGVxIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQyLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKIC5vcEpuZXFQdHJC
cmFuY2g6CiAgICAgbWV0YWRhdGEodDUsIHQyKQogICAgIHN0b3JlYiAxLCBPcEpuZXFQdHI6Ok1l
dGFkYXRhOjptX2hhc0p1bXBlZFt0NV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMDQ0M2YwY2ZlOGIzNzI3ZWM5
NGJkNGQ1ODk3MDk2MTBiNDI5Yzg2YS4uMDVlOGZkYTNkZTVmNGJiNTMxOTY3ZDMwODg5Yjc2NWI3
YWRhMmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE4MTYsMTEgKzE4MTYsOSBAQCB1bmRlZmluZWRPck51
bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9yTnVsbCwKIAogbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1ZSwgdDApCi0gICAg
Z2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQotICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJd
LCB0MgotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3NwZWNpYWxQb2ludGVyc1t0MiwgdDEs
IFB0clNpemVdLCB0MQotICAgIGJwbmVxIHQxLCBbY2ZyLCB0MCwgOF0sIC5vcEpuZXFQdHJUYXJn
ZXQKKyAgICBnZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MSwgdDIpCisgICAgYnBuZXEgdDIsIFtjZnIsIHQwLCA4XSwgLm9wSm5lcVB0
clRhcmdldAogICAgIGRpc3BhdGNoKCkKIAogLm9wSm5lcVB0clRhcmdldDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggY2FmMDMwODI5MjFkMTI5NWEwNDI4
ZGIwY2JlMDQxMmMzYWNmMGM5OS4uY2M1OTdmNWI0NGI5ZTcxNzlmNWRlNTViMGVlZDJiZjg2OTA1
ZWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIw
MCw4ICsyMDAsOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgICAgIHVzZXNBcmd1bWVu
dHMoKTsKIAogICAgICAgICBpZiAoaWRlbnQuaXNTeW1ib2woKSkgewotICAgICAgICAgICAgaWYg
KEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgZW1pdHRlciA9IG1fdm0uYnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQsIGxvY2F0aW9uLCBlbWl0dGVyLCBpZGVudCwgbnVs
bHB0ciwgc3RhcnQsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYXV0byBlbnRyeSA9IG1fdm0u
Ynl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudCk7CisgICAgICAgICAgICBp
ZiAoZW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQs
IGxvY2F0aW9uLCBlbnRyeS52YWx1ZSgpLCBpZGVudCwgbnVsbHB0ciwgc3RhcnQsIHN0YXJ0LCBl
bmQpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUmVz
b2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBzdGFydCk7CkBAIC0xMzg0LDggKzEzODUsOCBAQCBF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIGlmIChmdW5jLT5pc0J5dGVjb2RlSW50cmluc2lj
Tm9kZSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXNPcHRpb25hbENhbGwpOwogICAgICAgICBCeXRl
Y29kZUludHJpbnNpY05vZGUqIGludHJpbnNpYyA9IHN0YXRpY19jYXN0PEJ5dGVjb2RlSW50cmlu
c2ljTm9kZSo+KGZ1bmMpOwotICAgICAgICBpZiAoaW50cmluc2ljLT50eXBlKCkgPT0gQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpDb25zdGFudCkKLSAgICAgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05v
ZGU6OlR5cGU6OkZ1bmN0aW9uLCBsb2NhdGlvbiwgaW50cmluc2ljLT5lbWl0dGVyKCksIGludHJp
bnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwor
ICAgICAgICBpZiAoaW50cmluc2ljLT50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpU
eXBlOjpDb25zdGFudCAmJiBpbnRyaW5zaWMtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW50cnkoKSwgaW50cmluc2lj
LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAg
fQogCiAgICAgaWYgKGZ1bmMtPmlzT3B0aW9uYWxDaGFpbigpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDc1ODlkN2M5MWU4OTVl
YjJkOTk2MzNkYmY1YjRhYTVkMjZhZWI4NGUuLjljN2I5YTI4MjA3M2M1NzZhNjM0OWU0ZDY5YzIy
MGJhNWNjZGVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCkBAIC00MTMsMTAgKzQxMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRy
aW5zaWNOb2RlKFR5cGUgdHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRW1p
dHRlclR5cGUgZW1pdHRlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUq
IGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICBpbmxpbmUg
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUoVHlwZSB0eXBlLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OjpFbnRyeSBlbnRyeSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFy
Z3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9lbWl0dGVyKGVtaXR0ZXIp
CisgICAgICAgICwgbV9lbnRyeShlbnRyeSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAg
ICAgICAsIG1fYXJncyhhcmdzKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGFhNDQ4NjY0ZDFkNDgxNDBkMTBhNDU5MGMwNjdkNTAx
YThiNjI4N2YuLmZhZDUzMjhhMmI5NDQzN2RiMmRhZTdmMWM4NmIyODljMWEzNDFmYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTk0NCwxNCArOTQ0LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgRnVuY3Rpb24KICAgICAgICAgfTsKIAotICAgICAgICB0
eXBlZGVmIFJlZ2lzdGVySUQqIChCeXRlY29kZUludHJpbnNpY05vZGU6OiogRW1pdHRlclR5cGUp
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwotCi0gICAgICAgIEJ5dGVjb2RlSW50
cmluc2ljTm9kZShUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFbWl0dGVyVHlwZSwgY29u
c3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOworICAgICAgICBCeXRlY29kZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnksIGNvbnN0
IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKIAogICAgICAgICBib29sIGlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgICAgICBFbWl0dGVyVHlwZSBlbWl0dGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9lbWl0dGVyOyB9CisgICAgICAgIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkVudHJ5IGVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeTsgfQogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAjZGVm
aW5lIEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlMobmFtZSkgUmVnaXN0
ZXJJRCogZW1pdF9pbnRyaW5zaWNfIyNuYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCopOwpAQCAtOTY0LDcgKzk2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wg
aXNGdW5jdGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6
RnVuY3Rpb247IH0KIAotICAgICAgICBFbWl0dGVyVHlwZSBtX2VtaXR0ZXI7CisgICAgICAgIEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5IG1fZW50cnk7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsKICAgICAg
ICAgVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAKaW5kZXggNjAzNWE0OTA5MjZjNGFlNWZjMzMyN2FmZmVkZjQyNzZiOTNmMDY1Ny4u
ZWI5ZDk5M2IyNTE0YzY3MjllMTAyZjY1ZTcyMGE3MjhhZjJjMjQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTgwMSw3ICsxODAxLDYg
QEAgY2xhc3MgQ2FjaGVkQ29kZUJsb2NrIDogcHVibGljIENhY2hlZE9iamVjdDxDb2RlQmxvY2tU
eXBlPiB7CiBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwotICAgIHN0ZDo6YXJyYXk8dW5zaWdu
ZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNvbnN0YW50czsKIAogICAgIHVu
c2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsK
QEAgLTIwMzksOSArMjAzOCw2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2VkQ29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVjdHVyZSoKIHRlbXBsYXRlPHR5
cGVuYW1lIENvZGVCbG9ja1R5cGU+CiBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2Nr
PENvZGVCbG9ja1R5cGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVW5saW5rZWRDb2RlQmxv
Y2smIGNvZGVCbG9jaykgY29uc3QKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBMaW5rVGltZUNv
bnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRz
W2ldID0gbV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAgIG1fY29uc3RhbnRSZWdpc3RlcnMu
ZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50UmVnaXN0ZXJzLCAmY29kZUJsb2Nr
KTsKICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5kZWNvZGUoZGVjb2Rl
ciwgY29kZUJsb2NrLm1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKICAgICBt
X2V4cHJlc3Npb25JbmZvLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9leHByZXNzaW9uSW5m
byk7CkBAIC0yMjA3LDkgKzIyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJs
b2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIG1f
Y29kZUdlbmVyYXRpb25Nb2RlID0gY29kZUJsb2NrLm1fY29kZUdlbmVyYXRpb25Nb2RlOwogICAg
IG1fY29kZVR5cGUgPSBjb2RlQmxvY2subV9jb2RlVHlwZTsKIAotICAgIGZvciAodW5zaWduZWQg
aSA9IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaS0tOykKLSAgICAgICAgbV9saW5rVGltZUNvbnN0
YW50c1tpXSA9IGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRzW2ldOwotCiAgICAgbV9tZXRh
ZGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fbWV0YWRhdGEuZ2V0KCkpOwogICAgIG1f
cmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX3JhcmVEYXRhLmdldCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQ3ZmNkMzM4
YjQwNTk4MzZjZDM2ODFlODRlMDFmYWI3NDMzOTc2NzQuLjI1OTllMmM1NjI5MTBmOTgxNDZjOTE4
YjUyMjQ5Yzg1NWJkMmE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKQEAgLTEyOSw3ICsxMjksOCBAQCBib29sIGlzSW50NTIoZG91YmxlKTsKIGVudW0g
Y2xhc3MgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIDogdWludDhfdCB7CiAgICAgT3RoZXIsCiAg
ICAgSW50ZWdlciwKLSAgICBEb3VibGUKKyAgICBEb3VibGUsCisgICAgTGlua1RpbWVDb25zdGFu
dCwKIH07CiAKIGNsYXNzIEpTVmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGM2NWIwYjM3MGQwMjU3NWUwMGIxZjUwNDkw
OTkxMDdlNzcwZTcyOGQuLmM0MzA0YjlkZmJlZGYwODFjNzFiZmYyZTQ1YWFmOGY4N2VjZTY3YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTEzNSw2ICsxMzUsNyBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVk
ZSAiTGF6eUNsYXNzU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxhenlQcm9wZXJ0eUlu
bGluZXMuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiTG9va3Vw
LmgiCiAjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXBJdGVyYXRvclBy
b3RvdHlwZS5oIgpAQCAtNDExLDYgKzQxMiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGVucXVldWVKb2IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiBK
U0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCAwKQogICAgICwgbV92bSgmdm0pCisgICAgLCBt
X2xpbmtUaW1lQ29uc3RhbnRzKG51bWJlck9mTGlua1RpbWVDb25zdGFudHMpCiAgICAgLCBtX21h
c3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0
KElzV2F0Y2hlZCkpKQogICAgICwgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoYWRvcHRSZWYo
bmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCiAgICAgLCBtX3ZhckluamVjdGlvbldhdGNo
cG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCkBAIC01MjIsOCAr
NTI0LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgSlNGdW5jdGlv
biogYXBwbHlGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgSlNGdW5jdGlvbiogaGFzSW5zdGFuY2VT
eW1ib2xGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+YWRkRnVu
Y3Rpb25Qcm9wZXJ0aWVzKHZtLCB0aGlzLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbiwg
Jmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwotICAgIG1fY2FsbEZ1bmN0aW9uLnNldCh2bSwg
dGhpcywgY2FsbEZ1bmN0aW9uKTsKLSAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBh
cHBseUZ1bmN0aW9uKTsKICAgICBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmluaXRMYXRl
cigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CiAg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25l
ciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgYXJyYXlQcm90
b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKQEAgLTcyMyw3ICs3MjMsOCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQo
dm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpKTsKICAgICBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgQXN5
bmNHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXN5bmNHZW5lcmF0b3JQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9hc3luY0l0ZXJhdG9yUHJvdG90eXBl
LmdldCgpKSkpOwogCi0gICAgbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVuQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0UHJvbWlzZVRoZW4gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVuQ29kZUdlbmVyYXRvcih2bSks
IHRoaXMpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbildLnNldCh2bSwgdGhpcywgZGVmYXVs
dFByb21pc2VUaGVuKTsKIAogI2RlZmluZSBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9TSU1QTEVfVFlQ
RShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFt
ZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIGlmIChmZWF0dXJlRmxhZykgeyBcCiAgICAg
ICAgIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBjYXBpdGFsTmFt
ZSMjUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIGNhcGl0YWxOYW1lIyNQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV8gIyMgcHJvdG90eXBlQmFzZSAjIyBQcm90b3R5cGUu
Z2V0KCkpKSk7IFwKQEAgLTc1MCwxOCArNzUxLDIxIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0g
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgb2JqZWN0Q29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ok9iamVjdCldLnNldCh2bSwgdGhpcywgb2Jq
ZWN0Q29uc3RydWN0b3IpOwogCiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNU
aHJvd1R5cGVFcnJvcik7Ci0gICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhp
cywgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlv
bildLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBGdW5jdGlv
bkNvbnN0cnVjdG9yKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsK
ICAgICBtX2Z1bmN0aW9uQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVj
dG9yKTsKIAogICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5
cGUuZ2V0KCksIG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QXJyYXkpXS5z
ZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOwogICAgIAogICAgIFJlZ0V4cENvbnN0cnVj
dG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJl
Z0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0
dGVyLmdldCgpKTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhw
Q29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3Ry
dWN0b3IpOwogICAgIG1fcmVnRXhwR2xvYmFsRGF0YS5jYWNoZWRSZXN1bHQoKS5yZWNvcmQodm0s
IHRoaXMsIG51bGxwdHIsIGpzRW1wdHlTdHJpbmcodm0pLCBNYXRjaFJlc3VsdCgwLCAwKSk7CiAg
ICAgCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIpCkBAIC03ODMsNiArNzg3LDggQEAg
Y2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZl
YXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50
ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7
CiAgICAgCiAgICAgbV9ldmFsRXJyb3JTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAo
TGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewpAQCAtODQyLDkgKzg0OCw2
IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3Ig
PSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkFycmF5LCBhcnJheUNvbnN0cnVjdG9yLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlZ0V4cCwgcmVnRXhw
Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5PYmplY3RQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5BcnJh
eVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKLQogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFyZWRBcnJheUJ1
ZmZlciwgc2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiQXRvbWljcyIpLCBhdG9taWNz
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CkBAIC05MTcsMTgwICs5MjAsMjI2IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAg
aWYgKE9wdGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkpCiAgICAgICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1vZHVs
ZUxvYWRlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAKLSAgICBKU0Z1bmN0aW9uKiBidWlsdGluTG9nID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCks
IGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKLSAgICBKU0Z1bmN0aW9uKiBidWlsdGluRGVzY3JpYmUg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5
SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSk7Ci0KLSAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RydW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgbWF0aFByb3RvRnVuY1RydW5jLCBUcnVuY0ludHJpbnNpYyk7Ci0KLSAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVt
ZXJhYmxlKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY093bktleXMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jT3duS2V5cyk7Ci0gICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJbXBvcnRNb2R1bGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKTsKLSAgICBKU0Z1
bmN0aW9uKiBwcml2YXRlRnVuY01ha2VUeXBlRXJyb3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcik7Ci0gICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk7Ci0g
ICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rv
ciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKTsKLSAgICBKU0Z1bmN0aW9uKiBw
cml2YXRlRnVuY1R5cGVkQXJyYXlTb3J0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOwotICAgIEpTRnVuY3Rp
b24qIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlW
aWV3LCBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY1R5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc0JvdW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBpc0JvdW5kRnVuY3Rpb24pOwotICAgIEpT
RnVuY3Rpb24qIHByaXZhdGVGdW5jSGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0luc3RhbmNlT2YgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2Yp
OwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGRhdGVQcm90b0Z1bmNHZXRUaW1lKTsKLSNp
ZiBFTkFCTEUoSU5UTCkKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0RhdGVUaW1lRm9ybWF0
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0Rh
dGVUaW1lRm9ybWF0KTsKLSNlbmRpZgotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNBcnJh
eVNsb3cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheUNv
bnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0
ZUZ1bmNDb25jYXRNZW1jcHkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmlu
ZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkpOwotICAgIEpTRnVuY3Rpb24q
IHByaXZhdGVGdW5jQXBwZW5kTWVtY3B5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KTsKLSAgICBKU0Z1
bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQsIEpTTWFwQnVj
a2V0SGVhZEludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRO
ZXh0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0
ZUZ1bmNNYXBCdWNrZXROZXh0LCBKU01hcEJ1Y2tldE5leHRJbnRyaW5zaWMpOwotICAgIEpTRnVu
Y3Rpb24qIHByaXZhdGVGdW5jTWFwQnVja2V0S2V5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXksIEpTTWFwQnVja2V0
S2V5SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVl
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1
bmNNYXBCdWNrZXRWYWx1ZSwgSlNNYXBCdWNrZXRWYWx1ZUludHJpbnNpYyk7Ci0gICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkLCBKU1NldEJ1Y2tl
dEhlYWRJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0TmV4
dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZhdGVG
dW5jU2V0QnVja2V0TmV4dCwgSlNTZXRCdWNrZXROZXh0SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0
aW9uKiBwcml2YXRlRnVuY1NldEJ1Y2tldEtleSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBKU1NldEJ1Y2tldEtl
eUludHJpbnNpYyk7Ci0KICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIg
PSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0
eU5hbWVzLT5mbGFncyk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvRmxh
Z3NHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIgPSBn
ZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5h
bWVzLT5nbG9iYWwpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBt
X3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxH
ZXR0ZXIpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCBy
ZWdFeHBQcm90b0dsb2JhbEdldHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0ln
bm9yZUNhc2VHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdl
dCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5pZ25vcmVDYXNlKTsKICAgICBjYXRjaFNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKV0uc2V0
KHZtLCB0aGlzLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIpOwogICAgIEdldHRlclNldHRl
ciogcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVn
RXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5tdWx0aWxpbmUpOwogICAgIGNh
dGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b011bHRpbGlu
ZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpOwogICAg
IEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRo
aXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOwog
ICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1Nv
dXJjZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIpOwogICAg
IEdldHRlclNldHRlciogcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRo
aXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdGlja3kpOwog
ICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1N0
aWNreUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpOwogICAg
IEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0
aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+dW5pY29kZSk7
CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIG1fcmVnRXhwUHJvdG9V
bmljb2RlR2V0dGVyLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKLSAg
ICBKU09iamVjdCogYnVpbHRpblJlZ0V4cEV4ZWMgPSBhc09iamVjdChtX3JlZ0V4cFByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjKS5hc0NlbGwoKSk7Ci0gICAg
bV9yZWdFeHBQcm90b0V4ZWMuc2V0KHZtLCB0aGlzLCBidWlsdGluUmVnRXhwRXhlYyk7Ci0gICAg
SlNPYmplY3QqIHJlZ0V4cFN5bWJvbFJlcGxhY2UgPSBhc09iamVjdChtX3JlZ0V4cFByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKS5hc0NlbGwo
KSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdF
eHBQcm90b1VuaWNvZGVHZXR0ZXIpOworICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFN5bWJvbFJlcGxh
Y2UgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpKTsKICAgICBtX3JlZ0V4cFByb3RvU3lt
Ym9sUmVwbGFjZS5zZXQodm0sIHRoaXMsIHJlZ0V4cFN5bWJvbFJlcGxhY2UpOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cEJ1aWx0aW5FeGVjKV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fcmVn
RXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWMpKSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSldLnNldCh2bSwgdGhpcywgbV9yZWdF
eHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJv
bCkuYXNDZWxsKCkpOworCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6U2V0KV0uc2V0KHZtLCB0aGlzLCBzZXRDb25zdHJ1Y3Rv
cik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6aXNBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvci0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5KS5hc0NlbGwoKSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
Y2FsbEZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBjYWxsRnVuY3Rpb24pOworICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGx5
RnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGFwcGx5RnVuY3Rpb24pOworCisjZGVmaW5lIElOSVRf
UFJJVkFURV9HTE9CQUwodmFyTmFtZSwgZnVuY05hbWUsIGNvZGUpIFwKKyAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpmdW5jTmFt
ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeyBcCisg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lcik7IFwKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3IoaW5pdC52bSksIGdsb2JhbE9i
amVjdCkpOyBcCisgICAgICAgIH0pOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
UFJJVkFURV9HTE9CQUxfTkFNRShJTklUX1BSSVZBVEVfR0xPQkFMKQorI3VuZGVmIElOSVRfUFJJ
VkFURV9HTE9CQUwKIAotI2RlZmluZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04odmFy
TmFtZSwgZnVuY05hbWUsIGNvZGUpIEpTRnVuY3Rpb24qIHZhck5hbWUgIyMgUHJpdmF0ZUZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKTsKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xPQkFMX05B
TUUoQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKQotI3VuZGVmIENSRUFURV9QUklWQVRF
X0dMT0JBTF9GVU5DVElPTgotCisgICAgLy8gRklYTUU6IEluaXRpYWxpemluZyB0aGVtIGxhemls
eS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNzk1
CiAgICAgSlNPYmplY3QqIGFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBBcnJheUl0ZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIGFycmF5
SXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2Fz
dDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6QXJyYXlJdGVy
YXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlJ
dGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogYXN5bmNGcm9tU3luY0l0ZXJhdG9y
UHJvdG90eXBlID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRo
aXMsIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgYXN5bmNGcm9tU3luY0l0ZXJh
dG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpz
Q2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6QXN5bmNG
cm9tU3luY0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIG1h
cEl0ZXJhdG9yUHJvdG90eXBlID0gTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhp
cywgTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVy
YXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIG1hcEl0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRl
RnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtYXBJ
dGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFu
dChMaW5rVGltZUNvbnN0YW50OjpNYXBJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgbWFwSXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNPYmpl
Y3QqIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwot
ICAgIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWdFeHBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50OjpSZWdFeHBTdHJpbmdJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUpOwog
CiAgICAgSlNPYmplY3QqIHNldEl0ZXJhdG9yUHJvdG90eXBlID0gU2V0SXRlcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgdGhpcywgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIHNldEl0ZXJhdG9y
Q29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBzZXRJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0
Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpTZXRJdGVyYXRvcikpLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2V0SXRlcmF0b3JQcm90b3R5
cGUpOwogCi0gICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
bmV3UHJvbWlzZUNhcGFiaWxpdHlQcml2YXRlRnVuY3Rpb24pOwotICAgIG1fcmVzb2x2ZVByb21p
c2VGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHJlc29sdmVQcm9taXNlUHJpdmF0ZUZ1bmN0aW9uKTsK
LSAgICBtX3JlamVjdFByb21pc2VGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHJlamVjdFByb21pc2VQ
cml2YXRlRnVuY3Rpb24pOworICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFw
QnVja2V0SGVhZCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0
ZUZ1bmNNYXBCdWNrZXRIZWFkLCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpKTsKKyAgICAgICAg
fSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6bWFwQnVja2V0TmV4dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJp
bmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBKU01hcEJ1Y2tldE5leHRJbnRyaW5z
aWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0S2V5KV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleSwgSlNNYXBCdWNr
ZXRLZXlJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0VmFsdWUpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0
VmFsdWUsIEpTTWFwQnVja2V0VmFsdWVJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
c2V0QnVja2V0SGVhZCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgc2V0UHJp
dmF0ZUZ1bmNTZXRCdWNrZXRIZWFkLCBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWMpKTsKKyAgICAg
ICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6c2V0QnVja2V0TmV4dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBT
dHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBKU1NldEJ1Y2tldE5leHRJbnRy
aW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6c2V0QnVja2V0S2V5KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgSlNTZXRC
dWNrZXRLZXlJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbXBvcnRNb2R1bGUp
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNJbXBvcnRNb2R1
bGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cHJvcGVydHlJc0VudW1lcmFibGUpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJs
ZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpvd25LZXlzKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCBnbG9iYWxGdW5jT3duS2V5cykpOworICAgICAgICB9KTsKKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpl
bnF1ZXVlSm9iKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0
KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsICJlbnF1ZXVlSm9iIl9zLCBlbnF1
ZXVlSm9iKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlMZW5ndGgpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpKTsKKyAgICAgICAg
fSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6dHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmln
aW5hbENvbnN0cnVjdG9yKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlTb3J0KV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVG
dW5jU29ydCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc1R5cGVkQXJyYXlWaWV3KV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNU
eXBlZEFycmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYykpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50Ojp0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSkpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50Ojppc0JvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVy
KSwgMCwgU3RyaW5nKCksIGlzQm91bmRGdW5jdGlvbikpOworICAgICAgICB9KTsKKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpo
YXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5n
KCksIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbnN0
YW5jZU9mKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBvYmplY3RQcml2YXRl
RnVuY0luc3RhbmNlT2YpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkxvZyldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpKTsKKyAg
ICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkRlc2NyaWJlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDEsIFN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJlKSk7CisgICAgICAgIH0pOwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OnRydW5jKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXRoUHJv
dG9GdW5jVHJ1bmMsIFRydW5jSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlcGVh
dENoYXJhY3RlcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJv
dG9GdW5jUmVwZWF0Q2hhcmFjdGVyKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFycmF5U3BlY2ll
c0NyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgYXJyYXlQcm90b0Z1
bmNTcGVjaWVzQ3JlYXRlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXlTbG93KV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1
bmNJc0FycmF5U2xvdykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpjb25jYXRNZW1jcHkpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNh
dE1lbWNweSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcHBlbmRNZW1jcHkpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNw
eSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJl
amVjdGlvblRyYWNrZXIpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBpbml0LnNldChJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICAg
ICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBT
dHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90b3R5cGVHZXRUaW1lSW50cmlu
c2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQ29uc3RydWN0b3IpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMSwgU3RyaW5nKCksIGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSk7
CisgICAgICAgIH0pOworCisgICAgLy8gUmVnRXhwLnByb3RvdHlwZSBoZWxwZXJzLgorICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnJlZ0V4cENyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZXNTcGVj
UmVnRXhwQ3JlYXRlLCBOb0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc1JlZ0V4
cCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5v
SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cE1hdGNoRmFzdCldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0LCBS
ZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwU2Vh
cmNoRmFzdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9G
dW5jU2VhcmNoRmFzdCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBTcGxpdEZhc3QpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFz
dCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBUZXN0RmFzdCldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QsIFJlZ0V4cFRlc3RG
YXN0SW50cmluc2ljKSk7CisgICAgICAgIH0pOworCisgICAgLy8gU3RyaW5nLnByb3RvdHlwZSBo
ZWxwZXJzLgorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMSwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnN0cmluZ1NwbGl0RmFzdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAy
LCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KSk7CisgICAgICAgIH0pOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OnN0cmluZ1N1YnN0ckludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmlu
ZygpLCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwpKTsKKyAgICAgICAgfSk7CisKKyAgICAv
LyBGdW5jdGlvbiBwcm90b3R5cGUgaGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlQm91bmRGdW5jdGlvbild
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCA1LCBTdHJpbmcoKSwgbWFrZUJvdW5kRnVuY3Rpb24pKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6aGFzT3duTGVuZ3RoUHJvcGVydHkpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMSwgU3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSk7CisgICAgICAgIH0p
OwogCi0gICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKLSNkZWZpbmUg
SU5JVF9QUklWQVRFX0dMT0JBTCh2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmNOYW1lICMjIFByaXZh
dGVOYW1lKCksIHZhck5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJ
VkFURV9HTE9CQUxfTkFNRShJTklUX1BSSVZBVEVfR0xPQkFMKQotI3VuZGVmIElOSVRfUFJJVkFU
RV9HTE9CQUwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5h
TiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb3BlcnR5SXNFbnVtZXJhYmxlUHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkub3duS2V5c1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jT3duS2V5cywg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW1wb3J0TW9kdWxlUHJpdmF0
ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJbXBvcnRNb2R1bGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmVucXVldWVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsICJlbnF1ZXVlSm9iIl9zLCBlbnF1ZXVlSm9iKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFrZVR5cGVFcnJvclByaXZhdGVOYW1lKCksIHBy
aXZhdGVGdW5jTWFrZVR5cGVFcnJvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkudHlwZWRBcnJheUxlbmd0aFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJh
eUxlbmd0aCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJh
eUdldE9yaWdpbmFsQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJy
YXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS50eXBlZEFycmF5U29ydFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJh
eVNvcnQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzVHlwZWRBcnJh
eVZpZXdQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZVBy
aXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0JvdW5kRnVuY3Rpb25Qcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY0lzQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUoKSwgcHJp
dmF0ZUZ1bmNIYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmluc3RhbmNlT2ZQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0luc3Rh
bmNlT2YsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkJ1aWx0aW5Mb2dQ
cml2YXRlTmFtZSgpLCBidWlsdGluTG9nLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5CdWlsdGluRGVzY3JpYmVQcml2YXRlTmFtZSgpLCBidWlsdGluRGVzY3JpYmUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlJlZ0V4cFByaXZhdGVOYW1lKCks
IHJlZ0V4cENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS50cnVuY1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHJ1bmMsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlByb21pc2VQcml2YXRlTmFtZSgpLCBwcm9taXNlQ29uc3Ry
dWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkludGVybmFsUHJv
bWlzZVByaXZhdGVOYW1lKCksIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5kZWZhdWx0UHJvbWlzZVRoZW5Qcml2YXRlTmFt
ZSgpLCBwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZXBlYXRDaGFyYWN0ZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFy
YWN0ZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcnJheVNwZWNp
ZXNDcmVhdGVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0
cmluZygpLCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pc0FycmF5UHJpdmF0ZU5hbWUoKSwgYXJyYXlDb25zdHJ1Y3Rv
ci0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5KSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNBcnJheVNsb3dQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0lzQXJyYXlTbG93LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5jb25jYXRNZW1jcHlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0NvbmNhdE1lbWNweSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwZW5kTWVtY3B5UHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQ
cm9taXNlUmVqZWN0aW9uVHJhY2tlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuU2V0UHJpdmF0
ZU5hbWUoKSwgc2V0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnRoaXNUaW1lVmFsdWVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1RoaXNUaW1lVmFs
dWUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiBFTkFCTEUoSU5UTCkK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmRhdGVUaW1lRm9ybWF0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNEYXRlVGltZUZvcm1h
dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRhdGVUaW1lRm9y
bWF0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRp
bWVGb3JtYXQpKTsKKyAgICAgICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCi0KLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlz
Q29uc3RydWN0b3JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEs
IFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9GbGFnc0dldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVn
RXhwUHJvdG9HbG9iYWxHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3Rv
SWdub3JlQ2FzZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b011bHRp
bGluZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
UHJvdG9Tb3VyY2VHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1NvdXJjZUdldHRlciwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9TdGlja3lH
ZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1N0aWNreUdldHRlciwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyUHJpdmF0
ZU5hbWUoKSwgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gUmVnRXhwLnByb3RvdHlwZSBoZWxwZXJzLgotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
cmVnRXhwQnVpbHRpbkV4ZWNQcml2YXRlTmFtZSgpLCBidWlsdGluUmVnRXhwRXhlYywgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwQ3JlYXRlUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZXNTcGVjUmVnRXhw
Q3JlYXRlLCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmlzUmVnRXhwUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAx
LCBTdHJpbmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwTWF0Y2hGYXN0UHJpdmF0ZU5hbWUoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jTWF0
Y2hGYXN0LCBSZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBTZWFyY2hGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFz
dCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFNwbGl0RmFz
dFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCks
IHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2VQcml2YXRlTmFtZSgpLCBtX3Jl
Z0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3lt
Ym9sKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwVGVzdEZh
c3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygp
LCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gU3RyaW5nLnByb3Rv
dHlwZSBoZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuc3RyaW5nSW5jbHVkZXNJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdJbmNs
dWRlc0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3Ry
aW5nU3BsaXRGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAy
LCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RyaW5nU3Vic3RySW50ZXJuYWxQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBidWlsdGluU3RyaW5nU3Vi
c3RySW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAg
ICAgLy8gRnVuY3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlQm91bmRGdW5jdGlvblBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgNSwgU3RyaW5nKCksIG1h
a2VCb3VuZEZ1bmN0aW9uKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
aGFzT3duTGVuZ3RoUHJvcGVydHlQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDEsIFN0cmluZygpLCBoYXNPd25MZW5ndGhQcm9wZXJ0eSksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkubWFwQnVja2V0SGVhZFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0TmV4dFByaXZh
dGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0S2V5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNN
YXBCdWNrZXRLZXksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1
Y2tldFZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0SGVhZFByaXZhdGVOYW1l
KCksIHByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuc2V0QnVja2V0TmV4dFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jU2V0QnVj
a2V0TmV4dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0
S2V5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShX
RUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQotICAgICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1p
bmcgQVBJCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS53ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbFByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5
Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkud2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1i
bHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAorICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJB
c3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAx
LCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpKTsKKyAgICAg
ICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUluc3RhbnRpYXRl
U3RyZWFtaW5nSW50ZXJuYWwpKTsKKyAgICAgICAgfSk7CiAjZW5kaWYKKworICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5l
ZCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuYXNzZXJ0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAxLCBTdHJpbmcoKSwgYXNzZXJ0Q2FsbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKICNlbmRpZgogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxz
LCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKLSAgICBtX3NwZWNpYWxQ
b2ludGVyc1tTcGVjaWFsOjpDYWxsRnVuY3Rpb25dID0gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7Ci0g
ICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXBwbHlGdW5jdGlvbl0gPSBtX2FwcGx5RnVu
Y3Rpb24uZ2V0KCk7Ci0gICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3Ry
dWN0b3JdID0gb2JqZWN0Q29uc3RydWN0b3I7Ci0gICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lh
bDo6QXJyYXlDb25zdHJ1Y3Rvcl0gPSBhcnJheUNvbnN0cnVjdG9yOwotCi0gICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6VGhyb3dU
eXBlRXJyb3JGdW5jdGlvbildID0gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLmdldCgpOwotCiAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZURvbGxhclZNKCkpKQogICAgICAgICBleHBvc2VE
b2xsYXJWTSh2bSk7CiAKQEAgLTE3MTEsMjIgKzE3NjAsMTYgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAg
ICAgdGhpc09iamVjdC0+bV9wYXJzZUludEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fcGFyc2VGbG9hdEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJh
eVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX2V2YWxGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJh
dG9yUHJvdG9jb2xGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3By
b21pc2VSZXNvbHZlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jlc29sdmVQcm9taXNlRnVuY3Rpb24pOwotICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbik7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udW1iZXJQcm90b1RvU3RyaW5nRnVu
Y3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b0hh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJy
b3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2UpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJT
ZXR0ZXIpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyLnZpc2l0KHZpc2l0b3IpOwog
CkBAIC0xNzk0LDYgKzE4MzcsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9w
cm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2Nh
bGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9wcm94eVJldm9rZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKworICAgIGZvciAoYXV0
byYgcHJvcGVydHkgOiB0aGlzT2JqZWN0LT5tX2xpbmtUaW1lQ29uc3RhbnRzKQorICAgICAgICBw
cm9wZXJ0eS52aXNpdCh2aXNpdG9yKTsKICAgICAKICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JV
RkZFUikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVy
UHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IDg5MjZhYWFkZmQ2OGQxYWYxMjkyODA0ZTJkMDM0MjJkN2ZmNDRmNjUuLjMx
NWRmMWQ1MzdmZjdmMzZiODE3OTE5YzhmZDU5YzNmNGM0YTZkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDIsNyArNDIsNiBAQAog
I2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwR2xvYmFsRGF0YS5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVGbGFncy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAj
aW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiVk0uaCIKQEAgLTExOSw2ICsxMTgsNyBAQCBjbGFzcyBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFj
dGl2YXRpb25TdGFja05vZGU7CiBzdHJ1Y3QgSGFzaFRhYmxlOworZW51bSBjbGFzcyBMaW5rVGlt
ZUNvbnN0YW50IDogaW50MzJfdDsKIAogI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECiBjbGFz
cyBXcmFwcGVyTWFwOwpAQCAtMjk3LDI2ICsyOTcsMTYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3BhcnNlSW50RnVuY3Rpb247CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3BhcnNlRmxvYXRGdW5jdGlvbjsK
IAotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKLSAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcHBseUZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0
aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpT
RnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwotICAg
IFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247
Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbjsK
LSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9yZWplY3RQcm9taXNlRnVuY3Rpb247Ci0g
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uOwog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9u
OwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblByb3RvSGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEdl
dHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKLSAgICBXcml0ZUJhcnJp
ZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJvdG9FeGVjOwogICAgIFdyaXRlQmFycmllcjxKU09iamVj
dD4gbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2U7Ci0gICAgV3JpdGVCYXJyaWVyPEdldHRlclNl
dHRlcj4gbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlcjsKLSAgICBXcml0ZUJhcnJpZXI8R2V0dGVy
U2V0dGVyPiBtX3JlZ0V4cFByb3RvVW5pY29kZUdldHRlcjsKICAgICBXcml0ZUJhcnJpZXI8R2V0
dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVy
U2V0dGVyOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRl
cj4gbV9tb2R1bGVMb2FkZXI7CkBAIC00MzAsOCArNDIwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgRk9SX0VBQ0hfVFlQ
RURfQVJSQVlfVFlQRShERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFKQogI3VuZGVm
IERFQ0xBUkVfVFlQRURfQVJSQVlfVFlQRV9TVFJVQ1RVUkUKIAotICAgIEpTQ2VsbCogbV9zcGVj
aWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2Vk
IGJ5IHRoZSBMTEludCBhbmQgSklULgotICAgIEpTQ2VsbCogbV9saW5rVGltZUNvbnN0YW50c1tM
aW5rVGltZUNvbnN0YW50Q291bnRdOworICAgIFZlY3RvcjxMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIEpTQ2VsbD4+IG1fbGlua1RpbWVDb25zdGFudHM7CiAKICAgICBTdHJpbmcgbV9uYW1l
OwogCkBAIC02MTYsMjQgKzYwNSwyMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBwYXJzZUZsb2F0RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlRmxvYXRGdW5jdGlvbi5nZXQodGhpcyk7IH0K
IAogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEZ1
bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogYXBwbHlG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpT
RnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Rocm93
VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJv
ckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1RvU3RyaW5nRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldCh0
aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpT
RnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRl
cmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIG5ld1By
b21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1Byb21pc2VDYXBh
YmlsaXR5RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJp
bGl0eUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7
IH0KLSAgICBKU0Z1bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogcmVq
ZWN0UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWplY3RQcm9taXNlRnVuY3Rp
b24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbi5nZXQoKTsgfQorICAgIEpT
RnVuY3Rpb24qIHJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9u
KiByZWplY3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9uKiBwcm9taXNl
UHJvdG9UaGVuRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBvYmplY3RQcm90b1Zh
bHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rp
b24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQoKTsgfQog
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5n
ZXQoKTsgfQotICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwUHJvdG9FeGVjLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVnRXhw
UHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1i
b2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVw
bGFjZS5nZXQoKTsgfQotICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLmdldCgpOyB9Ci0gICAg
R2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlZ0V4cFByb3RvVW5pY29kZUdldHRlci5nZXQoKTsgfQorICAgIEdldHRlclNldHRlciogcmVn
RXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKKyAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFBy
b3RvVW5pY29kZUdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogdGhyb3dUeXBlRXJy
b3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0
ZXIuZ2V0KCk7CkBAIC05MTEsMTYgKzg5OCw5IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4gbGF6eVR5cGVk
QXJyYXlTdHJ1Y3R1cmUodHlwZSkuY29uc3RydWN0b3IodGhpcyk7CiAgICAgfQogCi0gICAgSlND
ZWxsKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKKyAgICBKU0Nl
bGwqIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB2YWx1ZSkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKLSAgICAgICAg
cmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwotICAgIH0KLSAgICBKU0NlbGwqIGpz
Q2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAg
ICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVy
biBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKV0uZ2V0KHRoaXMpOwogICAgIH0K
IAogICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCkg
eyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGlu
ZXMuaAppbmRleCBlMDM2OWJlY2IwNmYzYjk4MmNmZDkwYTVkYjIwMzllNjMzYmQ0MTI1Li4zZjI2
ZDVjYWZlMmJmNzU2MTRiZDIwNzY3Yjg0NDIwNDAyZDA1ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFy
cmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUg
Ik9iamVjdFByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMiw2ICsxMDMsMTUg
QEAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEpTR2xvYmFsT2JqZWN0OjphcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG8KICAgICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmFycmF5
Q29uc3RydWN0b3IoKSwgbmV3VGFyZ2V0LCBhcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSk7CiB9CiAKK2lubGluZSBKU0Z1bmN0aW9uKiBK
U0dsb2JhbE9iamVjdDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSk7IH0KK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2Jh
bE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpuZXdQcm9taXNlQ2FwYWJpbGl0eSkpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxP
YmplY3Q6OnJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVzb2x2
ZVByb21pc2UpKTsgfQoraW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0OjpyZWplY3RQ
cm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+
KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZSkpOyB9Citp
bmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b1RoZW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25z
dGFudChMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pKTsgfQoraW5saW5lIEpT
RnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYykpOyB9CitpbmxpbmUgR2V0dGVyU2V0dGVy
KiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcikpOyB9CitpbmxpbmUgR2V0dGVyU2V0dGVy
KiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEdldHRlclNldHRlcio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKSk7IH0KKwogQUxXQVlTX0lOTElORSBW
TSYgZ2V0Vk0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2ZWJjOTM3ZjJmNTg1MjA5YTQ2NTE1ODNmYTBmNzRm
NmNlMzk5YTYuLjM5ZmYyOTY1NjI2YzE5N2YzNGM1NzdjMTU1NjUyNmI3OTE4YzA5MjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0YW50IG1lY2hh
bmlzbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
NzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVz
LXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTExLTAyICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIF0gaW5z
cGVjdG9yL2RvbS9nZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUuaHRtbCBpcyBmYWls
aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxl
dGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1k
ZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dAppbmRleCBlODJhNzk5NzZkYzZm
M2ZmY2Y4YTVlZTgzN2M4N2FlMjgxMWEyYTg5Li4yMTI1ZmI1Mjk3MWNlY2VhYjdjMDgwMzRmMmQ1
MzZjN2EyYTRiNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
dGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQt
ZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQKQEAgLTE0
LDYgKzE0LDYgQEAgQ0FMTCBTVEFDSzoKIDM6IFtGXSBzdGFydEFCQwogICB0aGlzOiB1bmRlZmlu
ZWQKIDQ6IFtQXSBHbG9iYWwgQ29kZQotICB0aGlzOiB0ZXN0IC0gCisgIHRoaXM6IGMgLSAKIFJF
U1VNRUQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382700</attachid>
            <date>2019-11-03 01:00:45 -0800</date>
            <delta_ts>2019-11-03 01:58:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103010045.patch</filename>
            <type>text/plain</type>
            <size>134636</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi44NmI1ZGYzNWZmYzE0N2Uw
ZGRkNzU3MjlkY2Q1YzE0NjVlMTQ3ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDYgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
TmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAg
ICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rv
ci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9taXNlLnJl
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFsUHJvbWlz
ZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ29u
c3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6
dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVu
dHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmguCisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cmVn
aXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6YXN5bmNHZW5l
cmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qbmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJl
c29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAg
ICAoSlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1RpbWVDb25zdGFu
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsRnVuY3Rpb24gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXBwbHlGdW5jdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVu
Y3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJv
bWlzZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjphY3R1YWxQb2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rpb24gY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFs
R2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3Rv
VW5pY29kZUdldHRlciBjb25zdCk6CisKIDIwMTktMTEtMDIgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
cjI1MTg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYyNWZmNjFkYjk5
MGFkN2Y2ODhhYThlYzE2ZjFkZjlkOGI2ZWM3NjIuLmZlNzBhMzUyMmQ2ZTNmYWM2OTAxNmZkNjhm
YjA1Mzk5NjczZTE0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
Miw2ICs1MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKICAgICBieXRlY29kZS9MTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAogICAgIGJ5dGVjb2RlL0xh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmgKKyAgICBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgK
ICAgICBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKICAgICBieXRlY29kZS9PYmplY3RBbGxvY2F0
aW9uUHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaApAQCAt
NTI5LDcgKzUzMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25k
aXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvU3BlY2lh
bFBvaW50ZXIuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGFiODQ2OWEyYWIxYzU4ZjI4ZjExNzIxYjQ1YjRiM2ZjMmM5MDAy
ODUuLjA0M2M4NjQ5MDFkNWQ0NTFlMGVkMWM1ODk2YzA2Njk2ZDEzZWRmYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNjIsNyArMzYyLDYgQEAKIAkJMEY0RjgyOEMxRTMxQjk3
NjAwNzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRGODI4QTFFMzFCOTcx
MDA3NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCAqLzsgfTsK
IAkJMEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MEFGM0Ix
OTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovOyB9OwogCQkw
RjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTUxM0E1MUQ1QTY4MkEwMEMzMkJEOCAvKiBG
cmVlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTQxQjAxNjEzQzFGQjAw
Q0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZl
RnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjU1OTg5NzE3Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBGNTE0RDEw
NjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU2
QTFEMzE1MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NkExRDExNTAwMEYzMTAwMjk5MkIx
IC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTgxMiw2ICsxODExLDcgQEAKIAkJRTM1Q0ExNTQxREJDM0E1QzAw
RjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBS
YW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYw
MEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29u
c3RhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NjM3RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAw
RDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNt
T01HRm9yT1NSRW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAv
KiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0
RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTI1ODUsOCArMjU4NSw2IEBACiAJCTBGNTBBRjNCMTkzRThCMzkwMDY3NEVF
OCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0
dXJlQ2xvYmJlclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTUxM0E1
MUQ1QTY4MkEwMEMzMkJEOCAvKiBGcmVlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGcmVlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1MTNB
NzFENUE2OENCMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJlZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lh
bFBvaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY2lhbFBvaW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTk4OTcxN0M4NkM1NjAwQTFF
NTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRvTmF0aXZlRnJvbVZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVDMTkzMTcyNzZFNDYwMENF
QUJGRCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0Fic3RyYWN0VmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0VmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MzUs
NiArNDkzMyw4IEBACiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2
MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rVGltZUNvbnN0
YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkUyMkY4RDYxMTAw
RDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIzNyw2ICs4MjM3LDggQEAKIAkJCQlCQ0ZE
OEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1
NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLywKKwkJ
CQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5jcHAgKi8sCisJ
CQkJRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLywKIAkJ
CQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJ
CQk1M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQk1M0ZBMkFFMDFDRjM3RjNGMDAyMjcxMUQg
LyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCkBA
IC04Mjg0LDggKzgyODYsNiBAQAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNv
cmRlZFN0YXR1c2VzLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVj
ZVdoaXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1
Y2VXaGl0ZXNwYWNlLmggKi8sCi0JCQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNp
YWxQb2ludGVyLmNwcCAqLywKLQkJCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lh
bFBvaW50ZXIuaCAqLywKIAkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRl
ZFR5cGUuY3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVk
VHlwZS5oICovLAogCQkJCTBGQjQzOEEyMTkyNzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQu
Y3BwICovLApAQCAtOTQ0OCw2ICs5NDQ4LDcgQEAKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FF
M0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkFGMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUyMjkyN0Q1MjM1RkQwQjkwMDVDQjE2OSAvKiBHQ01lbW9y
eU9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTcxNTMxMUVCMjhCRUUwMEExNjQ1
RCAvKiBHQ1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NEU4RUIwMThCRkZCQkIwMDU1
NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRFOEVCMTE4
QkZGQkJFMDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtOTg0Myw2ICs5ODQ0LDcgQEAKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyog
TGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBM
ZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAv
KiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzYzN0VFOTIzNkU1NkIwMDA5NkJE
MEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIwRkI0
NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwREU5
QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAwOTYsNyArMTAwOTgsNiBAQAogCQkJCTBGREU4N0ZDMURGRTZFNTEwMDY0
QzM5MCAvKiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtK
SVQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVj
aWFsUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5Qzk0
IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg1RjZCQzE4QzU1M0ZF
MDBGMTA2MjYgLyogU3BpbGxSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNB
Qzc1MjE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGM5MDhhZmI1MGUwNWMxOGNlNmRlMWIxZDdj
ZDY1ZDZjNTg4ZGUzMjguLjUxOTIxZDcxODYwOWJhMWU3YjQ4MTQxMDYzNDdhZWQyMmU4NjA4ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI0NCw2ICsyNDQsNyBAQCBieXRlY29k
ZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAog
Ynl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cAogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCitieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmNwcAogYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKIGJ5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlLmNwcApAQCAtMjYzLDcgKzI2NCw2IEBAIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
Y3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAotYnl0ZWNvZGUvU3BlY2lhbFBvaW50
ZXIuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVNl
dC5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggZGQzM2Nh
ODAzNmEzMGJmNjRlMDhhMGEzODdlZTFiNWI3MTFhNzhmMS4uZDQzZTQ4ZjBiYTMxZWJkY2Y4YmVk
MThiNmU5YWIwYjhkYmY1NjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBK
U0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1hY3JvKSBc
CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRSht
YWNybykgXAogICAgIG1hY3JvKGFkZCkgXAorICAgIG1hY3JvKGFwcGx5RnVuY3Rpb24pIFwKICAg
ICBtYWNybyhhcnJheUl0ZXJhdG9yTmV4dEluZGV4KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRp
b25LaW5kKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHQpIFwKQEAgLTUyLDYgKzUzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvcktpbmQpIFwKICAgICBt
YWNybyhhcnJheVNwZWNpZXNDcmVhdGUpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKKyAgICBtYWNy
byhjYWxsRnVuY3Rpb24pIFwKICAgICBtYWNybyhjaGFyQ29kZUF0KSBcCiAgICAgbWFjcm8oZXhl
Y3V0b3IpIFwKICAgICBtYWNybyhpc1ZpZXcpIFwKQEAgLTczLDYgKzc1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgbWFjcm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAogICAgIG1hY3JvKG93bktl
eXMpIFwKICAgICBtYWNybyhTZXQpIFwKKyAgICBtYWNybyh0aHJvd1R5cGVFcnJvckZ1bmN0aW9u
KSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlT
b3J0KSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0
b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9y
LmpzCmluZGV4IDMwZmM2NmU0Yjg5ZjJlYTBiZDY5YTdiODFkZTEzODUwZjAxY2RiNzQuLjY2Zjk1
MWZiNGZjNmQxYzY1MWUwMzA3NzBkZWQ1MTVlOTBkZWI5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMjM3LDE5
ICsyMzcsMTYgQEAgZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJvbWlzZSA9
IEBjcmVhdGVQcm9taXNlKHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNlKTsKICAg
ICB2YXIgY2FwdHVyZWRQcm9taXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYWxsb3cgdXNpbmcgZnVuY3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3Qg
PSBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21p
c2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJl
YXNvbik7Ci0gICAgfTsKLQogICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAg
ICAgZnVuY3Rpb24gQHJlc29sdmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVy
biBAcmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0
dXJlZFByb21pc2UsIHJlc29sdXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlv
bkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAg
ICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJl
amVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBl
cnJvcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0yNjYsMTkgKzI2MywxNiBA
QCBmdW5jdGlvbiBJbnRlcm5hbFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFyIHByb21pc2UgPSBA
Y3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyB0cnVlKTsKICAgICB2
YXIgY2FwdHVyZWRQcm9taXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YWxsb3cgdXNpbmcgZnVuY3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3QgPSBm
dW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VX
aXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNv
bik7Ci0gICAgfTsKLQogICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAg
ZnVuY3Rpb24gQHJlc29sdmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBA
cmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJl
ZFByb21pc2UsIHJlc29sdXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNh
bGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAgICB9
IGNhdGNoIChlcnJvcikgewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJlamVj
dFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJv
cik7CiAgICAgfQogCiAgICAgcmV0dXJuIHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBhZjgwNzY5MzMyYzljYjUw
ZTIyY2MzM2RhYzc0NWEyZGJlMGZlMzA0Li44NThhYjkwNTAyZTg0ZDcwNzkxNTMyNWY2OTNlZTNk
NWQ1ODVjOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUR1bXBlci5jcHAKQEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6ZHVtcENvbnN0YW50cygpCiAgICAgICAgICAgICBjYXNlIFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbjo6T3RoZXI6CiAgICAgICAgICAgICAgICAgc291cmNlQ29kZVJlcHJl
c2VudGF0aW9uRGVzY3JpcHRpb24gPSAiIjsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50Ogor
ICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIjog
aW4gc291cmNlIGFzIGxpbmtlLXRpbWUtY29uc3RhbnQiOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIgICBrJXUg
PSAlcyVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRvQ1N0cmluZyhjb25zdGFudC5n
ZXQoKSkuZGF0YSgpLCBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAg
ICAgICAgICArK2k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggZDQxNjMzYzU1YjYwOWNk
NTdlMjQzYjJiMWE0YzQ0MDkyMTRjNWFkYS4uYmRiYjc5MmY0ZjcwNTU3OGY4ZWJhNmNjMmUwYWNi
NDNkNDczOGM4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtNDIsNyArNDIsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJ
Q19OQU1FU19UT19TRVQobmFtZSkgbV9ieXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljXyMjbmFtZSk7CisjZGVmaW5lIElOSVRJ
QUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RPX1NFVChuYW1lKSBtX2J5dGVjb2RlSW50
cmluc2ljTWFwLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uYW1lIyNQcml2
YXRlTmFtZSgpLmltcGwoKSwgRW50cnkoJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfIyNuYW1lKSk7CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05B
TUVTX1RPX1NFVF9GT1JfTElOS19USU1FX0NPTlNUQU5UKGEwLCBuYW1lLCBhMSkgbV9ieXRlY29k
ZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMj
UHJpdmF0ZU5hbWUoKS5pbXBsKCksIEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZSk7CiAKIEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZt
KQogICAgIDogbV92bSh2bSkKQEAgLTUwLDYgKzUxLDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiB7CiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVD
T0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQpCiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRS
SU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19O
QU1FU19UT19TRVQpCisgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhJTklUSUFM
SVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFO
VCkKIAogICAgIG1fdW5kZWZpbmVkLnNldChtX3ZtLCBqc1VuZGVmaW5lZCgpKTsKICAgICBtX0lu
ZmluaXR5LnNldChtX3ZtLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCkpKTsKQEAgLTk4LDEzICsxMDAsMTMgQEAgQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9Bc3luY0dl
bmVyYXRvclN1c3BlbmRSZWFzb25Ob25lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5v
bmUpKSk7CiB9CiAKLUJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAor
T3B0aW9uYWw8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk+IEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAg
ICBpZiAoIWlkZW50LmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fYnl0ZWNv
ZGVJbnRyaW5zaWNNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBt
X2J5dGVjb2RlSW50cmluc2ljTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCBmYWViMjM4OWI4ZmQ3MGVlNWY5NDkzNWYzOGE3
NGE2MTU2Nzg2OWJmLi41NjdiMDI2YjVlMWQwNWM4MzZjMDE5YzkzN2M4NTA5NTNjODI1ZjcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMzcsNyAr
MTM4LDQ0IEBAIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogCiAgICAgdHlwZWRl
ZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJUeXBlKShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKIAotICAgIEVtaXR0ZXJUeXBlIGxvb2t1cChj
b25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7
CisgICAgICAgIEVtaXR0ZXIgPSAwLAorICAgICAgICBMaW5rVGltZUNvbnN0YW50ID0gMSwKKyAg
ICB9OworCisgICAgY2xhc3MgRW50cnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgRW50cnkoKQor
ICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9lbWl0dGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIEVudHJ5KEVtaXR0
ZXJUeXBlIGVtaXR0ZXIpCisgICAgICAgICAgICA6IG1fdHlwZShUeXBlOjpFbWl0dGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2VtaXR0ZXIgPSBlbWl0dGVyOworICAgICAgICB9CisKKyAg
ICAgICAgRW50cnkoTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KQorICAgICAgICAg
ICAgOiBtX3R5cGUoVHlwZTo6TGlua1RpbWVDb25zdGFudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9saW5rVGltZUNvbnN0YW50ID0gbGlua1RpbWVDb25zdGFudDsKKyAgICAgICAgfQorCisg
ICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICBMaW5r
VGltZUNvbnN0YW50IGxpbmtUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmtUaW1l
Q29uc3RhbnQ7IH0KKyAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZW1pdHRlcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5pb24geworICAgICAgICAg
ICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOworICAgICAgICAgICAgTGlua1RpbWVDb25zdGFudCBt
X2xpbmtUaW1lQ29uc3RhbnQ7CisgICAgICAgIH07CisgICAgICAgIFR5cGUgbV90eXBlOworICAg
IH07CisKKyAgICBPcHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0IElkZW50aWZpZXImKSBjb25z
dDsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VO
RVJBVE9SUyhuYW1lKSBKU1ZhbHVlIG5hbWUjI1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAg
ICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShKU0Nf
REVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKQEAgLTE0NSw3
ICsxODMsNyBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogcHJpdmF0ZToK
ICAgICBWTSYgbV92bTsKLSAgICBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVt
aXR0ZXJUeXBlLCBJZGVudGlmaWVyUmVwSGFzaD4gbV9ieXRlY29kZUludHJpbnNpY01hcDsKKyAg
ICBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVudHJ5LCBJZGVudGlmaWVyUmVw
SGFzaD4gbV9ieXRlY29kZUludHJpbnNpY01hcDsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRF
Q09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1lKSBTdHJvbmc8VW5rbm93bj4g
bV8jI25hbWU7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX1NJ
TVBMRV9FQUNIX05BTUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dF
TkVSQVRPUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgppbmRleCBkNjUyYjY1ODg0Yzc4YjAzYmQ4MGQyZDY3ZDQ4ZjE2ODYxMGI5YTc4Li4zNGMx
NTJhMGQ2NjJmMzUyOTdkZjE0NDQ4NjRmYjRiYmEzNDBlZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTY0LDEwICs2NCw2IEBACiAg
ICAgOk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLAogXQogCi1uYW1lc3BhY2UgOlNwZWNpYWwgZG8K
LSAgICB0eXBlcyBbIDpQb2ludGVyIF0KLWVuZAotCiB0ZW1wbGF0ZXMgWwogICAgIDpXcml0ZUJh
cnJpZXIsCiAgICAgOldyaXRlQmFycmllckJhc2UsCkBAIC02NzUsNyArNjcxLDcgQEAKIG9wIDpq
bmVxX3B0ciwKICAgICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0g
ICAgICAgIHNwZWNpYWxQb2ludGVyOiBTcGVjaWFsOjpQb2ludGVyLAorICAgICAgICBzcGVjaWFs
UG9pbnRlcjogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJl
bCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDVlYzI0NmM5MWQ4MmVjZTYyNGRkZGMyNmFiYjVkNTU0
MjQzZGI5ODIuLjBmOGU3ZjhiNGY5MjQ0NDczODJhNWQ4ZTg4MTM3NjA3ZDQ5YzI0YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zOTksMTIg
KzM5OSw2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgc2V0Q29uc3RhbnRSZWdpc3Rl
cnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVubGlua2VkQ29kZUJs
b2NrLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSwgdG9wTGV2ZWxFeGVjdXRh
YmxlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGkrKykgewot
ICAgICAgICBMaW5rVGltZUNvbnN0YW50IHR5cGUgPSBzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0
YW50PihpKTsKLSAgICAgICAgaWYgKHVuc2lnbmVkIHJlZ2lzdGVySW5kZXggPSB1bmxpbmtlZENv
ZGVCbG9jay0+cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpCi0gICAgICAg
ICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZ2lzdGVySW5kZXhdLnNldCh2bSwgdGhpcywgbV9n
bG9iYWxPYmplY3QtPmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOwotICAgIH0KLQog
ICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmb3IgdGhlIG1v
ZHVsZSBlbnZpcm9ubWVudCBzaW5jZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlCiAgICAgLy8gdGhl
IG1vZHVsZSBlbnZpcm9ubWVudHMgYmVmb3JlIGxpbmtpbmcgdGhlIGNvZGUgYmxvY2suIFdlIHJl
cGxhY2UgdGhlIHN0b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0aGUgYWxyZWFkeSBjbG9uZWQgb25l
LgogICAgIGlmIChVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKj4odm0sIHVubGlua2VkQ29kZUJsb2NrKSkgewpAQCAtOTA1LDI5ICs4OTksMzYgQEAg
dm9pZCBDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJh
cnJpZXI8VW5rbm93bj4+JiBjb25zdGEKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7CiAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBjb25zdGFudHNbaV0u
Z2V0KCk7Ci0KLSAgICAgICAgaWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IGlmIChjb25zdGFudC5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IGNvbnN0YW50LmFzQ2VsbCgpOwotICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUgPSBqc0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChtX3VubGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRoVHlwZVBy
b2ZpbGVyT3Bjb2RlcygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAg
IHN3aXRjaCAoY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2ldKSB7CisgICAgICAg
IGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAg
ICAgICAgY29uc3RhbnQgPSBnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3RhbnQoc3RhdGljX2Nh
c3Q8TGlua1RpbWVDb25zdGFudD4oY29uc3RhbnQuYXNJbnQzMkFzQW55SW50KCkpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3Ro
ZXI6CisgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpJbnRlZ2VyOgorICAg
ICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6RG91YmxlOgorICAgICAgICAgICAg
aWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQu
aXNDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gY29uc3RhbnQu
YXNDZWxsKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBqc0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5cGVQcm9m
aWxlck9wY29kZXMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJv
bFRhYmxlKiBjbG9uZSA9IHN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0YUNvZGVCbG9jayh0
aGlzKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2Fz
dDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFibGUtPmNy
ZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvcik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9iamVjdDsKICAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBjbG9uZSA9IHN5
bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3
YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjbG9uZS0+c2V0UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgY29uc3RhbnQgPSBjbG9uZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGRl
c2NyaXB0b3IgPSBqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj4odm0s
IGNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9w
TGV2ZWxFeGVjdXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2Ny
aXB0b3IpOwotICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwotICAgICAgICAgICAgICAgICAgICBjb25zdGFudCA9IHRlbXBsYXRlT2JqZWN0Owog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0KICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQodm0sIHRoaXMsIGNv
bnN0YW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4
IGUyNDRmZDYyNzA5YjQyNWE2MjhlMjI0NTY2MzhiMGU1NjNjZGFlMDkuLmVkYTI0YmU0Njk1NjRi
MmU1MGM2NGZlNjA4MWJhMjFmOWNlZDlhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0ZpdHMuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVG
bGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5o
IgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNj
b3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTA5Mjc1M2MzNGE5NTNhYjllZTFmNDBiNWI5N2Jm
MmViM2U5NjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdU
RiB7CisKKyNkZWZpbmUgUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKHZhck5hbWUsIG5hbWUsIGNv
ZGUpIFwKKyAgICBjYXNlIEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZTogXAorICAgICAgICBv
dXQucHJpbnQoI25hbWUpOyBcCisgICAgICAgIHJldHVybjsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6TGlua1RpbWVDb25zdGFudCBjb25zdGFudCkKK3sKKyAg
ICBzd2l0Y2ggKGNvbnN0YW50KSB7CisgICAgICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05T
VEFOVFMoUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKQorICAgIH0KK30KKworI3VuZGVmIFBSSU5U
X0xJTktfVElNRV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
OTFkYzQ4MjI5OThmMjg5ZWI0ZmRiMGVhOTlmNzgzZmNlMzA1YzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0w
LDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKKyNkZWZp
bmUgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyh2KSBcCisgICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKHYpIFwKKyAgICB2KHRocm93VHlw
ZUVycm9yRnVuY3Rpb24sIHRocm93VHlwZUVycm9yRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2
KGltcG9ydE1vZHVsZSwgaW1wb3J0TW9kdWxlLCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRI
ZWFkLCBtYXBCdWNrZXRIZWFkLCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXROZXh0LCBtYXBC
dWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRLZXksIG1hcEJ1Y2tldEtleSwg
bnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0VmFsdWUsIG1hcEJ1Y2tldFZhbHVlLCBudWxscHRy
KSBcCisgICAgdihzZXRCdWNrZXRIZWFkLCBzZXRCdWNrZXRIZWFkLCBudWxscHRyKSBcCisgICAg
dihzZXRCdWNrZXROZXh0LCBzZXRCdWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihzZXRCdWNr
ZXRLZXksIHNldEJ1Y2tldEtleSwgbnVsbHB0cikgXAorICAgIHYocHJvcGVydHlJc0VudW1lcmFi
bGUsIHByb3BlcnR5SXNFbnVtZXJhYmxlLCBudWxscHRyKSBcCisgICAgdihvd25LZXlzLCBvd25L
ZXlzLCBudWxscHRyKSBcCisgICAgdihlbnF1ZXVlSm9iLCBlbnF1ZXVlSm9iLCBudWxscHRyKSBc
CisgICAgdihtYWtlVHlwZUVycm9yLCBtYWtlVHlwZUVycm9yLCBudWxscHRyKSBcCisgICAgdih0
eXBlZEFycmF5TGVuZ3RoLCB0eXBlZEFycmF5TGVuZ3RoLCBudWxscHRyKSBcCisgICAgdih0eXBl
ZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3Ry
dWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTb3J0LCB0eXBlZEFycmF5U29ydCwg
bnVsbHB0cikgXAorICAgIHYoaXNUeXBlZEFycmF5VmlldywgaXNUeXBlZEFycmF5VmlldywgbnVs
bHB0cikgXAorICAgIHYodHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCB0eXBlZEFycmF5U3ViYXJy
YXlDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzQm91bmRGdW5jdGlvbiwgaXNCb3VuZEZ1bmN0
aW9uLCBudWxscHRyKSBcCisgICAgdihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIGhhc0luc3Rh
bmNlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaW5zdGFuY2VPZiwgaW5zdGFuY2VP
ZiwgbnVsbHB0cikgXAorICAgIHYoQnVpbHRpbkxvZywgQnVpbHRpbkxvZywgbnVsbHB0cikgXAor
ICAgIHYoQnVpbHRpbkRlc2NyaWJlLCBCdWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAgICB2
KFJlZ0V4cCwgUmVnRXhwLCBudWxscHRyKSBcCisgICAgdih0cnVuYywgdHJ1bmMsIG51bGxwdHIp
IFwKKyAgICB2KFByb21pc2UsIFByb21pc2UsIG51bGxwdHIpIFwKKyAgICB2KEludGVybmFsUHJv
bWlzZSwgSW50ZXJuYWxQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihkZWZhdWx0UHJvbWlzZVRo
ZW4sIGRlZmF1bHRQcm9taXNlVGhlbiwgbnVsbHB0cikgXAorICAgIHYocmVwZWF0Q2hhcmFjdGVy
LCByZXBlYXRDaGFyYWN0ZXIsIG51bGxwdHIpIFwKKyAgICB2KGFycmF5U3BlY2llc0NyZWF0ZSwg
YXJyYXlTcGVjaWVzQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0FycmF5LCBpc0FycmF5LCBu
dWxscHRyKSBcCisgICAgdihpc0FycmF5U2xvdywgaXNBcnJheVNsb3csIG51bGxwdHIpIFwKKyAg
ICB2KGNvbmNhdE1lbWNweSwgY29uY2F0TWVtY3B5LCBudWxscHRyKSBcCisgICAgdihhcHBlbmRN
ZW1jcHksIGFwcGVuZE1lbWNweSwgbnVsbHB0cikgXAorICAgIHYoaG9zdFByb21pc2VSZWplY3Rp
b25UcmFja2VyLCBob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKKyAgICB2
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLCBudWxs
cHRyKSBcCisgICAgdihTZXQsIFNldCwgbnVsbHB0cikgXAorICAgIHYodGhpc1RpbWVWYWx1ZSwg
dGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAorICAgIHYoaXNDb25zdHJ1Y3RvciwgaXNDb25zdHJ1
Y3RvciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9GbGFnc0dldHRlciwgcmVnRXhwUHJv
dG9GbGFnc0dldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIs
IHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b0ln
bm9yZUNhc2VHZXR0ZXIsIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlciwgbnVsbHB0cikgXAor
ICAgIHYocmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIsIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0
dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1NvdXJjZUdldHRlciwgcmVnRXhwUHJv
dG9Tb3VyY2VHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVy
LCByZWdFeHBQcm90b1N0aWNreUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9V
bmljb2RlR2V0dGVyLCByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2
KHJlZ0V4cEJ1aWx0aW5FeGVjLCByZWdFeHBCdWlsdGluRXhlYywgbnVsbHB0cikgXAorICAgIHYo
cmVnRXhwQ3JlYXRlLCByZWdFeHBDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzUmVnRXhwLCBp
c1JlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwTWF0Y2hGYXN0LCByZWdFeHBNYXRjaEZh
c3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNlYXJjaEZhc3QsIHJlZ0V4cFNlYXJjaEZhc3Qs
IG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNwbGl0RmFzdCwgcmVnRXhwU3BsaXRGYXN0LCBudWxs
cHRyKSBcCisgICAgdihyZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlLCByZWdFeHBQcm90b3R5
cGVTeW1ib2xSZXBsYWNlLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBUZXN0RmFzdCwgcmVnRXhw
VGVzdEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwsIHN0cmlu
Z0luY2x1ZGVzSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ1NwbGl0RmFzdCwgc3Ry
aW5nU3BsaXRGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTdWJzdHJJbnRlcm5hbCwgc3Ry
aW5nU3Vic3RySW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KG1ha2VCb3VuZEZ1bmN0aW9uLCBt
YWtlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFzT3duTGVuZ3RoUHJvcGVydHks
IGhhc093bkxlbmd0aFByb3BlcnR5LCBudWxscHRyKSBcCisgICAgdihkYXRlVGltZUZvcm1hdCwg
ZGF0ZVRpbWVGb3JtYXQsIG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVh
bWluZ0ludGVybmFsLCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCwgbnVsbHB0
cikgXAorICAgIHYod2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsLCB3ZWJB
c3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KE9i
amVjdCwgT2JqZWN0LCBudWxscHRyKSBcCisgICAgdihBcnJheSwgQXJyYXksIG51bGxwdHIpIFwK
KyAgICB2KGFwcGx5RnVuY3Rpb24sIGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGNh
bGxGdW5jdGlvbiwgY2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisKKworI2RlZmluZSBERUNMQVJF
X0xJTktfVElNRV9DT05TVEFOVCh2YXJOYW1lLCBuYW1lLCBjb2RlKSBuYW1lLAorZW51bSBjbGFz
cyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdCB7CisgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1F
X0NPTlNUQU5UUyhERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVCkKK307CisjdW5kZWYgREVDTEFS
RV9MSU5LX1RJTUVfQ09OU1RBTlQKKyNkZWZpbmUgQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKHZh
ck5hbWUsIG5hbWUsIGNvZGUpIDEgKworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJP
ZkxpbmtUaW1lQ29uc3RhbnRzID0gSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhDT1VO
VF9MSU5LX1RJTUVfQ09OU1RBTlQpIDA7CisjdW5kZWYgQ09VTlRfTElOS19USU1FX0NPTlNUQU5U
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRT
dHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6TGlua1RpbWVD
b25zdGFudCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVhZDNmMjRjYTA0ODFkMTFhNjdlYmQxYmZiYWJlODY2ZmQzMWQ0OGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCi0KLSNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQot
ewotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9pbnRlcik7Ci19
Ci0KLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFNwZWNpYWw6
OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gYWN0dWFsUG9pbnRlckZvcihjb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpLCBwb2ludGVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
SlNDOjpTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgc3dpdGNoIChwb2ludGVyKSB7
Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkNhbGxGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50
KCJDYWxsRnVuY3Rpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFs
OjpBcHBseUZ1bmN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkFwcGx5RnVuY3Rpb24iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvcjoK
LSAgICAgICAgb3V0LnByaW50KCJPYmplY3RDb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkFycmF5Q29uc3RydWN0b3I6Ci0gICAgICAgIG91dC5w
cmludCgiQXJyYXlDb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6
OlNwZWNpYWw6OlRhYmxlU2l6ZToKLSAgICAgICAgb3V0LnByaW50KCJUYWJsZVNpemUiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NDkyYmFiNzZlYTJiZmY3ZTZlODgzNTM1ZWE0ZDc2YzQxYjA0Njc5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQ29kZUJs
b2NrOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0KLW5hbWVzcGFjZSBTcGVjaWFsIHsKLWVudW0g
UG9pbnRlciA6IHVuc2lnbmVkIHsKLSAgICBDYWxsRnVuY3Rpb24sCi0gICAgQXBwbHlGdW5jdGlv
biwKLSAgICBPYmplY3RDb25zdHJ1Y3RvciwKLSAgICBBcnJheUNvbnN0cnVjdG9yLAotICAgIFRh
YmxlU2l6ZSAvLyBOb3QgYSByZWFsIHNwZWNpYWwgcG9pbnRlci4gVXNlIHRoaXMgdG8gZGV0ZXJt
aW5lIHRoZSBudW1iZXIgb2YgcG9pbnRlcnMuCi19OwotfSAvLyBuYW1lc3BhY2UgU3BlY2lhbAot
Ci1lbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIFRocm93VHlwZUVycm9yRnVuY3Rp
b24sCi19OwotY29uc3QgdW5zaWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0gMTsKLQotaW5s
aW5lIGJvb2wgcG9pbnRlcklzRnVuY3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewot
ICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwgcG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0NlbGwoU3BlY2lh
bDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwgcG9pbnRl
ciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQqIGFj
dHVhbFBvaW50ZXJGb3IoSlNHbG9iYWxPYmplY3QqLCBTcGVjaWFsOjpQb2ludGVyKTsKLXZvaWQq
IGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiwgU3BlY2lhbDo6UG9pbnRlcik7Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0K
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6U3BlY2lhbDo6UG9pbnRlcik7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjM0ZmE1NzdjNWFmMGExMjE2Yzdi
NGQ2ZDA0NDdkMGJjZjhkNGM0OS4uZDVkZGVlOGQ1NjA3NzAzMjNiMWZkNWYxYWNjY2NjMDUwMmMx
MjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC03Niw4ICs3Niw2IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxp
bmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2Rl
CiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBt
X21ldGFkYXRhKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCkpCiB7Ci0gICAgZm9yIChh
dXRvJiBjb25zdGFudFJlZ2lzdGVySW5kZXggOiBtX2xpbmtUaW1lQ29uc3RhbnRzKQotICAgICAg
ICBjb25zdGFudFJlZ2lzdGVySW5kZXggPSAwOwogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAg
IEFTU0VSVChtX2NvZGVUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkpOwog
ICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRy
aVN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCmluZGV4IDQ3MzlkYTc4MzU2OGQzZWIyNjMxZWVmMWE3MjQyOTI4Nzk3ZjU2
NjkuLmQ2MDczNjAxNGRkMWUzMTU3MTNhODUyZTg3ZGE2NTYxNDE2MzAwODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0z
Nyw3ICszNyw2IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMu
aCIKICNpbmNsdWRlICJSZWdFeHAuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogI2lu
Y2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRN
ZXRhZGF0YVRhYmxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0xODAsMjcg
KzE3OSwxNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoc291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgdW5z
aWduZWQgYWRkQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQorICAgIHVuc2lnbmVkIGFk
ZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkKICAgICB7CiAgICAg
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmlu
Z01hcmtpbmcodm0uaGVhcCwgY2VsbExvY2soKSk7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAg
ICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbaW5kZXhdID0gcmVzdWx0OwogICAgICAgICBtX2NvbnN0YW50UmVnaXN0
ZXJzLmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7Ci0gICAgICAgIG1fY29uc3RhbnRz
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVuZChTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246
Ok90aGVyKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0KHZtLCB0aGlz
LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihsaW5rVGltZUNvbnN0YW50KSkpOworICAg
ICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZWdpc3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFu
dChMaW5rVGltZUNvbnN0YW50IHR5cGUpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgTGlu
a1RpbWVDb25zdGFudENvdW50KTsKLSAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudHNb
aW5kZXhdOwotICAgIH0KLQogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+
JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7IH0KICAg
ICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXhdOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdp
c3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXg7IH0KQEAgLTQwNiw4ICszOTUsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3Rl
cjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogCi0gICAgc3RkOjphcnJh
eTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3RhbnRzOwot
CiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1v
ZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDJkYjgxOGYwYjliNTRiMjE1YmFmMDZjY2M2YWUzMWMzYzI5YWRmYWUuLjgzNmZkNTc4
ZjJjMTg0ZmIzMzYyNTU4NzFjNmIxMmMzYzEzNjdhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0z
MDgsOSArMzA4LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNp
emUoKSk7CiAKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAg
ICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZv
ciAidGhpcyIKIAogICAgIGVtaXRFbnRlcigpOwpAQCAtMzYwLDkgKzM1Nyw2IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4
dChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2Vz
RXZhbCgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRy
OwotCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6
Y3JlYXRlKG1fdm0pOwogICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RF
dmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIGludCBzeW1ib2xUYWJsZUNvbnN0YW50SW5k
ZXggPSAwOwpAQCAtNzg4LDExICs3ODIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAg
ICAgICAgIC8vIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hl
Y2soQHByb21pc2UsIHRocm93blZhbHVlKTsKICAgICAgICAgLy8gcmV0dXJuIEBwcm9taXNlOwot
ICAgICAgICBhdXRvIHZhclJlamVjdFByb21pc2UgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkucmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2Fs
bENoZWNrUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9
IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICBtb3ZlKHNjb3BlLmdldCgpLCBlbWl0UmVzb2x2ZVNj
b3BlKHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWplY3RQcm9taXNlID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCksIHZhclJlamVjdFByb21pc2UsIFRocm93SWZOb3RGb3VuZCk7Ci0KKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdFByb21pc2UgPSBtb3ZlTGlua1RpbWVDb25zdGFu
dChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpyZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsQ2hlY2spOwogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMs
IG51bGxwdHIsIDIpOwogICAgICAgICBlbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICAgICAgbW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHByb21p
c2VSZWdpc3RlcigpKTsKQEAgLTg0OCw5ICs4MzgsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENv
ZAogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZXZhbE5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUtPnVzZXNFdmFsKCkpCiAgICAgLCBtX2Rlcml2
ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewotICAgIGZv
ciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykK
LSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBtX2NvZGVCbG9jay0+
c2V0TnVtUGFyYW1ldGVycygxKTsKIAogICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVx
dWlyZW1lbnQ6OlVuZGVyVERaKTsKQEAgLTkxMCw5ICs4OTcsNiBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJv
Z3JhbU5vZAogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFw
YXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIAotICAgIGZvciAoYXV0byYgY29uc3Rh
bnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKLSAgICAgICAgY29uc3Rh
bnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7CiAgICAgbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0
RXZhbCk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBlKFN5
bWJvbFRhYmxlOjpTY29wZVR5cGU6OkxleGljYWxTY29wZSk7CkBAIC0xNDQyLDEyICsxNDI2LDEy
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZGYWxzZShSZWdpc3RlcklEKiBj
b25kLCBMYWJlbCYgdGFyZ2V0KQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCiB7Ci0gICAg
T3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6OkNhbGxGdW5jdGlvbiwgdGFyZ2V0
LmJpbmQodGhpcykpOworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBtb3ZlTGlua1Rp
bWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rpb24pLCB0YXJn
ZXQuYmluZCh0aGlzKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZO
b3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCiB7Ci0gICAg
T3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6OkFwcGx5RnVuY3Rpb24sIHRhcmdl
dC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgbW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbiksIHRh
cmdldC5iaW5kKHRoaXMpKTsKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aGFzQ29uc3Rh
bnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CkBAIC0zMTAxLDcgKzMwODUsNyBAQCBF
eHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5jdGlvblNu
aXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpID49IDIpCiAgICAgICAgICAgICByZXR1cm4gTm9FeHBlY3Rl
ZEZ1bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGZ1bmMs
IFNwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CisgICAg
ICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxs
cHRyLCBMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAg
IGVtaXROZXdPYmplY3QoZHN0KTsKQEAgLTMxMTcsNyArMzEwMSw3IEBAIEV4cGVjdGVkRnVuY3Rp
b24gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9uU25pcHBldChSZWdpc3Rl
cklEKiBkc3QsCiAgICAgICAgIGlmIChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgPiAyKQogICAgICAgICAgICAgcmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAg
ICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFsOjpBcnJh
eUNvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CisgICAgICAgIE9wSm5lcVB0cjo6
ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50OjpBcnJheSksIHJlYWxDYWxsLT5iaW5kKHRoaXMpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgICAgICBpZiAoY2FsbEFyZ3Vt
ZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID09IDIpCkBAIC0zMjg1LDcgKzMyNjks
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lz
dGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcAogICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgp
IHx8IGF0dHJpYnV0ZXMuaGFzU2V0KCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRo
cm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNHZXQoKSB8
fCAhYXR0cmlidXRlcy5oYXNTZXQoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVuY3Rp
b24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpUaHJv
d1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVuY3Rpb24g
PSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50Ojp0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyOwog
ICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKQEAgLTQ0NzQsMTAgKzQ0NTgsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHRNZXRo
b2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5
TmFtZXMoKS5uZXh0KTsKIAotICAgIGF1dG8gdmFyQ3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9y
ID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNyZWF0ZUFzeW5jRnJv
bVN5bmNJdGVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgIG1vdmUoc2NvcGUuZ2V0KCksIGVtaXRSZXNvbHZlU2Nv
cGUoc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvcikpOwotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBlbWl0R2V0RnJv
bVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyQ3JlYXRlQXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVh
dGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBM
aW5rVGltZUNvbnN0YW50OjpjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IpOwogCiAgICAgQ2Fs
bEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICBlbWl0TG9hZChhcmdzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyZDcyMWViNzc5
MGIzNzMwMjM3OGZmYWNiOTEyMjcyZGZiOGU3YzRmLi5mNWIzNTY4ZDFkNzU1MDI4NzRmZDY3YWQ1
NWZkOGQ4MmYzYWU3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2lu
Y2x1ZGUgIkxhYmVsU2NvcGUuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb2Zp
bGVUeXBlQnl0ZWNvZGVGbGFnLmgiCkBAIC0xMjE2LDcgKzEyMTcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbmV3VGFyZ2V0UmVnaXN0ZXIgeyBudWxscHRyIH07CiAg
ICAgICAgIFJlZ2lzdGVySUQqIG1faXNEZXJpdmVkQ29uc3R1Y3RvciB7IG51bGxwdHIgfTsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW0xpbmtUaW1lQ29u
c3RhbnRDb3VudF07CisgICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVyc1tudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzXSB7IH07CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51bGxw
dHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9wcm9taXNlUmVnaXN0ZXIgeyBudWxscHRyIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCAyZTAzYmUwYjdjNzVkZGIwMjdlYzRlNmY2NTYyMThkOGUwZmU1MWE2Li41
MjQ2OGUxZjJhYTExZTEyMDZhZTdmNDVhMTVmMjkwYjM5ZGFmNDVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMTEs
NyArMjExLDcgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogSW1wb3J0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2VuZXJh
dG9yLmVtaXRHZXRHbG9iYWxQcml2YXRlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRlTmFt
ZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2VuZXJhdG9yLm1v
dmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydE1vZHVs
ZSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAxKTsK
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0
ZXIoMCksIG1fZXhwcik7CkBAIC05ODUsNyArOTg1LDExIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIHJldHVy
biAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOworICAgIGlmIChtX2VudHJ5LnR5
cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAg
ICByZXR1cm4gKHRoaXMtPiptX2VudHJ5LmVtaXR0ZXIoKSkoZ2VuZXJhdG9yLCBkc3QpOworICAg
IGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChkc3QsIG1f
ZW50cnkubGlua1RpbWVDb25zdGFudCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRCeUlkRGlyZWN0KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTEwMTMsOSArMTAxNywxMCBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEJ5SWREaXJl
Y3RQcml2YXRlKEJ5dGVjb2RlRwogCiBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50
ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X3Byb21pc2VGaWVsZEZsYWdzKQorICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+
ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfcHJvbWlzZUZpZWxkRmxhZ3MpCiAgICAgICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpG
bGFnczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KQorICAgIGlmIChu
b2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdCkKICAgICAgICAgcmV0dXJuIEpT
UHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0OwogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwpAQCAtMTAy
MywxMyArMTAyOCwxNCBAQCBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50ZXJuYWxG
aWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIAogc3RhdGljIEpTR2VuZXJh
dG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkKKyAgICBBU1NFUlQo
bm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6
RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCiAgICAgICAg
IHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwotICAgIGlmIChub2RlLT5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmll
bGROZXh0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCiAgICAgICAgIHJl
dHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9
PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFRo
aXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKICAgICAgICAgcmV0dXJu
IEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUp
CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVybiBK
U0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBAIC0xMDM3LDE5ICsx
MDQzLDIwIEBAIHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVs
ZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kCiAKIHN0YXRpYyBKU0FzeW5jR2VuZXJh
dG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJp
bnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAgIEFT
U0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpU
eXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkKICAg
ICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBpZiAobm9k
ZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dl
bmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQog
ICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5v
ZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19n
ZW5lcmF0b3JGaWVsZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykK
ICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOwotICAgIGlmIChu
b2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2VuZXJhdG9yRmllbGRGcmFtZSkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFt
ZSkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKLSAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQorICAgIGlmIChub2RlLT5lbnRy
eSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19h
c3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKICAgICAgICAgcmV0dXJuIEpTQXN5bmNH
ZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uOwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JG
aWVsZFF1ZXVlRmlyc3QpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1
ZUZpcnN0KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlRmly
c3Q7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQorICAgIGlmIChub2Rl
LT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQogICAgICAgICByZXR1cm4gSlNBc3lu
Y0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdDsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBAIC00
MDk2LDEwICs0MTAzLDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgp
LCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAYXN5bmNG
dW5jdGlvblJlc3VtZQotICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQ
cml2YXRlTmFtZSgpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwg
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYXN5bmNGdW5jdGlvblJlc3VtZSA9IGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhy
b3dJZk5vdEZvdW5kKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25S
ZXN1bWUgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVD
b25zdGFudDo6YXN5bmNGdW5jdGlvblJlc3VtZSk7CiAKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBh
cmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgNCk7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291
bnQgPSAwOwpAQCAtNDU3OCwxMSArNDU4Miw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJp
bmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAg
ICAgSWRlbnRpZmllclNldCBleGNsdWRlZFNldDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYWRk
TWV0aG9kOwogICAgIGlmIChtX2NvbnRhaW5zUmVzdEVsZW1lbnQgJiYgbV9jb250YWluc0NvbXB1
dGVkUHJvcGVydHkpIHsKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRlTmFtZSgpKTsK
LQotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldENvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLm1vdmVM
aW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlNldCk7CiAKICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CiAgICAgICAgIGV4
Y2x1ZGVkTGlzdCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgc2V0Q29uc3RydWN0b3IuZ2V0KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBA
IC00NjMzLDExICs0NjMzLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBuZXdPYmplY3QgPSBnZW5lcmF0b3IuZW1pdE5ld09iamVjdChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBs
b2FkIGFuZCBjYWxsIEBjb3B5RGF0YVByb3BlcnRpZXMKLSAgICAgICAgICAgIGF1dG8gdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuY29weURhdGFQcm9wZXJ0aWVzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91
bmQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9
IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50
Ojpjb3B5RGF0YVByb3BlcnRpZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAzKTsKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTQ4MTAs
MTEgKzQ4MDYsNyBAQCBSZWdpc3RlcklEKiBPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0bwogICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShzcmMuZ2V0KCksIG1fZXhwcmVzc2lvbik7CiAgICAgCiAgICAgLy8gbG9hZCBhbmQgY2Fs
bCBAY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zCi0gICAgYXV0byB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5jb3B5
RGF0YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnNQcml2YXRlTmFtZSgpKTsKLSAgICAKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgZ2Vu
ZXJhdG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3Bl
LmdldCgpLCB2YXIpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVz
ID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb3B5RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zKTsK
ICAgICAKICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAyKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IGUwZWVmNDkxN2FhNjgxZmFjMjk0Yzk4ODQ5ODI1YjJkOTNmMDBmMWEuLjMzNzhhZDA5MmY2
YTI0MjAzM2NmNDA3NjgzZDkzODk1ZDNkM2NkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02MzQyLDExICs2MzQyLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7Ci0gICAgICAgICAgICBTcGVj
aWFsOjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsK
LSAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNDZWxsKHNwZWNpYWxQb2ludGVyKSk7Ci0gICAg
ICAgICAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXIgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPigKLSAg
ICAgICAgICAgICAgICBhY3R1YWxQb2ludGVyRm9yKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLCBzcGVjaWFsUG9pbnRlcikpOwotICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBv
aW50ZXIgPSBtX2dyYXBoLmZyZWV6ZShhY3R1YWxQb2ludGVyKTsKKyAgICAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIu
b2Zmc2V0KCkpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVtcFRh
cmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0g
Z2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jaykubV9oYXNKdW1wZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IDBkMDQ5OTQ1ODBkOWIzODgxYzkwMmIwMWFiYTNlNjFkOTYwMzZlNTku
LjhlYmU0OWZlYmJmNTEzNWI1MzVlM2NkZDc2OTY1NjgxNTA1M2RhNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNDcxLDExICs0NzEsMTIgQEAgdm9pZCBK
SVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+
KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
CiAgICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7Ci0gICAgU3BlY2lhbDo6
UG9pbnRlciBwdHIgPSBieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyOworICAgIEpTVmFsdWUgc3Bl
Y2lhbFBvaW50ZXIgPSBnZXRDb25zdGFudE9wZXJhbmQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRl
ci5vZmZzZXQoKSk7CisgICAgQVNTRVJUKHNwZWNpYWxQb2ludGVyLmlzQ2VsbCgpKTsKICAgICB1
bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUu
bV90YXJnZXRMYWJlbCk7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJl
Z1QwKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJl
Z1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikpKTsK
KyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBU
cnVzdGVkSW1tUHRyKHNwZWNpYWxQb2ludGVyLmFzQ2VsbCgpKSk7CiAgICAgc3RvcmU4KFRydXN0
ZWRJbW0zMigxKSwgJm1ldGFkYXRhLm1faGFzSnVtcGVkKTsKICAgICBhZGRKdW1wKGp1bXAoKSwg
dGFyZ2V0KTsKICAgICBlcXVhbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDNlMGNlYjQ2OTNhNTg5NWYzYWZlYmM5NjJh
OWMxNDNmMDgyOGM1MzEuLjRlOTQyNDU0NzlmM2Y0NzY5N2E4YjY5M2M1ZGYxZjAxMGViMjMyZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAg
LTQ3OCwxMiArNDc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVl
Lm9mZnNldCgpOwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFs
UG9pbnRlcjsKKyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5k
KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFs
UG9pbnRlci5pc0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1pdExvYWQo
c3JjLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChy
ZWdUMSk7Ci0gICAgSnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJ
bW1QdHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRyKSkpOworICAgIEp1bXAgZXF1
YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHNwZWNpYWxQb2ludGVy
LmFzQ2VsbCgpKSk7CiAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwogICAgIHN0b3JlOChUcnVzdGVk
SW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRkSnVtcChqdW1wKCksIHRh
cmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDMzN2VlMjJiNDkzZDBiNWFlNGQzNzQyZGIxMjJm
NTIzYmVhZjNmNmEuLjRjNjBkYmVlMTMzYWViZjY5OWQyNGZjOTc5M2E4NDQyZTIxMTE4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCkBAIC0xNzEwLDEyICsxNzEwLDEwIEBAIHVuZGVmaW5lZE9yTnVsbEp1
bXBPcChqbnVuZGVmaW5lZF9vcl9udWxsLCBPcEpudW5kZWZpbmVkT3JOdWxsLAogCiBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQdHIsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldChtX3ZhbHVlLCB0MCkKLSAgICBnZXR1
KHNpemUsIE9wSm5lcVB0ciwgbV9zcGVjaWFsUG9pbnRlciwgdDEpCi0gICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQy
CisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQzLCB0MikKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENl
bGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVj
aWFsUG9pbnRlcnNbdDIsIHQxLCA0XSwgdDEKLSAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQyLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKIC5vcEpuZXFQdHJCcmFuY2g6
CiAgICAgbWV0YWRhdGEodDUsIHQyKQogICAgIHN0b3JlYiAxLCBPcEpuZXFQdHI6Ok1ldGFkYXRh
OjptX2hhc0p1bXBlZFt0NV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMDQ0M2YwY2ZlOGIzNzI3ZWM5NGJkNGQ1
ODk3MDk2MTBiNDI5Yzg2YS4uMDVlOGZkYTNkZTVmNGJiNTMxOTY3ZDMwODg5Yjc2NWI3YWRhMmZl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KQEAgLTE4MTYsMTEgKzE4MTYsOSBAQCB1bmRlZmluZWRPck51bGxKdW1w
T3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9yTnVsbCwKIAogbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1ZSwgdDApCi0gICAgZ2V0dShz
aXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQotICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0Mgot
ICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3NwZWNpYWxQb2ludGVyc1t0MiwgdDEsIFB0clNp
emVdLCB0MQotICAgIGJwbmVxIHQxLCBbY2ZyLCB0MCwgOF0sIC5vcEpuZXFQdHJUYXJnZXQKKyAg
ICBnZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MSwgdDIpCisgICAgYnBuZXEgdDIsIFtjZnIsIHQwLCA4XSwgLm9wSm5lcVB0clRhcmdl
dAogICAgIGRpc3BhdGNoKCkKIAogLm9wSm5lcVB0clRhcmdldDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggY2FmMDMwODI5MjFkMTI5NWEwNDI4ZGIwY2Jl
MDQxMmMzYWNmMGM5OS4uY2M1OTdmNWI0NGI5ZTcxNzlmNWRlNTViMGVlZDJiZjg2OTA1ZWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTIwMCw4ICsy
MDAsOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsK
IAogICAgICAgICBpZiAoaWRlbnQuaXNTeW1ib2woKSkgewotICAgICAgICAgICAgaWYgKEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgZW1pdHRlciA9IG1fdm0uYnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6VHlwZTo6Q29uc3RhbnQsIGxvY2F0aW9uLCBlbWl0dGVyLCBpZGVudCwgbnVsbHB0ciwg
c3RhcnQsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYXV0byBlbnRyeSA9IG1fdm0uYnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudCk7CisgICAgICAgICAgICBpZiAoZW50
cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQsIGxvY2F0
aW9uLCBlbnRyeS52YWx1ZSgpLCBpZGVudCwgbnVsbHB0ciwgc3RhcnQsIHN0YXJ0LCBlbmQpOwog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUmVzb2x2ZU5v
ZGUobG9jYXRpb24sIGlkZW50LCBzdGFydCk7CkBAIC0xMzg0LDggKzEzODUsOCBAQCBFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbgogICAgIGlmIChmdW5jLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgp
KSB7CiAgICAgICAgIEFTU0VSVCghaXNPcHRpb25hbENhbGwpOwogICAgICAgICBCeXRlY29kZUlu
dHJpbnNpY05vZGUqIGludHJpbnNpYyA9IHN0YXRpY19jYXN0PEJ5dGVjb2RlSW50cmluc2ljTm9k
ZSo+KGZ1bmMpOwotICAgICAgICBpZiAoaW50cmluc2ljLT50eXBlKCkgPT0gQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjpUeXBlOjpDb25zdGFudCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5
cGU6OkZ1bmN0aW9uLCBsb2NhdGlvbiwgaW50cmluc2ljLT5lbWl0dGVyKCksIGludHJpbnNpYy0+
aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAg
ICBpZiAoaW50cmluc2ljLT50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpD
b25zdGFudCAmJiBpbnRyaW5zaWMtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBl
OjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW50cnkoKSwgaW50cmluc2ljLT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgfQogCiAg
ICAgaWYgKGZ1bmMtPmlzT3B0aW9uYWxDaGFpbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDc1ODlkN2M5MWU4OTVlYjJkOTk2
MzNkYmY1YjRhYTVkMjZhZWI4NGUuLjljN2I5YTI4MjA3M2M1NzZhNjM0OWU0ZDY5YzIyMGJhNWNj
ZGVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCkBAIC00MTMsMTAgKzQxMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKFR5cGUgdHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRW1pdHRlclR5
cGUgZW1pdHRlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUoVHlwZSB0eXBlLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRy
eSBlbnRyeSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9lbWl0dGVyKGVtaXR0ZXIpCisgICAg
ICAgICwgbV9lbnRyeShlbnRyeSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAs
IG1fYXJncyhhcmdzKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IGFhNDQ4NjY0ZDFkNDgxNDBkMTBhNDU5MGMwNjdkNTAxYThiNjI4
N2YuLmZhZDUzMjhhMmI5NDQzN2RiMmRhZTdmMWM4NmIyODljMWEzNDFmYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTk0NCwxNCArOTQ0LDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgRnVuY3Rpb24KICAgICAgICAgfTsKIAotICAgICAgICB0eXBlZGVm
IFJlZ2lzdGVySUQqIChCeXRlY29kZUludHJpbnNpY05vZGU6OiogRW1pdHRlclR5cGUpKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwotCi0gICAgICAgIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZShUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFbWl0dGVyVHlwZSwgY29uc3QgSWRl
bnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOworICAgICAgICBCeXRlY29kZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnksIGNvbnN0IElkZW50
aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAogICAgICAgICBib29sIGlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQotICAgICAgICBFbWl0dGVyVHlwZSBlbWl0dGVyKCkgY29uc3QgeyByZXR1
cm4gbV9lbWl0dGVyOyB9CisgICAgICAgIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5
IGVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeTsgfQogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAjZGVmaW5lIEpT
Q19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlMobmFtZSkgUmVnaXN0ZXJJRCog
ZW1pdF9pbnRyaW5zaWNfIyNuYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwpA
QCAtOTY0LDcgKzk2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNGdW5j
dGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnVuY3Rp
b247IH0KIAotICAgICAgICBFbWl0dGVyVHlwZSBtX2VtaXR0ZXI7CisgICAgICAgIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5IG1fZW50cnk7CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsKICAgICAgICAgVHlw
ZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKaW5kZXggNjAzNWE0OTA5MjZjNGFlNWZjMzMyN2FmZmVkZjQyNzZiOTNmMDY1Ny4uZWI5ZDk5
M2IyNTE0YzY3MjllMTAyZjY1ZTcyMGE3MjhhZjJjMjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTgwMSw3ICsxODAxLDYgQEAgY2xh
c3MgQ2FjaGVkQ29kZUJsb2NrIDogcHVibGljIENhY2hlZE9iamVjdDxDb2RlQmxvY2tUeXBlPiB7
CiBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwotICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIExp
bmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNvbnN0YW50czsKIAogICAgIHVuc2lnbmVk
IG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKQEAgLTIw
MzksOSArMjAzOCw2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2Vk
Q29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVjdHVyZSoKIHRlbXBsYXRlPHR5cGVuYW1l
IENvZGVCbG9ja1R5cGU+CiBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVC
bG9ja1R5cGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVW5saW5rZWRDb2RlQmxvY2smIGNv
ZGVCbG9jaykgY29uc3QKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBMaW5rVGltZUNvbnN0YW50
Q291bnQ7IGktLTspCi0gICAgICAgIGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRzW2ldID0g
bV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuZGVjb2Rl
KGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50UmVnaXN0ZXJzLCAmY29kZUJsb2NrKTsKICAg
ICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5kZWNvZGUoZGVjb2RlciwgY29k
ZUJsb2NrLm1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uKTsKICAgICBtX2V4cHJl
c3Npb25JbmZvLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9leHByZXNzaW9uSW5mbyk7CkBA
IC0yMjA3LDkgKzIyMDMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENv
ZGVCbG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29ucwogICAgIG1fY29kZUdl
bmVyYXRpb25Nb2RlID0gY29kZUJsb2NrLm1fY29kZUdlbmVyYXRpb25Nb2RlOwogICAgIG1fY29k
ZVR5cGUgPSBjb2RlQmxvY2subV9jb2RlVHlwZTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IExp
bmtUaW1lQ29uc3RhbnRDb3VudDsgaS0tOykKLSAgICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tp
XSA9IGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRzW2ldOwotCiAgICAgbV9tZXRhZGF0YS5l
bmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fbWV0YWRhdGEuZ2V0KCkpOwogICAgIG1fcmFyZURh
dGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX3JhcmVEYXRhLmdldCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDQ3ZmNkMzM4YjQwNTk4
MzZjZDM2ODFlODRlMDFmYWI3NDMzOTc2NzQuLjI1OTllMmM1NjI5MTBmOTgxNDZjOTE4YjUyMjQ5
Yzg1NWJkMmE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKQEAgLTEyOSw3ICsxMjksOCBAQCBib29sIGlzSW50NTIoZG91YmxlKTsKIGVudW0gY2xhc3Mg
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uIDogdWludDhfdCB7CiAgICAgT3RoZXIsCiAgICAgSW50
ZWdlciwKLSAgICBEb3VibGUKKyAgICBEb3VibGUsCisgICAgTGlua1RpbWVDb25zdGFudCwKIH07
CiAKIGNsYXNzIEpTVmFsdWUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGM2NWIwYjM3MGQwMjU3NWUwMGIxZjUwNDkwOTkxMDdl
NzcwZTcyOGQuLmM0MzA0YjlkZmJlZGYwODFjNzFiZmYyZTQ1YWFmOGY4N2VjZTY3YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTEzNSw2ICsxMzUsNyBAQAogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTGF6
eUNsYXNzU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxhenlQcm9wZXJ0eUlubGluZXMu
aCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNYXBJdGVyYXRvclByb3RvdHlw
ZS5oIgpAQCAtNDExLDYgKzQxMiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGVucXVldWVKb2IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiBKU0dsb2Jh
bE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQogICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlLCAwKQogICAgICwgbV92bSgmdm0pCisgICAgLCBtX2xpbmtU
aW1lQ29uc3RhbnRzKG51bWJlck9mTGlua1RpbWVDb25zdGFudHMpCiAgICAgLCBtX21hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0
Y2hlZCkpKQogICAgICwgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdh
dGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCiAgICAgLCBtX3ZhckluamVjdGlvbldhdGNocG9pbnQo
YWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCkBAIC01MjIsOCArNTI0LDYg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgSlNGdW5jdGlvbiogYXBw
bHlGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgSlNGdW5jdGlvbiogaGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbiA9IG51bGxwdHI7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+YWRkRnVuY3Rpb25Q
cm9wZXJ0aWVzKHZtLCB0aGlzLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbiwgJmhhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24pOwotICAgIG1fY2FsbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
Y2FsbEZ1bmN0aW9uKTsKLSAgICBtX2FwcGx5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBhcHBseUZ1
bmN0aW9uKTsKICAgICBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmluaXRMYXRlcigKICAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7CiAgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwg
aW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNU
b1N0cmluZywgTm9JbnRyaW5zaWMpKTsKQEAgLTcyMyw3ICs3MjMsOCBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkp
KTsKICAgICBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgQXN5bmNHZW5l
cmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9hc3luY0l0ZXJhdG9yUHJvdG90eXBlLmdldCgp
KSkpOwogCi0gICAgbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVuQ29kZUdlbmVyYXRvcih2bSks
IHRoaXMpKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0UHJvbWlzZVRoZW4gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVuQ29kZUdlbmVyYXRvcih2bSksIHRoaXMp
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbildLnNldCh2bSwgdGhpcywgZGVmYXVsdFByb21p
c2VUaGVuKTsKIAogI2RlZmluZSBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9TSU1QTEVfVFlQRShjYXBp
dGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJv
dG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIGlmIChmZWF0dXJlRmxhZykgeyBcCiAgICAgICAgIG1f
ICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJv
dG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIGNhcGl0YWxOYW1lIyNQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV8gIyMgcHJvdG90eXBlQmFzZSAjIyBQcm90b3R5cGUuZ2V0KCkp
KSk7IFwKQEAgLTc1MCwxOCArNzUxLDIxIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0m
IHZtKQogCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2Jq
ZWN0Q29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ok9iamVjdCldLnNldCh2bSwgdGhpcywgb2JqZWN0Q29u
c3RydWN0b3IpOwogCiAgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvcik7Ci0gICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbildLnNl
dCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBGdW5jdGlvbkNvbnN0
cnVjdG9yKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBt
X2Z1bmN0aW9uQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBmdW5jdGlvbkNvbnN0cnVjdG9yKTsK
IAogICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0
KCksIG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QXJyYXkpXS5zZXQodm0s
IHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOwogICAgIAogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBy
ZWdFeHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFJlZ0V4cENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdl
dCgpKTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3Ry
dWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3Ip
OwogICAgIG1fcmVnRXhwR2xvYmFsRGF0YS5jYWNoZWRSZXN1bHQoKS5yZWNvcmQodm0sIHRoaXMs
IG51bGxwdHIsIGpzRW1wdHlTdHJpbmcodm0pLCBNYXRjaFJlc3VsdCgwLCAwKSk7CiAgICAgCiAj
aWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIpCkBAIC03ODMsNiArNzg3LDggQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhp
cywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IpOworICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlByb21p
c2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW50ZXJuYWxQ
cm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAg
CiAgICAgbV9ldmFsRXJyb3JTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoTGF6eUNs
YXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewpAQCAtODQyLDkgKzg0OCw2IEBAIGNh
cGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0
dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkFycmF5LCBhcnJheUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlZ0V4cCwgcmVnRXhwQ29uc3Ry
dWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5PYmplY3RQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rvciwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5BcnJheVByaXZh
dGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKLQogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFyZWRBcnJheUJ1ZmZlciwg
c2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiQXRvbWljcyIpLCBhdG9taWNzT2JqZWN0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBA
IC05MTcsMTgwICs5MjAsMjI2IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgaWYgKE9w
dGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkpCiAgICAgICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1vZHVsZUxvYWRl
cigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAKLSAgICBKU0Z1bmN0aW9uKiBidWlsdGluTG9nID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2Jh
bEZ1bmNCdWlsdGluTG9nKTsKLSAgICBKU0Z1bmN0aW9uKiBidWlsdGluRGVzY3JpYmUgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRp
Zmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSk7Ci0KLSAgICBKU0Z1bmN0
aW9uKiBwcml2YXRlRnVuY1RydW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBT
dHJpbmcoKSwgbWF0aFByb3RvRnVuY1RydW5jLCBUcnVuY0ludHJpbnNpYyk7Ci0KLSAgICBKU0Z1
bmN0aW9uKiBwcml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxl
KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY093bktleXMgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jT3duS2V5cyk7Ci0gICAgSlNGdW5j
dGlvbiogcHJpdmF0ZUZ1bmNJbXBvcnRNb2R1bGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jSW1wb3J0TW9kdWxlKTsKLSAgICBKU0Z1bmN0aW9u
KiBwcml2YXRlRnVuY01ha2VUeXBlRXJyb3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDAsIFN0cmluZygpLCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcik7Ci0gICAgSlNGdW5jdGlvbiog
cHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk7Ci0gICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY1R5cGVkQXJyYXlTb3J0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOwotICAgIEpTRnVuY3Rpb24qIHBy
aXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBJ
c1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5
cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
U3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7Ci0gICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc0JvdW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBpc0JvdW5kRnVuY3Rpb24pOwotICAgIEpTRnVuY3Rp
b24qIHByaXZhdGVGdW5jSGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKTsKLSAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0luc3RhbmNlT2YgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDAsIFN0cmluZygpLCBvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YpOwotICAg
IEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGRhdGVQcm90b0Z1bmNHZXRUaW1lKTsKLSNpZiBFTkFC
TEUoSU5UTCkKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0RhdGVUaW1lRm9ybWF0ID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVUaW1l
Rm9ybWF0KTsKLSNlbmRpZgotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNBcnJheVNsb3cg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheUNvbnN0cnVj
dG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmND
b25jYXRNZW1jcHkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBh
cnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkpOwotICAgIEpTRnVuY3Rpb24qIHByaXZh
dGVGdW5jQXBwZW5kTWVtY3B5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVtY3B5KTsKLSAgICBKU0Z1bmN0aW9u
KiBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVh
ZEludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0ID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNN
YXBCdWNrZXROZXh0LCBKU01hcEJ1Y2tldE5leHRJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24q
IHByaXZhdGVGdW5jTWFwQnVja2V0S2V5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXksIEpTTWFwQnVja2V0S2V5SW50
cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBC
dWNrZXRWYWx1ZSwgSlNNYXBCdWNrZXRWYWx1ZUludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiog
cHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkLCBKU1NldEJ1Y2tldEhlYWRJ
bnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0
QnVja2V0TmV4dCwgSlNTZXRCdWNrZXROZXh0SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBw
cml2YXRlRnVuY1NldEJ1Y2tldEtleSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
U3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBKU1NldEJ1Y2tldEtleUludHJp
bnNpYyk7Ci0KICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIgPSBnZXRH
ZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVz
LT5mbGFncyk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cFByb3RvRmxhZ3NHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvRmxhZ3NHZXR0
ZXIpOwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIgPSBnZXRHZXR0
ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5n
bG9iYWwpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX3JlZ0V4
cFByb3RvR2xvYmFsR2V0dGVyLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIp
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQ
cm90b0dsb2JhbEdldHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0lnbm9yZUNh
c2VHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pZ25vcmVDYXNlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKV0uc2V0KHZtLCB0
aGlzLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVn
RXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJv
dG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5tdWx0aWxpbmUpOwogICAgIGNhdGNoU2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b011bHRpbGluZUdldHRl
cildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpOwogICAgIEdldHRl
clNldHRlciogcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1f
cmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOwogICAgIGNh
dGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1NvdXJjZUdl
dHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIpOwogICAgIEdldHRl
clNldHRlciogcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1f
cmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdGlja3kpOwogICAgIGNh
dGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1N0aWNreUdl
dHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpOwogICAgIEdldHRl
clNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBt
X3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+dW5pY29kZSk7CiAgICAg
Y2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIG1fcmVnRXhwUHJvdG9Vbmljb2Rl
R2V0dGVyLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKLSAgICBKU09i
amVjdCogYnVpbHRpblJlZ0V4cEV4ZWMgPSBhc09iamVjdChtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjKS5hc0NlbGwoKSk7Ci0gICAgbV9yZWdF
eHBQcm90b0V4ZWMuc2V0KHZtLCB0aGlzLCBidWlsdGluUmVnRXhwRXhlYyk7Ci0gICAgSlNPYmpl
Y3QqIHJlZ0V4cFN5bWJvbFJlcGxhY2UgPSBhc09iamVjdChtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKS5hc0NlbGwoKSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90
b1VuaWNvZGVHZXR0ZXIpOworICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFN5bWJvbFJlcGxhY2UgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpKTsKICAgICBtX3JlZ0V4cFByb3RvU3ltYm9sUmVw
bGFjZS5zZXQodm0sIHRoaXMsIHJlZ0V4cFN5bWJvbFJlcGxhY2UpOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cEJ1
aWx0aW5FeGVjKV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fcmVnRXhwUHJv
dG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWMpKSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSldLnNldCh2bSwgdGhpcywgbV9yZWdFeHBQcm90
b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJvbCkuYXND
ZWxsKCkpOworCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6U2V0KV0uc2V0KHZtLCB0aGlzLCBzZXRDb25zdHJ1Y3Rvcik7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6aXNBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvci0+Z2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5KS5hc0NlbGwoKSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y2FsbEZ1
bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBjYWxsRnVuY3Rpb24pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGx5RnVuY3Rp
b24pXS5zZXQodm0sIHRoaXMsIGFwcGx5RnVuY3Rpb24pOworCisjZGVmaW5lIElOSVRfUFJJVkFU
RV9HTE9CQUwodmFyTmFtZSwgZnVuY05hbWUsIGNvZGUpIFwKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpmdW5jTmFtZSldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeyBcCisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lcik7IFwKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3IoaW5pdC52bSksIGdsb2JhbE9iamVjdCkp
OyBcCisgICAgICAgIH0pOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFU
RV9HTE9CQUxfTkFNRShJTklUX1BSSVZBVEVfR0xPQkFMKQorI3VuZGVmIElOSVRfUFJJVkFURV9H
TE9CQUwKIAotI2RlZmluZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04odmFyTmFtZSwg
ZnVuY05hbWUsIGNvZGUpIEpTRnVuY3Rpb24qIHZhck5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKTsK
LSAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xPQkFMX05BTUUoQ1JF
QVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKQotI3VuZGVmIENSRUFURV9QUklWQVRFX0dMT0JB
TF9GVU5DVElPTgotCisgICAgLy8gRklYTUU6IEluaXRpYWxpemluZyB0aGVtIGxhemlseS4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNzk1CiAgICAg
SlNPYmplY3QqIGFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBBcnJheUl0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGUodm0sIHRoaXMsIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIGFycmF5SXRlcmF0
b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09i
amVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6QXJyYXlJdGVyYXRvcikp
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlJdGVyYXRv
clByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90
eXBlID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFz
eW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgYXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29u
c3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxK
U09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6QXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBh
c3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIG1hcEl0ZXJh
dG9yUHJvdG90eXBlID0gTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgTWFw
SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclBy
b3RvdHlwZS5nZXQoKSkpOwotICAgIG1hcEl0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rp
b24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtYXBJdGVyYXRv
clByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5r
VGltZUNvbnN0YW50OjpNYXBJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgbWFwSXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIHJl
Z0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIHJl
Z0V4cFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWdFeHBTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjpSZWdFeHBTdHJpbmdJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAg
SlNPYmplY3QqIHNldEl0ZXJhdG9yUHJvdG90eXBlID0gU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgdGhpcywgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIHNldEl0ZXJhdG9yQ29uc3Ry
dWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBzZXRJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlu
a1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpTZXRJdGVyYXRvcikpLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2V0SXRlcmF0b3JQcm90b3R5cGUpOwog
Ci0gICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgbmV3UHJv
bWlzZUNhcGFiaWxpdHlQcml2YXRlRnVuY3Rpb24pOwotICAgIG1fcmVzb2x2ZVByb21pc2VGdW5j
dGlvbi5zZXQodm0sIHRoaXMsIHJlc29sdmVQcm9taXNlUHJpdmF0ZUZ1bmN0aW9uKTsKLSAgICBt
X3JlamVjdFByb21pc2VGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHJlamVjdFByb21pc2VQcml2YXRl
RnVuY3Rpb24pOworICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0
SGVhZCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNN
YXBCdWNrZXRIZWFkLCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6bWFwQnVja2V0TmV4dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwg
bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBKU01hcEJ1Y2tldE5leHRJbnRyaW5zaWMpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0S2V5KV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleSwgSlNNYXBCdWNrZXRLZXlJ
bnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0VmFsdWUpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUs
IEpTTWFwQnVja2V0VmFsdWVJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6c2V0QnVj
a2V0SGVhZCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1
bmNTZXRCdWNrZXRIZWFkLCBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6c2V0QnVja2V0TmV4dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBKU1NldEJ1Y2tldE5leHRJbnRyaW5zaWMp
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6c2V0QnVja2V0S2V5KV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgSlNTZXRCdWNrZXRL
ZXlJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbXBvcnRNb2R1bGUpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6cHJvcGVydHlJc0VudW1lcmFibGUpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSkpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50Ojpvd25LZXlzKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCBnbG9iYWxGdW5jT3duS2V5cykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjplbnF1ZXVl
Sm9iKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsICJlbnF1ZXVlSm9iIl9zLCBlbnF1ZXVlSm9i
KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKSk7CisgICAgICAgIH0p
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OnR5cGVkQXJyYXlMZW5ndGgpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpKTsKKyAgICAgICAgfSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6dHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENv
bnN0cnVjdG9yKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlTb3J0KV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29y
dCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc1R5cGVkQXJyYXlWaWV3KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNUeXBlZEFy
cmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
Ojp0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSkpOworICAgICAg
ICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50Ojppc0JvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGlzQm91bmRGdW5jdGlvbikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpoYXNJbnN0
YW5jZUJvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGhh
c0luc3RhbmNlQm91bmRGdW5jdGlvbikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbnN0YW5jZU9m
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBvYmplY3RQcml2YXRlRnVuY0lu
c3RhbmNlT2YpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkxvZyldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpKTsKKyAgICAgICAg
fSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6QnVpbHRpbkRlc2NyaWJlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0
cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJlKSk7CisgICAgICAgIH0pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnRydW5jKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5j
VHJ1bmMsIFRydW5jSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlcGVhdENoYXJh
Y3RlcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5j
UmVwZWF0Q2hhcmFjdGVyKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFycmF5U3BlY2llc0NyZWF0
ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNTcGVj
aWVzQ3JlYXRlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXlTbG93KV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0Fy
cmF5U2xvdykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpjb25jYXRNZW1jcHkpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNw
eSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcHBlbmRNZW1jcHkpXS5pbml0TGF0ZXIoW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweSkpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50Ojpob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlv
blRyYWNrZXIpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBpbml0LnNldChJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3Q6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90b3R5cGVHZXRUaW1lSW50cmluc2ljKSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQ29uc3RydWN0b3IpXS5pbml0TGF0ZXIoW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVy
KSwgMSwgU3RyaW5nKCksIGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSk7CisgICAg
ICAgIH0pOworCisgICAgLy8gUmVnRXhwLnByb3RvdHlwZSBoZWxwZXJzLgorICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4
cENyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZXNTcGVjUmVnRXhw
Q3JlYXRlLCBOb0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc1JlZ0V4cCldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmlu
c2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cE1hdGNoRmFzdCldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0LCBSZWdFeHBN
YXRjaEZhc3RJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwU2VhcmNoRmFz
dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU2Vh
cmNoRmFzdCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBTcGxpdEZhc3QpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCkpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBUZXN0RmFzdCldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QsIFJlZ0V4cFRlc3RGYXN0SW50
cmluc2ljKSk7CisgICAgICAgIH0pOworCisgICAgLy8gU3RyaW5nLnByb3RvdHlwZSBoZWxwZXJz
LgorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OnN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MSwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKSk7CisgICAgICAgIH0p
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OnN0cmluZ1NwbGl0RmFzdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJp
bmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnN0
cmluZ1N1YnN0ckludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBi
dWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBGdW5j
dGlvbiBwcm90b3R5cGUgaGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlQm91bmRGdW5jdGlvbildLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCA1LCBTdHJpbmcoKSwgbWFrZUJvdW5kRnVuY3Rpb24pKTsKKyAgICAg
ICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6aGFzT3duTGVuZ3RoUHJvcGVydHkpXS5pbml0TGF0ZXIoW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVy
KSwgMSwgU3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSk7CisgICAgICAgIH0pOwogCi0g
ICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKLSNkZWZpbmUgSU5JVF9Q
UklWQVRFX0dMT0JBTCh2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmNOYW1lICMjIFByaXZhdGVOYW1l
KCksIHZhck5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9H
TE9CQUxfTkFNRShJTklUX1BSSVZBVEVfR0xPQkFMKQotI3VuZGVmIElOSVRfUFJJVkFURV9HTE9C
QUwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNO
YU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnByb3BlcnR5SXNFbnVtZXJhYmxlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0
ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkub3duS2V5c1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jT3duS2V5cywgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW1wb3J0TW9kdWxlUHJpdmF0ZU5hbWUo
KSwgcHJpdmF0ZUZ1bmNJbXBvcnRNb2R1bGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmVucXVldWVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsICJlbnF1ZXVlSm9iIl9zLCBlbnF1ZXVlSm9iKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubWFrZVR5cGVFcnJvclByaXZhdGVOYW1lKCksIHByaXZhdGVG
dW5jTWFrZVR5cGVFcnJvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
dHlwZWRBcnJheUxlbmd0aFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheUxlbmd0
aCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheUdldE9y
aWdpbmFsQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlHZXRP
cmlnaW5hbENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS50eXBlZEFycmF5U29ydFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheVNvcnQs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzVHlwZWRBcnJheVZpZXdQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZVByaXZhdGVO
YW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0JvdW5kRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY0lzQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNIYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmluc3RhbmNlT2ZQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0luc3RhbmNlT2Ys
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkJ1aWx0aW5Mb2dQcml2YXRl
TmFtZSgpLCBidWlsdGluTG9nLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5CdWlsdGluRGVzY3JpYmVQcml2YXRlTmFtZSgpLCBidWlsdGluRGVzY3JpYmUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlJlZ0V4cFByaXZhdGVOYW1lKCksIHJlZ0V4
cENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50cnVu
Y1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHJ1bmMsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLlByb21pc2VQcml2YXRlTmFtZSgpLCBwcm9taXNlQ29uc3RydWN0b3Is
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkludGVybmFsUHJvbWlzZVBy
aXZhdGVOYW1lKCksIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5kZWZhdWx0UHJvbWlzZVRoZW5Qcml2YXRlTmFtZSgpLCBw
cm9taXNlUHJvdG9UaGVuRnVuY3Rpb24oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5yZXBlYXRDaGFyYWN0ZXJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcnJheVNwZWNpZXNDcmVh
dGVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygp
LCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5pc0FycmF5UHJpdmF0ZU5hbWUoKSwgYXJyYXlDb25zdHJ1Y3Rvci0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5KSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNBcnJheVNsb3dQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y0lzQXJyYXlTbG93LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jb25j
YXRNZW1jcHlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0NvbmNhdE1lbWNweSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwZW5kTWVtY3B5UHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyUHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQcm9taXNl
UmVqZWN0aW9uVHJhY2tlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
Lkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuU2V0UHJpdmF0ZU5hbWUo
KSwgc2V0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnRoaXNUaW1lVmFsdWVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1RoaXNUaW1lVmFsdWUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiBFTkFCTEUoSU5UTCkKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRh
dGVUaW1lRm9ybWF0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNEYXRlVGltZUZvcm1hdCwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRhdGVUaW1lRm9ybWF0KV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3Jt
YXQpKTsKKyAgICAgICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCi0KLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQ29uc3Ry
dWN0b3JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmlu
ZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9GbGFnc0dldHRlclByaXZhdGVOYW1l
KCksIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJl
Z0V4cFByb3RvSWdub3JlQ2FzZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvSWdub3Jl
Q2FzZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
UHJvdG9NdWx0aWxpbmVHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b011bHRpbGluZUdl
dHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9T
b3VyY2VHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1NvdXJjZUdldHRlciwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJQ
cml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1N0aWNreUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyUHJpdmF0ZU5hbWUo
KSwgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0KLSAgICAgICAgLy8gUmVnRXhwLnByb3RvdHlwZSBoZWxwZXJzLgotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
QnVpbHRpbkV4ZWNQcml2YXRlTmFtZSgpLCBidWlsdGluUmVnRXhwRXhlYywgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwQ3JlYXRlUHJpdmF0ZU5hbWUoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZXNTcGVjUmVnRXhwQ3JlYXRl
LCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlz
UmVnRXhwUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwTWF0Y2hGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0
LCBSZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5yZWdFeHBTZWFyY2hGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdCksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFNwbGl0RmFzdFByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHJlZ0V4
cFByb3RvRnVuY1NwbGl0RmFzdCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2VQcml2YXRlTmFtZSgpLCBtX3JlZ0V4cFBy
b3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwVGVzdEZhc3RQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdF
eHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gU3RyaW5nLnByb3RvdHlwZSBo
ZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuc3RyaW5nSW5jbHVkZXNJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0lu
dGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RyaW5nU3Bs
aXRGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJp
bmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuc3RyaW5nU3Vic3RySW50ZXJuYWxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBidWlsdGluU3RyaW5nU3Vic3RySW50
ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8g
RnVuY3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlQm91bmRGdW5jdGlvblByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgNSwgU3RyaW5nKCksIG1ha2VCb3Vu
ZEZ1bmN0aW9uKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT3du
TGVuZ3RoUHJvcGVydHlQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDEsIFN0cmluZygpLCBoYXNPd25MZW5ndGhQcm9wZXJ0eSksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFw
QnVja2V0SGVhZFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0TmV4dFByaXZhdGVOYW1l
KCksIHByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwQnVja2V0S2V5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNr
ZXRLZXksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldFZh
bHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0SGVhZFByaXZhdGVOYW1lKCksIHBy
aXZhdGVGdW5jU2V0QnVja2V0SGVhZCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuc2V0QnVja2V0TmV4dFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jU2V0QnVja2V0TmV4
dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0S2V5UHJp
dmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NF
TUJMWV9TVFJFQU1JTkdfQVBJKQotICAgICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJ
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS53ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbFByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5Q29tcGls
ZVN0cmVhbWluZ0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkud2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlJbnN0
YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAorICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJs
eUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJp
bmcoKSwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFt
aW5nSW50ZXJuYWwpKTsKKyAgICAgICAgfSk7CiAjZW5kaWYKKworICAgIEdsb2JhbFByb3BlcnR5
SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmlu
aXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuYXNzZXJ0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBT
dHJpbmcoKSwgYXNzZXJ0Q2FsbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
ICNlbmRpZgogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZf
QVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKLSAgICBtX3NwZWNpYWxQb2ludGVy
c1tTcGVjaWFsOjpDYWxsRnVuY3Rpb25dID0gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7Ci0gICAgbV9z
cGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXBwbHlGdW5jdGlvbl0gPSBtX2FwcGx5RnVuY3Rpb24u
Z2V0KCk7Ci0gICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3Jd
ID0gb2JqZWN0Q29uc3RydWN0b3I7Ci0gICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJy
YXlDb25zdHJ1Y3Rvcl0gPSBhcnJheUNvbnN0cnVjdG9yOwotCi0gICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6VGhyb3dUeXBlRXJy
b3JGdW5jdGlvbildID0gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLmdldCgpOwotCiAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnVzZURvbGxhclZNKCkpKQogICAgICAgICBleHBvc2VEb2xsYXJW
TSh2bSk7CiAKQEAgLTE3MTEsMjIgKzE3NjAsMTYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhp
c09iamVjdC0+bV9wYXJzZUludEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcGFyc2VGbG9hdEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3Rv
VG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2V2
YWxGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJv
dG9jb2xGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Byb21pc2VS
ZXNvbHZlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX3Jlc29sdmVQcm9taXNlRnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24p
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b0hhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0
ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2UpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIp
OwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyLnZpc2l0KHZpc2l0b3IpOwogCkBAIC0x
Nzk0LDYgKzE4MzcsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9wcm94eU9i
amVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NhbGxhYmxl
UHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9w
cm94eVJldm9rZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKworICAgIGZvciAoYXV0byYgcHJv
cGVydHkgOiB0aGlzT2JqZWN0LT5tX2xpbmtUaW1lQ29uc3RhbnRzKQorICAgICAgICBwcm9wZXJ0
eS52aXNpdCh2aXNpdG9yKTsKICAgICAKICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyUHJvdG90
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CmluZGV4IDg5MjZhYWFkZmQ2OGQxYWYxMjkyODA0ZTJkMDM0MjJkN2ZmNDRmNjUuLjMxNWRmMWQ1
MzdmZjdmMzZiODE3OTE5YzhmZDU5YzNmNGM0YTZkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwR2xvYmFsRGF0YS5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVGbGFncy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiVk0uaCIKQEAgLTExOSw2ICsxMTgsNyBAQCBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owogc3RydWN0IEFjdGl2YXRp
b25TdGFja05vZGU7CiBzdHJ1Y3QgSGFzaFRhYmxlOworZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0
YW50IDogaW50MzJfdDsKIAogI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECiBjbGFzcyBXcmFw
cGVyTWFwOwpAQCAtMjk3LDI2ICsyOTcsMTYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3BhcnNlSW50RnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3BhcnNlRmxvYXRGdW5jdGlvbjsKIAotICAg
IFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJp
ZXI8SlNGdW5jdGlvbj4gbV9hcHBseUZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rp
b24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwotICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247Ci0gICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbjsKLSAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9yZWplY3RQcm9taXNlRnVuY3Rpb247Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uOwogICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uOwogICAg
IFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VT
eW1ib2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEdldHRlclNl
dHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKLSAgICBXcml0ZUJhcnJpZXI8SlNP
YmplY3Q+IG1fcmVnRXhwUHJvdG9FeGVjOwogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9y
ZWdFeHBQcm90b1N5bWJvbFJlcGxhY2U7Ci0gICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4g
bV9yZWdFeHBQcm90b0dsb2JhbEdldHRlcjsKLSAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVy
PiBtX3JlZ0V4cFByb3RvVW5pY29kZUdldHRlcjsKICAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0
dGVyPiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVy
OwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlcj4gbV9t
b2R1bGVMb2FkZXI7CkBAIC00MzAsOCArNDIwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgRk9SX0VBQ0hfVFlQRURfQVJS
QVlfVFlQRShERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFKQogI3VuZGVmIERFQ0xB
UkVfVFlQRURfQVJSQVlfVFlQRV9TVFJVQ1RVUkUKIAotICAgIEpTQ2VsbCogbV9zcGVjaWFsUG9p
bnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRo
ZSBMTEludCBhbmQgSklULgotICAgIEpTQ2VsbCogbV9saW5rVGltZUNvbnN0YW50c1tMaW5rVGlt
ZUNvbnN0YW50Q291bnRdOworICAgIFZlY3RvcjxMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IEpTQ2VsbD4+IG1fbGlua1RpbWVDb25zdGFudHM7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogCkBA
IC02MTYsMjQgKzYwNSwyMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBwYXJzZUZsb2F0RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlRmxvYXRGdW5jdGlvbi5nZXQodGhpcyk7IH0KIAogICAg
IEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9u
LmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rp
b24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Rocm93VHlwZUVy
cm9yRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0
aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldCh0aGlzKTsg
fQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rp
b24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQ
cm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIG5ld1Byb21pc2VD
YXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1Byb21pc2VDYXBhYmlsaXR5
RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1
bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAg
ICBKU0Z1bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvbHZlUHJvbWlzZUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogcmVqZWN0UHJv
bWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWplY3RQcm9taXNlRnVuY3Rpb24uZ2V0
KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rp
b24qIHJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9uKiByZWpl
Y3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUHJvdG9U
aGVuRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBvYmplY3RQcm90b1ZhbHVlT2ZG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24uZ2V0
KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsg
fQotICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnRXhwUHJvdG9FeGVjLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogcmVnRXhwUHJvdG9F
eGVjRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBs
YWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5n
ZXQoKTsgfQotICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLmdldCgpOyB9Ci0gICAgR2V0dGVy
U2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cFByb3RvVW5pY29kZUdldHRlci5nZXQoKTsgfQorICAgIEdldHRlclNldHRlciogcmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKKyAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogdGhyb3dUeXBlRXJyb3JBcmd1
bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIuZ2V0
KCk7CkBAIC05MTEsMTYgKzg5OCw5IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4gbGF6eVR5cGVkQXJyYXlT
dHJ1Y3R1cmUodHlwZSkuY29uc3RydWN0b3IodGhpcyk7CiAgICAgfQogCi0gICAgSlNDZWxsKiBh
Y3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKKyAgICBKU0NlbGwqIGxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB2YWx1ZSkgY29uc3QKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKLSAgICAgICAgcmV0dXJu
IG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwotICAgIH0KLSAgICBKU0NlbGwqIGpzQ2VsbEZv
ckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFT
U0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xp
bmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKV0uZ2V0KHRoaXMpOwogICAgIH0KIAogICAg
IFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCkgeyByZXR1
cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaApp
bmRleCBlMDM2OWJlY2IwNmYzYjk4MmNmZDkwYTVkYjIwMzllNjMzYmQ0MTI1Li4zZjI2ZDVjYWZl
MmJmNzU2MTRiZDIwNzY3Yjg0NDIwNDAyZDA1ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5UHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk9iamVj
dFByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMiw2ICsxMDMsMTUgQEAgQUxX
QVlTX0lOTElORSBTdHJ1Y3R1cmUqIEpTR2xvYmFsT2JqZWN0OjphcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG8KICAgICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmFycmF5Q29uc3Ry
dWN0b3IoKSwgbmV3VGFyZ2V0LCBhcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oaW5kZXhpbmdUeXBlKSk7CiB9CiAKK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2Jh
bE9iamVjdDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKSk7IH0KK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVj
dDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpuZXdQ
cm9taXNlQ2FwYWJpbGl0eSkpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6
OnJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNG
dW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVzb2x2ZVByb21p
c2UpKTsgfQoraW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtU
aW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZSkpOyB9CitpbmxpbmUg
SlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pKTsgfQoraW5saW5lIEpTRnVuY3Rp
b24qIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNv
bnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYykpOyB9CitpbmxpbmUgR2V0dGVyU2V0dGVyKiBKU0ds
b2JhbE9iamVjdDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcikpOyB9CitpbmxpbmUgR2V0dGVyU2V0dGVyKiBKU0ds
b2JhbE9iamVjdDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gYml0
d2lzZV9jYXN0PEdldHRlclNldHRlcio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKSk7IH0KKwogQUxXQVlTX0lOTElORSBWTSYgZ2V0
Vk0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDg2ZWJjOTM3ZjJmNTg1MjA5YTQ2NTE1ODNmYTBmNzRmNmNlMzk5
YTYuLjM5ZmYyOTY1NjI2YzE5N2YzNGM1NzdjMTU1NjUyNmI3OTE4YzA5MjUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxOS0xMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0YW50IG1lY2hhbmlzbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMt
dmFsdWUtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTExLTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIF0gaW5zcGVjdG9y
L2RvbS9nZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUuaHRtbCBpcyBmYWlsaW5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZy
YW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVk
LWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dAppbmRleCBlODJhNzk5NzZkYzZmM2ZmY2Y4
YTVlZTgzN2M4N2FlMjgxMWEyYTg5Li4yMTI1ZmI1Mjk3MWNlY2VhYjdjMDgwMzRmMmQ1MzZjN2Ey
YTRiNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1k
ZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVz
L3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQKQEAgLTE0LDYgKzE0
LDYgQEAgQ0FMTCBTVEFDSzoKIDM6IFtGXSBzdGFydEFCQwogICB0aGlzOiB1bmRlZmluZWQKIDQ6
IFtQXSBHbG9iYWwgQ29kZQotICB0aGlzOiB0ZXN0IC0gCisgIHRoaXM6IGMgLSAKIFJFU1VNRUQK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382703</attachid>
            <date>2019-11-03 01:58:41 -0800</date>
            <delta_ts>2019-11-03 01:11:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103015840.patch</filename>
            <type>text/plain</type>
            <size>137037</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi4yYmVmNjZkZTk2OTZmY2Rh
ODYwZDVhMjM4ZDk2YzI3NjBhNGEzOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSB1
c2luZyBwcml2YXRlLW5hbWUtdmFyaWFibGVzIG9mIEpTR2xvYmFsT2JqZWN0IGFzIGEgd2F5IHRv
IGFjY2VzcyB0byBjb25zdGFudHMgdGhhdCBhcmUgbWF0ZXJpYWxpemVkIHBlciBKU0dsb2JhbE9i
amVjdC4KKyAgICAgICAgQW5kIHdlIGFsc28gaGF2ZSBzcGVjaWFsLXBvaW50ZXJzIGFuZCBvbGQg
bGluay10aW1lLWNvbnN0YW50cyB0byBhY2Nlc3MgdG8gcGVyIEpTR2xvYmFsT2JqZWN0IGNvbnN0
YW50cy4KKyAgICAgICAgV2UgaGF2ZSBieXRlY29kZSBpbnRyaW5zaWMgY29uc3RhbnRzLCBidXQg
aXQgaXMgb25seSBhdmFpbGFibGUgZm9yIHBlciBWTSB2YWx1ZXMuCisKKyAgICAgICAgSG93ZXZl
ciwgdGhlc2Ugb25lcyBoYXZlIG11bHRpcGxlIHByb2JsZW1zLgorCisgICAgICAgIDEuIHByaXZh
dGUtbmFtZS12YXJpYWJsZXMgaXMgdG9vIGNvc3RseS4gV2UgbmVlZCB0byBoYXZlIGFuIGVudHJ5
IGluIEpTR2xvYmFsT2JqZWN0J3MgdmFyaWFibGUsIHRoaXMgbWFrZXMgU3ltYm9sVGFibGUgb2Yg
SlNHbG9iYWxPYmplY3QgbGFyZ2UuCisgICAgICAgICAgIEl0IGFsc28gcmVxdWlyZXMgV2F0Y2hw
b2ludFNldCB0byBtYWtlIGl0IGNvbnN0YW50LWZvbGQgaW4gREZHLiBBbmQgYWNjZXNzaW5nIHRo
ZXNlIHZhcmlhYmxlcyBmcm9tIGJ1aWx0aW4gSlMgdGFrZXMgb3BfcmVzb2x2ZV9zY29wZSBhbmQg
b3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgIGVubGFyZ2luZyBieXRlY29kZSBhbmQgc2xv
dyBpbiBpbnRlcnByZXRlciBhbmQgYmFzZWxpbmUgY29tcGFyZWQgdG8ganVzdCBnZXR0aW5nIHRo
ZW0gYXMgYSBjb25zdGFudCByZWdpc3Rlci4KKyAgICAgICAgMi4gc3BlY2lhbC1wb2ludGVycyBh
cmUgdGFpbG9yZWQgdG8gb3Bfam5lX3B0ciBvcGNvZGUsIGFuZCBub3QgdXNhYmxlIGluIHRoZSBv
dGhlciBieXRlY29kZSBzaW5jZSB0aGlzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBWaXJ0
dWFsUmVnaXN0ZXIuCisgICAgICAgIDMuIE9sZCBsaW5rLXRpbWUtY29uc3RhbnRzIGltcGxlbWVu
dGF0aW9uIGlzIHB1dHRpbmcgYXJyYXkgb2YgYWxsIGxpbmstdGltZS1jb25zdGFudHMgb24gZWFj
aCBVbmxpbmtlZENvZGVCbG9jaywgZXZlbiBpZiBpdCBpcyBub3QgdXNlZC4gSWYgeW91IGluY3Jl
YXNlICMgb2YKKyAgICAgICAgICAgbGluay10aW1lLWNvbnN0YW50LCBpdCBpbmNyZWFzZXMgc2l6
ZW9mKFVubGlua2VkQ29kZUJsb2NrKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGluay10aW1lLWNvbnN0YW50IG1lY2hhbmlzbSBhbmQgcmVtb3ZlIHRoZSBh
Ym92ZSBvbGQgb25lcyBtb3N0bHkuIChwcml2YXRlLW5hbWUtdmFyaWFibGVzIHN0aWxsIGV4aXN0
cyBmb3IgV2ViQ29yZSBhbmQgQGFzc2VydCkuCisgICAgICAgIFdlIG1hbmFnZSBsaW5rLXRpbWUt
Y29uc3RhbnRzIGluIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnksIGFuZCBlbWl0IEludDMyOkxp
bmtUaW1lQ29uc3RhbnRJRCBjb25zdGFudCB3aGVuIGdlbmVyYXRpbmcgYW4gVW5saW5rZWRDb2Rl
QmxvY2suIExhdGVyLCB0aGlzIGNvbnN0YW50CisgICAgICAgIGlzIGFsdGVybmF0ZWQgdG8gYW4g
YWN0dWFsIHZhbHVlIHdoZW4gd2UgbGluayBVbmxpbmtlZENvZGVCbG9jayB0byBDb2RlQmxvY2sg
d2l0aCBzcGVjaWZpYyBKU0dsb2JhbE9iamVjdC4gcHJpdmF0ZS1uYW1lLXZhcmlhYmxlcyBhY2Nl
c3NlcyBhcmUgbm93IGNvbnZlcnRlZCB0bworICAgICAgICBjb25zdGFudCByZWdpc3RlciBzbyB0
aGF0IGl0IGlzIHZlcnkgZWZmaWNpZW50bHkgYWNjZXNzZWQgYW5kIGl0IHJlZHVjZXMgbWVtb3J5
IHVzZWQgZm9yIFN5bWJvbFRhYmxlIGFuZCBXYXRjaHBvaW50U2V0LiBvcF9qbmVfcHRyIHRha2Vz
IGxpbmstdGltZS1jb25zdGFudAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXJzIGluc3RlYWQgb2Yg
c3BlY2lhbC1wb2ludGVycywgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHNwZWNpYWwtcG9pbnRlcnMg
bWVjaGFuaXNtLiBXZSBhbHNvIHJlcGxhY2Ugb2xkIGxpbmstdGltZS1jb25zdGFudHMgd2l0aCBu
ZXcgb25lLCB3aGljaCByZWR1Y2VzCisgICAgICAgIHNpemVvZihVbmxpbmtlZENvZGVCbG9jayku
CisKKyAgICAgICAgRnVydGhlcm1vcmUsIG5ldyBsaW5rLXRpbWUtY29uc3RhbnQgc3VwcG9ydHMg
bGF6eSBpbml0aWFsaXphdGlvbiBieSB1c2luZyBMYXp5UHJvcGVydHkgaW4gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgYWxsb3dzIHVzIHRvIGxhemlseSBnZW5lcmF0ZSBtYW55IGludGVybmFsIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IGFyZSBwcmV2aW91c2x5IGluaXRpYWxpemVkIGVhZ2VybHkuIFRo
aXMgcmVkdWNlcyAjIG9mIGFsbG9jYXRlZCBKU0Z1bmN0aW9uIHNpZ25pZmljYW50bHkgd2hlbiBp
bml0aWFsaXppbmcgSlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFNjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFk
ZXIucHk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9nbG9iYWxfcHJpdmF0ZV9jb2Rl
X25hbWVfbWFjcm8pOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5q
czoKKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENv
bnN0cnVjdG9yLkludGVybmFsUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlBy
b21pc2UucmVqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuSW50ZXJu
YWxQcm9taXNlLnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBDb25zdGFudHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkVudHJ5Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6RW50cnk6OmxpbmtUaW1lQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6ZW1pdHRlciBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29k
ZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaC4K
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpyZWdpc3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OnByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAg
ICAgICAoSlNDOjpnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjph
c3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJp
bmRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFNwcmVhZEV4cHJlc3Npb25Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRy
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puZXFfcHRyKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZSk6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNv
ZGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsaW5rVGlt
ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNhbGxGdW5j
dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcHBs
eUZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnRocm93VHlwZUVycm9yRnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlamVjdFBy
b21pc2VGdW5jdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFjdHVhbFBvaW50ZXJGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6anNDZWxsRm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnRocm93VHlwZUVycm9yRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlamVjdFByb21pc2VGdW5jdGlvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVj
RnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVn
RXhwUHJvdG9Vbmljb2RlR2V0dGVyIGNvbnN0KToKKwogMjAxOS0xMS0wMiAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9yMjUxODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjI1
ZmY2MWRiOTkwYWQ3ZjY4OGFhOGVjMTZmMWRmOWQ4YjZlYzc2Mi4uZmU3MGEzNTIyZDZlM2ZhYzY5
MDE2ZmQ2OGZiMDUzOTk2NzNlMTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNTIyLDYgKzUyMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAogICAgIGJ5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCiAgICAgYnl0
ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaAorICAgIGJ5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaAogICAgIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuaAogICAgIGJ5dGVjb2RlL09iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmgKICAgICBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlv
bi5oCkBAIC01MjksNyArNTMwLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGNvZGVTaXplLmgKICAgICBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29k
ZS9TcGVjaWFsUG9pbnRlci5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5
dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWI4NDY5YTJhYjFjNThmMjhmMTE3MjFiNDViNGIz
ZmMyYzkwMDI4NS4uMDQzYzg2NDkwMWQ1ZDQ1MWUwZWQxYzU4OTZjMDY2OTZkMTNlZGZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Miw3ICszNjIsNiBAQAogCQkwRjRGODI4
QzFFMzFCOTc2MDA3NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEY4MjhB
MUUzMUI5NzEwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5o
ICovOyB9OwogCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJl
clN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjUwQUYzQjE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi87
IH07CiAJCTBGNTUxM0E2MUQ1QTY4MkMwMEMzMkJEOCAvKiBGcmVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTEzQTUxRDVBNjgyQTAwQzMy
QkQ4IC8qIEZyZWVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDFCMDE2
MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyog
VG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVG
MEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAwRjMx
MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODEyLDYgKzE4MTEsNyBAQAogCQlFMzVDQTE1NDFE
QkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAx
REJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzYzN0VFOTIzNkU1NkIwMDA5NkJEMEEgLyogTGlu
a1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzZCNzY3MDIy
RjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4
IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAw
NTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRp
b25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjU4NSw4ICsyNTg1LDYgQEAKIAkJMEY1MEFGM0IxOTNFOEIz
OTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgcGF0aCA9IGRmZy9E
RkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1NTEzQTUxRDVBNjgyQTAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZyZWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNTUxM0E3MUQ1QTY4Q0IwMEMzMkJEOCAvKiBGcmVlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmVlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjaWFsUG9pbnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVj
aWFsUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1OTg5NzE3Qzg2
QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9OYXRp
dmVGcm9tVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUMxOTMxNzI3
NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJz
dHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYxMTRE
MTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDkzNSw2ICs0OTMzLDggQEAKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGlt
ZUNvbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtU
aW1lQ29uc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2RTIy
RjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBs
YW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0
aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ3JlYXRpb25N
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjM3LDYgKzgyMzcsOCBAQAog
CQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkwRkI1
NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAog
CQkJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
ICovLAorCQkJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmNw
cCAqLywKKwkJCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5o
ICovLAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
ICovLAogCQkJCTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAogCQkJCTUzRkEyQUUwMUNGMzdGM0Yw
MDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
aCAqLywKQEAgLTgyODQsOCArODI4Niw2IEBACiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3Nzkg
LyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKLQkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUg
LyogU3BlY2lhbFBvaW50ZXIuY3BwICovLAotCQkJCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBT
cGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNw
ZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVj
dHVyZVNldC5jcHAgKi8sCkBAIC05NDQ4LDYgKzk0NDgsNyBAQAogCQkJCTBGMkI2NkFFMTdCNkI1
NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2QUYxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdD
TG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTIyOTI3RDUyMzVGRDBCOTAwNUNCMTY5IC8q
IEdDTWVtb3J5T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzE1MzExRUIyOEJF
RTAwQTE2NDVEIC8qIEdDUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjAxOEJG
RkJCQjAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
NEU4RUIxMThCRkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC05ODQzLDYgKzk4NDQsNyBAQAogCQkJCUJDMThDNDMxMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNjM3RUU5MjM2RTU2
QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Uy
RUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDA5Niw3ICsxMDA5OCw2IEBACiAJCQkJMEZERTg3RkMxREZF
NkU1MTAwNjRDMzkwIC8qIFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6
ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURBRUVF
MDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODVGNkJD
MThDNTUzRkUwMEYxMDYyNiAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGM0FDNzUyMTgzRUExMDQwMDMyMDI5RiAvKiBTdGFja0FsaWdubWVudC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVh
ZGVyLnB5CmluZGV4IDMzNDE5ZjU1ZjYxYzU0NGFmYzhjODRjM2M3OTY5Njc1ZTc5MDFiNTYuLjA0
MmIzMjJiYjhiZGRmMTM0YTc4MDFiYTZmYmRiMmE3YzU1YTliMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29t
YmluZWRfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVp
bHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5CkBAIC0xNzIsMTEgKzE3
MiwxMCBAQCBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFsX3ByaXZhdGVfY29kZV9uYW1l
X21hY3JvKHNlbGYpOgogICAgICAgICBmdW5jdGlvbnMuc29ydChrZXk9bGFtYmRhIHg6IHguZnVu
Y3Rpb25fbmFtZSkKICAgICAgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKICAgICAgICAg
ICAgIGZ1bmN0aW9uX2FyZ3MgPSB7Ci0gICAgICAgICAgICAgICAgJ3Zhck5hbWUnOiBnZXRfdmFy
X25hbWUoZnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1
bmN0aW9uX25hbWUsCiAgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0
b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUodmFyTmFtZSlzLCAlKGZ1bmNOYW1l
KXMsICUoY29kZU5hbWUpcykgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywgJShjb2RlTmFtZSlzKSBcXCIgJSBmdW5j
dGlvbl9hcmdzKQogCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKaW5kZXggYzkwOGFmYjUwZTA1YzE4Y2U2ZGUxYjFkN2NkNjVkNmM1ODhk
ZTMyOC4uNTE5MjFkNzE4NjA5YmExZTdiNDgxNDEwNjM0N2FlZDIyZTg2MDg4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjQ0LDYgKzI0NCw3IEBAIGJ5dGVjb2RlL0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9KdW1wVGFibGUuY3BwCiBieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKK2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
Y3BwCiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAKIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3Bw
CkBAIC0yNjMsNyArMjY0LDYgQEAgYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVj
b2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCi1ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAogYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAogYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCBkZDMzY2E4MDM2YTMwYmY2
NGUwOGEwYTM4N2VlMWI1YjcxMWE3OGYxLi5kNDNlNDhmMGJhMzFlYmRjZjhiZWQxOGI2ZTlhYjBi
OGRiZjU2MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIEpTQ19DT01NT05f
QllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUobWFjcm8pIFwKICAgICBKU0Nf
Q09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfRUFDSF9OQU1FKG1hY3JvKSBcCiAg
ICAgbWFjcm8oYWRkKSBcCisgICAgbWFjcm8oYXBwbHlGdW5jdGlvbikgXAogICAgIG1hY3JvKGFy
cmF5SXRlcmF0b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmQpIFwK
ICAgICBtYWNybyhhcnJheUl0ZXJhdG9yTmV4dCkgXApAQCAtNTIsNiArNTMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBtYWNybyhhcnJheUl0ZXJhdG9yS2luZCkgXAogICAgIG1hY3JvKGFycmF5
U3BlY2llc0NyZWF0ZSkgXAogICAgIG1hY3JvKGFzc2VydCkgXAorICAgIG1hY3JvKGNhbGxGdW5j
dGlvbikgXAogICAgIG1hY3JvKGNoYXJDb2RlQXQpIFwKICAgICBtYWNybyhleGVjdXRvcikgXAog
ICAgIG1hY3JvKGlzVmlldykgXApAQCAtNzMsNiArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCiAgICAgbWFjcm8ob3duS2V5cykgXAogICAg
IG1hY3JvKFNldCkgXAorICAgIG1hY3JvKHRocm93VHlwZUVycm9yRnVuY3Rpb24pIFwKICAgICBt
YWNybyh0eXBlZEFycmF5TGVuZ3RoKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheVNvcnQpIFwKICAg
ICBtYWNybyh0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcikgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKaW5kZXgg
MzBmYzY2ZTRiODlmMmVhMGJkNjlhN2I4MWRlMTM4NTBmMDFjZGI3NC4uNjZmOTUxZmI0ZmM2ZDFj
NjUxZTAzMDc3MGRlZDUxNWU5MGRlYjliMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCkBAIC0yMzcsMTkgKzIzNywxNiBA
QCBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZhciBwcm9taXNlID0gQGNyZWF0ZVBy
b21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gZmFsc2UpOwogICAgIHZhciBjYXB0
dXJlZFByb21pc2UgPSBwcm9taXNlOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbGxvdyB1
c2luZyBmdW5jdGlvbi1kZWNsYXJhdGlvbiBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM1MDIKLSAgICB2YXIgQHJlamVjdCA9IGZ1bmN0aW9u
IEByZWplY3QocmVhc29uKSB7Ci0gICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJz
dFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKLSAg
ICB9OwotCiAgICAgdHJ5IHsKICAgICAgICAgZXhlY3V0b3IoCiAgICAgICAgICAgICBmdW5jdGlv
biBAcmVzb2x2ZShyZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEByZXNvbHZl
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlz
ZSwgcmVzb2x1dGlvbik7Ci0gICAgICAgICAgICB9LCBAcmVqZWN0KTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAgICAg
IHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNr
KGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgICAgIEByZWplY3QoZXJyb3IpOworICAgICAgICBAcmVqZWN0UHJvbWlz
ZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsKICAg
ICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKQEAgLTI2NiwxOSArMjYzLDE2IEBAIGZ1bmN0aW9u
IEludGVybmFsUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9t
aXNlKHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIHRydWUpOwogICAgIHZhciBjYXB0dXJl
ZFByb21pc2UgPSBwcm9taXNlOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbGxvdyB1c2lu
ZyBmdW5jdGlvbi1kZWNsYXJhdGlvbiBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM1MDIKLSAgICB2YXIgQHJlamVjdCA9IGZ1bmN0aW9uIEBy
ZWplY3QocmVhc29uKSB7Ci0gICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJl
c29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKLSAgICB9
OwotCiAgICAgdHJ5IHsKICAgICAgICAgZXhlY3V0b3IoCiAgICAgICAgICAgICBmdW5jdGlvbiBA
cmVzb2x2ZShyZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEByZXNvbHZlUHJv
bWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwg
cmVzb2x1dGlvbik7Ci0gICAgICAgICAgICB9LCBAcmVqZWN0KTsKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAgICAgIHJl
dHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNh
cHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0gY2F0Y2ggKGVy
cm9yKSB7Ci0gICAgICAgIEByZWplY3QoZXJyb3IpOworICAgICAgICBAcmVqZWN0UHJvbWlzZVdp
dGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsKICAgICB9
CiAKICAgICByZXR1cm4gcHJvbWlzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGFmODA3NjkzMzJjOWNiNTBlMjJjYzMzZGFj
NzQ1YTJkYmUwZmUzMDQuLjg1OGFiOTA1MDJlODRkNzA3OTE1MzI1ZjY5M2VlM2Q1ZDU4NWM4ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcApAQCAtMTM2LDYgKzEzNiw5IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQ29uc3RhbnRzKCkKICAgICAgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOjpPdGhlcjoKICAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25E
ZXNjcmlwdGlvbiA9ICIiOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQ6CisgICAgICAgICAg
ICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiOiBpbiBzb3VyY2Ug
YXMgbGlua2UtdGltZS1jb25zdGFudCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB0aGlzLT5tX291dC5wcmludGYoIiAgIGsldSA9ICVzJXNcbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgdG9DU3RyaW5nKGNvbnN0YW50LmdldCgpKS5kYXRh
KCksIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICsr
aTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCBkNDE2MzNjNTViNjA5Y2Q1N2UyNDNiMmIx
YTRjNDQwOTIxNGM1YWRhLi45OWYzZWJiNWM2NDJhMDlmNDQ0NjM3Y2I2NDBkYzU1ZDM1NTZiZGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC00Miw3ICs0Miw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RP
X1NFVChuYW1lKSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLmltcGwoKSwgJkJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfIyNuYW1lKTsKKyNkZWZpbmUgSU5JVElBTElaRV9CWVRF
Q09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAu
YWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCku
aW1wbCgpLCBFbnRyeSgmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY18jI25h
bWUpKTsKKyNkZWZpbmUgSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VU
X0ZPUl9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbV9ieXRlY29kZUludHJpbnNpY01h
cC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMjUHJpdmF0ZU5hbWUo
KS5pbXBsKCksIEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZSk7CiAKIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIDogbV92
bSh2bSkKQEAgLTUwLDYgKzUxLDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiB7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9J
TlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJ
Q19OQU1FU19UT19TRVQpCiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RB
TlRTX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQp
CisgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhJTklUSUFMSVpFX0JZVEVDT0RF
X0lOVFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVCkKIAogICAgIG1f
dW5kZWZpbmVkLnNldChtX3ZtLCBqc1VuZGVmaW5lZCgpKTsKICAgICBtX0luZmluaXR5LnNldCht
X3ZtLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCkpKTsKQEAgLTk4LDEzICsxMDAsMTMgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9Bc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb25Ob25lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0Fz
eW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiB9CiAK
LUJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorT3B0aW9uYWw8Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk+IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBpZiAoIWlkZW50
LmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fYnl0ZWNvZGVJbnRyaW5zaWNN
YXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2J5dGVjb2RlSW50
cmluc2ljTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaAppbmRleCBmYWViMjM4OWI4ZmQ3MGVlNWY5NDkzNWYzOGE3NGE2MTU2Nzg2OWJm
Li41NjdiMDI2YjVlMWQwNWM4MzZjMDE5YzkzN2M4NTA5NTNjODI1ZjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMzcsNyArMTM4LDQ0IEBAIGNs
YXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogCiAgICAgdHlwZWRlZiBSZWdpc3RlcklE
KiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJUeXBlKShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKTsKIAotICAgIEVtaXR0ZXJUeXBlIGxvb2t1cChjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIEVt
aXR0ZXIgPSAwLAorICAgICAgICBMaW5rVGltZUNvbnN0YW50ID0gMSwKKyAgICB9OworCisgICAg
Y2xhc3MgRW50cnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgRW50cnkoKQorICAgICAgICAgICAg
OiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9lbWl0dGVy
ID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIEVudHJ5KEVtaXR0ZXJUeXBlIGVtaXR0
ZXIpCisgICAgICAgICAgICA6IG1fdHlwZShUeXBlOjpFbWl0dGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX2VtaXR0ZXIgPSBlbWl0dGVyOworICAgICAgICB9CisKKyAgICAgICAgRW50cnko
TGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KQorICAgICAgICAgICAgOiBtX3R5cGUo
VHlwZTo6TGlua1RpbWVDb25zdGFudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9saW5rVGlt
ZUNvbnN0YW50ID0gbGlua1RpbWVDb25zdGFudDsKKyAgICAgICAgfQorCisgICAgICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICBMaW5rVGltZUNvbnN0YW50
IGxpbmtUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnQ7IH0K
KyAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgRW1pdHRlclR5
cGUgbV9lbWl0dGVyOworICAgICAgICAgICAgTGlua1RpbWVDb25zdGFudCBtX2xpbmtUaW1lQ29u
c3RhbnQ7CisgICAgICAgIH07CisgICAgICAgIFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBP
cHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKIAogI2RlZmlu
ZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1l
KSBKU1ZhbHVlIG5hbWUjI1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShKU0NfREVDTEFSRV9CWVRF
Q09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKQEAgLTE0NSw3ICsxODMsNyBAQCBj
bGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogcHJpdmF0ZToKICAgICBWTSYgbV92
bTsKLSAgICBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVtaXR0ZXJUeXBlLCBJ
ZGVudGlmaWVyUmVwSGFzaD4gbV9ieXRlY29kZUludHJpbnNpY01hcDsKKyAgICBIYXNoTWFwPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9ieXRl
Y29kZUludHJpbnNpY01hcDsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5T
SUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1lKSBTdHJvbmc8VW5rbm93bj4gbV8jI25hbWU7CiAg
ICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX1NJTVBMRV9FQUNIX05B
TUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBk
NjUyYjY1ODg0Yzc4YjAzYmQ4MGQyZDY3ZDQ4ZjE2ODYxMGI5YTc4Li4zNGMxNTJhMGQ2NjJmMzUy
OTdkZjE0NDQ4NjRmYjRiYmEzNDBlZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTY0LDEwICs2NCw2IEBACiAgICAgOk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLAogXQogCi1uYW1lc3BhY2UgOlNwZWNpYWwgZG8KLSAgICB0eXBlcyBb
IDpQb2ludGVyIF0KLWVuZAotCiB0ZW1wbGF0ZXMgWwogICAgIDpXcml0ZUJhcnJpZXIsCiAgICAg
OldyaXRlQmFycmllckJhc2UsCkBAIC02NzUsNyArNjcxLDcgQEAKIG9wIDpqbmVxX3B0ciwKICAg
ICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNwZWNp
YWxQb2ludGVyOiBTcGVjaWFsOjpQb2ludGVyLAorICAgICAgICBzcGVjaWFsUG9pbnRlcjogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDVlYzI0NmM5MWQ4MmVjZTYyNGRkZGMyNmFiYjVkNTU0MjQzZGI5ODIuLjBm
OGU3ZjhiNGY5MjQ0NDczODJhNWQ4ZTg4MTM3NjA3ZDQ5YzI0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zOTksMTIgKzM5OSw2IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRD
b2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFu
dHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSwgdG9wTGV2ZWxFeGVjdXRhYmxlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGkrKykgewotICAgICAgICBMaW5r
VGltZUNvbnN0YW50IHR5cGUgPSBzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0YW50PihpKTsKLSAg
ICAgICAgaWYgKHVuc2lnbmVkIHJlZ2lzdGVySW5kZXggPSB1bmxpbmtlZENvZGVCbG9jay0+cmVn
aXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpCi0gICAgICAgICAgICBtX2NvbnN0
YW50UmVnaXN0ZXJzW3JlZ2lzdGVySW5kZXhdLnNldCh2bSwgdGhpcywgbV9nbG9iYWxPYmplY3Qt
PmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOwotICAgIH0KLQogICAgIC8vIFdlIGFs
cmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmb3IgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCBzaW5jZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlCiAgICAgLy8gdGhlIG1vZHVsZSBlbnZp
cm9ubWVudHMgYmVmb3JlIGxpbmtpbmcgdGhlIGNvZGUgYmxvY2suIFdlIHJlcGxhY2UgdGhlIHN0
b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0aGUgYWxyZWFkeSBjbG9uZWQgb25lLgogICAgIGlmIChV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odm0s
IHVubGlua2VkQ29kZUJsb2NrKSkgewpAQCAtOTA1LDI5ICs4OTksMzYgQEAgdm9pZCBDb2RlQmxv
Y2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93
bj4+JiBjb25zdGEKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CiAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBjb25zdGFudHNbaV0uZ2V0KCk7Ci0KLSAg
ICAgICAgaWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChjb25zdGFu
dC5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGNvbnN0YW50LmFz
Q2VsbCgpOwotICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBq
c0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX3VubGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2Rl
cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLT5tX2xvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAgIHN3aXRjaCAoY29u
c3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2ldKSB7CisgICAgICAgIGNhc2UgU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAgICAgICAgY29uc3Rh
bnQgPSBnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3RhbnQoc3RhdGljX2Nhc3Q8TGlua1RpbWVD
b25zdGFudD4oY29uc3RhbnQuYXNJbnQzMkFzQW55SW50KCkpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXI6CisgICAgICAg
IGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpJbnRlZ2VyOgorICAgICAgICBjYXNlIFNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6RG91YmxlOgorICAgICAgICAgICAgaWYgKCFjb25zdGFu
dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gY29uc3RhbnQuYXNDZWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBqc0R5bmFt
aWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5cGVQcm9maWxlck9wY29kZXMo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBjbG9u
ZSA9IHN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0YUNvZGVCbG9jayh0aGlzKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFibGUtPmNyZWF0ZVRlbXBsYXRl
T2JqZWN0KGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBjbG9uZSA9IHN5bWJvbFRhYmxlLT5j
bG9uZVNjb3BlUGFydCh2bSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3YXNDb21waWxlZFdp
dGhEZWJ1Z2dpbmdPcGNvZGVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0
UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQg
PSBjbG9uZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGRlc2NyaXB0b3IgPSBq
c0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj4odm0sIGNlbGwpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVjdXRh
YmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOwotICAg
ICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
ICAgICAgICAgICAgICAgICBjb25zdGFudCA9IHRlbXBsYXRlT2JqZWN0OwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQodm0sIHRoaXMsIGNvbnN0YW50KTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IGUyNDRmZDYyNzA5
YjQyNWE2MjhlMjI0NTY2MzhiMGU1NjNjZGFlMDkuLmVkYTI0YmU0Njk1NjRiMmU1MGM2NGZlNjA4
MWJhMjFmOWNlZDlhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUg
IlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MTlmOTc1NjhhMzk1MjIxMDZkZDEyNzBjYjliMTFlMWFhODkwZGI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGlua1Rp
bWVDb25zdGFudC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKKyNkZWZp
bmUgUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIFwKKyAgICBjYXNlIEpTQzo6
TGlua1RpbWVDb25zdGFudDo6bmFtZTogXAorICAgICAgICBvdXQucHJpbnQoI25hbWUpOyBcCisg
ICAgICAgIHJldHVybjsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpT
Qzo6TGlua1RpbWVDb25zdGFudCBjb25zdGFudCkKK3sKKyAgICBzd2l0Y2ggKGNvbnN0YW50KSB7
CisgICAgICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoUFJJTlRfTElOS19USU1F
X0NPTlNUQU5UKQorICAgIH0KK30KKworI3VuZGVmIFBSSU5UX0xJTktfVElNRV9DT05TVEFOVAor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNmU3MjYyNDA5Yzg1NzQzMmQ0YjJm
Y2ZhY2YxN2M3NjBkMTdiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU0NCdWlsdGlucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJs
b2NrOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfTElOS19U
SU1FX0NPTlNUQU5UUyh2KSBcCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklW
QVRFX0dMT0JBTF9OQU1FKHYpIFwKKyAgICB2KHRocm93VHlwZUVycm9yRnVuY3Rpb24sIG51bGxw
dHIpIFwKKyAgICB2KGltcG9ydE1vZHVsZSwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0SGVh
ZCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAgIHYobWFw
QnVja2V0S2V5LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRWYWx1ZSwgbnVsbHB0cikgXAor
ICAgIHYoc2V0QnVja2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0TmV4dCwgbnVs
bHB0cikgXAorICAgIHYoc2V0QnVja2V0S2V5LCBudWxscHRyKSBcCisgICAgdihwcm9wZXJ0eUlz
RW51bWVyYWJsZSwgbnVsbHB0cikgXAorICAgIHYob3duS2V5cywgbnVsbHB0cikgXAorICAgIHYo
ZW5xdWV1ZUpvYiwgbnVsbHB0cikgXAorICAgIHYobWFrZVR5cGVFcnJvciwgbnVsbHB0cikgXAor
ICAgIHYodHlwZWRBcnJheUxlbmd0aCwgbnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheUdldE9y
aWdpbmFsQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTb3J0LCBudWxs
cHRyKSBcCisgICAgdihpc1R5cGVkQXJyYXlWaWV3LCBudWxscHRyKSBcCisgICAgdih0eXBlZEFy
cmF5U3ViYXJyYXlDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzQm91bmRGdW5jdGlvbiwgbnVs
bHB0cikgXAorICAgIHYoaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAg
dihpbnN0YW5jZU9mLCBudWxscHRyKSBcCisgICAgdihCdWlsdGluTG9nLCBudWxscHRyKSBcCisg
ICAgdihCdWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAgICB2KFJlZ0V4cCwgbnVsbHB0cikg
XAorICAgIHYodHJ1bmMsIG51bGxwdHIpIFwKKyAgICB2KFByb21pc2UsIG51bGxwdHIpIFwKKyAg
ICB2KEludGVybmFsUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoZGVmYXVsdFByb21pc2VUaGVu
LCBudWxscHRyKSBcCisgICAgdihyZXBlYXRDaGFyYWN0ZXIsIG51bGxwdHIpIFwKKyAgICB2KGFy
cmF5U3BlY2llc0NyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheSwgbnVsbHB0cikgXAor
ICAgIHYoaXNBcnJheVNsb3csIG51bGxwdHIpIFwKKyAgICB2KGNvbmNhdE1lbWNweSwgbnVsbHB0
cikgXAorICAgIHYoYXBwZW5kTWVtY3B5LCBudWxscHRyKSBcCisgICAgdihob3N0UHJvbWlzZVJl
amVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKKyAgICB2KEluc3BlY3Rvckluc3RydW1lbnRhdGlv
biwgbnVsbHB0cikgXAorICAgIHYoU2V0LCBudWxscHRyKSBcCisgICAgdih0aGlzVGltZVZhbHVl
LCBudWxscHRyKSBcCisgICAgdihpc0NvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAgdihyZWdF
eHBQcm90b0ZsYWdzR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b0dsb2JhbEdl
dHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyLCBudWxs
cHRyKSBcCisgICAgdihyZWdFeHBQcm90b011bHRpbGluZUdldHRlciwgbnVsbHB0cikgXAorICAg
IHYocmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3Rv
U3RpY2t5R2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIs
IG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cEJ1aWx0aW5FeGVjLCBudWxscHRyKSBcCisgICAgdihy
ZWdFeHBDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzUmVnRXhwLCBudWxscHRyKSBcCisgICAg
dihyZWdFeHBNYXRjaEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNlYXJjaEZhc3QsIG51
bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhw
UHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwVGVzdEZhc3Qs
IG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAg
ICB2KHN0cmluZ1NwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYoc3RyaW5nU3Vic3RySW50ZXJu
YWwsIG51bGxwdHIpIFwKKyAgICB2KG1ha2VCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAg
dihoYXNPd25MZW5ndGhQcm9wZXJ0eSwgbnVsbHB0cikgXAorICAgIHYoZGF0ZVRpbWVGb3JtYXQs
IG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsLCBu
dWxscHRyKSBcCisgICAgdih3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWws
IG51bGxwdHIpIFwKKyAgICB2KE9iamVjdCwgbnVsbHB0cikgXAorICAgIHYoQXJyYXksIG51bGxw
dHIpIFwKKyAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGNhbGxGdW5jdGlv
biwgbnVsbHB0cikgXAorCisKKyNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFt
ZSwgY29kZSkgbmFtZSwKK2VudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Qgewor
ICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJTUVfQ09O
U1RBTlQpCit9OworI3VuZGVmIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UCisjZGVmaW5lIENP
VU5UX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSAxICsKK3N0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cyA9IEpTQ19GT1JFQUNIX0xJTktfVElN
RV9DT05TVEFOVFMoQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKSAwOworI3VuZGVmIENPVU5UX0xJ
TktfVElNRV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWQzZjI0Y2EwNDgxZDExYTY3ZWJkMWJmYmFiZTg2NmZk
MzFkNDhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRl
ci5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkKiBh
Y3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNwZWNpYWw6OlBv
aW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2ludGVy
Rm9yKHBvaW50ZXIpOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGFjdHVhbFBv
aW50ZXJGb3IoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcG9pbnRlcik7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIHN3
aXRjaCAocG9pbnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVuY3Rpb246Ci0g
ICAgICAgIG91dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEpTQzo6U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJBcHBs
eUZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6T2Jq
ZWN0Q29uc3RydWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3RydWN0b3IiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9y
OgotICAgICAgICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91dC5wcmludCgi
VGFibGVTaXplIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5MmJhYjc2ZWEyYmZmN2U2ZTg4MzUz
NWVhNGQ3NmM0MWIwNDY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotCi1uYW1lc3BhY2Ug
U3BlY2lhbCB7Ci1lbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7Ci0gICAgQ2FsbEZ1bmN0aW9uLAot
ICAgIEFwcGx5RnVuY3Rpb24sCi0gICAgT2JqZWN0Q29uc3RydWN0b3IsCi0gICAgQXJyYXlDb25z
dHJ1Y3RvciwKLSAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50ZXIuIFVz
ZSB0aGlzIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgotfTsKLX0gLy8gbmFt
ZXNwYWNlIFNwZWNpYWwKLQotZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBUaHJv
d1R5cGVFcnJvckZ1bmN0aW9uLAotfTsKLWNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRD
b3VudCA9IDE7Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50
ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVj
aWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBwb2lu
dGVySXNDZWxsKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiwgU3BlY2lhbDo6
UG9pbnRlcik7Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayosIFNwZWNpYWw6OlBv
aW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNz
IFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlNw
ZWNpYWw6OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDIzNGZh
NTc3YzVhZjBhMTIxNmM3YjRkNmQwNDQ3ZDBiY2Y4ZDRjNDkuLmQ1ZGRlZThkNTYwNzcwMzIzYjFm
ZDVmMWFjY2NjYzA1MDJjMTI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzYsOCArNzYsNiBAQCBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRp
b25Nb2RlKQogICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSgp
KQogewotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlckluZGV4IDogbV9saW5rVGltZUNv
bnN0YW50cykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlckluZGV4ID0gMDsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0
b3JLaW5kKCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29kZVR5cGUpKTsKICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NzM5ZGE3ODM1NjhkM2ViMjYzMWVl
ZjFhNzI0MjkyODc5N2Y1NjY5Li5kNjA3MzYwMTRkZDFlMzE1NzEzYTg1MmU4N2RhNjU2MTQxNjMw
MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1
ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCi0jaW5jbHVkZSAiU3BlY2lh
bFBvaW50ZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2lu
Y2x1ZGUgIlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rl
ci5oIgpAQCAtMTgwLDI3ICsxNzksMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24u
YXBwZW5kKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkK
KyAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29uc3Rh
bnQpCiAgICAgewogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICBhdXRvIGxv
Y2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNlbGxMb2NrKCkpOwogICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAgICAgQVNT
RVJUKHJlc3VsdCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQp
OwotICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XSA9IHJlc3VsdDsKICAgICAgICAg
bV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwotICAg
ICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMubGFz
dCgpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGlua1RpbWVD
b25zdGFudCkpKTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24u
YXBwZW5kKFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZv
ckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFT
U0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xp
bmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8V3JpdGVC
YXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJl
Z2lzdGVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRl
eCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CkBAIC00MDYsOCArMzk1LDYgQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsK
IAotICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5r
VGltZUNvbnN0YW50czsKLQogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2ln
bmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCAyZGI4MThmMGI5YjU0YjIxNWJhZjA2Y2NjNmFlMzFjM2My
OWFkZmFlLi44MzZmZDU3OGYyYzE4NGZiMzM2MjU1ODcxYzZiMTJjM2MxMzY3YTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMzA4LDkgKzMwOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVy
IDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVy
ID0gbnVsbHB0cjsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBB
bGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM2MCw5ICsz
NTcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJy
b3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1
bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVC
bG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdGFudFJl
Z2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJl
Z2lzdGVyID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxl
ID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5z
ZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9s
VGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwxMSArNzgyLDcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmlu
Z0Z1bmN0aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJvd25WYWx1ZSk7CiAgICAgICAgIC8vIHJl
dHVybiBAcHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJSZWplY3RQcm9taXNlID0gdmFyaWFibGUo
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNv
bHZpbmdGdW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgbW92ZShzY29wZS5nZXQo
KSwgZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSkpOwotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IGVtaXRHZXRGcm9tU2NvcGUo
bmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlLCBUaHJvd0lmTm90
Rm91bmQpOwotCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0gbW92
ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlz
ZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKTsKICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICAgICAgZW1pdExvYWQoYXJncy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIG1vdmUoYXJncy5hcmd1bWVudFJl
Z2lzdGVyKDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBAIC04NDgsOSArODM4LDYgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2Rl
LCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250
ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgp
KQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAg
ICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKICAgICBwdXNoVERaVmFyaWFi
bGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90
T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CkBAIC05MTAsOSArODk3LDYgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3Jh
bU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKLSAgICBm
b3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMp
Ci0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgU3ltYm9sVGFibGUq
IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0p
OwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFs
KG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUt
PnNldFNjb3BlVHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwpAQCAt
MTQ0MiwxMiArMTQyNiwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmRmFs
c2UoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIAogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYg
dGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpDYWxs
RnVuY3Rpb24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywg
Y29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y2Fs
bEZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYg
dGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpBcHBs
eUZ1bmN0aW9uLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMs
IGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFw
cGx5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5l
cmF0b3I6Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApAQCAtMzEw
MSw3ICszMDg1LDcgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4
cGVjdGVkRnVuY3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYgKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAgICAgICAg
cmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6
ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJp
bmQodGhpcykpOworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KSwgcmVhbENhbGwt
PmJpbmQodGhpcykpOwogICAgICAgICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0
KCkpCiAgICAgICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBAIC0zMTE3LDcgKzMxMDEsNyBA
QCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5jdGlv
blNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpID4gMikKICAgICAgICAgICAgIHJldHVybiBOb0V4cGVj
dGVkRnVuY3Rpb247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVu
YywgU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykpOworICAg
ICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgTGlua1RpbWVDb25zdGFudDo6QXJyYXkpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICAg
ICAgaWYgKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9PSAyKQpA
QCAtMzI4NSw3ICszMjY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZp
bmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICBpZiAoYXR0
cmlidXRlcy5oYXNHZXQoKSB8fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CiAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgICAgICBpZiAoIWF0dHJp
YnV0ZXMuaGFzR2V0KCkgfHwgIWF0dHJpYnV0ZXMuaGFzU2V0KCkpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVD
b25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGdldHRlcjsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCkBAIC00NDc0
LDEwICs0NDU4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKIAogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9y
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKLSAgICBhdXRvIHZhckNyZWF0ZUFzeW5j
RnJvbVN5bmNJdGVyYXRvciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5jcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBtb3ZlKHNjb3BlLmdldCgp
LCBlbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJDcmVhdGVBc3luY0Zyb21TeW5jSXRl
cmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJh
dG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhckNy
ZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gbW92ZUxpbmtUaW1lQ29u
c3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJh
dG9yKTsKIAogICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMik7CiAgICAg
ZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggMmQ3MjFlYjc3OTBiMzczMDIzNzhmZmFjYjkxMjI3MmRmYjhlN2M0Zi4uZjViMzU2OGQx
ZDc1NTAyODc0ZmQ2N2FkNTVmZDhkODJmM2FlNzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVD
b25zdGFudC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIK
ICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgpAQCAtMTIxNiw3ICsxMjE3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVy
IHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVyaXZlZENvbnN0dWN0b3Ig
eyBudWxscHRyIH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdOworICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnNbbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50c10geyB9OwogICAg
ICAgICBSZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fcHJvbWlzZVJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMmUwM2JlMGI3Yzc1ZGRiMDI3ZWM0ZTZmNjU2
MjE4ZDhlMGZlNTFhNi4uNTI0NjhlMWYyYWExMWUxMjA2YWU3ZjQ1YTE1ZjI5MGIzOWRhZjQ1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJl
Z2lzdGVySUQqIEltcG9ydE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9y
dE1vZHVsZSA9IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW1wb3J0
TW9kdWxlUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVs
ZSA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50OjppbXBvcnRNb2R1bGUpOwogICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRv
ciwgbnVsbHB0ciwgMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3VtZW50
cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBtX2V4cHIpOwpAQCAtOTg1LDcgKzk4NSwxMSBAQCBSZWdp
c3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICByZXR1cm4gKHRoaXMtPiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0KTsKKyAg
ICBpZiAobV9lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6
RW1pdHRlcikKKyAgICAgICAgcmV0dXJuICh0aGlzLT4qbV9lbnRyeS5lbWl0dGVyKCkpKGdlbmVy
YXRvciwgZHN0KTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZUxpbmtUaW1l
Q29uc3RhbnQoZHN0LCBtX2VudHJ5LmxpbmtUaW1lQ29uc3RhbnQoKSk7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QnlJZERpcmVjdChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xMDEzLDkg
KzEwMTcsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19nZXRCeUlkRGlyZWN0UHJpdmF0ZShCeXRlY29kZUcKIAogc3RhdGljIEpTUHJvbWlzZTo6
RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5v
ZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKKyAgICBBU1NFUlQobm9kZS0+ZW50
cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7
CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZEZsYWdzKQogICAgICAgICByZXR1cm4gSlNQ
cm9taXNlOjpGaWVsZDo6RmxhZ3M7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJl
c3VsdCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQpCiAg
ICAgICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdDsKICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxk
OjpGbGFnczsKQEAgLTEwMjMsMTMgKzEwMjgsMTQgQEAgc3RhdGljIEpTUHJvbWlzZTo6RmllbGQg
cHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiAK
IHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5
dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3Rh
dGUpCisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFN0YXRlKQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dlbmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRO
ZXh0KQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0OwotICAgIGlmIChu
b2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAm
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFRoaXMp
CiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXM7Ci0gICAgaWYgKG5vZGUt
PmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5l
cmF0b3JGaWVsZEZyYW1lKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZEZyYW1lKQog
ICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRl
OwpAQCAtMTAzNywxOSArMTA0MywyMCBAQCBzdGF0aWMgSlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVy
YXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZAogCiBzdGF0
aWMgSlNBc3luY0dlbmVyYXRvcjo6RmllbGQgYXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5k
ZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmll
bGRTdGF0ZSkKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkU3RhdGUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3Rh
dGU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCku
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkTmV4dCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpO
ZXh0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgp
LmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5l
cmF0b3JGaWVsZFRoaXMpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6
VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5
KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dl
bmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVs
ZDo6RnJhbWU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKKyAg
ICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCiAgICAgICAg
IHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbjsKLSAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVt
aXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dl
bmVyYXRvckZpZWxkUXVldWVGaXJzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6
OkZpZWxkOjpRdWV1ZUZpcnN0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFz
dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKICAgICAg
ICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3Q7CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6Rmll
bGQ6OlN0YXRlOwpAQCAtNDA5NiwxMCArNDEwMyw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgIC8vIGxvYWQg
YW5kIGNhbGwgQGFzeW5jRnVuY3Rpb25SZXN1bWUKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3lu
Y0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1v
dmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2
YXIpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1bWUgPSBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3Bl
LmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBhc3luY0Z1bmN0aW9uUmVzdW1lID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51
bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFzeW5jRnVuY3Rpb25SZXN1bWUpOwogCiAgICAgICAg
IENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDQpOwogICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudENvdW50ID0gMDsKQEAgLTQ1NzgsMTEgKzQ1ODIsNyBAQCB2b2lkIE9iamVj
dFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogcmhzKQogICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGFkZE1ldGhvZDsKICAgICBpZiAobV9jb250YWluc1Jlc3RFbGVtZW50ICYm
IG1fY29udGFpbnNDb21wdXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGF1dG8gdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuU2V0
UHJpdmF0ZU5hbWUoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQo
KSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93
SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9
IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50
OjpTZXQpOwogCiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIs
IDApOwogICAgICAgICBleGNsdWRlZExpc3QgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBzZXRDb25zdHJ1Y3Rv
ci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwpAQCAtNDYzMywxMSArNDYzMyw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0ID0gZ2VuZXJhdG9y
LmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0gICAgICAg
ICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLmNvcHlEYXRhUHJvcGVydGllc1ByaXZhdGVOYW1lKCkpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQo
KSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5l
bWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZh
ciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5
RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
TGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmlu
ZWQoKSk7CkBAIC00ODEwLDExICs0ODA2LDcgQEAgUmVnaXN0ZXJJRCogT2JqZWN0U3ByZWFkRXhw
cmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG8KICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoc3JjLmdldCgpLCBtX2V4cHJlc3Npb24pOwogICAgIAogICAg
IC8vIGxvYWQgYW5kIGNhbGwgQGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucwotICAgIGF1
dG8gdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zUHJpdmF0ZU5hbWUoKSk7
Ci0gICAgCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwotICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNv
cHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1vdmVMaW5r
VGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJvcGVydGll
c05vRXhjbHVzaW9ucyk7CiAgICAgCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwg
bnVsbHB0ciwgMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCks
IGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBlMGVlZjQ5MTdhYTY4MWZhYzI5NGM5ODg0OTgyNWIyZDkzZjAw
ZjFhLi4zMzc4YWQwOTJmNmEyNDIwMzNjZjQwNzY4M2Q5Mzg5NWQzZDNjZDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjM0Miwx
MSArNjM0Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwot
ICAgICAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBzcGVjaWFsUG9pbnRlciA9IGJ5dGVjb2RlLm1f
c3BlY2lhbFBvaW50ZXI7Ci0gICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzQ2VsbChzcGVjaWFs
UG9pbnRlcikpOwotICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyID0gc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oCi0gICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZvcihtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKLSAgICAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFsUG9pbnRlcik7Cisg
ICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ry
b25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5t
X3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2
ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAg
ICBOb2RlKiBjaGlsZCA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwZDA0OTk0NTgwZDliMzg4MWM5MDJiMDFh
YmEzZTYxZDk2MDM2ZTU5Li44ZWJlNDlmZWJiZjUxMzViNTM1ZTNjZGQ3Njk2NTY4MTUwNTNkYTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ3MSwxMSAr
NDcxLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgp
OwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsK
KyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2Rl
Lm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9pbnRlci5p
c0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoc3JjLCByZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJh
bmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29k
ZUJsb2NrLCBwdHIpKSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwog
ICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAg
YWRkSnVtcChqdW1wKCksIHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzZTBjZWI0Njkz
YTU4OTVmM2FmZWJjOTYyYTljMTQzZjA4MjhjNTMxLi40ZTk0MjQ1NDc5ZjNmNDc2OTdhOGI2OTNj
NWRmMWYwMTBlYjIzMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCkBAIC00NzgsMTIgKzQ3OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVx
X3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgc3JjID0g
Ynl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5
dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdl
dENvbnN0YW50T3BlcmFuZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKTsKKyAg
ICBBU1NFUlQoc3BlY2lhbFBvaW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
IAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENlbGwgPSBi
cmFuY2hJZk5vdENlbGwocmVnVDEpOwotICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWws
IHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikp
KTsKKyAgICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0
cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAg
ICBzdG9yZTgoVHJ1c3RlZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQpOwogICAgIGFk
ZEp1bXAoanVtcCgpLCB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMzdlZTIyYjQ5M2Qw
YjVhZTRkMzc0MmRiMTIyZjUyM2JlYWYzZjZhLi40YzYwZGJlZTEzM2FlYmY2OTlkMjRmYzk3OTNh
ODQ0MmUyMTExOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTcxMCwxMiArMTcxMCwxMCBAQCB1
bmRlZmluZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9y
TnVsbCwKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1
ZSwgdDApCi0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQot
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxPYmplY3RbdDJdLCB0MgorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MywgdDIpCiAgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCi0gICAgbG9hZHAgSlNHbG9i
YWxPYmplY3Q6Om1fc3BlY2lhbFBvaW50ZXJzW3QyLCB0MSwgNF0sIHQxCi0gICAgYnBlcSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisgICAgYnBl
cSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCiAu
b3BKbmVxUHRyQnJhbmNoOgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BK
bmVxUHRyOjpNZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDA0NDNmMGNm
ZThiMzcyN2VjOTRiZDRkNTg5NzA5NjEwYjQyOWM4NmEuLjA1ZThmZGEzZGU1ZjRiYjUzMTk2N2Qz
MDg4OWI3NjViN2FkYTJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xODE2LDExICsxODE2LDkgQEAgdW5k
ZWZpbmVkT3JOdWxsSnVtcE9wKGpudW5kZWZpbmVkX29yX251bGwsIE9wSm51bmRlZmluZWRPck51
bGwsCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFsdWUs
IHQwKQotICAgIGdldHUoc2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNpYWxQb2ludGVyLCB0MSkKLSAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9zcGVjaWFsUG9pbnRl
cnNbdDIsIHQxLCBQdHJTaXplXSwgdDEKLSAgICBicG5lcSB0MSwgW2NmciwgdDAsIDhdLCAub3BK
bmVxUHRyVGFyZ2V0CisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQyKQorICAgIGJwbmVxIHQyLCBbY2ZyLCB0MCwgOF0s
IC5vcEpuZXFQdHJUYXJnZXQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEpuZXFQdHJUYXJnZXQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNhZjAzMDgyOTIx
ZDEyOTVhMDQyOGRiMGNiZTA0MTJjM2FjZjBjOTkuLmNjNTk3ZjViNDRiOWU3MTc5ZjVkZTU1YjBl
ZWQyYmY4NjkwNWVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCkBAIC0yMDAsOCArMjAwLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICB1
c2VzQXJndW1lbnRzKCk7CiAKICAgICAgICAgaWYgKGlkZW50LmlzU3ltYm9sKCkpIHsKLSAgICAg
ICAgICAgIGlmIChCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIGVtaXR0ZXIgPSBt
X3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShC
eXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2NhdGlvbiwgZW1pdHRlciwg
aWRlbnQsIG51bGxwdHIsIHN0YXJ0LCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGF1dG8gZW50
cnkgPSBtX3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpOworICAg
ICAgICAgICAgaWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6
OkNvbnN0YW50LCBsb2NhdGlvbiwgZW50cnkudmFsdWUoKSwgaWRlbnQsIG51bGxwdHIsIHN0YXJ0
LCBzdGFydCwgZW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOwpAQCAtMTM4NCw4ICsx
Mzg1LDggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBpZiAoZnVuYy0+aXNCeXRlY29k
ZUludHJpbnNpY05vZGUoKSkgewogICAgICAgICBBU1NFUlQoIWlzT3B0aW9uYWxDYWxsKTsKICAg
ICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBpbnRyaW5zaWMgPSBzdGF0aWNfY2FzdDxCeXRl
Y29kZUludHJpbnNpY05vZGUqPihmdW5jKTsKLSAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgp
ID09IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQpCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW1pdHRl
cigpLCBpbnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKKyAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQgJiYgaW50cmluc2ljLT5lbnRyeSgpLnR5cGUoKSA9PSBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVudHJ5KCks
IGludHJpbnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpOwogICAgIH0KIAogICAgIGlmIChmdW5jLT5pc09wdGlvbmFsQ2hhaW4oKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA3NTg5
ZDdjOTFlODk1ZWIyZDk5NjMzZGJmNWI0YWE1ZDI2YWViODRlLi45YzdiOWEyODIwNzNjNTc2YTYz
NDllNGQ2OWMyMjBiYTVjY2RlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5
dGVjb2RlSW50cmluc2ljTm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEVtaXR0ZXJUeXBlIGVtaXR0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisg
ICAgaW5saW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5
cGUgdHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6RW50cnkgZW50cnksIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fZW1pdHRl
cihlbWl0dGVyKQorICAgICAgICAsIG1fZW50cnkoZW50cnkpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICAgICAgLCBtX3R5cGUodHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBhYTQ0ODY2NGQxZDQ4MTQwZDEwYTQ1
OTBjMDY3ZDUwMWE4YjYyODdmLi5mYWQ1MzI4YTJiOTQ0MzdkYjJkYWU3ZjFjODZiMjg5YzFhMzQx
ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC05NDQsMTQgKzk0NCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEZ1bmN0aW9uCiAgICAgICAgIH07CiAK
LSAgICAgICAgdHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVt
aXR0ZXJUeXBlKShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKLQotICAgICAgICBC
eXRlY29kZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRl
clR5cGUsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5
cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVu
dHJ5LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2lj
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsgfQorICAgICAgICBCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5OjpFbnRyeSBlbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnk7IH0KICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7
IH0KIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TKG5h
bWUpIFJlZ2lzdGVySUQqIGVtaXRfaW50cmluc2ljXyMjbmFtZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKTsKQEAgLTk2NCw3ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OkZ1bmN0aW9uOyB9CiAKLSAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOwor
ICAgICAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBtX2VudHJ5OwogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2Fy
Z3M7CiAgICAgICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDYwMzVhNDkwOTI2YzRhZTVmYzMzMjdhZmZlZGY0Mjc2
YjkzZjA2NTcuLmViOWQ5OTNiMjUxNGM2NzI5ZTEwMmY2NWU3MjBhNzI4YWYyYzI0MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MDEs
NyArMTgwMSw2IEBAIGNsYXNzIENhY2hlZENvZGVCbG9jayA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8
Q29kZUJsb2NrVHlwZT4gewogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVn
aXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKLSAgICBzdGQ6OmFy
cmF5PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7
CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0
TW9kZSA6IDE7CkBAIC0yMDM5LDkgKzIwMzgsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29k
ZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIENhY2hl
ZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlu
a2VkQ29kZUJsb2NrJiBjb2RlQmxvY2spIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
TGlua1RpbWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBjb2RlQmxvY2subV9saW5rVGlt
ZUNvbnN0YW50c1tpXSA9IG1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX2NvbnN0YW50
UmVnaXN0ZXJzLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywg
JmNvZGVCbG9jayk7CiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVj
b2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bik7CiAgICAgbV9leHByZXNzaW9uSW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhw
cmVzc2lvbkluZm8pOwpAQCAtMjIwNyw5ICsyMjAzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENh
Y2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnMKICAgICBtX2NvZGVHZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9u
TW9kZTsKICAgICBtX2NvZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbaV0gPSBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQog
ICAgIG1fbWV0YWRhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX21ldGFkYXRhLmdldCgp
KTsKICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9yYXJlRGF0YS5n
ZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRl
eCA0N2ZjZDMzOGI0MDU5ODM2Y2QzNjgxZTg0ZTAxZmFiNzQzMzk3Njc0Li4yNTk5ZTJjNTYyOTEw
Zjk4MTQ2YzkxOGI1MjI0OWM4NTViZDJhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xMjksNyArMTI5LDggQEAgYm9vbCBpc0ludDUyKGRvdWJs
ZSk7CiBlbnVtIGNsYXNzIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA6IHVpbnQ4X3QgewogICAg
IE90aGVyLAogICAgIEludGVnZXIsCi0gICAgRG91YmxlCisgICAgRG91YmxlLAorICAgIExpbmtU
aW1lQ29uc3RhbnQsCiB9OwogCiBjbGFzcyBKU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjNjViMGIzNzBkMDI1NzVl
MDBiMWY1MDQ5MDk5MTA3ZTc3MGU3MjhkLi5iODYyYjRkOGNlODk3MDQwODJjMWY1MmY2YzY2MzUz
MmQ4YjNmY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIkxhenlDbGFzc1N0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJMYXp5
UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWFw
SXRlcmF0b3JQcm90b3R5cGUuaCIKQEAgLTQxMSw2ICs0MTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVlSm9iKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbAogSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgMCkKICAgICAsIG1fdm0oJnZt
KQorICAgICwgbV9saW5rVGltZUNvbnN0YW50cyhudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzKQog
ICAgICwgbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0
Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKICAgICAsIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50
KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogICAgICwgbV92YXJJbmpl
Y3Rpb25XYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQpA
QCAtNTIyLDggKzUyNCw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24gPSBudWxscHRyOwogICAgIEpTRnVuY3Rpb24qIGhh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBudWxscHRyOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5
cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyh2bSwgdGhpcywgJmNhbGxGdW5jdGlvbiwgJmFwcGx5
RnVuY3Rpb24sICZoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKLSAgICBtX2NhbGxGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlvbik7Ci0gICAgbV9hcHBseUZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlv
bi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYg
aW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcuc3RyaW5nKCks
IGFycmF5UHJvdG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7CkBAIC03MjMsNyArNzIzLDgg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9nZW5lcmF0b3JQcm90
b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQ
cm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0s
IHRoaXMsIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fYXN5bmNJdGVyYXRv
clByb3RvdHlwZS5nZXQoKSkpKTsKIAotICAgIG1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAgSlNGdW5jdGlvbiogZGVmYXVsdFByb21pc2VU
aGVuID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNvZGVHZW5l
cmF0b3Iodm0pLCB0aGlzKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pXS5zZXQodm0sIHRo
aXMsIGRlZmF1bHRQcm9taXNlVGhlbik7CiAKICNkZWZpbmUgQ1JFQVRFX1BST1RPVFlQRV9GT1Jf
U0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VU
eXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZsYWcp
IHsgXAogICAgICAgICBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLnNldCh2bSwgdGhpcywg
Y2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fICMjIHByb3RvdHlwZUJhc2UgIyMg
UHJvdG90eXBlLmdldCgpKSkpOyBcCkBAIC03NTAsMTggKzc1MSwyMSBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKIAogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25z
dHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpXS5zZXQodm0s
IHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKIAogICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOwotICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnRocm93VHlwZUVy
cm9yRnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAg
ICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgZnVuY3Rp
b25Db25zdHJ1Y3Rvcik7CiAKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9y
ID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Fy
cmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1f
YXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OkFycmF5KV0uc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsKICAgICAKICAgICBSZWdF
eHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2ll
c0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIHJlZ0V4cENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpSZWdFeHApXS5zZXQodm0sIHRoaXMsIHJl
Z0V4cENvbnN0cnVjdG9yKTsKICAgICBtX3JlZ0V4cEdsb2JhbERhdGEuY2FjaGVkUmVzdWx0KCku
cmVjb3JkKHZtLCB0aGlzLCBudWxscHRyLCBqc0VtcHR5U3RyaW5nKHZtKSwgTWF0Y2hSZXN1bHQo
MCwgMCkpOwogICAgIAogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQpAQCAtNzgzLDYg
Kzc4Nyw4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX3Byb21pc2VDb25zdHJ1
Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9pbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IpOwogICAgIAogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRlcigKICAg
ICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKQEAgLTg0
Miw5ICs4NDgsNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENv
bnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3Rv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWdF
eHAsIHJlZ0V4cENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuT2JqZWN0UHJpdmF0ZU5hbWUoKSwgb2Jq
ZWN0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7Ci0KICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U2hh
cmVkQXJyYXlCdWZmZXIsIHNoYXJlZEFycmF5QnVmZmVyQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkF0b21pY3Mi
KSwgYXRvbWljc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwpAQCAtOTE3LDE4MCArOTIwLDIyNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25z
dHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFs
TmFtZQogICAgIGlmIChPcHRpb25zOjpleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlcigpKQogICAg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TG9h
ZGVyLCBtb2R1bGVMb2FkZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiogYnVpbHRpbkxvZyA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVy
LnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7Ci0gICAgSlNGdW5jdGlvbiogYnVpbHRp
bkRlc2NyaWJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUp
OwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUcnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5z
aWMpOwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm9w
ZXJ0eUlzRW51bWVyYWJsZSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNPd25LZXlzID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY093bktl
eXMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYWtlVHlwZUVycm9yID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheUxlbmd0aCA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheUdldE9yaWdpbmFs
Q29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcik7Ci0gICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKLSAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNU
eXBlZEFycmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlv
biogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJy
YXlDcmVhdGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1bmN0aW9u
KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGhhc0luc3RhbmNlQm91
bmRGdW5jdGlvbik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJbnN0YW5jZU9mID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RoaXNUaW1lVmFsdWUgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0
VGltZSk7Ci0jaWYgRU5BQkxFKElOVEwpCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNEYXRl
VGltZUZvcm1hdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGds
b2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk7Ci0jZW5kaWYKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY0lzQXJyYXlTbG93ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3cpOwotICAgIEpTRnVuY3Rp
b24qIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KTsKLSAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFk
LCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
TWFwQnVja2V0TmV4dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCks
IG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBCdWNrZXROZXh0SW50cmluc2ljKTsK
LSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tldEtleSA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBK
U01hcEJ1Y2tldEtleUludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBC
dWNrZXRWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1h
cFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIEpTTWFwQnVja2V0VmFsdWVJbnRyaW5zaWMpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCwg
SlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1Nl
dEJ1Y2tldE5leHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBz
ZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVja2V0TmV4dEludHJpbnNpYyk7Ci0g
ICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXkgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgSlNT
ZXRCdWNrZXRLZXlJbnRyaW5zaWMpOwotCiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0Zs
YWdzR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwg
dm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0ZsYWdzR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdF
eHBQcm90b0ZsYWdzR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFs
R2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0u
cHJvcGVydHlOYW1lcy0+Z2xvYmFsKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7Ci0gICAgbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5zZXQodm0sIHRoaXMsIHJlZ0V4cFBy
b3RvR2xvYmFsR2V0dGVyKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcildLnNldCh2
bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVn
RXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2FzZSk7CiAgICAgY2F0Y2hT
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdl
dHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKTsKICAgICBH
ZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0
aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bXVsdGlsaW5l
KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJv
dG9NdWx0aWxpbmVHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyID0gZ2V0R2V0
dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+
c291cmNlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVn
RXhwUHJvdG9Tb3VyY2VHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvU291cmNlR2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyID0gZ2V0R2V0
dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+
c3RpY2t5KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVn
RXhwUHJvdG9TdGlja3lHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvU3RpY2t5R2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciA9IGdldEdl
dHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMt
PnVuaWNvZGUpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX3Jl
Z0V4cFByb3RvVW5pY29kZUdldHRlci5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvVW5pY29kZUdl
dHRlcik7Ci0gICAgSlNPYmplY3QqIGJ1aWx0aW5SZWdFeHBFeGVjID0gYXNPYmplY3QobV9yZWdF
eHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlYykuYXNDZWxs
KCkpOwotICAgIG1fcmVnRXhwUHJvdG9FeGVjLnNldCh2bSwgdGhpcywgYnVpbHRpblJlZ0V4cEV4
ZWMpOwotICAgIEpTT2JqZWN0KiByZWdFeHBTeW1ib2xSZXBsYWNlID0gYXNPYmplY3QobV9yZWdF
eHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJv
bCkuYXNDZWxsKCkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRlcildLnNldCh2bSwg
dGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKKyAgICBKU0Z1bmN0aW9uKiByZWdFeHBT
eW1ib2xSZXBsYWNlID0ganNDYXN0PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSk7CiAgICAgbV9yZWdF
eHBQcm90b1N5bWJvbFJlcGxhY2Uuc2V0KHZtLCB0aGlzLCByZWdFeHBTeW1ib2xSZXBsYWNlKTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYyldLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rp
b24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
eGVjKSkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2UpXS5zZXQodm0sIHRo
aXMsIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJl
cGxhY2VTeW1ib2wpLmFzQ2VsbCgpKTsKKworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLnNldCh2bSwgdGhpcywgc2V0
Q29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXkpXS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3Ry
dWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSkuYXNDZWxsKCkp
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmNhbGxGdW5jdGlvbildLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjphcHBseUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKKworI2Rl
ZmluZSBJTklUX1BSSVZBVEVfR0xPQkFMKGZ1bmNOYW1lLCBjb2RlKSBcCisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZnVuY05h
bWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsgXAor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpOyBcCisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBnbG9iYWxP
YmplY3QpKTsgXAorICAgICAgICB9KTsKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X1BSSVZBVEVfR0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkKKyN1bmRlZiBJTklUX1BS
SVZBVEVfR0xPQkFMCiAKLSNkZWZpbmUgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKHZh
ck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBKU0Z1bmN0aW9uKiB2YXJOYW1lICMjIFByaXZhdGVGdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKHZtKSwg
dGhpcyk7Ci0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9O
QU1FKENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTikKLSN1bmRlZiBDUkVBVEVfUFJJVkFU
RV9HTE9CQUxfRlVOQ1RJT04KLQorICAgIC8vIEZJWE1FOiBJbml0aWFsaXppbmcgdGhlbSBsYXpp
bHkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzc5
NQogICAgIEpTT2JqZWN0KiBhcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gQXJyYXlJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBhcnJh
eUl0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nh
c3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFycmF5SXRl
cmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFycmF5
SXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIGFzeW5jRnJvbVN5bmNJdGVyYXRv
clByb3RvdHlwZSA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0
aGlzLCBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIGFzeW5jRnJvbVN5bmNJdGVy
YXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBq
c0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFzeW5j
RnJvbVN5bmNJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBt
YXBJdGVyYXRvclByb3RvdHlwZSA9IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRo
aXMsIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBtYXBJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0
ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbWFw
SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6TWFwSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2Jq
ZWN0KiByZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsK
LSAgICByZWdFeHBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6UmVnRXhwU3RyaW5nSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKTsK
IAogICAgIEpTT2JqZWN0KiBzZXRJdGVyYXRvclByb3RvdHlwZSA9IFNldEl0ZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGUodm0sIHRoaXMsIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBzZXRJdGVyYXRv
ckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgc2V0SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVj
dCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6U2V0SXRlcmF0b3IpKS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNldEl0ZXJhdG9yUHJvdG90
eXBlKTsKIAotICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IG5ld1Byb21pc2VDYXBhYmlsaXR5UHJpdmF0ZUZ1bmN0aW9uKTsKLSAgICBtX3Jlc29sdmVQcm9t
aXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZXNvbHZlUHJvbWlzZVByaXZhdGVGdW5jdGlvbik7
Ci0gICAgbV9yZWplY3RQcm9taXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZWplY3RQcm9taXNl
UHJpdmF0ZUZ1bmN0aW9uKTsKKyAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgorICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1h
cEJ1Y2tldEhlYWQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZh
dGVGdW5jTWFwQnVja2V0SGVhZCwgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljKSk7CisgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldE5leHQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBCdWNrZXROZXh0SW50cmlu
c2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldEtleSldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXksIEpTTWFwQnVj
a2V0S2V5SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldFZhbHVlKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dFZhbHVlLCBKU01hcEJ1Y2tldFZhbHVlSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnNldEJ1Y2tldEhlYWQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHNldFBy
aXZhdGVGdW5jU2V0QnVja2V0SGVhZCwgSlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnNldEJ1Y2tldE5leHQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCwgSlNTZXRCdWNrZXROZXh0SW50
cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnNldEJ1Y2tldEtleSldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXksIEpTU2V0
QnVja2V0S2V5SW50cmluc2ljKSk7CisgICAgICAgIH0pOworCisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW1wb3J0TW9kdWxl
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jSW1wb3J0TW9k
dWxlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnByb3BlcnR5SXNFbnVtZXJhYmxlKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFi
bGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6b3duS2V5cyldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY093bktleXMpKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
ZW5xdWV1ZUpvYildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5x
dWV1ZUpvYikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlVHlwZUVycm9yKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcikpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5TGVuZ3RoKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKSk7CisgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3Jp
Z2luYWxDb25zdHJ1Y3RvcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U29ydCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY1NvcnQpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNUeXBlZEFycmF5VmlldyldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lz
VHlwZWRBcnJheVZpZXcsIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6dHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6aXNCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBpc0JvdW5kRnVuY3Rpb24pKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
aGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmlu
ZygpLCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW5z
dGFuY2VPZildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0
ZUZ1bmNJbnN0YW5jZU9mKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5Mb2cpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKSk7Cisg
ICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5EZXNjcmliZSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSkpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50Ojp0cnVuYyldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWF0aFBy
b3RvRnVuY1RydW5jLCBUcnVuY0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZXBl
YXRDaGFyYWN0ZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIHN0cmluZ1By
b3RvRnVuY1JlcGVhdENoYXJhY3RlcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcnJheVNwZWNp
ZXNDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9G
dW5jU3BlY2llc0NyZWF0ZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0FycmF5U2xvdyldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVG
dW5jSXNBcnJheVNsb3cpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y29uY2F0TWVtY3B5KV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXBwZW5kTWVtY3B5KV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1j
cHkpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VS
ZWplY3Rpb25UcmFja2VyKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgaW5pdC5zZXQoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnRoaXNUaW1lVmFsdWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGRhdGVQcm90b0Z1bmNHZXRUaW1lLCBEYXRlUHJvdG90eXBlR2V0VGltZUludHJp
bnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0NvbnN0cnVjdG9yKV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYykp
OworICAgICAgICB9KTsKKworICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpyZWdFeHBDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGVzU3Bl
Y1JlZ0V4cENyZWF0ZSwgTm9JbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNSZWdF
eHApXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBO
b0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBNYXRjaEZhc3QpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdCwg
UmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNl
YXJjaEZhc3QpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3Rv
RnVuY1NlYXJjaEZhc3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwU3BsaXRGYXN0KV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTcGxpdEZh
c3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwVGVzdEZhc3QpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0
RmFzdEludHJpbnNpYykpOworICAgICAgICB9KTsKKworICAgIC8vIFN0cmluZy5wcm90b3R5cGUg
aGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpzdHJpbmdJbmNsdWRlc0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCkpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpzdHJpbmdTcGxpdEZhc3QpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCkpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpzdHJpbmdTdWJzdHJJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJp
bmcoKSwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKSk7CisgICAgICAgIH0pOworCisgICAg
Ly8gRnVuY3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFrZUJvdW5kRnVuY3Rpb24p
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgNSwgU3RyaW5nKCksIG1ha2VCb3VuZEZ1bmN0aW9uKSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc093bkxlbmd0aFByb3BlcnR5KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCBoYXNPd25MZW5ndGhQcm9wZXJ0eSkpOworICAgICAgICB9
KTsKIAotICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7Ci0jZGVmaW5l
IElOSVRfUFJJVkFURV9HTE9CQUwodmFyTmFtZSwgZnVuY05hbWUsIGNvZGUpIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5jTmFtZSAjIyBQcml2
YXRlTmFtZSgpLCB2YXJOYW1lICMjIFByaXZhdGVGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BS
SVZBVEVfR0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkKLSN1bmRlZiBJTklUX1BSSVZB
VEVfR0xPQkFMCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5O
YU4sIGpzTmFOKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9wZXJ0eUlzRW51bWVyYWJsZVByaXZhdGVOYW1lKCks
IHByaXZhdGVGdW5jUHJvcGVydHlJc0VudW1lcmFibGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLm93bktleXNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY093bktleXMs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmltcG9ydE1vZHVsZVByaXZh
dGVOYW1lKCksIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1ZUpvYiksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY01ha2VUeXBlRXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJy
YXlMZW5ndGgsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJy
YXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFy
cmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudHlwZWRBcnJheVNvcnRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJy
YXlTb3J0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5U3ViYXJyYXlDcmVhdGVQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNJc0JvdW5kRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmhhc0luc3RhbmNlQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIHBy
aXZhdGVGdW5jSGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pbnN0YW5jZU9mUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJbnN0
YW5jZU9mLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5CdWlsdGluTG9n
UHJpdmF0ZU5hbWUoKSwgYnVpbHRpbkxvZywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuQnVpbHRpbkRlc2NyaWJlUHJpdmF0ZU5hbWUoKSwgYnVpbHRpbkRlc2NyaWJlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5SZWdFeHBQcml2YXRlTmFtZSgp
LCByZWdFeHBDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkudHJ1bmNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1RydW5jLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0
cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnRlcm5hbFBy
b21pc2VQcml2YXRlTmFtZSgpLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVmYXVsdFByb21pc2VUaGVuUHJpdmF0ZU5h
bWUoKSwgcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVwZWF0Q2hhcmFjdGVyUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hh
cmFjdGVyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXJyYXlTcGVj
aWVzQ3JlYXRlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBT
dHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNBcnJheVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0
b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlTbG93UHJpdmF0ZU5hbWUoKSwgcHJp
dmF0ZUZ1bmNJc0FycmF5U2xvdywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuY29uY2F0TWVtY3B5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGVuZE1lbWNweVByaXZhdGVO
YW1lKCksIHByaXZhdGVGdW5jQXBwZW5kTWVtY3B5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlclByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0
UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlNldFByaXZh
dGVOYW1lKCksIHNldENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS50aGlzVGltZVZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUaGlzVGltZVZh
bHVlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgRU5BQkxFKElOVEwp
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5kYXRlVGltZUZvcm1hdFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jRGF0ZVRpbWVGb3Jt
YXQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpkYXRlVGltZUZv
cm1hdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVU
aW1lRm9ybWF0KSk7CisgICAgICAgIH0pOwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQotCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5p
c0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAx
LCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXJQcml2
YXRlTmFtZSgpLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0dsb2JhbEdldHRlclByaXZhdGVOYW1lKCksIHJl
Z0V4cFByb3RvR2xvYmFsR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5yZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90
b0lnbm9yZUNhc2VHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9NdWx0
aWxpbmVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4
cFByb3RvU291cmNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvU3RpY2t5
R2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvVW5pY29kZUdldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZ0V4cEJ1aWx0aW5FeGVjUHJpdmF0ZU5hbWUoKSwgYnVpbHRpblJlZ0V4cEV4ZWMsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cENyZWF0ZVByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGVzU3BlY1JlZ0V4
cENyZWF0ZSwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pc1JlZ0V4cFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cE1hdGNoRmFzdFByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY01h
dGNoRmFzdCwgUmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU2VhcmNoRmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZh
c3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBTcGxpdEZh
c3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygp
LCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5yZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlUHJpdmF0ZU5hbWUoKSwgbV9y
ZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5
bWJvbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFRlc3RG
YXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmco
KSwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QsIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIFN0cmluZy5wcm90
b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ0luY2x1ZGVzSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5j
bHVkZXNJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0
cmluZ1NwbGl0RmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ1N1YnN0ckludGVybmFsUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ1N1
YnN0ckludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAg
ICAgIC8vIEZ1bmN0aW9uIHByb3RvdHlwZSBoZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFrZUJvdW5kRnVuY3Rpb25Q
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDUsIFN0cmluZygpLCBt
YWtlQm91bmRGdW5jdGlvbiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
Lmhhc093bkxlbmd0aFByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAxLCBTdHJpbmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4K
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm1hcEJ1Y2tldEhlYWRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldE5leHRQcml2
YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
TWFwQnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBC
dWNrZXRWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldEhlYWRQcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnNldEJ1Y2tldE5leHRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1
Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tl
dEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUo
V0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkKLSAgICAgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFt
aW5nIEFQSQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkud2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJs
eUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHdlYkFzc2Vt
Ymx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKKyAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6d2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlJbnN0YW50aWF0
ZVN0cmVhbWluZ0ludGVybmFsKSk7CisgICAgICAgIH0pOwogI2VuZGlmCisKKyAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0geworICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5JbmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmlu
ZWQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmFzc2VydFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMSwgU3RyaW5nKCksIGFzc2VydENhbGwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCiAjZW5kaWYKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFs
cywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCi0gICAgbV9zcGVjaWFs
UG9pbnRlcnNbU3BlY2lhbDo6Q2FsbEZ1bmN0aW9uXSA9IG1fY2FsbEZ1bmN0aW9uLmdldCgpOwot
ICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25dID0gbV9hcHBseUZ1
bmN0aW9uLmdldCgpOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0
cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNp
YWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLQotICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93
VHlwZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKLQog
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VEb2xsYXJWTSgpKSkKICAgICAgICAgZXhwb3Nl
RG9sbGFyVk0odm0pOwogCkBAIC0xNzExLDIyICsxNzYwLDE2IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAog
ICAgIHRoaXNPYmplY3QtPm1fcGFyc2VJbnRGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3BhcnNlRmxvYXRGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3Rocm93VHlwZUVycm9yRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9ldmFsRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVy
YXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9w
cm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7Ci0gICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlamVjdFByb21pc2VGdW5jdGlvbik7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24pOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24p
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9I
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVy
cm9yR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVy
U2V0dGVyKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlci52aXNpdCh2aXNpdG9yKTsK
IApAQCAtMTc5NCw2ICsxODM3LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1f
cHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9j
YWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisKKyAgICBmb3IgKGF1
dG8mIHByb3BlcnR5IDogdGhpc09iamVjdC0+bV9saW5rVGltZUNvbnN0YW50cykKKyAgICAgICAg
cHJvcGVydHkudmlzaXQodmlzaXRvcik7CiAgICAgCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9C
VUZGRVIpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zaGFyZWRBcnJheUJ1ZmZl
clByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCA4OTI2YWFhZGZkNjhkMWFmMTI5MjgwNGUyZDAzNDIyZDdmZjQ0ZjY1Li4z
MTVkZjFkNTM3ZmY3ZjM2YjgxNzkxOWM4ZmQ1OWMzZjRjNGE2ZGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQyLDcgKzQyLDYgQEAK
ICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cEdsb2JhbERhdGEuaCIK
ICNpbmNsdWRlICJSdW50aW1lRmxhZ3MuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgog
I2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlZNLmgiCkBAIC0xMTksNiArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBB
Y3RpdmF0aW9uU3RhY2tOb2RlOwogc3RydWN0IEhhc2hUYWJsZTsKK2VudW0gY2xhc3MgTGlua1Rp
bWVDb25zdGFudCA6IGludDMyX3Q7CiAKICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAogY2xh
c3MgV3JhcHBlck1hcDsKQEAgLTI5NywyNiArMjk3LDE2IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUludEZ1bmN0aW9uOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247
CiAKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbjsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5j
dGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKLSAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
OwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Jlc29sdmVQcm9taXNlRnVuY3Rpb247
Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uOwot
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBH
ZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7Ci0gICAgV3JpdGVCYXJy
aWVyPEpTT2JqZWN0PiBtX3JlZ0V4cFByb3RvRXhlYzsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+IG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlOwotICAgIFdyaXRlQmFycmllcjxHZXR0ZXJT
ZXR0ZXI+IG1fcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXI7Ci0gICAgV3JpdGVCYXJyaWVyPEdldHRl
clNldHRlcj4gbV9yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXI7CiAgICAgV3JpdGVCYXJyaWVyPEdl
dHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRl
clNldHRlcjsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2Fk
ZXI+IG1fbW9kdWxlTG9hZGVyOwpAQCAtNDMwLDggKzQyMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEUoREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NUUlVDVFVSRSkKICN1bmRl
ZiBERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFCiAKLSAgICBKU0NlbGwqIG1fc3Bl
Y2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNl
ZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KLSAgICBKU0NlbGwqIG1fbGlua1RpbWVDb25zdGFudHNb
TGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICBWZWN0b3I8TGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0NlbGw+PiBtX2xpbmtUaW1lQ29uc3RhbnRzOwogCiAgICAgU3RyaW5nIG1fbmFt
ZTsKIApAQCAtNjE2LDI0ICs2MDUsMjIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogcGFyc2VGbG9hdEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZUZsb2F0RnVuY3Rpb24uZ2V0KHRoaXMpOyB9
CiAKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxG
dW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIGFwcGx5
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBK
U0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aHJv
d1R5cGVFcnJvckZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJy
b3JGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQo
dGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBK
U0Z1bmN0aW9uKiBpdGVyYXRvclByb3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2l0
ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2Fw
YWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFi
aWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9Ci0gICAgSlNGdW5jdGlvbiogcmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIHJl
amVjdFByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVqZWN0UHJvbWlzZUZ1bmN0
aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBK
U0Z1bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlv
biogcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogcHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9W
YWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0
aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KCk7IH0K
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24u
Z2V0KCk7IH0KLSAgICBKU09iamVjdCogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvRXhlYy5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHJlZ0V4
cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU3lt
Ym9sUmVwbGFjZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b1N5bWJvbFJl
cGxhY2UuZ2V0KCk7IH0KLSAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5nZXQoKTsgfQotICAg
IEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIuZ2V0KCk7IH0KKyAgICBHZXR0ZXJTZXR0ZXIqIHJl
Z0V4cFByb3RvR2xvYmFsR2V0dGVyKCkgY29uc3Q7CisgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQ
cm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVy
cm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0
dGVyLmdldCgpOwpAQCAtOTExLDE2ICs4OTgsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIGxhenlUeXBl
ZEFycmF5U3RydWN0dXJlKHR5cGUpLmNvbnN0cnVjdG9yKHRoaXMpOwogICAgIH0KIAotICAgIEpT
Q2VsbCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCisgICAgSlND
ZWxsKiBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdmFsdWUpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQocG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgICAg
IHJldHVybiBtX3NwZWNpYWxQb2ludGVyc1twb2ludGVyXTsKLSAgICB9Ci0gICAgSlNDZWxsKiBq
c0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOwotICAg
ICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAgICAgICByZXR1
cm4gbV9saW5rVGltZUNvbnN0YW50c1tpbmRleF07CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSldLmdldCh0aGlzKTsKICAgICB9
CiAKICAgICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgp
IHsgcmV0dXJuIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxp
bmVzLmgKaW5kZXggZTAzNjliZWNiMDZmM2I5ODJjZmQ5MGE1ZGIyMDM5ZTYzM2JkNDEyNS4uM2Yy
NmQ1Y2FmZTJiZjc1NjE0YmQyMDc2N2I4NDQyMDQwMmQwNWRkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJB
cnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDIsNiArMTAzLDE1
IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU0dsb2JhbE9iamVjdDo6YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvCiAgICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5hcnJh
eUNvbnN0cnVjdG9yKCksIG5ld1RhcmdldCwgYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpOwogfQogCitpbmxpbmUgSlNGdW5jdGlvbiog
SlNHbG9iYWxPYmplY3Q6OnRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbikpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9i
YWxPYmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6bmV3UHJvbWlzZUNhcGFiaWxpdHkpKTsgfQoraW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFs
T2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9j
YXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlc29s
dmVQcm9taXNlKSk7IH0KK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6cmVqZWN0
UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24q
PihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlamVjdFByb21pc2UpKTsgfQor
aW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29u
c3RhbnQoTGlua1RpbWVDb25zdGFudDo6ZGVmYXVsdFByb21pc2VUaGVuKSk7IH0KK2lubGluZSBK
U0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6cmVnRXhwQnVpbHRpbkV4ZWMpKTsgfQoraW5saW5lIEdldHRlclNldHRl
ciogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEdldHRlclNldHRlcio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpKTsgfQoraW5saW5lIEdldHRlclNldHRl
ciogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxHZXR0ZXJTZXR0ZXIqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRlcikpOyB9CisKIEFMV0FZU19JTkxJTkUg
Vk0mIGdldFZNKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NmViYzkzN2YyZjU4NTIwOWE0NjUxNTgzZmEwZjc0
ZjZjZTM5OWE2Li4zOWZmMjk2NTYyNmMxOTdmMzRjNTc3YzE1NTY1MjZiNzkxOGMwOTI1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNo
YW5pc20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
Mzc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1l
cy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMS0wMiAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIE1hYyBdIGlu
c3BlY3Rvci9kb20vZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlLmh0bWwgaXMgZmFp
bGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVs
ZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwt
ZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQKaW5kZXggZTgyYTc5OTc2ZGM2
ZjNmZmNmOGE1ZWU4MzdjODdhZTI4MTFhMmE4OS4uMjEyNWZiNTI5NzFjZWNlYWI3YzA4MDM0ZjJk
NTM2YzdhMmE0YjRlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVk
LWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0x
NCw2ICsxNCw2IEBAIENBTEwgU1RBQ0s6CiAzOiBbRl0gc3RhcnRBQkMKICAgdGhpczogdW5kZWZp
bmVkCiA0OiBbUF0gR2xvYmFsIENvZGUKLSAgdGhpczogdGVzdCAtIAorICB0aGlzOiBjIC0gCiBS
RVNVTUVECiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382704</attachid>
            <date>2019-11-03 01:11:17 -0800</date>
            <delta_ts>2019-11-03 01:49:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103011116.patch</filename>
            <type>text/plain</type>
            <size>139033</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi4yYmVmNjZkZTk2OTZmY2Rh
ODYwZDVhMjM4ZDk2YzI3NjBhNGEzOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSB1
c2luZyBwcml2YXRlLW5hbWUtdmFyaWFibGVzIG9mIEpTR2xvYmFsT2JqZWN0IGFzIGEgd2F5IHRv
IGFjY2VzcyB0byBjb25zdGFudHMgdGhhdCBhcmUgbWF0ZXJpYWxpemVkIHBlciBKU0dsb2JhbE9i
amVjdC4KKyAgICAgICAgQW5kIHdlIGFsc28gaGF2ZSBzcGVjaWFsLXBvaW50ZXJzIGFuZCBvbGQg
bGluay10aW1lLWNvbnN0YW50cyB0byBhY2Nlc3MgdG8gcGVyIEpTR2xvYmFsT2JqZWN0IGNvbnN0
YW50cy4KKyAgICAgICAgV2UgaGF2ZSBieXRlY29kZSBpbnRyaW5zaWMgY29uc3RhbnRzLCBidXQg
aXQgaXMgb25seSBhdmFpbGFibGUgZm9yIHBlciBWTSB2YWx1ZXMuCisKKyAgICAgICAgSG93ZXZl
ciwgdGhlc2Ugb25lcyBoYXZlIG11bHRpcGxlIHByb2JsZW1zLgorCisgICAgICAgIDEuIHByaXZh
dGUtbmFtZS12YXJpYWJsZXMgaXMgdG9vIGNvc3RseS4gV2UgbmVlZCB0byBoYXZlIGFuIGVudHJ5
IGluIEpTR2xvYmFsT2JqZWN0J3MgdmFyaWFibGUsIHRoaXMgbWFrZXMgU3ltYm9sVGFibGUgb2Yg
SlNHbG9iYWxPYmplY3QgbGFyZ2UuCisgICAgICAgICAgIEl0IGFsc28gcmVxdWlyZXMgV2F0Y2hw
b2ludFNldCB0byBtYWtlIGl0IGNvbnN0YW50LWZvbGQgaW4gREZHLiBBbmQgYWNjZXNzaW5nIHRo
ZXNlIHZhcmlhYmxlcyBmcm9tIGJ1aWx0aW4gSlMgdGFrZXMgb3BfcmVzb2x2ZV9zY29wZSBhbmQg
b3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgIGVubGFyZ2luZyBieXRlY29kZSBhbmQgc2xv
dyBpbiBpbnRlcnByZXRlciBhbmQgYmFzZWxpbmUgY29tcGFyZWQgdG8ganVzdCBnZXR0aW5nIHRo
ZW0gYXMgYSBjb25zdGFudCByZWdpc3Rlci4KKyAgICAgICAgMi4gc3BlY2lhbC1wb2ludGVycyBh
cmUgdGFpbG9yZWQgdG8gb3Bfam5lX3B0ciBvcGNvZGUsIGFuZCBub3QgdXNhYmxlIGluIHRoZSBv
dGhlciBieXRlY29kZSBzaW5jZSB0aGlzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBWaXJ0
dWFsUmVnaXN0ZXIuCisgICAgICAgIDMuIE9sZCBsaW5rLXRpbWUtY29uc3RhbnRzIGltcGxlbWVu
dGF0aW9uIGlzIHB1dHRpbmcgYXJyYXkgb2YgYWxsIGxpbmstdGltZS1jb25zdGFudHMgb24gZWFj
aCBVbmxpbmtlZENvZGVCbG9jaywgZXZlbiBpZiBpdCBpcyBub3QgdXNlZC4gSWYgeW91IGluY3Jl
YXNlICMgb2YKKyAgICAgICAgICAgbGluay10aW1lLWNvbnN0YW50LCBpdCBpbmNyZWFzZXMgc2l6
ZW9mKFVubGlua2VkQ29kZUJsb2NrKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGluay10aW1lLWNvbnN0YW50IG1lY2hhbmlzbSBhbmQgcmVtb3ZlIHRoZSBh
Ym92ZSBvbGQgb25lcyBtb3N0bHkuIChwcml2YXRlLW5hbWUtdmFyaWFibGVzIHN0aWxsIGV4aXN0
cyBmb3IgV2ViQ29yZSBhbmQgQGFzc2VydCkuCisgICAgICAgIFdlIG1hbmFnZSBsaW5rLXRpbWUt
Y29uc3RhbnRzIGluIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnksIGFuZCBlbWl0IEludDMyOkxp
bmtUaW1lQ29uc3RhbnRJRCBjb25zdGFudCB3aGVuIGdlbmVyYXRpbmcgYW4gVW5saW5rZWRDb2Rl
QmxvY2suIExhdGVyLCB0aGlzIGNvbnN0YW50CisgICAgICAgIGlzIGFsdGVybmF0ZWQgdG8gYW4g
YWN0dWFsIHZhbHVlIHdoZW4gd2UgbGluayBVbmxpbmtlZENvZGVCbG9jayB0byBDb2RlQmxvY2sg
d2l0aCBzcGVjaWZpYyBKU0dsb2JhbE9iamVjdC4gcHJpdmF0ZS1uYW1lLXZhcmlhYmxlcyBhY2Nl
c3NlcyBhcmUgbm93IGNvbnZlcnRlZCB0bworICAgICAgICBjb25zdGFudCByZWdpc3RlciBzbyB0
aGF0IGl0IGlzIHZlcnkgZWZmaWNpZW50bHkgYWNjZXNzZWQgYW5kIGl0IHJlZHVjZXMgbWVtb3J5
IHVzZWQgZm9yIFN5bWJvbFRhYmxlIGFuZCBXYXRjaHBvaW50U2V0LiBvcF9qbmVfcHRyIHRha2Vz
IGxpbmstdGltZS1jb25zdGFudAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXJzIGluc3RlYWQgb2Yg
c3BlY2lhbC1wb2ludGVycywgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHNwZWNpYWwtcG9pbnRlcnMg
bWVjaGFuaXNtLiBXZSBhbHNvIHJlcGxhY2Ugb2xkIGxpbmstdGltZS1jb25zdGFudHMgd2l0aCBu
ZXcgb25lLCB3aGljaCByZWR1Y2VzCisgICAgICAgIHNpemVvZihVbmxpbmtlZENvZGVCbG9jayku
CisKKyAgICAgICAgRnVydGhlcm1vcmUsIG5ldyBsaW5rLXRpbWUtY29uc3RhbnQgc3VwcG9ydHMg
bGF6eSBpbml0aWFsaXphdGlvbiBieSB1c2luZyBMYXp5UHJvcGVydHkgaW4gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgYWxsb3dzIHVzIHRvIGxhemlseSBnZW5lcmF0ZSBtYW55IGludGVybmFsIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IGFyZSBwcmV2aW91c2x5IGluaXRpYWxpemVkIGVhZ2VybHkuIFRo
aXMgcmVkdWNlcyAjIG9mIGFsbG9jYXRlZCBKU0Z1bmN0aW9uIHNpZ25pZmljYW50bHkgd2hlbiBp
bml0aWFsaXppbmcgSlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFNjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFk
ZXIucHk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9nbG9iYWxfcHJpdmF0ZV9jb2Rl
X25hbWVfbWFjcm8pOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5q
czoKKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENv
bnN0cnVjdG9yLkludGVybmFsUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlBy
b21pc2UucmVqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuSW50ZXJu
YWxQcm9taXNlLnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBDb25zdGFudHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkVudHJ5Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6RW50cnk6OmxpbmtUaW1lQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6ZW1pdHRlciBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29k
ZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaC4K
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpyZWdpc3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OnByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAg
ICAgICAoSlNDOjpnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjph
c3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJp
bmRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFNwcmVhZEV4cHJlc3Npb25Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRy
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puZXFfcHRyKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZSk6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNv
ZGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsaW5rVGlt
ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNhbGxGdW5j
dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcHBs
eUZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnRocm93VHlwZUVycm9yRnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlamVjdFBy
b21pc2VGdW5jdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFjdHVhbFBvaW50ZXJGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6anNDZWxsRm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnRocm93VHlwZUVycm9yRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlamVjdFByb21pc2VGdW5jdGlvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVj
RnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVn
RXhwUHJvdG9Vbmljb2RlR2V0dGVyIGNvbnN0KToKKwogMjAxOS0xMS0wMiAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9yMjUxODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjI1
ZmY2MWRiOTkwYWQ3ZjY4OGFhOGVjMTZmMWRmOWQ4YjZlYzc2Mi4uZmU3MGEzNTIyZDZlM2ZhYzY5
MDE2ZmQ2OGZiMDUzOTk2NzNlMTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNTIyLDYgKzUyMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAogICAgIGJ5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCiAgICAgYnl0
ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaAorICAgIGJ5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaAogICAgIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuaAogICAgIGJ5dGVjb2RlL09iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmgKICAgICBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlv
bi5oCkBAIC01MjksNyArNTMwLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGNvZGVTaXplLmgKICAgICBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29k
ZS9TcGVjaWFsUG9pbnRlci5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5
dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWI4NDY5YTJhYjFjNThmMjhmMTE3MjFiNDViNGIz
ZmMyYzkwMDI4NS4uMDQzYzg2NDkwMWQ1ZDQ1MWUwZWQxYzU4OTZjMDY2OTZkMTNlZGZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Miw3ICszNjIsNiBAQAogCQkwRjRGODI4
QzFFMzFCOTc2MDA3NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEY4MjhB
MUUzMUI5NzEwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5o
ICovOyB9OwogCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJl
clN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjUwQUYzQjE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi87
IH07CiAJCTBGNTUxM0E2MUQ1QTY4MkMwMEMzMkJEOCAvKiBGcmVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTEzQTUxRDVBNjgyQTAwQzMy
QkQ4IC8qIEZyZWVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDFCMDE2
MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyog
VG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVG
MEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAwRjMx
MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODEyLDYgKzE4MTEsNyBAQAogCQlFMzVDQTE1NDFE
QkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAx
REJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzYzN0VFOTIzNkU1NkIwMDA5NkJEMEEgLyogTGlu
a1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzZCNzY3MDIy
RjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4
IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAw
NTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRp
b25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjU4NSw4ICsyNTg1LDYgQEAKIAkJMEY1MEFGM0IxOTNFOEIz
OTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgcGF0aCA9IGRmZy9E
RkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1NTEzQTUxRDVBNjgyQTAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZyZWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNTUxM0E3MUQ1QTY4Q0IwMEMzMkJEOCAvKiBGcmVlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmVlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjaWFsUG9pbnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVj
aWFsUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1OTg5NzE3Qzg2
QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9OYXRp
dmVGcm9tVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUMxOTMxNzI3
NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJz
dHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYxMTRE
MTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDkzNSw2ICs0OTMzLDggQEAKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGlt
ZUNvbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtU
aW1lQ29uc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2RTIy
RjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBs
YW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0
aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ3JlYXRpb25N
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjM3LDYgKzgyMzcsOCBAQAog
CQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkwRkI1
NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAog
CQkJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
ICovLAorCQkJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmNw
cCAqLywKKwkJCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5o
ICovLAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
ICovLAogCQkJCTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAogCQkJCTUzRkEyQUUwMUNGMzdGM0Yw
MDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
aCAqLywKQEAgLTgyODQsOCArODI4Niw2IEBACiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3Nzkg
LyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKLQkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUg
LyogU3BlY2lhbFBvaW50ZXIuY3BwICovLAotCQkJCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBT
cGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNw
ZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVj
dHVyZVNldC5jcHAgKi8sCkBAIC05NDQ4LDYgKzk0NDgsNyBAQAogCQkJCTBGMkI2NkFFMTdCNkI1
NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2QUYxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdD
TG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTIyOTI3RDUyMzVGRDBCOTAwNUNCMTY5IC8q
IEdDTWVtb3J5T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzE1MzExRUIyOEJF
RTAwQTE2NDVEIC8qIEdDUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjAxOEJG
RkJCQjAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
NEU4RUIxMThCRkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC05ODQzLDYgKzk4NDQsNyBAQAogCQkJCUJDMThDNDMxMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0
NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNjM3RUU5MjM2RTU2
QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Uy
RUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDA5Niw3ICsxMDA5OCw2IEBACiAJCQkJMEZERTg3RkMxREZF
NkU1MTAwNjRDMzkwIC8qIFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6
ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURBRUVF
MDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODVGNkJD
MThDNTUzRkUwMEYxMDYyNiAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGM0FDNzUyMTgzRUExMDQwMDMyMDI5RiAvKiBTdGFja0FsaWdubWVudC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVh
ZGVyLnB5CmluZGV4IDMzNDE5ZjU1ZjYxYzU0NGFmYzhjODRjM2M3OTY5Njc1ZTc5MDFiNTYuLjA0
MmIzMjJiYjhiZGRmMTM0YTc4MDFiYTZmYmRiMmE3YzU1YTliMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29t
YmluZWRfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVp
bHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5CkBAIC0xNzIsMTEgKzE3
MiwxMCBAQCBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFsX3ByaXZhdGVfY29kZV9uYW1l
X21hY3JvKHNlbGYpOgogICAgICAgICBmdW5jdGlvbnMuc29ydChrZXk9bGFtYmRhIHg6IHguZnVu
Y3Rpb25fbmFtZSkKICAgICAgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKICAgICAgICAg
ICAgIGZ1bmN0aW9uX2FyZ3MgPSB7Ci0gICAgICAgICAgICAgICAgJ3Zhck5hbWUnOiBnZXRfdmFy
X25hbWUoZnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1
bmN0aW9uX25hbWUsCiAgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0
b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUodmFyTmFtZSlzLCAlKGZ1bmNOYW1l
KXMsICUoY29kZU5hbWUpcykgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywgJShjb2RlTmFtZSlzKSBcXCIgJSBmdW5j
dGlvbl9hcmdzKQogCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKaW5kZXggYzkwOGFmYjUwZTA1YzE4Y2U2ZGUxYjFkN2NkNjVkNmM1ODhk
ZTMyOC4uNTE5MjFkNzE4NjA5YmExZTdiNDgxNDEwNjM0N2FlZDIyZTg2MDg4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjQ0LDYgKzI0NCw3IEBAIGJ5dGVjb2RlL0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9KdW1wVGFibGUuY3BwCiBieXRlY29kZS9M
TEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKK2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
Y3BwCiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAKIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3Bw
CkBAIC0yNjMsNyArMjY0LDYgQEAgYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVj
b2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCi1ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAogYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAogYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCBkZDMzY2E4MDM2YTMwYmY2
NGUwOGEwYTM4N2VlMWI1YjcxMWE3OGYxLi5kNDNlNDhmMGJhMzFlYmRjZjhiZWQxOGI2ZTlhYjBi
OGRiZjU2MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIEpTQ19DT01NT05f
QllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUobWFjcm8pIFwKICAgICBKU0Nf
Q09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfRUFDSF9OQU1FKG1hY3JvKSBcCiAg
ICAgbWFjcm8oYWRkKSBcCisgICAgbWFjcm8oYXBwbHlGdW5jdGlvbikgXAogICAgIG1hY3JvKGFy
cmF5SXRlcmF0b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmQpIFwK
ICAgICBtYWNybyhhcnJheUl0ZXJhdG9yTmV4dCkgXApAQCAtNTIsNiArNTMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBtYWNybyhhcnJheUl0ZXJhdG9yS2luZCkgXAogICAgIG1hY3JvKGFycmF5
U3BlY2llc0NyZWF0ZSkgXAogICAgIG1hY3JvKGFzc2VydCkgXAorICAgIG1hY3JvKGNhbGxGdW5j
dGlvbikgXAogICAgIG1hY3JvKGNoYXJDb2RlQXQpIFwKICAgICBtYWNybyhleGVjdXRvcikgXAog
ICAgIG1hY3JvKGlzVmlldykgXApAQCAtNzMsNiArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCiAgICAgbWFjcm8ob3duS2V5cykgXAogICAg
IG1hY3JvKFNldCkgXAorICAgIG1hY3JvKHRocm93VHlwZUVycm9yRnVuY3Rpb24pIFwKICAgICBt
YWNybyh0eXBlZEFycmF5TGVuZ3RoKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheVNvcnQpIFwKICAg
ICBtYWNybyh0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcikgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKaW5kZXgg
MzBmYzY2ZTRiODlmMmVhMGJkNjlhN2I4MWRlMTM4NTBmMDFjZGI3NC4uNjZmOTUxZmI0ZmM2ZDFj
NjUxZTAzMDc3MGRlZDUxNWU5MGRlYjliMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCkBAIC0yMzcsMTkgKzIzNywxNiBA
QCBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZhciBwcm9taXNlID0gQGNyZWF0ZVBy
b21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gZmFsc2UpOwogICAgIHZhciBjYXB0
dXJlZFByb21pc2UgPSBwcm9taXNlOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbGxvdyB1
c2luZyBmdW5jdGlvbi1kZWNsYXJhdGlvbiBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM1MDIKLSAgICB2YXIgQHJlamVjdCA9IGZ1bmN0aW9u
IEByZWplY3QocmVhc29uKSB7Ci0gICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJz
dFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKLSAg
ICB9OwotCiAgICAgdHJ5IHsKICAgICAgICAgZXhlY3V0b3IoCiAgICAgICAgICAgICBmdW5jdGlv
biBAcmVzb2x2ZShyZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEByZXNvbHZl
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlz
ZSwgcmVzb2x1dGlvbik7Ci0gICAgICAgICAgICB9LCBAcmVqZWN0KTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAgICAg
IHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNr
KGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgICAgIEByZWplY3QoZXJyb3IpOworICAgICAgICBAcmVqZWN0UHJvbWlz
ZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsKICAg
ICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKQEAgLTI2NiwxOSArMjYzLDE2IEBAIGZ1bmN0aW9u
IEludGVybmFsUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9t
aXNlKHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIHRydWUpOwogICAgIHZhciBjYXB0dXJl
ZFByb21pc2UgPSBwcm9taXNlOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbGxvdyB1c2lu
ZyBmdW5jdGlvbi1kZWNsYXJhdGlvbiBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM1MDIKLSAgICB2YXIgQHJlamVjdCA9IGZ1bmN0aW9uIEBy
ZWplY3QocmVhc29uKSB7Ci0gICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJl
c29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKLSAgICB9
OwotCiAgICAgdHJ5IHsKICAgICAgICAgZXhlY3V0b3IoCiAgICAgICAgICAgICBmdW5jdGlvbiBA
cmVzb2x2ZShyZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEByZXNvbHZlUHJv
bWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwg
cmVzb2x1dGlvbik7Ci0gICAgICAgICAgICB9LCBAcmVqZWN0KTsKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAgICAgIHJl
dHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNh
cHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0gY2F0Y2ggKGVy
cm9yKSB7Ci0gICAgICAgIEByZWplY3QoZXJyb3IpOworICAgICAgICBAcmVqZWN0UHJvbWlzZVdp
dGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsKICAgICB9
CiAKICAgICByZXR1cm4gcHJvbWlzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGFmODA3NjkzMzJjOWNiNTBlMjJjYzMzZGFj
NzQ1YTJkYmUwZmUzMDQuLjg1OGFiOTA1MDJlODRkNzA3OTE1MzI1ZjY5M2VlM2Q1ZDU4NWM4ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcApAQCAtMTM2LDYgKzEzNiw5IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQ29uc3RhbnRzKCkKICAgICAgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOjpPdGhlcjoKICAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25E
ZXNjcmlwdGlvbiA9ICIiOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQ6CisgICAgICAgICAg
ICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiOiBpbiBzb3VyY2Ug
YXMgbGlua2UtdGltZS1jb25zdGFudCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB0aGlzLT5tX291dC5wcmludGYoIiAgIGsldSA9ICVzJXNcbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgdG9DU3RyaW5nKGNvbnN0YW50LmdldCgpKS5kYXRh
KCksIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICsr
aTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCBkNDE2MzNjNTViNjA5Y2Q1N2UyNDNiMmIx
YTRjNDQwOTIxNGM1YWRhLi45OWYzZWJiNWM2NDJhMDlmNDQ0NjM3Y2I2NDBkYzU1ZDM1NTZiZGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC00Miw3ICs0Miw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RP
X1NFVChuYW1lKSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLmltcGwoKSwgJkJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfIyNuYW1lKTsKKyNkZWZpbmUgSU5JVElBTElaRV9CWVRF
Q09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAu
YWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCku
aW1wbCgpLCBFbnRyeSgmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY18jI25h
bWUpKTsKKyNkZWZpbmUgSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VU
X0ZPUl9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbV9ieXRlY29kZUludHJpbnNpY01h
cC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMjUHJpdmF0ZU5hbWUo
KS5pbXBsKCksIEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZSk7CiAKIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIDogbV92
bSh2bSkKQEAgLTUwLDYgKzUxLDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiB7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9J
TlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJ
Q19OQU1FU19UT19TRVQpCiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RB
TlRTX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQp
CisgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhJTklUSUFMSVpFX0JZVEVDT0RF
X0lOVFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVCkKIAogICAgIG1f
dW5kZWZpbmVkLnNldChtX3ZtLCBqc1VuZGVmaW5lZCgpKTsKICAgICBtX0luZmluaXR5LnNldCht
X3ZtLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCkpKTsKQEAgLTk4LDEzICsxMDAsMTMgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9Bc3luY0dlbmVyYXRvclN1c3Bl
bmRSZWFzb25Ob25lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0Fz
eW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiB9CiAK
LUJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorT3B0aW9uYWw8Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk+IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBpZiAoIWlkZW50
LmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fYnl0ZWNvZGVJbnRyaW5zaWNN
YXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2J5dGVjb2RlSW50
cmluc2ljTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaAppbmRleCBmYWViMjM4OWI4ZmQ3MGVlNWY5NDkzNWYzOGE3NGE2MTU2Nzg2OWJm
Li41NjdiMDI2YjVlMWQwNWM4MzZjMDE5YzkzN2M4NTA5NTNjODI1ZjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMzcsNyArMTM4LDQ0IEBAIGNs
YXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogCiAgICAgdHlwZWRlZiBSZWdpc3RlcklE
KiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJUeXBlKShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKTsKIAotICAgIEVtaXR0ZXJUeXBlIGxvb2t1cChjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIEVt
aXR0ZXIgPSAwLAorICAgICAgICBMaW5rVGltZUNvbnN0YW50ID0gMSwKKyAgICB9OworCisgICAg
Y2xhc3MgRW50cnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgRW50cnkoKQorICAgICAgICAgICAg
OiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9lbWl0dGVy
ID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIEVudHJ5KEVtaXR0ZXJUeXBlIGVtaXR0
ZXIpCisgICAgICAgICAgICA6IG1fdHlwZShUeXBlOjpFbWl0dGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX2VtaXR0ZXIgPSBlbWl0dGVyOworICAgICAgICB9CisKKyAgICAgICAgRW50cnko
TGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KQorICAgICAgICAgICAgOiBtX3R5cGUo
VHlwZTo6TGlua1RpbWVDb25zdGFudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9saW5rVGlt
ZUNvbnN0YW50ID0gbGlua1RpbWVDb25zdGFudDsKKyAgICAgICAgfQorCisgICAgICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICBMaW5rVGltZUNvbnN0YW50
IGxpbmtUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnQ7IH0K
KyAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgRW1pdHRlclR5
cGUgbV9lbWl0dGVyOworICAgICAgICAgICAgTGlua1RpbWVDb25zdGFudCBtX2xpbmtUaW1lQ29u
c3RhbnQ7CisgICAgICAgIH07CisgICAgICAgIFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBP
cHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKIAogI2RlZmlu
ZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1l
KSBKU1ZhbHVlIG5hbWUjI1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShKU0NfREVDTEFSRV9CWVRF
Q09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKQEAgLTE0NSw3ICsxODMsNyBAQCBj
bGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogcHJpdmF0ZToKICAgICBWTSYgbV92
bTsKLSAgICBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVtaXR0ZXJUeXBlLCBJ
ZGVudGlmaWVyUmVwSGFzaD4gbV9ieXRlY29kZUludHJpbnNpY01hcDsKKyAgICBIYXNoTWFwPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9ieXRl
Y29kZUludHJpbnNpY01hcDsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5T
SUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1lKSBTdHJvbmc8VW5rbm93bj4gbV8jI25hbWU7CiAg
ICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX1NJTVBMRV9FQUNIX05B
TUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBk
NjUyYjY1ODg0Yzc4YjAzYmQ4MGQyZDY3ZDQ4ZjE2ODYxMGI5YTc4Li4zNGMxNTJhMGQ2NjJmMzUy
OTdkZjE0NDQ4NjRmYjRiYmEzNDBlZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTY0LDEwICs2NCw2IEBACiAgICAgOk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLAogXQogCi1uYW1lc3BhY2UgOlNwZWNpYWwgZG8KLSAgICB0eXBlcyBb
IDpQb2ludGVyIF0KLWVuZAotCiB0ZW1wbGF0ZXMgWwogICAgIDpXcml0ZUJhcnJpZXIsCiAgICAg
OldyaXRlQmFycmllckJhc2UsCkBAIC02NzUsNyArNjcxLDcgQEAKIG9wIDpqbmVxX3B0ciwKICAg
ICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNwZWNp
YWxQb2ludGVyOiBTcGVjaWFsOjpQb2ludGVyLAorICAgICAgICBzcGVjaWFsUG9pbnRlcjogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDVlYzI0NmM5MWQ4MmVjZTYyNGRkZGMyNmFiYjVkNTU0MjQzZGI5ODIuLjBm
OGU3ZjhiNGY5MjQ0NDczODJhNWQ4ZTg4MTM3NjA3ZDQ5YzI0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zOTksMTIgKzM5OSw2IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRD
b2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFu
dHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSwgdG9wTGV2ZWxFeGVjdXRhYmxlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGkrKykgewotICAgICAgICBMaW5r
VGltZUNvbnN0YW50IHR5cGUgPSBzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0YW50PihpKTsKLSAg
ICAgICAgaWYgKHVuc2lnbmVkIHJlZ2lzdGVySW5kZXggPSB1bmxpbmtlZENvZGVCbG9jay0+cmVn
aXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpCi0gICAgICAgICAgICBtX2NvbnN0
YW50UmVnaXN0ZXJzW3JlZ2lzdGVySW5kZXhdLnNldCh2bSwgdGhpcywgbV9nbG9iYWxPYmplY3Qt
PmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOwotICAgIH0KLQogICAgIC8vIFdlIGFs
cmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmb3IgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCBzaW5jZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlCiAgICAgLy8gdGhlIG1vZHVsZSBlbnZp
cm9ubWVudHMgYmVmb3JlIGxpbmtpbmcgdGhlIGNvZGUgYmxvY2suIFdlIHJlcGxhY2UgdGhlIHN0
b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0aGUgYWxyZWFkeSBjbG9uZWQgb25lLgogICAgIGlmIChV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odm0s
IHVubGlua2VkQ29kZUJsb2NrKSkgewpAQCAtOTA1LDI5ICs4OTksMzYgQEAgdm9pZCBDb2RlQmxv
Y2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93
bj4+JiBjb25zdGEKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CiAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBjb25zdGFudHNbaV0uZ2V0KCk7Ci0KLSAg
ICAgICAgaWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChjb25zdGFu
dC5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGNvbnN0YW50LmFz
Q2VsbCgpOwotICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBq
c0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX3VubGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2Rl
cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLT5tX2xvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAgIHN3aXRjaCAoY29u
c3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2ldKSB7CisgICAgICAgIGNhc2UgU291cmNl
Q29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAgICAgICAgY29uc3Rh
bnQgPSBnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3RhbnQoc3RhdGljX2Nhc3Q8TGlua1RpbWVD
b25zdGFudD4oY29uc3RhbnQuYXNJbnQzMkFzQW55SW50KCkpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXI6CisgICAgICAg
IGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpJbnRlZ2VyOgorICAgICAgICBjYXNlIFNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6RG91YmxlOgorICAgICAgICAgICAgaWYgKCFjb25zdGFu
dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxsKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gY29uc3RhbnQuYXNDZWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBqc0R5bmFt
aWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5cGVQcm9maWxlck9wY29kZXMo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBjbG9u
ZSA9IHN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0YUNvZGVCbG9jayh0aGlzKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFibGUtPmNyZWF0ZVRlbXBsYXRl
T2JqZWN0KGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBjbG9uZSA9IHN5bWJvbFRhYmxlLT5j
bG9uZVNjb3BlUGFydCh2bSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3YXNDb21waWxlZFdp
dGhEZWJ1Z2dpbmdPcGNvZGVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0
UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQg
PSBjbG9uZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGRlc2NyaXB0b3IgPSBq
c0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj4odm0sIGNlbGwpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVjdXRh
YmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOwotICAg
ICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
ICAgICAgICAgICAgICAgICBjb25zdGFudCA9IHRlbXBsYXRlT2JqZWN0OwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQodm0sIHRoaXMsIGNvbnN0YW50KTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IGUyNDRmZDYyNzA5
YjQyNWE2MjhlMjI0NTY2MzhiMGU1NjNjZGFlMDkuLmVkYTI0YmU0Njk1NjRiMmU1MGM2NGZlNjA4
MWJhMjFmOWNlZDlhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2luY2x1ZGUg
IlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MTlmOTc1NjhhMzk1MjIxMDZkZDEyNzBjYjliMTFlMWFhODkwZGI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGlua1Rp
bWVDb25zdGFudC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKKyNkZWZp
bmUgUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIFwKKyAgICBjYXNlIEpTQzo6
TGlua1RpbWVDb25zdGFudDo6bmFtZTogXAorICAgICAgICBvdXQucHJpbnQoI25hbWUpOyBcCisg
ICAgICAgIHJldHVybjsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpT
Qzo6TGlua1RpbWVDb25zdGFudCBjb25zdGFudCkKK3sKKyAgICBzd2l0Y2ggKGNvbnN0YW50KSB7
CisgICAgICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoUFJJTlRfTElOS19USU1F
X0NPTlNUQU5UKQorICAgIH0KK30KKworI3VuZGVmIFBSSU5UX0xJTktfVElNRV9DT05TVEFOVAor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNmU3MjYyNDA5Yzg1NzQzMmQ0YjJm
Y2ZhY2YxN2M3NjBkMTdiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU0NCdWlsdGlucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJs
b2NrOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfTElOS19U
SU1FX0NPTlNUQU5UUyh2KSBcCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklW
QVRFX0dMT0JBTF9OQU1FKHYpIFwKKyAgICB2KHRocm93VHlwZUVycm9yRnVuY3Rpb24sIG51bGxw
dHIpIFwKKyAgICB2KGltcG9ydE1vZHVsZSwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0SGVh
ZCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAgIHYobWFw
QnVja2V0S2V5LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRWYWx1ZSwgbnVsbHB0cikgXAor
ICAgIHYoc2V0QnVja2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0TmV4dCwgbnVs
bHB0cikgXAorICAgIHYoc2V0QnVja2V0S2V5LCBudWxscHRyKSBcCisgICAgdihwcm9wZXJ0eUlz
RW51bWVyYWJsZSwgbnVsbHB0cikgXAorICAgIHYob3duS2V5cywgbnVsbHB0cikgXAorICAgIHYo
ZW5xdWV1ZUpvYiwgbnVsbHB0cikgXAorICAgIHYobWFrZVR5cGVFcnJvciwgbnVsbHB0cikgXAor
ICAgIHYodHlwZWRBcnJheUxlbmd0aCwgbnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheUdldE9y
aWdpbmFsQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTb3J0LCBudWxs
cHRyKSBcCisgICAgdihpc1R5cGVkQXJyYXlWaWV3LCBudWxscHRyKSBcCisgICAgdih0eXBlZEFy
cmF5U3ViYXJyYXlDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzQm91bmRGdW5jdGlvbiwgbnVs
bHB0cikgXAorICAgIHYoaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAg
dihpbnN0YW5jZU9mLCBudWxscHRyKSBcCisgICAgdihCdWlsdGluTG9nLCBudWxscHRyKSBcCisg
ICAgdihCdWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAgICB2KFJlZ0V4cCwgbnVsbHB0cikg
XAorICAgIHYodHJ1bmMsIG51bGxwdHIpIFwKKyAgICB2KFByb21pc2UsIG51bGxwdHIpIFwKKyAg
ICB2KEludGVybmFsUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoZGVmYXVsdFByb21pc2VUaGVu
LCBudWxscHRyKSBcCisgICAgdihyZXBlYXRDaGFyYWN0ZXIsIG51bGxwdHIpIFwKKyAgICB2KGFy
cmF5U3BlY2llc0NyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheSwgbnVsbHB0cikgXAor
ICAgIHYoaXNBcnJheVNsb3csIG51bGxwdHIpIFwKKyAgICB2KGNvbmNhdE1lbWNweSwgbnVsbHB0
cikgXAorICAgIHYoYXBwZW5kTWVtY3B5LCBudWxscHRyKSBcCisgICAgdihob3N0UHJvbWlzZVJl
amVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKKyAgICB2KEluc3BlY3Rvckluc3RydW1lbnRhdGlv
biwgbnVsbHB0cikgXAorICAgIHYoU2V0LCBudWxscHRyKSBcCisgICAgdih0aGlzVGltZVZhbHVl
LCBudWxscHRyKSBcCisgICAgdihpc0NvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAgdihyZWdF
eHBQcm90b0ZsYWdzR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b0dsb2JhbEdl
dHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyLCBudWxs
cHRyKSBcCisgICAgdihyZWdFeHBQcm90b011bHRpbGluZUdldHRlciwgbnVsbHB0cikgXAorICAg
IHYocmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3Rv
U3RpY2t5R2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIs
IG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cEJ1aWx0aW5FeGVjLCBudWxscHRyKSBcCisgICAgdihy
ZWdFeHBDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzUmVnRXhwLCBudWxscHRyKSBcCisgICAg
dihyZWdFeHBNYXRjaEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNlYXJjaEZhc3QsIG51
bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhw
UHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwVGVzdEZhc3Qs
IG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwsIG51bGxwdHIpIFwKKyAg
ICB2KHN0cmluZ1NwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYoc3RyaW5nU3Vic3RySW50ZXJu
YWwsIG51bGxwdHIpIFwKKyAgICB2KG1ha2VCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAg
dihoYXNPd25MZW5ndGhQcm9wZXJ0eSwgbnVsbHB0cikgXAorICAgIHYoZGF0ZVRpbWVGb3JtYXQs
IG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsLCBu
dWxscHRyKSBcCisgICAgdih3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWws
IG51bGxwdHIpIFwKKyAgICB2KE9iamVjdCwgbnVsbHB0cikgXAorICAgIHYoQXJyYXksIG51bGxw
dHIpIFwKKyAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGNhbGxGdW5jdGlv
biwgbnVsbHB0cikgXAorCisKKyNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFt
ZSwgY29kZSkgbmFtZSwKK2VudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Qgewor
ICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJTUVfQ09O
U1RBTlQpCit9OworI3VuZGVmIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UCisjZGVmaW5lIENP
VU5UX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSAxICsKK3N0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cyA9IEpTQ19GT1JFQUNIX0xJTktfVElN
RV9DT05TVEFOVFMoQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKSAwOworI3VuZGVmIENPVU5UX0xJ
TktfVElNRV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWQzZjI0Y2EwNDgxZDExYTY3ZWJkMWJmYmFiZTg2NmZk
MzFkNDhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRl
ci5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkKiBh
Y3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNwZWNpYWw6OlBv
aW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hY3R1YWxQb2ludGVy
Rm9yKHBvaW50ZXIpOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGFjdHVhbFBv
aW50ZXJGb3IoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcG9pbnRlcik7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIHN3
aXRjaCAocG9pbnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVuY3Rpb246Ci0g
ICAgICAgIG91dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEpTQzo6U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJBcHBs
eUZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6T2Jq
ZWN0Q29uc3RydWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3RydWN0b3IiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9y
OgotICAgICAgICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91dC5wcmludCgi
VGFibGVTaXplIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5MmJhYjc2ZWEyYmZmN2U2ZTg4MzUz
NWVhNGQ3NmM0MWIwNDY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotCi1uYW1lc3BhY2Ug
U3BlY2lhbCB7Ci1lbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7Ci0gICAgQ2FsbEZ1bmN0aW9uLAot
ICAgIEFwcGx5RnVuY3Rpb24sCi0gICAgT2JqZWN0Q29uc3RydWN0b3IsCi0gICAgQXJyYXlDb25z
dHJ1Y3RvciwKLSAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50ZXIuIFVz
ZSB0aGlzIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgotfTsKLX0gLy8gbmFt
ZXNwYWNlIFNwZWNpYWwKLQotZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBUaHJv
d1R5cGVFcnJvckZ1bmN0aW9uLAotfTsKLWNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRD
b3VudCA9IDE7Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6OlBvaW50
ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVj
aWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBwb2lu
dGVySXNDZWxsKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiwgU3BlY2lhbDo6
UG9pbnRlcik7Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayosIFNwZWNpYWw6OlBv
aW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNz
IFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlNw
ZWNpYWw6OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDIzNGZh
NTc3YzVhZjBhMTIxNmM3YjRkNmQwNDQ3ZDBiY2Y4ZDRjNDkuLmQ1ZGRlZThkNTYwNzcwMzIzYjFm
ZDVmMWFjY2NjYzA1MDJjMTI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzYsOCArNzYsNiBAQCBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRp
b25Nb2RlKQogICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNyZWF0ZSgp
KQogewotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlckluZGV4IDogbV9saW5rVGltZUNv
bnN0YW50cykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlckluZGV4ID0gMDsKICAgICBBU1NFUlQo
bV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0
b3JLaW5kKCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29kZVR5cGUpKTsKICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NzM5ZGE3ODM1NjhkM2ViMjYzMWVl
ZjFhNzI0MjkyODc5N2Y1NjY5Li5kNjA3MzYwMTRkZDFlMzE1NzEzYTg1MmU4N2RhNjU2MTQxNjMw
MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1
ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCi0jaW5jbHVkZSAiU3BlY2lh
bFBvaW50ZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2lu
Y2x1ZGUgIlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rl
ci5oIgpAQCAtMTgwLDI3ICsxNzksMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24u
YXBwZW5kKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkK
KyAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1lQ29uc3Rh
bnQpCiAgICAgewogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICBhdXRvIGxv
Y2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNlbGxMb2NrKCkpOwogICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAgICAgQVNT
RVJUKHJlc3VsdCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQp
OwotICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XSA9IHJlc3VsdDsKICAgICAgICAg
bV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwotICAg
ICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMubGFz
dCgpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGlua1RpbWVD
b25zdGFudCkpKTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24u
YXBwZW5kKFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJbmRleEZv
ckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAgICAgIEFT
U0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVybiBtX2xp
bmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8V3JpdGVC
YXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJl
Z2lzdGVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRl
eCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CkBAIC00MDYsOCArMzk1LDYgQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsK
IAotICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5r
VGltZUNvbnN0YW50czsKLQogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2ln
bmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0b3IgOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCAyZGI4MThmMGI5YjU0YjIxNWJhZjA2Y2NjNmFlMzFjM2My
OWFkZmFlLi44MzZmZDU3OGYyYzE4NGZiMzM2MjU1ODcxYzZiMTJjM2MxMzY3YTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMzA4LDkgKzMwOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVy
IDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVy
ID0gbnVsbHB0cjsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBB
bGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM2MCw5ICsz
NTcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJy
b3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1
bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVC
bG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdGFudFJl
Z2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJl
Z2lzdGVyID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRhYmxl
ID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5z
ZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQgc3ltYm9s
VGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwxMSArNzgyLDcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmlu
Z0Z1bmN0aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJvd25WYWx1ZSk7CiAgICAgICAgIC8vIHJl
dHVybiBAcHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJSZWplY3RQcm9taXNlID0gdmFyaWFibGUo
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNv
bHZpbmdGdW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgbW92ZShzY29wZS5nZXQo
KSwgZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSkpOwotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IGVtaXRHZXRGcm9tU2NvcGUo
bmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlLCBUaHJvd0lmTm90
Rm91bmQpOwotCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNlID0gbW92
ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlz
ZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKTsKICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICAgICAgZW1pdExvYWQoYXJncy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIG1vdmUoYXJncy5hcmd1bWVudFJl
Z2lzdGVyKDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBAIC04NDgsOSArODM4LDYgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2Rl
LCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250
ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgp
KQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAg
ICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKICAgICBwdXNoVERaVmFyaWFi
bGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90
T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CkBAIC05MTAsOSArODk3LDYgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3Jh
bU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKLSAgICBm
b3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMp
Ci0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgU3ltYm9sVGFibGUq
IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0p
OwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFs
KG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUt
PnNldFNjb3BlVHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwpAQCAt
MTQ0MiwxMiArMTQyNiwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmRmFs
c2UoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIAogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYg
dGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpDYWxs
RnVuY3Rpb24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywg
Y29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y2Fs
bEZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYg
dGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFsOjpBcHBs
eUZ1bmN0aW9uLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMs
IGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFw
cGx5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5l
cmF0b3I6Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApAQCAtMzEw
MSw3ICszMDg1LDcgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4
cGVjdGVkRnVuY3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYgKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAgICAgICAg
cmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6
ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJp
bmQodGhpcykpOworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KSwgcmVhbENhbGwt
PmJpbmQodGhpcykpOwogICAgICAgICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0
KCkpCiAgICAgICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBAIC0zMTE3LDcgKzMxMDEsNyBA
QCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRGdW5jdGlv
blNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpID4gMikKICAgICAgICAgICAgIHJldHVybiBOb0V4cGVj
dGVkRnVuY3Rpb247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVu
YywgU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykpOworICAg
ICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgTGlua1RpbWVDb25zdGFudDo6QXJyYXkpLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICAg
ICAgaWYgKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9PSAyKQpA
QCAtMzI4NSw3ICszMjY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZp
bmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICBpZiAoYXR0
cmlidXRlcy5oYXNHZXQoKSB8fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CiAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgICAgICBpZiAoIWF0dHJp
YnV0ZXMuaGFzR2V0KCkgfHwgIWF0dHJpYnV0ZXMuaGFzU2V0KCkpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVD
b25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGdldHRlcjsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCkBAIC00NDc0
LDEwICs0NDU4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKIAogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9y
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKLSAgICBhdXRvIHZhckNyZWF0ZUFzeW5j
RnJvbVN5bmNJdGVyYXRvciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5jcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBtb3ZlKHNjb3BlLmdldCgp
LCBlbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJDcmVhdGVBc3luY0Zyb21TeW5jSXRl
cmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJh
dG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhckNy
ZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gbW92ZUxpbmtUaW1lQ29u
c3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJh
dG9yKTsKIAogICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMik7CiAgICAg
ZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggMmQ3MjFlYjc3OTBiMzczMDIzNzhmZmFjYjkxMjI3MmRmYjhlN2M0Zi4uZjViMzU2OGQx
ZDc1NTAyODc0ZmQ2N2FkNTVmZDhkODJmM2FlNzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVD
b25zdGFudC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIK
ICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgpAQCAtMTIxNiw3ICsxMjE3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJlZ2lzdGVy
IHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVyaXZlZENvbnN0dWN0b3Ig
eyBudWxscHRyIH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdOworICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnNbbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50c10geyB9OwogICAg
ICAgICBSZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fcHJvbWlzZVJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMmUwM2JlMGI3Yzc1ZGRiMDI3ZWM0ZTZmNjU2
MjE4ZDhlMGZlNTFhNi4uNTI0NjhlMWYyYWExMWUxMjA2YWU3ZjQ1YTE1ZjI5MGIzOWRhZjQ1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJl
Z2lzdGVySUQqIEltcG9ydE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9y
dE1vZHVsZSA9IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW1wb3J0
TW9kdWxlUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9ydE1vZHVs
ZSA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50OjppbXBvcnRNb2R1bGUpOwogICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRv
ciwgbnVsbHB0ciwgMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3VtZW50
cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBtX2V4cHIpOwpAQCAtOTg1LDcgKzk4NSwxMSBAQCBSZWdp
c3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICByZXR1cm4gKHRoaXMtPiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0KTsKKyAg
ICBpZiAobV9lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6
RW1pdHRlcikKKyAgICAgICAgcmV0dXJuICh0aGlzLT4qbV9lbnRyeS5lbWl0dGVyKCkpKGdlbmVy
YXRvciwgZHN0KTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZUxpbmtUaW1l
Q29uc3RhbnQoZHN0LCBtX2VudHJ5LmxpbmtUaW1lQ29uc3RhbnQoKSk7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QnlJZERpcmVjdChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xMDEzLDkg
KzEwMTcsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY19nZXRCeUlkRGlyZWN0UHJpdmF0ZShCeXRlY29kZUcKIAogc3RhdGljIEpTUHJvbWlzZTo6
RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5v
ZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKKyAgICBBU1NFUlQobm9kZS0+ZW50
cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7
CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZEZsYWdzKQogICAgICAgICByZXR1cm4gSlNQ
cm9taXNlOjpGaWVsZDo6RmxhZ3M7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJl
c3VsdCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQpCiAg
ICAgICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdDsKICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxk
OjpGbGFnczsKQEAgLTEwMjMsMTMgKzEwMjgsMTQgQEAgc3RhdGljIEpTUHJvbWlzZTo6RmllbGQg
cHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiAK
IHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5
dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3Rh
dGUpCisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFN0YXRlKQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dlbmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRO
ZXh0KQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0OwotICAgIGlmIChu
b2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAm
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFRoaXMp
CiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXM7Ci0gICAgaWYgKG5vZGUt
PmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5l
cmF0b3JGaWVsZEZyYW1lKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZEZyYW1lKQog
ICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRl
OwpAQCAtMTAzNywxOSArMTA0MywyMCBAQCBzdGF0aWMgSlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVy
YXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZAogCiBzdGF0
aWMgSlNBc3luY0dlbmVyYXRvcjo6RmllbGQgYXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5k
ZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmll
bGRTdGF0ZSkKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1p
dHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRv
ckZpZWxkU3RhdGUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3Rh
dGU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCku
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkTmV4dCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpO
ZXh0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgp
LmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5l
cmF0b3JGaWVsZFRoaXMpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6
VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUtPmVudHJ5
KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dl
bmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVs
ZDo6RnJhbWU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKKyAg
ICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCiAgICAgICAg
IHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbjsKLSAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVt
aXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dl
bmVyYXRvckZpZWxkUXVldWVGaXJzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6
OkZpZWxkOjpRdWV1ZUZpcnN0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFz
dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkKICAgICAg
ICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3Q7CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6Rmll
bGQ6OlN0YXRlOwpAQCAtNDA5NiwxMCArNDEwMyw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgIC8vIGxvYWQg
YW5kIGNhbGwgQGFzeW5jRnVuY3Rpb25SZXN1bWUKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3lu
Y0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1v
dmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2
YXIpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1bWUgPSBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3Bl
LmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBhc3luY0Z1bmN0aW9uUmVzdW1lID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51
bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFzeW5jRnVuY3Rpb25SZXN1bWUpOwogCiAgICAgICAg
IENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDQpOwogICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudENvdW50ID0gMDsKQEAgLTQ1NzgsMTEgKzQ1ODIsNyBAQCB2b2lkIE9iamVj
dFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogcmhzKQogICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGFkZE1ldGhvZDsKICAgICBpZiAobV9jb250YWluc1Jlc3RFbGVtZW50ICYm
IG1fY29udGFpbnNDb21wdXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGF1dG8gdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuU2V0
UHJpdmF0ZU5hbWUoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQo
KSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93
SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9
IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50
OjpTZXQpOwogCiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIs
IDApOwogICAgICAgICBleGNsdWRlZExpc3QgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBzZXRDb25zdHJ1Y3Rv
ci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwpAQCAtNDYzMywxMSArNDYzMyw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0ID0gZ2VuZXJhdG9y
LmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0gICAgICAg
ICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLmNvcHlEYXRhUHJvcGVydGllc1ByaXZhdGVOYW1lKCkpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQo
KSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5l
bWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZh
ciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5
RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
TGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmlu
ZWQoKSk7CkBAIC00ODEwLDExICs0ODA2LDcgQEAgUmVnaXN0ZXJJRCogT2JqZWN0U3ByZWFkRXhw
cmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG8KICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoc3JjLmdldCgpLCBtX2V4cHJlc3Npb24pOwogICAgIAogICAg
IC8vIGxvYWQgYW5kIGNhbGwgQGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucwotICAgIGF1
dG8gdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zUHJpdmF0ZU5hbWUoKSk7
Ci0gICAgCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwotICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNv
cHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1vdmVMaW5r
VGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJvcGVydGll
c05vRXhjbHVzaW9ucyk7CiAgICAgCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwg
bnVsbHB0ciwgMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCks
IGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBlMGVlZjQ5MTdhYTY4MWZhYzI5NGM5ODg0OTgyNWIyZDkzZjAw
ZjFhLi4zMzc4YWQwOTJmNmEyNDIwMzNjZjQwNzY4M2Q5Mzg5NWQzZDNjZDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjM0Miwx
MSArNjM0Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwot
ICAgICAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBzcGVjaWFsUG9pbnRlciA9IGJ5dGVjb2RlLm1f
c3BlY2lhbFBvaW50ZXI7Ci0gICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzQ2VsbChzcGVjaWFs
UG9pbnRlcikpOwotICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyID0gc3RhdGljX2Nh
c3Q8SlNDZWxsKj4oCi0gICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZvcihtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKLSAgICAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFsUG9pbnRlcik7Cisg
ICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplU3Ry
b25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRlY29kZS5t
X3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2
ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgICAgICAg
ICBOb2RlKiBjaGlsZCA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwZDA0OTk0NTgwZDliMzg4MWM5MDJiMDFh
YmEzZTYxZDk2MDM2ZTU5Li44ZWJlNDlmZWJiZjUxMzViNTM1ZTNjZGQ3Njk2NTY4MTUwNTNkYTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ3MSwxMSAr
NDcxLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgp
OwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsK
KyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2Rl
Lm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9pbnRlci5p
c0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoc3JjLCByZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJh
bmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29k
ZUJsb2NrLCBwdHIpKSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJhbmNoUHRy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwog
ICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAg
YWRkSnVtcChqdW1wKCksIHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzZTBjZWI0Njkz
YTU4OTVmM2FmZWJjOTYyYTljMTQzZjA4MjhjNTMxLi40ZTk0MjQ1NDc5ZjNmNDc2OTdhOGI2OTNj
NWRmMWYwMTBlYjIzMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCkBAIC00NzgsMTIgKzQ3OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVx
X3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgc3JjID0g
Ynl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5
dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdl
dENvbnN0YW50T3BlcmFuZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKTsKKyAg
ICBBU1NFUlQoc3BlY2lhbFBvaW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
IAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENlbGwgPSBi
cmFuY2hJZk5vdENlbGwocmVnVDEpOwotICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWws
IHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ssIHB0cikp
KTsKKyAgICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0
cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAg
ICBzdG9yZTgoVHJ1c3RlZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQpOwogICAgIGFk
ZEp1bXAoanVtcCgpLCB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMzdlZTIyYjQ5M2Qw
YjVhZTRkMzc0MmRiMTIyZjUyM2JlYWYzZjZhLi4zMTU1NDhmMTBiMTIwZTllNmY1MWIyMTAyODgx
NTIwNmUyNjY1ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNDYyLDYgKzQ2MiwxOCBAQCBtYWNy
byBsb2FkVmFyaWFibGUoZ2V0LCBmaWVsZE5hbWUsIGluZGV4UmVnLCB0YWdSZWcsIHBheWxvYWRS
ZWcpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4UmVnLCA4XSwgcGF5bG9hZFJl
ZwogZW5kCiAKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVn
aXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudChzaXpl
LCBpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIHNpemUoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXhOYXJyb3csIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4V2lkZTE2LCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleFdpZGUzMiwgbWFjcm8gKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KQor
ICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0s
IHBheWxvYWQKKyAgICAgICAgc3VicCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgaW5kZXgK
KyAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgICAg
IGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgZW5k
KQorZW5kCisKICMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVn
aXN0ZXJzLiBJbmRleCBpcyBub3QKICMgY2hhbmdlZC4KIG1hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgaW5kZXgsIHRhZywgcGF5bG9hZCkKQEAgLTE3MTAsMTIgKzE3MjIsMTAgQEAg
dW5kZWZpbmVkT3JOdWxsSnVtcE9wKGpudW5kZWZpbmVkX29yX251bGwsIE9wSm51bmRlZmluZWRP
ck51bGwsCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0ciwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fdmFs
dWUsIHQwKQotICAgIGdldHUoc2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNpYWxQb2ludGVyLCB0MSkK
LSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QyXSwgdDIKKyAgICBnZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisgICAgbG9h
ZENvbnN0YW50KHNpemUsIHQxLCB0MywgdDIpCiAgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6
Om1fc3BlY2lhbFBvaW50ZXJzW3QyLCB0MSwgNF0sIHQxCi0gICAgYnBlcSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisgICAgYnBlcSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCiAub3BKbmVxUHRy
QnJhbmNoOgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BKbmVxUHRyOjpN
ZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDA0NDNmMGNmZThiMzcyN2Vj
OTRiZDRkNTg5NzA5NjEwYjQyOWM4NmEuLjU1ODhlNWI4MzQ1MDYyYmNjN2ZhZDJkZmQzOTRiNjg1
ODY0ODhiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC00NjUsNiArNDY1LDMwIEBAIG1hY3JvIGxvYWRWYXJp
YWJsZShnZXQsIGZpZWxkTmFtZSwgdmFsdWVSZWcpCiAgICAgbG9hZHEgW2NmciwgdmFsdWVSZWcs
IDhdLCB2YWx1ZVJlZwogZW5kCiAKKyMgSW5kZXggYW5kIHZhbHVlIG11c3QgYmUgZGlmZmVyZW50
IHJlZ2lzdGVycy4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudChz
aXplLCBpbmRleCwgdmFsdWUpCisgICAgbWFjcm8gbG9hZE5hcnJvdygpCisgICAgICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB2YWx1ZQorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3Rh
bnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdmFsdWVdLCB2YWx1ZQorICAgICAgICBs
b2FkcSAtKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4TmFycm93ICogOClbdmFsdWUsIGluZGV4
LCA4XSwgdmFsdWUKKyAgICBlbmQKKworICAgIG1hY3JvIGxvYWRXaWRlMTYoKQorICAgICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Nv
bnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3ZhbHVlXSwgdmFsdWUKKyAgICAg
ICAgbG9hZHEgLShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleFdpZGUxNiAqIDgpW3ZhbHVlLCBp
bmRleCwgOF0sIHZhbHVlCisgICAgZW5kCisKKyAgICBtYWNybyBsb2FkV2lkZTMyKCkKKyAgICAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHZhbHVlCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6
bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt2YWx1ZV0sIHZhbHVlCisg
ICAgICAgIHN1YnAgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhXaWRlMzIsIGluZGV4CisgICAg
ICAgIGxvYWRxIFt2YWx1ZSwgaW5kZXgsIDhdLCB2YWx1ZQorICAgIGVuZAorCisgICAgc2l6ZShs
b2FkTmFycm93LCBsb2FkV2lkZTE2LCBsb2FkV2lkZTMyLCBtYWNybyAobG9hZCkgbG9hZCgpIGVu
ZCkKK2VuZAorCiAjIEluZGV4IGFuZCB2YWx1ZSBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMu
IEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNp
emUsIGluZGV4LCB2YWx1ZSkKICAgICBtYWNybyBsb2FkTmFycm93KCkKQEAgLTE4MTYsMTEgKzE4
NDAsOSBAQCB1bmRlZmluZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVu
ZGVmaW5lZE9yTnVsbCwKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVx
UHRyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBn
ZXQobV92YWx1ZSwgdDApCi0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50
ZXIsIHQxKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3Nw
ZWNpYWxQb2ludGVyc1t0MiwgdDEsIFB0clNpemVdLCB0MQotICAgIGJwbmVxIHQxLCBbY2ZyLCB0
MCwgOF0sIC5vcEpuZXFQdHJUYXJnZXQKKyAgICBnZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisg
ICAgbG9hZENvbnN0YW50KHNpemUsIHQxLCB0MikKKyAgICBicG5lcSB0MiwgW2NmciwgdDAsIDhd
LCAub3BKbmVxUHRyVGFyZ2V0CiAgICAgZGlzcGF0Y2goKQogCiAub3BKbmVxUHRyVGFyZ2V0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBjYWYwMzA4Mjky
MWQxMjk1YTA0MjhkYjBjYmUwNDEyYzNhY2YwYzk5Li5jYzU5N2Y1YjQ0YjllNzE3OWY1ZGU1NWIw
ZWVkMmJmODY5MDVlZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaApAQCAtMjAwLDggKzIwMCw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICAgICAg
dXNlc0FyZ3VtZW50cygpOwogCiAgICAgICAgIGlmIChpZGVudC5pc1N5bWJvbCgpKSB7Ci0gICAg
ICAgICAgICBpZiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVyVHlwZSBlbWl0dGVyID0g
bV92bS5ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KCkubG9va3VwKGlkZW50KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUo
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpDb25zdGFudCwgbG9jYXRpb24sIGVtaXR0ZXIs
IGlkZW50LCBudWxscHRyLCBzdGFydCwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBhdXRvIGVu
dHJ5ID0gbV92bS5ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KCkubG9va3VwKGlkZW50KTsKKyAg
ICAgICAgICAgIGlmIChlbnRyeSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBl
OjpDb25zdGFudCwgbG9jYXRpb24sIGVudHJ5LnZhbHVlKCksIGlkZW50LCBudWxscHRyLCBzdGFy
dCwgc3RhcnQsIGVuZCk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0KTsKQEAgLTEzODQsOCAr
MTM4NSw4IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgaWYgKGZ1bmMtPmlzQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKCkpIHsKICAgICAgICAgQVNTRVJUKCFpc09wdGlvbmFsQ2FsbCk7CiAg
ICAgICAgIEJ5dGVjb2RlSW50cmluc2ljTm9kZSogaW50cmluc2ljID0gc3RhdGljX2Nhc3Q8Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlKj4oZnVuYyk7Ci0gICAgICAgIGlmIChpbnRyaW5zaWMtPnR5cGUo
KSA9PSBCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50KQotICAgICAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVtaXR0
ZXIoKSwgaW50cmluc2ljLT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCk7CisgICAgICAgIGlmIChpbnRyaW5zaWMtPnR5cGUoKSA9PSBCeXRlY29kZUludHJp
bnNpY05vZGU6OlR5cGU6OkNvbnN0YW50ICYmIGludHJpbnNpYy0+ZW50cnkoKS50eXBlKCkgPT0g
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcikKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUlu
dHJpbnNpY05vZGU6OlR5cGU6OkZ1bmN0aW9uLCBsb2NhdGlvbiwgaW50cmluc2ljLT5lbnRyeSgp
LCBpbnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kKTsKICAgICB9CiAKICAgICBpZiAoZnVuYy0+aXNPcHRpb25hbENoYWluKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggNzU4
OWQ3YzkxZTg5NWViMmQ5OTYzM2RiZjViNGFhNWQyNmFlYjg0ZS4uOWM3YjlhMjgyMDczYzU3NmE2
MzQ5ZTRkNjljMjIwYmE1Y2NkZWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTQxMywxMCArNDEzLDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpC
eXRlY29kZUludHJpbnNpY05vZGUoVHlwZSB0eXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFbWl0dGVyVHlwZSBlbWl0dGVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJn
dW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQor
ICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZShU
eXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6OkVudHJ5IGVudHJ5LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1l
bnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2VtaXR0
ZXIoZW1pdHRlcikKKyAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgICAgICwgbV90eXBlKHR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggYWE0NDg2NjRkMWQ0ODE0MGQxMGE0
NTkwYzA2N2Q1MDFhOGI2Mjg3Zi4uZmFkNTMyOGEyYjk0NDM3ZGIyZGFlN2YxYzg2YjI4OWMxYTM0
MWZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtOTQ0LDE0ICs5NDQs
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBGdW5jdGlvbgogICAgICAgICB9Owog
Ci0gICAgICAgIHR5cGVkZWYgUmVnaXN0ZXJJRCogKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6KiBF
bWl0dGVyVHlwZSkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik7Ci0KLSAgICAgICAg
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEVtaXR0
ZXJUeXBlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEJ5dGVjb2RlSW50cmluc2ljTm9kZShU
eXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpF
bnRyeSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgICAgIGJvb2wgaXNCeXRlY29kZUludHJpbnNp
Y05vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAgIEVtaXR0ZXJUeXBlIGVtaXR0
ZXIoKSBjb25zdCB7IHJldHVybiBtX2VtaXR0ZXI7IH0KKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6RW50cnkgZW50cnkoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5OyB9CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
OyB9CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OUyhu
YW1lKSBSZWdpc3RlcklEKiBlbWl0X2ludHJpbnNpY18jI25hbWUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKik7CkBAIC05NjQsNyArOTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlw
ZSA9PSBUeXBlOjpGdW5jdGlvbjsgfQogCi0gICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsK
KyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnkgbV9lbnRyeTsKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9h
cmdzOwogICAgICAgICBUeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA2MDM1YTQ5MDkyNmM0YWU1ZmMzMzI3YWZmZWRmNDI3
NmI5M2YwNjU3Li5lYjlkOTkzYjI1MTRjNjcyOWUxMDJmNjVlNzIwYTcyOGFmMmMyNDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0xODAx
LDcgKzE4MDEsNiBAQCBjbGFzcyBDYWNoZWRDb2RlQmxvY2sgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PENvZGVCbG9ja1R5cGU+IHsKIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdGhpc1Jl
Z2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7Ci0gICAgc3RkOjph
cnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29uc3RhbnRz
OwogCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1N0cmlj
dE1vZGUgOiAxOwpAQCAtMjAzOSw5ICsyMDM4LDYgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENv
ZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgog
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNo
ZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVbmxp
bmtlZENvZGVCbG9jayYgY29kZUJsb2NrKSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9
IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaS0tOykKLSAgICAgICAgY29kZUJsb2NrLm1fbGlua1Rp
bWVDb25zdGFudHNbaV0gPSBtX2xpbmtUaW1lQ29uc3RhbnRzW2ldOwotCiAgICAgbV9jb25zdGFu
dFJlZ2lzdGVycy5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fY29uc3RhbnRSZWdpc3RlcnMs
ICZjb2RlQmxvY2spOwogICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmRl
Y29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRp
b24pOwogICAgIG1fZXhwcmVzc2lvbkluZm8uZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2V4
cHJlc3Npb25JbmZvKTsKQEAgLTIyMDcsOSArMjIwMyw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBD
YWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zCiAgICAgbV9jb2RlR2VuZXJhdGlvbk1vZGUgPSBjb2RlQmxvY2subV9jb2RlR2VuZXJhdGlv
bk1vZGU7CiAgICAgbV9jb2RlVHlwZSA9IGNvZGVCbG9jay5tX2NvZGVUeXBlOwogCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gTGlua1RpbWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW2ldID0gY29kZUJsb2NrLm1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0K
ICAgICBtX21ldGFkYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9tZXRhZGF0YS5nZXQo
KSk7CiAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fcmFyZURhdGEu
Z2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5k
ZXggNDdmY2QzMzhiNDA1OTgzNmNkMzY4MWU4NGUwMWZhYjc0MzM5NzY3NC4uMjU5OWUyYzU2Mjkx
MGY5ODE0NmM5MThiNTIyNDljODU1YmQyYTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMTI5LDcgKzEyOSw4IEBAIGJvb2wgaXNJbnQ1Mihkb3Vi
bGUpOwogZW51bSBjbGFzcyBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gOiB1aW50OF90IHsKICAg
ICBPdGhlciwKICAgICBJbnRlZ2VyLAotICAgIERvdWJsZQorICAgIERvdWJsZSwKKyAgICBMaW5r
VGltZUNvbnN0YW50LAogfTsKIAogY2xhc3MgSlNWYWx1ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzY1YjBiMzcwZDAyNTc1
ZTAwYjFmNTA0OTA5OTEwN2U3NzBlNzI4ZC4uYjg2MmI0ZDhjZTg5NzA0MDgyYzFmNTJmNmM2NjM1
MzJkOGIzZmNiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtMTM1LDYgKzEzNSw3IEBACiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUu
aCIKICNpbmNsdWRlICJMYXp5Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGF6
eVByb3BlcnR5SW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNs
dWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1h
cEl0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC00MTEsNiArNDEyLDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZUpvYihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIDApCiAgICAgLCBtX3ZtKCZ2
bSkKKyAgICAsIG1fbGlua1RpbWVDb25zdGFudHMobnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cykK
ICAgICAsIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdh
dGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCiAgICAgLCBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2lu
dChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKICAgICAsIG1fdmFySW5q
ZWN0aW9uV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkK
QEAgLTUyMiw4ICs1MjQsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICBKU0Z1bmN0aW9uKiBo
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICBtX2Z1bmN0aW9uUHJvdG90
eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXModm0sIHRoaXMsICZjYWxsRnVuY3Rpb24sICZhcHBs
eUZ1bmN0aW9uLCAmaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7Ci0gICAgbV9jYWxsRnVuY3Rp
b24uc2V0KHZtLCB0aGlzLCBjYWxsRnVuY3Rpb24pOwotICAgIG1fYXBwbHlGdW5jdGlvbi5zZXQo
dm0sIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwogICAgIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rp
b24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4m
IGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygp
LCBhcnJheVByb3RvRnVuY1RvU3RyaW5nLCBOb0ludHJpbnNpYykpOwpAQCAtNzIzLDcgKzcyMyw4
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZ2VuZXJhdG9yUHJv
dG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMs
IEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fYXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBBc3luY0dlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBBc3luY0dl
bmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2FzeW5jSXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAKLSAgICBtX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJvbWlzZVByb3RvdHlwZVRoZW5D
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRQcm9taXNl
VGhlbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJvbWlzZVByb3RvdHlwZVRoZW5Db2RlR2Vu
ZXJhdG9yKHZtKSwgdGhpcyk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZGVmYXVsdFByb21pc2VUaGVuKV0uc2V0KHZtLCB0
aGlzLCBkZWZhdWx0UHJvbWlzZVRoZW4pOwogCiAjZGVmaW5lIENSRUFURV9QUk9UT1RZUEVfRk9S
X1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNl
VHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgaWYgKGZlYXR1cmVGbGFn
KSB7IFwKICAgICAgICAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS5zZXQodm0sIHRoaXMs
IGNhcGl0YWxOYW1lIyNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgY2FwaXRhbE5hbWUjI1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtXyAjIyBwcm90b3R5cGVCYXNlICMj
IFByb3RvdHlwZS5nZXQoKSkpKTsgXApAQCAtNzUwLDE4ICs3NTEsMjEgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChWTSYgdm0pCiAKICAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29u
c3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iu
c2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KV0uc2V0KHZt
LCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAKICAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwg
Z2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKLSAgICBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24u
c2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAog
ICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpOwogICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGZ1bmN0
aW9uQ29uc3RydWN0b3IpOwogCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1Y3Rv
ciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9h
cnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKICAgICBt
X2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgCiAgICAgUmVn
RXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gUmVnRXhwQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCBtX3NwZWNp
ZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0KHZtLCB0
aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UmVnRXhwKV0uc2V0KHZtLCB0aGlzLCBy
ZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgbV9yZWdFeHBHbG9iYWxEYXRhLmNhY2hlZFJlc3VsdCgp
LnJlY29yZCh2bSwgdGhpcywgbnVsbHB0ciwganNFbXB0eVN0cmluZyh2bSksIE1hdGNoUmVzdWx0
KDAsIDApKTsKICAgICAKICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKQEAgLTc4Myw2
ICs3ODcsOCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0
cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgbV9wcm9taXNlQ29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1faW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
cik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yKTsKICAgICAKICAgICBtX2V2YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0ZXIoCiAg
ICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CkBAIC04
NDIsOSArODQ4LDYgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29uc3RydWN0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVn
RXhwLCByZWdFeHBDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk9iamVjdFByaXZhdGVOYW1lKCksIG9i
amVjdENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLkFycmF5UHJpdmF0ZU5hbWUoKSwgYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIp
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlNo
YXJlZEFycmF5QnVmZmVyLCBzaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJBdG9taWNz
IiksIGF0b21pY3NPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKQEAgLTkxNywxODAgKzkyMCwyMjYgQEAgY2FwaXRhbE5hbWUgIyMgQ29u
c3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRh
bE5hbWUKICAgICBpZiAoT3B0aW9uczo6ZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIoKSkKICAg
ICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkxv
YWRlciwgbW9kdWxlTG9hZGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKIAotICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmll
ci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwotICAgIEpTRnVuY3Rpb24qIGJ1aWx0
aW5EZXNjcmliZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlO
YW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJl
KTsKLQotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHJ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIFRydW5jSW50cmlu
c2ljKTsKLQotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jUHJvcGVydHlJc0VudW1lcmFibGUg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jUHJv
cGVydHlJc0VudW1lcmFibGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jT3duS2V5cyA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNPd25L
ZXlzKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUp
OwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jTWFrZVR5cGVFcnJvciA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKTsK
LSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGggPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5j
TGVuZ3RoKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlHZXRPcmlnaW5h
bENvbnN0cnVjdG9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwg
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3RydWN0b3IpOwotICAgIEpT
RnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheVNvcnQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk7Ci0g
ICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3ID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lz
VHlwZWRBcnJheVZpZXcsIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rp
b24qIHByaXZhdGVGdW5jVHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFy
cmF5Q3JlYXRlKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQm91bmRGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGlzQm91bmRGdW5jdGlv
bik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNIYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBoYXNJbnN0YW5jZUJv
dW5kRnVuY3Rpb24pOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW5zdGFuY2VPZiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG9iamVjdFByaXZhdGVGdW5j
SW5zdGFuY2VPZik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dl
dFRpbWUpOwotI2lmIEVOQUJMRShJTlRMKQotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jRGF0
ZVRpbWVGb3JtYXQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpOwotI2VuZGlmCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0
ZUZ1bmNJc0FycmF5U2xvdyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5n
KCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KTsKLSAgICBKU0Z1bmN0
aW9uKiBwcml2YXRlRnVuY0NvbmNhdE1lbWNweSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweSk7Ci0gICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkp
OwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVh
ZCwgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVu
Y01hcEJ1Y2tldE5leHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygp
LCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIEpTTWFwQnVja2V0TmV4dEludHJpbnNpYyk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleSwg
SlNNYXBCdWNrZXRLZXlJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jTWFw
QnVja2V0VmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBt
YXBQcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlLCBKU01hcEJ1Y2tldFZhbHVlSW50cmluc2ljKTsK
LSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQs
IEpTU2V0QnVja2V0SGVhZEludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNT
ZXRCdWNrZXROZXh0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwg
c2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBKU1NldEJ1Y2tldE5leHRJbnRyaW5zaWMpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0S2V5ID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXksIEpT
U2V0QnVja2V0S2V5SW50cmluc2ljKTsKLQogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9G
bGFnc0dldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCks
IHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9GbGFnc0dldHRlcildLnNldCh2bSwgdGhpcywgcmVn
RXhwUHJvdG9GbGFnc0dldHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2Jh
bEdldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZt
LnByb3BlcnR5TmFtZXMtPmdsb2JhbCk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOwotICAgIG1fcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIuc2V0KHZtLCB0aGlzLCByZWdFeHBQ
cm90b0dsb2JhbEdldHRlcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpXS5zZXQo
dm0sIHRoaXMsIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJl
Z0V4cFByb3RvSWdub3JlQ2FzZUdldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQ
cm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZUNhc2UpOwogICAgIGNhdGNo
U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0lnbm9yZUNhc2VH
ZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlcik7CiAgICAg
R2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b011bHRpbGluZUdldHRlciA9IGdldEdldHRlckJ5SWQo
dGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm11bHRpbGlu
ZSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFBy
b3RvTXVsdGlsaW5lR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b011bHRpbGluZUdl
dHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1NvdXJjZUdldHRlciA9IGdldEdl
dHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMt
PnNvdXJjZSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cFByb3RvU291cmNlR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1NvdXJjZUdl
dHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1N0aWNreUdldHRlciA9IGdldEdl
dHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMt
PnN0aWNreSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cFByb3RvU3RpY2t5R2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1N0aWNreUdl
dHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIgPSBnZXRH
ZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVz
LT51bmljb2RlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgbV9y
ZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIuc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1VuaWNvZGVH
ZXR0ZXIpOwotICAgIEpTT2JqZWN0KiBidWlsdGluUmVnRXhwRXhlYyA9IGFzT2JqZWN0KG1fcmVn
RXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWMpLmFzQ2Vs
bCgpKTsKLSAgICBtX3JlZ0V4cFByb3RvRXhlYy5zZXQodm0sIHRoaXMsIGJ1aWx0aW5SZWdFeHBF
eGVjKTsKLSAgICBKU09iamVjdCogcmVnRXhwU3ltYm9sUmVwbGFjZSA9IGFzT2JqZWN0KG1fcmVn
RXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1i
b2wpLmFzQ2VsbCgpKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpXS5zZXQodm0s
IHRoaXMsIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcik7CisgICAgSlNGdW5jdGlvbiogcmVnRXhw
U3ltYm9sUmVwbGFjZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9yZWdFeHBQcm90b3R5cGUtPmdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJvbCkpOwogICAgIG1fcmVn
RXhwUHJvdG9TeW1ib2xSZXBsYWNlLnNldCh2bSwgdGhpcywgcmVnRXhwU3ltYm9sUmVwbGFjZSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6cmVnRXhwQnVpbHRpbkV4ZWMpXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4obV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
ZXhlYykpKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlKV0uc2V0KHZtLCB0
aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
ZXBsYWNlU3ltYm9sKS5hc0NlbGwoKSk7CisKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTZXQpXS5zZXQodm0sIHRoaXMsIHNl
dENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0FycmF5KV0uc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0
cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLmFzQ2VsbCgp
KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpjYWxsRnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlvbik7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6YXBwbHlGdW5jdGlvbildLnNldCh2bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CisKKyNk
ZWZpbmUgSU5JVF9QUklWQVRFX0dMT0JBTChmdW5jTmFtZSwgY29kZSkgXAorICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmZ1bmNO
YW1lKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7IFwK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsgXAorICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgZ2xvYmFs
T2JqZWN0KSk7IFwKKyAgICAgICAgfSk7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElP
Tl9QUklWQVRFX0dMT0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCisjdW5kZWYgSU5JVF9Q
UklWQVRFX0dMT0JBTAogCi0jZGVmaW5lIENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTih2
YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgSlNGdW5jdGlvbiogdmFyTmFtZSAjIyBQcml2YXRlRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcih2bSks
IHRoaXMpOwotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9HTE9CQUxf
TkFNRShDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04pCi0jdW5kZWYgQ1JFQVRFX1BSSVZB
VEVfR0xPQkFMX0ZVTkNUSU9OCi0KKyAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZW0gbGF6
aWx5LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM3
OTUKICAgICBKU09iamVjdCogYXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IEFycmF5SXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgYXJy
YXlJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7CisgICAganND
YXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpBcnJheUl0
ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJh
eUl0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBhc3luY0Zyb21TeW5jSXRlcmF0
b3JQcm90b3R5cGUgPSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
dGhpcywgQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBhc3luY0Zyb21TeW5jSXRl
cmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7CisgICAg
anNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpBc3lu
Y0Zyb21TeW5jSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCog
bWFwSXRlcmF0b3JQcm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0
aGlzLCBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0
ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgbWFwSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZh
dGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1h
cEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0
YW50KExpbmtUaW1lQ29uc3RhbnQ6Ok1hcEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09i
amVjdCogcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgPSBSZWdFeHBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7
Ci0gICAgcmVnRXhwU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExp
bmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cFN0cmluZ0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSk7
CiAKICAgICBKU09iamVjdCogc2V0SXRlcmF0b3JQcm90b3R5cGUgPSBTZXRJdGVyYXRvclByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgc2V0SXRlcmF0
b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHNldEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmpl
Y3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldEl0ZXJhdG9yKSktPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVyYXRvclByb3Rv
dHlwZSk7CiAKLSAgICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBuZXdQcm9taXNlQ2FwYWJpbGl0eVByaXZhdGVGdW5jdGlvbik7Ci0gICAgbV9yZXNvbHZlUHJv
bWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVzb2x2ZVByb21pc2VQcml2YXRlRnVuY3Rpb24p
OwotICAgIG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVqZWN0UHJvbWlz
ZVByaXZhdGVGdW5jdGlvbik7CisgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4KKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpt
YXBCdWNrZXRIZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2
YXRlRnVuY01hcEJ1Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOworICAgICAg
ICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjptYXBCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIEpTTWFwQnVja2V0TmV4dEludHJp
bnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRLZXkpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBKU01hcEJ1
Y2tldEtleUludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRWYWx1ZSld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNr
ZXRWYWx1ZSwgSlNNYXBCdWNrZXRWYWx1ZUludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpzZXRCdWNrZXRIZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBzZXRQ
cml2YXRlRnVuY1NldEJ1Y2tldEhlYWQsIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYykpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAs
IFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVja2V0TmV4dElu
dHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXRLZXkpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBKU1Nl
dEJ1Y2tldEtleUludHJpbnNpYykpOworICAgICAgICB9KTsKKworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydE1vZHVs
ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0ltcG9ydE1v
ZHVsZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZSldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNFbnVtZXJh
YmxlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om93bktleXMpXS5pbml0TGF0ZXIoW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVy
KSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNPd25LZXlzKSk7CisgICAgICAgIH0pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OmVucXVldWVKb2IpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgImVucXVldWVKb2IiX3MsIGVu
cXVldWVKb2IpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFrZVR5cGVFcnJvcildLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpKTsKKyAg
ICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheUxlbmd0aCldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCkpOworICAgICAg
ICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50Ojp0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcildLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9y
aWdpbmFsQ29uc3RydWN0b3IpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheVNvcnQp
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTb3J0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzVHlwZWRBcnJheVZpZXcpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNJ
c1R5cGVkQXJyYXlWaWV3LCBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKSk7CisgICAgICAgIH0p
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OnR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
Omhhc0luc3RhbmNlQm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJp
bmcoKSwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omlu
c3RhbmNlT2YpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG9iamVjdFByaXZh
dGVGdW5jSW5zdGFuY2VPZikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluTG9nKV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZykpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluRGVzY3JpYmUpXS5pbml0TGF0ZXIoW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVy
KSwgMSwgU3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6dHJ1bmMpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hdGhQ
cm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVw
ZWF0Q2hhcmFjdGVyKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBzdHJpbmdQ
cm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXJyYXlTcGVj
aWVzQ3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0
KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBhcnJheVByb3Rv
RnVuY1NwZWNpZXNDcmVhdGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNBcnJheVNsb3cpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRl
RnVuY0lzQXJyYXlTbG93KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNvbmNhdE1lbWNweSldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29u
Y2F0TWVtY3B5KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGVuZE1lbWNweSldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVt
Y3B5KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcild
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQcm9taXNl
UmVqZWN0aW9uVHJhY2tlcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0aGlzVGltZVZhbHVlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAs
IFN0cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0VGltZSwgRGF0ZVByb3RvdHlwZUdldFRpbWVJbnRy
aW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNDb25zdHJ1Y3RvcildLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMp
KTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6cmVnRXhwQ3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBlc1Nw
ZWNSZWdFeHBDcmVhdGUsIE5vSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzUmVn
RXhwKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBlc1NwZWNJc1JlZ0V4cCwg
Tm9JbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwTWF0Y2hGYXN0KV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3Qs
IFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBT
ZWFyY2hGYXN0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0
KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90
b0Z1bmNTZWFyY2hGYXN0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNwbGl0RmFzdCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRG
YXN0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFRlc3RGYXN0KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVnRXhwVGVz
dEZhc3RJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBTdHJpbmcucHJvdG90eXBl
IGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6c3RyaW5nSW5jbHVkZXNJbnRlcm5hbCldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpKTsKKyAg
ICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6c3RyaW5nU3BsaXRGYXN0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpKTsKKyAgICAgICAgfSk7Cisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6c3RyaW5nU3Vic3RySW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3Ry
aW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCkpOworICAgICAgICB9KTsKKworICAg
IC8vIEZ1bmN0aW9uIHByb3RvdHlwZSBoZWxwZXJzLgorICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VCb3VuZEZ1bmN0aW9u
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDUsIFN0cmluZygpLCBtYWtlQm91bmRGdW5jdGlvbikp
OworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjpoYXNPd25MZW5ndGhQcm9wZXJ0eSldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAxLCBTdHJpbmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpKTsKKyAgICAgICAg
fSk7CiAKLSAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewotI2RlZmlu
ZSBJTklUX1BSSVZBVEVfR0xPQkFMKHZhck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY05hbWUgIyMgUHJp
dmF0ZU5hbWUoKSwgdmFyTmFtZSAjIyBQcml2YXRlRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9Q
UklWQVRFX0dMT0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCi0jdW5kZWYgSU5JVF9QUklW
QVRFX0dMT0JBTAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1iZXIo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgp
LCBwcml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNPd25LZXlz
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2
YXRlTmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNNYWtlVHlwZUVycm9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS50eXBlZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFy
cmF5TGVuZ3RoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFy
cmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRB
cnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnR5cGVkQXJyYXlTb3J0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFy
cmF5U29ydCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNUeXBlZEFy
cmF5Vmlld1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldywgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVN1YmFycmF5Q3JlYXRl
UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQm91bmRGdW5jdGlvblByaXZhdGVO
YW1lKCksIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5oYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaW5zdGFuY2VPZlByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSW5z
dGFuY2VPZiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQnVpbHRpbkxv
Z1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5Mb2csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLkJ1aWx0aW5EZXNjcmliZVByaXZhdGVOYW1lKCksIGJ1aWx0aW5EZXNjcmliZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUmVnRXhwUHJpdmF0ZU5hbWUo
KSwgcmVnRXhwQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnRydW5jUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUcnVuYywgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCksIHByb21pc2VDb25z
dHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW50ZXJuYWxQ
cm9taXNlUHJpdmF0ZU5hbWUoKSwgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmF1bHRQcm9taXNlVGhlblByaXZhdGVO
YW1lKCksIHByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnJlcGVhdENoYXJhY3RlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENo
YXJhY3RlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFycmF5U3Bl
Y2llc0NyZWF0ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwg
U3RyaW5nKCksIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVj
dG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0FycmF5U2xvd1ByaXZhdGVOYW1lKCksIHBy
aXZhdGVGdW5jSXNBcnJheVNsb3csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmNvbmNhdE1lbWNweVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5LCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBlbmRNZW1jcHlQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5ob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXJQcml2YXRlTmFtZSgp
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9z
dFByb21pc2VSZWplY3Rpb25UcmFja2VyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5TZXRQcml2
YXRlTmFtZSgpLCBzZXRDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudGhpc1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhpc1RpbWVW
YWx1ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmIEVOQUJMRShJTlRM
KQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZGF0ZVRpbWVGb3JtYXRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0RhdGVUaW1lRm9y
bWF0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZGF0ZVRpbWVG
b3JtYXQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRl
VGltZUZvcm1hdCkpOworICAgICAgICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKLQotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
aXNDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MSwgU3RyaW5nKCksIGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0ZsYWdzR2V0dGVyUHJp
dmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9GbGFnc0dldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJQcml2YXRlTmFtZSgpLCBy
ZWdFeHBQcm90b0dsb2JhbEdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJv
dG9JZ25vcmVDYXNlR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5yZWdFeHBQcm90b011bHRpbGluZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvTXVs
dGlsaW5lR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdF
eHBQcm90b1NvdXJjZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvU291cmNlR2V0dGVy
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1N0aWNr
eUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJQcml2
YXRlTmFtZSgpLCByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5yZWdFeHBCdWlsdGluRXhlY1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5SZWdFeHBFeGVjLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBDcmVhdGVQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBlc1NwZWNSZWdF
eHBDcmVhdGUsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaXNSZWdFeHBQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDEsIFN0cmluZygpLCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBNYXRjaEZhc3RQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNN
YXRjaEZhc3QsIFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFNlYXJjaEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTZWFyY2hG
YXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU3BsaXRG
YXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmco
KSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZVByaXZhdGVOYW1lKCksIG1f
cmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VT
eW1ib2wpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBUZXN0
RmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5n
KCksIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0RmFzdEludHJpbnNpYyksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBTdHJpbmcucHJv
dG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdJbmNsdWRlc0ludGVybmFsUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0lu
Y2x1ZGVzSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5z
dHJpbmdTcGxpdEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdTdWJzdHJJbnRlcm5hbFByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdT
dWJzdHJJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAg
ICAgICAvLyBGdW5jdGlvbiBwcm90b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VCb3VuZEZ1bmN0aW9u
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA1LCBTdHJpbmcoKSwg
bWFrZUJvdW5kRnVuY3Rpb24pLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5oYXNPd25MZW5ndGhQcm9wZXJ0eVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMSwgU3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMu
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5tYXBCdWNrZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFk
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXROZXh0UHJp
dmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y01hcEJ1Y2tldEtleSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFw
QnVja2V0VmFsdWVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRIZWFkUHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5zZXRCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRC
dWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNr
ZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgRU5BQkxF
KFdFQkFTU0VNQkxZX1NUUkVBTUlOR19BUEkpCi0gICAgICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVh
bWluZyBBUEkKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1i
bHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS53ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3Nl
bWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCisgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQorICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ondl
YkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwp
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5SW5zdGFudGlh
dGVTdHJlYW1pbmdJbnRlcm5hbCkpOworICAgICAgICB9KTsKICNlbmRpZgorCisgICAgR2xvYmFs
UHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZp
bmVkKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5hc3NlcnRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDEsIFN0cmluZygpLCBhc3NlcnRDYWxsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAogI2VuZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIAotICAgIG1fc3BlY2lh
bFBvaW50ZXJzW1NwZWNpYWw6OkNhbGxGdW5jdGlvbl0gPSBtX2NhbGxGdW5jdGlvbi5nZXQoKTsK
LSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1fYXBwbHlG
dW5jdGlvbi5nZXQoKTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25z
dHJ1Y3Rvcl0gPSBvYmplY3RDb25zdHJ1Y3RvcjsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVj
aWFsOjpBcnJheUNvbnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0KLSAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJv
d1R5cGVFcnJvckZ1bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7Ci0K
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpCiAgICAgICAgIGV4cG9z
ZURvbGxhclZNKHZtKTsKIApAQCAtMTcxMSwyMiArMTc2MCwxNiBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAK
ICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAg
dGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faXRl
cmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwotICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbik7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWplY3RQcm9taXNlRnVuY3Rpb24pOwotICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9u
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bWJlclByb3RvVG9TdHJpbmdG
dW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3Rv
SGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVF
cnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRl
clNldHRlcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIudmlzaXQodmlzaXRvcik7
CiAKQEAgLTE3OTQsNiArMTgzNyw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5t
X3Byb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworCisgICAgZm9yIChh
dXRvJiBwcm9wZXJ0eSA6IHRoaXNPYmplY3QtPm1fbGlua1RpbWVDb25zdGFudHMpCisgICAgICAg
IHByb3BlcnR5LnZpc2l0KHZpc2l0b3IpOwogICAgIAogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlf
QlVGRkVSKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZm
ZXJQcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggODkyNmFhYWRmZDY4ZDFhZjEyOTI4MDRlMmQwMzQyMmQ3ZmY0NGY2NS4u
MzE1ZGYxZDUzN2ZmN2YzNmI4MTc5MTljOGZkNTljM2Y0YzRhNmRmYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00Miw3ICs0Miw2IEBA
CiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHBHbG9iYWxEYXRhLmgi
CiAjaW5jbHVkZSAiUnVudGltZUZsYWdzLmgiCi0jaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIK
ICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJWTS5oIgpAQCAtMTE5LDYgKzExOCw3IEBAIGNsYXNzIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBzdHJ1Y3Qg
QWN0aXZhdGlvblN0YWNrTm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CitlbnVtIGNsYXNzIExpbmtU
aW1lQ29uc3RhbnQgOiBpbnQzMl90OwogCiAjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKIGNs
YXNzIFdyYXBwZXJNYXA7CkBAIC0yOTcsMjYgKzI5NywxNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VJbnRGdW5jdGlvbjsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VGbG9hdEZ1bmN0aW9u
OwogCi0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwotICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVy
PEpTRnVuY3Rpb24+IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVu
Y3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb247Ci0g
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlv
bjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9u
OwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3JlamVjdFByb21pc2VGdW5jdGlvbjsK
LSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb247
CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rp
b247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJ
bnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwotICAgIFdyaXRlQmFy
cmllcjxKU09iamVjdD4gbV9yZWdFeHBQcm90b0V4ZWM7CiAgICAgV3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0PiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZTsKLSAgICBXcml0ZUJhcnJpZXI8R2V0dGVy
U2V0dGVyPiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyOwotICAgIFdyaXRlQmFycmllcjxHZXR0
ZXJTZXR0ZXI+IG1fcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyOwogICAgIFdyaXRlQmFycmllcjxH
ZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0
ZXJTZXR0ZXI7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTTW9kdWxlTG9h
ZGVyPiBtX21vZHVsZUxvYWRlcjsKQEAgLTQzMCw4ICs0MjAsNyBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBGT1JfRUFDSF9U
WVBFRF9BUlJBWV9UWVBFKERFQ0xBUkVfVFlQRURfQVJSQVlfVFlQRV9TVFJVQ1RVUkUpCiAjdW5k
ZWYgREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NUUlVDVFVSRQogCi0gICAgSlNDZWxsKiBtX3Nw
ZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVz
ZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCi0gICAgSlNDZWxsKiBtX2xpbmtUaW1lQ29uc3RhbnRz
W0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CisgICAgVmVjdG9yPExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgSlNDZWxsPj4gbV9saW5rVGltZUNvbnN0YW50czsKIAogICAgIFN0cmluZyBtX25h
bWU7CiAKQEAgLTYxNiwyNCArNjA1LDIyIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIHBhcnNlRmxvYXRG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VGbG9hdEZ1bmN0aW9uLmdldCh0aGlzKTsg
fQogCiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFs
RnVuY3Rpb24uZ2V0KHRoaXMpOyB9Ci0gICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBhcHBs
eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAg
SlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVG9TdHJpbmdG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0
KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAg
SlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
dGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9Ci0gICAgSlNGdW5jdGlvbiogbmV3
UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNh
cGFiaWxpdHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIG5ld1Byb21pc2VDYXBh
YmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUmVzb2x2ZUZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLmdldCh0aGlz
KTsgfQotICAgIEpTRnVuY3Rpb24qIHJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVQcm9taXNlRnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBy
ZWplY3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlamVjdFByb21pc2VGdW5j
dGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIHByb21pc2VQcm90b1RoZW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uLmdldCgpOyB9CisgICAg
SlNGdW5jdGlvbiogcmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0OworICAgIEpTRnVuY3Rp
b24qIHJlamVjdFByb21pc2VGdW5jdGlvbigpIGNvbnN0OworICAgIEpTRnVuY3Rpb24qIHByb21p
c2VQcm90b1RoZW5GdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIG9iamVjdFByb3Rv
VmFsdWVPZkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5j
dGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIG51bWJlclByb3RvVG9TdHJpbmdGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldCgpOyB9
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
LmdldCgpOyB9Ci0gICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdFeHBQcm90b0V4ZWMuZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiByZWdF
eHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1N5
bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1ib2xS
ZXBsYWNlLmdldCgpOyB9Ci0gICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2JhbEdldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIuZ2V0KCk7IH0KLSAg
ICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLmdldCgpOyB9CisgICAgR2V0dGVyU2V0dGVyKiBy
ZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0OworICAgIEdldHRlclNldHRlciogcmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVF
cnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigpCiAgICAgewogICAgICAg
ICByZXR1cm4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNl
dHRlci5nZXQoKTsKQEAgLTkxMSwxNiArODk4LDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBsYXp5VHlw
ZWRBcnJheVN0cnVjdHVyZSh0eXBlKS5jb25zdHJ1Y3Rvcih0aGlzKTsKICAgICB9CiAKLSAgICBK
U0NlbGwqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQorICAgIEpT
Q2VsbCogbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHZhbHVlKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgICAg
ICByZXR1cm4gbV9zcGVjaWFsUG9pbnRlcnNbcG9pbnRlcl07Ci0gICAgfQotICAgIEpTQ2VsbCog
anNDZWxsRm9yTGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCi0gICAgewot
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKLSAg
ICAgICAgQVNTRVJUKGluZGV4IDwgTGlua1RpbWVDb25zdGFudENvdW50KTsKLSAgICAgICAgcmV0
dXJuIG1fbGlua1RpbWVDb25zdGFudHNbaW5kZXhdOworICAgICAgICByZXR1cm4gbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpXS5nZXQodGhpcyk7CiAgICAg
fQogCiAgICAgV2F0Y2hwb2ludFNldCogbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQo
KSB7IHJldHVybiBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50LmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5s
aW5lcy5oCmluZGV4IGUwMzY5YmVjYjA2ZjNiOTgyY2ZkOTBhNWRiMjAzOWU2MzNiZDQxMjUuLjNm
MjZkNWNhZmUyYmY3NTYxNGJkMjA3NjdiODQ0MjA0MDJkMDVkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
QXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVk
ZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAyLDYgKzEwMywx
NSBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNHbG9iYWxPYmplY3Q6OmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsbwogICAgIHJldHVybiBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+YXJy
YXlDb25zdHJ1Y3RvcigpLCBuZXdUYXJnZXQsIGFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKIH0KIAoraW5saW5lIEpTRnVuY3Rpb24q
IEpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6OnRocm93VHlwZUVycm9yRnVuY3Rpb24pKTsgfQoraW5saW5lIEpTRnVuY3Rpb24qIEpTR2xv
YmFsT2JqZWN0OjpuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3Rh
bnQ6Om5ld1Byb21pc2VDYXBhYmlsaXR5KSk7IH0KK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2Jh
bE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZXNv
bHZlUHJvbWlzZSkpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6OnJlamVj
dFByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9u
Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWplY3RQcm9taXNlKSk7IH0K
K2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvVGhlbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNv
bnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbikpOyB9CitpbmxpbmUg
SlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cEJ1aWx0aW5FeGVjKSk7IH0KK2lubGluZSBHZXR0ZXJTZXR0
ZXIqIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxHZXR0ZXJTZXR0ZXIqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKSk7IH0KK2lubGluZSBHZXR0ZXJTZXR0
ZXIqIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChMaW5rVGlt
ZUNvbnN0YW50OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpKTsgfQorCiBBTFdBWVNfSU5MSU5F
IFZNJiBnZXRWTShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBn
bG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODZlYmM5MzdmMmY1ODUyMDlhNDY1MTU4M2ZhMGY3
NGY2Y2UzOTlhNi4uMzlmZjI5NjU2MjZjMTk3ZjM0YzU3N2MxNTU2NTI2Yjc5MThjMDkyNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTExLTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW50cm9kdWNlIExpbmtUaW1lQ29uc3RhbnQgbWVj
aGFuaXNtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTM3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGluc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFt
ZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQ6CisKIDIwMTktMTEtMDIgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTjogWyBNYWMgXSBp
bnNwZWN0b3IvZG9tL2dldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZS5odG1sIGlzIGZh
aWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRl
bGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWls
LWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0CmluZGV4IGU4MmE3OTk3NmRj
NmYzZmZjZjhhNWVlODM3Yzg3YWUyODExYTJhODkuLjIxMjVmYjUyOTcxY2VjZWFiN2MwODAzNGYy
ZDUzNmM3YTJhNGI0ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRl
ZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dApAQCAt
MTQsNiArMTQsNiBAQCBDQUxMIFNUQUNLOgogMzogW0ZdIHN0YXJ0QUJDCiAgIHRoaXM6IHVuZGVm
aW5lZAogNDogW1BdIEdsb2JhbCBDb2RlCi0gIHRoaXM6IHRlc3QgLSAKKyAgdGhpczogYyAtIAog
UkVTVU1FRAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382705</attachid>
            <date>2019-11-03 01:49:27 -0800</date>
            <delta_ts>2019-11-03 02:14:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103014926.patch</filename>
            <type>text/plain</type>
            <size>138526</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi4yYmVmNjZkZTk2OTZmY2Rh
ODYwZDVhMjM4ZDk2YzI3NjBhNGEzOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSB1
c2luZyBwcml2YXRlLW5hbWUtdmFyaWFibGVzIG9mIEpTR2xvYmFsT2JqZWN0IGFzIGEgd2F5IHRv
IGFjY2VzcyB0byBjb25zdGFudHMgdGhhdCBhcmUgbWF0ZXJpYWxpemVkIHBlciBKU0dsb2JhbE9i
amVjdC4KKyAgICAgICAgQW5kIHdlIGFsc28gaGF2ZSBzcGVjaWFsLXBvaW50ZXJzIGFuZCBvbGQg
bGluay10aW1lLWNvbnN0YW50cyB0byBhY2Nlc3MgdG8gcGVyIEpTR2xvYmFsT2JqZWN0IGNvbnN0
YW50cy4KKyAgICAgICAgV2UgaGF2ZSBieXRlY29kZSBpbnRyaW5zaWMgY29uc3RhbnRzLCBidXQg
aXQgaXMgb25seSBhdmFpbGFibGUgZm9yIHBlciBWTSB2YWx1ZXMuCisKKyAgICAgICAgSG93ZXZl
ciwgdGhlc2Ugb25lcyBoYXZlIG11bHRpcGxlIHByb2JsZW1zLgorCisgICAgICAgIDEuIHByaXZh
dGUtbmFtZS12YXJpYWJsZXMgaXMgdG9vIGNvc3RseS4gV2UgbmVlZCB0byBoYXZlIGFuIGVudHJ5
IGluIEpTR2xvYmFsT2JqZWN0J3MgdmFyaWFibGUsIHRoaXMgbWFrZXMgU3ltYm9sVGFibGUgb2Yg
SlNHbG9iYWxPYmplY3QgbGFyZ2UuCisgICAgICAgICAgIEl0IGFsc28gcmVxdWlyZXMgV2F0Y2hw
b2ludFNldCB0byBtYWtlIGl0IGNvbnN0YW50LWZvbGQgaW4gREZHLiBBbmQgYWNjZXNzaW5nIHRo
ZXNlIHZhcmlhYmxlcyBmcm9tIGJ1aWx0aW4gSlMgdGFrZXMgb3BfcmVzb2x2ZV9zY29wZSBhbmQg
b3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgIGVubGFyZ2luZyBieXRlY29kZSBhbmQgc2xv
dyBpbiBpbnRlcnByZXRlciBhbmQgYmFzZWxpbmUgY29tcGFyZWQgdG8ganVzdCBnZXR0aW5nIHRo
ZW0gYXMgYSBjb25zdGFudCByZWdpc3Rlci4KKyAgICAgICAgMi4gc3BlY2lhbC1wb2ludGVycyBh
cmUgdGFpbG9yZWQgdG8gb3Bfam5lX3B0ciBvcGNvZGUsIGFuZCBub3QgdXNhYmxlIGluIHRoZSBv
dGhlciBieXRlY29kZSBzaW5jZSB0aGlzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBWaXJ0
dWFsUmVnaXN0ZXIuCisgICAgICAgIDMuIE9sZCBsaW5rLXRpbWUtY29uc3RhbnRzIGltcGxlbWVu
dGF0aW9uIGlzIHB1dHRpbmcgYXJyYXkgb2YgYWxsIGxpbmstdGltZS1jb25zdGFudHMgb24gZWFj
aCBVbmxpbmtlZENvZGVCbG9jaywgZXZlbiBpZiBpdCBpcyBub3QgdXNlZC4gSWYgeW91IGluY3Jl
YXNlICMgb2YKKyAgICAgICAgICAgbGluay10aW1lLWNvbnN0YW50LCBpdCBpbmNyZWFzZXMgc2l6
ZW9mKFVubGlua2VkQ29kZUJsb2NrKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGluay10aW1lLWNvbnN0YW50IG1lY2hhbmlzbSBhbmQgcmVtb3ZlIHRoZSBh
Ym92ZSBvbGQgb25lcyBtb3N0bHkuIChwcml2YXRlLW5hbWUtdmFyaWFibGVzIHN0aWxsIGV4aXN0
cyBmb3IgV2ViQ29yZSBhbmQgQGFzc2VydCkuCisgICAgICAgIFdlIG1hbmFnZSBsaW5rLXRpbWUt
Y29uc3RhbnRzIGluIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnksIGFuZCBlbWl0IEludDMyOkxp
bmtUaW1lQ29uc3RhbnRJRCBjb25zdGFudCB3aGVuIGdlbmVyYXRpbmcgYW4gVW5saW5rZWRDb2Rl
QmxvY2suIExhdGVyLCB0aGlzIGNvbnN0YW50CisgICAgICAgIGlzIGFsdGVybmF0ZWQgdG8gYW4g
YWN0dWFsIHZhbHVlIHdoZW4gd2UgbGluayBVbmxpbmtlZENvZGVCbG9jayB0byBDb2RlQmxvY2sg
d2l0aCBzcGVjaWZpYyBKU0dsb2JhbE9iamVjdC4gcHJpdmF0ZS1uYW1lLXZhcmlhYmxlcyBhY2Nl
c3NlcyBhcmUgbm93IGNvbnZlcnRlZCB0bworICAgICAgICBjb25zdGFudCByZWdpc3RlciBzbyB0
aGF0IGl0IGlzIHZlcnkgZWZmaWNpZW50bHkgYWNjZXNzZWQgYW5kIGl0IHJlZHVjZXMgbWVtb3J5
IHVzZWQgZm9yIFN5bWJvbFRhYmxlIGFuZCBXYXRjaHBvaW50U2V0LiBvcF9qbmVfcHRyIHRha2Vz
IGxpbmstdGltZS1jb25zdGFudAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXJzIGluc3RlYWQgb2Yg
c3BlY2lhbC1wb2ludGVycywgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHNwZWNpYWwtcG9pbnRlcnMg
bWVjaGFuaXNtLiBXZSBhbHNvIHJlcGxhY2Ugb2xkIGxpbmstdGltZS1jb25zdGFudHMgd2l0aCBu
ZXcgb25lLCB3aGljaCByZWR1Y2VzCisgICAgICAgIHNpemVvZihVbmxpbmtlZENvZGVCbG9jayku
CisKKyAgICAgICAgRnVydGhlcm1vcmUsIG5ldyBsaW5rLXRpbWUtY29uc3RhbnQgc3VwcG9ydHMg
bGF6eSBpbml0aWFsaXphdGlvbiBieSB1c2luZyBMYXp5UHJvcGVydHkgaW4gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgYWxsb3dzIHVzIHRvIGxhemlseSBnZW5lcmF0ZSBtYW55IGludGVybmFsIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IGFyZSBwcmV2aW91c2x5IGluaXRpYWxpemVkIGVhZ2VybHkuIFRo
aXMgcmVkdWNlcyAjIG9mIGFsbG9jYXRlZCBKU0Z1bmN0aW9uIHNpZ25pZmljYW50bHkgd2hlbiBp
bml0aWFsaXppbmcgSlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFNjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFk
ZXIucHk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9nbG9iYWxfcHJpdmF0ZV9jb2Rl
X25hbWVfbWFjcm8pOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5q
czoKKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENv
bnN0cnVjdG9yLkludGVybmFsUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlBy
b21pc2UucmVqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKG5ha2VkQ29uc3RydWN0b3IuSW50ZXJu
YWxQcm9taXNlLnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBDb25zdGFudHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkVudHJ5Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6RW50cnk6OmxpbmtUaW1lQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeTo6ZW1pdHRlciBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29k
ZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaC4K
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlu
a2VkQ29kZUJsb2NrOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpyZWdpc3RlckluZGV4Rm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFzeW5jSXRlcmF0b3IpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbXBvcnROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OnByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAg
ICAgICAoSlNDOjpnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjph
c3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJp
bmRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFNwcmVhZEV4cHJlc3Npb25Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRy
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2puZXFfcHRyKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZSk6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6
CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNv
ZGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsaW5rVGlt
ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNhbGxGdW5j
dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcHBs
eUZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnRocm93VHlwZUVycm9yRnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlamVjdFBy
b21pc2VGdW5jdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmFjdHVhbFBvaW50ZXJGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6anNDZWxsRm9yTGlua1RpbWVDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnRocm93VHlwZUVycm9yRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbiBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlamVjdFByb21pc2VGdW5jdGlvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVj
RnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVn
RXhwUHJvdG9Vbmljb2RlR2V0dGVyIGNvbnN0KToKKwogMjAxOS0xMS0wMiAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9yMjUxODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjI1
ZmY2MWRiOTkwYWQ3ZjY4OGFhOGVjMTZmMWRmOWQ4YjZlYzc2Mi4uZmU3MGEzNTIyZDZlM2ZhYzY5
MDE2ZmQ2OGZiMDUzOTk2NzNlMTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNTIyLDYgKzUyMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAogICAgIGJ5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCiAgICAgYnl0
ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaAorICAgIGJ5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaAogICAgIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuaAogICAgIGJ5dGVjb2RlL09iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmgKICAgICBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlv
bi5oCkBAIC01MjksNyArNTMwLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGNvZGVTaXplLmgKICAgICBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKLSAgICBieXRlY29k
ZS9TcGVjaWFsUG9pbnRlci5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5
dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWI4NDY5YTJhYjFjNThmMjhmMTE3MjFiNDViNGIz
ZmMyYzkwMDI4NS4uYTcxZTE0MDNkMzI3ZGVmOTAzZGUzYjllNDJmNGUyODRlMGRlNGFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2Miw3ICszNjIsNiBAQAogCQkwRjRGODI4
QzFFMzFCOTc2MDA3NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEY4MjhB
MUUzMUI5NzEwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5o
ICovOyB9OwogCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJl
clN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjUwQUYzQjE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi87
IH07CiAJCTBGNTUxM0E2MUQ1QTY4MkMwMEMzMkJEOCAvKiBGcmVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTEzQTUxRDVBNjgyQTAwQzMy
QkQ4IC8qIEZyZWVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDFCMDE2
MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyog
VG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVG
MEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAwRjMx
MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODEyLDYgKzE4MTEsNyBAQAogCQlFMzVDQTE1NDFE
QkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9N
SklUSGVhcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM1Q0ExNTYxREJDM0E1RjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNTAx
REJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNUUwMzYwMUI3QUI0M0UwMDczQUQy
QSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzYzN0VFOTIzNkU1NkIwMDA5NkJEMEEgLyogTGlu
a1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzZCNzY3MDIy
RjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4
IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAw
NTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRp
b25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjU4NSw4ICsyNTg1LDYgQEAKIAkJMEY1MEFGM0IxOTNFOEIz
OTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgcGF0aCA9IGRmZy9E
RkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1NTEzQTUxRDVBNjgyQTAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZyZWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNTUxM0E3MUQ1QTY4Q0IwMEMzMkJEOCAvKiBGcmVlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmVlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjaWFsUG9pbnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVj
aWFsUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1OTg5NzE3Qzg2
QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9OYXRp
dmVGcm9tVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUMxOTMxNzI3
NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJz
dHJhY3RWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYxMTRE
MTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDkzNSw2ICs0OTMzLDggQEAKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGlt
ZUNvbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtU
aW1lQ29uc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZCNzY2RTIy
RjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBs
YW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0
aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ3JlYXRpb25N
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjM3LDYgKzgyMzcsOCBAQAog
CQkJCUJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKIAkJCQkwRkI1
NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAog
CQkJCTBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
ICovLAorCQkJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmNw
cCAqLywKKwkJCQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5o
ICovLAogCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
ICovLAogCQkJCTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAogCQkJCTUzRkEyQUUwMUNGMzdGM0Yw
MDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQu
aCAqLywKQEAgLTgyODQsOCArODI4Niw2IEBACiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3Nzkg
LyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKLQkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUg
LyogU3BlY2lhbFBvaW50ZXIuY3BwICovLAotCQkJCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5oICovLAogCQkJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBT
cGVjdWxhdGVkVHlwZS5jcHAgKi8sCiAJCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNw
ZWN1bGF0ZWRUeXBlLmggKi8sCiAJCQkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVj
dHVyZVNldC5jcHAgKi8sCkBAIC05ODQzLDYgKzk4NDMsNyBAQAogCQkJCUJDMThDNDMxMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNF
MTAwQjM0NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1
OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNjM3RUU5
MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA5Niw3ICsxMDA5Nyw2IEBACiAJCQkJMEZERTg3
RkMxREZFNkU1MTAwNjRDMzkwIC8qIFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVl
TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3Bl
Y2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1NTQxQjIxNjEzQzFGQjAw
Q0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0
MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
ODVGNkJDMThDNTUzRkUwMEYxMDYyNiAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGM0FDNzUyMTgzRUExMDQwMDMyMDI5RiAvKiBTdGFja0FsaWdubWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93
a2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmlu
ZWRfaGVhZGVyLnB5CmluZGV4IDMzNDE5ZjU1ZjYxYzU0NGFmYzhjODRjM2M3OTY5Njc1ZTc5MDFi
NTYuLjA0MmIzMjJiYjhiZGRmMTM0YTc4MDFiYTZmYmRiMmE3YzU1YTliMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dGVfY29tYmluZWRfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5CkBAIC0xNzIs
MTEgKzE3MiwxMCBAQCBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFsX3ByaXZhdGVfY29k
ZV9uYW1lX21hY3JvKHNlbGYpOgogICAgICAgICBmdW5jdGlvbnMuc29ydChrZXk9bGFtYmRhIHg6
IHguZnVuY3Rpb25fbmFtZSkKICAgICAgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKICAg
ICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7Ci0gICAgICAgICAgICAgICAgJ3Zhck5hbWUnOiBn
ZXRfdmFyX25hbWUoZnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0
aW9uLmZ1bmN0aW9uX25hbWUsCiAgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUodmFyTmFtZSlzLCAlKGZ1
bmNOYW1lKXMsICUoY29kZU5hbWUpcykgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywgJShjb2RlTmFtZSlzKSBcXCIg
JSBmdW5jdGlvbl9hcmdzKQogCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzkwOGFmYjUwZTA1YzE4Y2U2ZGUxYjFkN2NkNjVk
NmM1ODhkZTMyOC4uNTE5MjFkNzE4NjA5YmExZTdiNDgxNDEwNjM0N2FlZDIyZTg2MDg4MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjQ0LDYgKzI0NCw3IEBAIGJ5dGVjb2RlL0lu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9KdW1wVGFibGUuY3BwCiBieXRl
Y29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCiBi
eXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKK2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuY3BwCiBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmNwcAogYnl0ZWNvZGUvTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nh
c2UuY3BwCkBAIC0yNjMsNyArMjY0LDYgQEAgYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5
dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAK
IGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCi1ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5j
cHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAogYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNw
cAogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCBkZDMzY2E4MDM2
YTMwYmY2NGUwOGEwYTM4N2VlMWI1YjcxMWE3OGYxLi5kNDNlNDhmMGJhMzFlYmRjZjhiZWQxOGI2
ZTlhYjBiOGRiZjU2MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIEpTQ19D
T01NT05fQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUobWFjcm8pIFwKICAg
ICBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfRUFDSF9OQU1FKG1hY3Jv
KSBcCiAgICAgbWFjcm8oYWRkKSBcCisgICAgbWFjcm8oYXBwbHlGdW5jdGlvbikgXAogICAgIG1h
Y3JvKGFycmF5SXRlcmF0b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktp
bmQpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdG9yTmV4dCkgXApAQCAtNTIsNiArNTMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhhcnJheUl0ZXJhdG9yS2luZCkgXAogICAgIG1hY3Jv
KGFycmF5U3BlY2llc0NyZWF0ZSkgXAogICAgIG1hY3JvKGFzc2VydCkgXAorICAgIG1hY3JvKGNh
bGxGdW5jdGlvbikgXAogICAgIG1hY3JvKGNoYXJDb2RlQXQpIFwKICAgICBtYWNybyhleGVjdXRv
cikgXAogICAgIG1hY3JvKGlzVmlldykgXApAQCAtNzMsNiArNzUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBtYWNybyhnZXRPd25Qcm9wZXJ0eU5hbWVzKSBcCiAgICAgbWFjcm8ob3duS2V5cykg
XAogICAgIG1hY3JvKFNldCkgXAorICAgIG1hY3JvKHRocm93VHlwZUVycm9yRnVuY3Rpb24pIFwK
ICAgICBtYWNybyh0eXBlZEFycmF5TGVuZ3RoKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheVNvcnQp
IFwKICAgICBtYWNybyh0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMK
aW5kZXggMzBmYzY2ZTRiODlmMmVhMGJkNjlhN2I4MWRlMTM4NTBmMDFjZGI3NC4uNjZmOTUxZmI0
ZmM2ZDFjNjUxZTAzMDc3MGRlZDUxNWU5MGRlYjliMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCkBAIC0yMzcsMTkgKzIz
NywxNiBAQCBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKQogICAgIHZhciBwcm9taXNlID0gQGNy
ZWF0ZVByb21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gZmFsc2UpOwogICAgIHZh
ciBjYXB0dXJlZFByb21pc2UgPSBwcm9taXNlOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBh
bGxvdyB1c2luZyBmdW5jdGlvbi1kZWNsYXJhdGlvbiBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM1MDIKLSAgICB2YXIgQHJlamVjdCA9IGZ1
bmN0aW9uIEByZWplY3QocmVhc29uKSB7Ci0gICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdp
dGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29u
KTsKLSAgICB9OwotCiAgICAgdHJ5IHsKICAgICAgICAgZXhlY3V0b3IoCiAgICAgICAgICAgICBm
dW5jdGlvbiBAcmVzb2x2ZShyZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEBy
ZXNvbHZlUHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVk
UHJvbWlzZSwgcmVzb2x1dGlvbik7Ci0gICAgICAgICAgICB9LCBAcmVqZWN0KTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAg
ICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2Fs
bENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0g
Y2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIEByZWplY3QoZXJyb3IpOworICAgICAgICBAcmVqZWN0
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9y
KTsKICAgICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKQEAgLTI2NiwxOSArMjYzLDE2IEBAIGZ1
bmN0aW9uIEludGVybmFsUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVh
dGVQcm9taXNlKHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIHRydWUpOwogICAgIHZhciBj
YXB0dXJlZFByb21pc2UgPSBwcm9taXNlOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbGxv
dyB1c2luZyBmdW5jdGlvbi1kZWNsYXJhdGlvbiBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM1MDIKLSAgICB2YXIgQHJlamVjdCA9IGZ1bmN0
aW9uIEByZWplY3QocmVhc29uKSB7Ci0gICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhG
aXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsK
LSAgICB9OwotCiAgICAgdHJ5IHsKICAgICAgICAgZXhlY3V0b3IoCiAgICAgICAgICAgICBmdW5j
dGlvbiBAcmVzb2x2ZShyZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEByZXNv
bHZlUHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJv
bWlzZSwgcmVzb2x1dGlvbik7Ci0gICAgICAgICAgICB9LCBAcmVqZWN0KTsKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAg
ICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENo
ZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVhc29uKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0gY2F0
Y2ggKGVycm9yKSB7Ci0gICAgICAgIEByZWplY3QoZXJyb3IpOworICAgICAgICBAcmVqZWN0UHJv
bWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsK
ICAgICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGFmODA3NjkzMzJjOWNiNTBlMjJj
YzMzZGFjNzQ1YTJkYmUwZmUzMDQuLjg1OGFiOTA1MDJlODRkNzA3OTE1MzI1ZjY5M2VlM2Q1ZDU4
NWM4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcApAQCAtMTM2LDYgKzEzNiw5IEBAIHZvaWQgQ29kZUJsb2NrQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wQ29uc3RhbnRzKCkKICAgICAgICAgICAgIGNhc2UgU291cmNlQ29kZVJl
cHJlc2VudGF0aW9uOjpPdGhlcjoKICAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50
YXRpb25EZXNjcmlwdGlvbiA9ICIiOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQ6CisgICAg
ICAgICAgICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiOiBpbiBz
b3VyY2UgYXMgbGlua2UtdGltZS1jb25zdGFudCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB0aGlzLT5tX291dC5wcmludGYoIiAgIGsldSA9ICVz
JXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgdG9DU3RyaW5nKGNvbnN0YW50LmdldCgp
KS5kYXRhKCksIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uKTsKICAgICAgICAg
ICAgICsraTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCBkNDE2MzNjNTViNjA5Y2Q1N2Uy
NDNiMmIxYTRjNDQwOTIxNGM1YWRhLi45OWYzZWJiNWM2NDJhMDlmNDQ0NjM3Y2I2NDBkYzU1ZDM1
NTZiZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC00Miw3ICs0Miw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05B
TUVTX1RPX1NFVChuYW1lKSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmFkZCh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLmltcGwoKSwgJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfIyNuYW1lKTsKKyNkZWZpbmUgSU5JVElBTEla
RV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKG5hbWUpIG1fYnl0ZWNvZGVJbnRyaW5z
aWNNYXAuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVO
YW1lKCkuaW1wbCgpLCBFbnRyeSgmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y18jI25hbWUpKTsKKyNkZWZpbmUgSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNf
VE9fU0VUX0ZPUl9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbV9ieXRlY29kZUludHJp
bnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubmFtZSMjUHJpdmF0
ZU5hbWUoKS5pbXBsKCksIEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZSk7CiAKIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAg
IDogbV92bSh2bSkKQEAgLTUwLDYgKzUxLDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiB7CiAgICAgSlNDX0NPTU1PTl9CWVRF
Q09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lO
VFJJTlNJQ19OQU1FU19UT19TRVQpCiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNf
Q09OU1RBTlRTX0VBQ0hfTkFNRShJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19U
T19TRVQpCisgICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhJTklUSUFMSVpFX0JZ
VEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVRfRk9SX0xJTktfVElNRV9DT05TVEFOVCkKIAog
ICAgIG1fdW5kZWZpbmVkLnNldChtX3ZtLCBqc1VuZGVmaW5lZCgpKTsKICAgICBtX0luZmluaXR5
LnNldChtX3ZtLCBqc0RvdWJsZU51bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCkpKTsKQEAgLTk4LDEzICsxMDAsMTMgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9Bc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb25Ob25lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7
CiB9CiAKLUJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAorT3B0aW9u
YWw8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk+IEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBpZiAo
IWlkZW50LmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fYnl0ZWNvZGVJbnRy
aW5zaWNNYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2J5dGVj
b2RlSW50cmluc2ljTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuaAppbmRleCBmYWViMjM4OWI4ZmQ3MGVlNWY5NDkzNWYzOGE3NGE2MTU2
Nzg2OWJmLi41NjdiMDI2YjVlMWQwNWM4MzZjMDE5YzkzN2M4NTA5NTNjODI1ZjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMzcsNyArMTM4LDQ0
IEBAIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogCiAgICAgdHlwZWRlZiBSZWdp
c3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJUeXBlKShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKIAotICAgIEVtaXR0ZXJUeXBlIGxvb2t1cChjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAg
ICAgIEVtaXR0ZXIgPSAwLAorICAgICAgICBMaW5rVGltZUNvbnN0YW50ID0gMSwKKyAgICB9Owor
CisgICAgY2xhc3MgRW50cnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgRW50cnkoKQorICAgICAg
ICAgICAgOiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9l
bWl0dGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIEVudHJ5KEVtaXR0ZXJUeXBl
IGVtaXR0ZXIpCisgICAgICAgICAgICA6IG1fdHlwZShUeXBlOjpFbWl0dGVyKQorICAgICAgICB7
CisgICAgICAgICAgICBtX2VtaXR0ZXIgPSBlbWl0dGVyOworICAgICAgICB9CisKKyAgICAgICAg
RW50cnkoTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KQorICAgICAgICAgICAgOiBt
X3R5cGUoVHlwZTo6TGlua1RpbWVDb25zdGFudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9s
aW5rVGltZUNvbnN0YW50ID0gbGlua1RpbWVDb25zdGFudDsKKyAgICAgICAgfQorCisgICAgICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICBMaW5rVGltZUNv
bnN0YW50IGxpbmtUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmtUaW1lQ29uc3Rh
bnQ7IH0KKyAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZW1p
dHRlcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgRW1p
dHRlclR5cGUgbV9lbWl0dGVyOworICAgICAgICAgICAgTGlua1RpbWVDb25zdGFudCBtX2xpbmtU
aW1lQ29uc3RhbnQ7CisgICAgICAgIH07CisgICAgICAgIFR5cGUgbV90eXBlOworICAgIH07CisK
KyAgICBPcHRpb25hbDxFbnRyeT4gbG9va3VwKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKIAog
I2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9S
UyhuYW1lKSBKU1ZhbHVlIG5hbWUjI1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAgICAgSlND
X0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShKU0NfREVDTEFS
RV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKQEAgLTE0NSw3ICsxODMs
NyBAQCBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogcHJpdmF0ZToKICAgICBW
TSYgbV92bTsKLSAgICBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVtaXR0ZXJU
eXBlLCBJZGVudGlmaWVyUmVwSGFzaD4gbV9ieXRlY29kZUludHJpbnNpY01hcDsKKyAgICBIYXNo
TWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaD4g
bV9ieXRlY29kZUludHJpbnNpY01hcDsKIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9J
TlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUyhuYW1lKSBTdHJvbmc8VW5rbm93bj4gbV8jI25h
bWU7CiAgICAgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX1NJTVBMRV9F
QUNIX05BTUUoSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRP
UlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpp
bmRleCBkNjUyYjY1ODg0Yzc4YjAzYmQ4MGQyZDY3ZDQ4ZjE2ODYxMGI5YTc4Li4zNGMxNTJhMGQ2
NjJmMzUyOTdkZjE0NDQ4NjRmYjRiYmEzNDBlZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTY0LDEwICs2NCw2IEBACiAgICAgOk9i
amVjdEFsbG9jYXRpb25Qcm9maWxlLAogXQogCi1uYW1lc3BhY2UgOlNwZWNpYWwgZG8KLSAgICB0
eXBlcyBbIDpQb2ludGVyIF0KLWVuZAotCiB0ZW1wbGF0ZXMgWwogICAgIDpXcml0ZUJhcnJpZXIs
CiAgICAgOldyaXRlQmFycmllckJhc2UsCkBAIC02NzUsNyArNjcxLDcgQEAKIG9wIDpqbmVxX3B0
ciwKICAgICBhcmdzOiB7CiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IHNwZWNpYWxQb2ludGVyOiBTcGVjaWFsOjpQb2ludGVyLAorICAgICAgICBzcGVjaWFsUG9pbnRl
cjogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB0YXJnZXRMYWJlbDogQm91bmRMYWJlbCwKICAg
ICB9LAogICAgIG1ldGFkYXRhOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDVlYzI0NmM5MWQ4MmVjZTYyNGRkZGMyNmFiYjVkNTU0MjQzZGI5
ODIuLjBmOGU3ZjhiNGY5MjQ0NDczODJhNWQ4ZTg4MTM3NjA3ZDQ5YzI0YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zOTksMTIgKzM5OSw2
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5s
aW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCksIHVubGlua2VkQ29kZUJsb2NrLT5j
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSwgdG9wTGV2ZWxFeGVjdXRhYmxlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGkrKykgewotICAgICAg
ICBMaW5rVGltZUNvbnN0YW50IHR5cGUgPSBzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0YW50Pihp
KTsKLSAgICAgICAgaWYgKHVuc2lnbmVkIHJlZ2lzdGVySW5kZXggPSB1bmxpbmtlZENvZGVCbG9j
ay0+cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpCi0gICAgICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzW3JlZ2lzdGVySW5kZXhdLnNldCh2bSwgdGhpcywgbV9nbG9iYWxP
YmplY3QtPmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOwotICAgIH0KLQogICAgIC8v
IFdlIGFscmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmb3IgdGhlIG1vZHVsZSBl
bnZpcm9ubWVudCBzaW5jZSB3ZSBuZWVkIHRvIGluc3RhbnRpYXRlCiAgICAgLy8gdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudHMgYmVmb3JlIGxpbmtpbmcgdGhlIGNvZGUgYmxvY2suIFdlIHJlcGxhY2Ug
dGhlIHN0b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0aGUgYWxyZWFkeSBjbG9uZWQgb25lLgogICAg
IGlmIChVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
Kj4odm0sIHVubGlua2VkQ29kZUJsb2NrKSkgewpAQCAtOTA1LDI5ICs4OTksMzYgQEAgdm9pZCBD
b2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4+JiBjb25zdGEKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CiAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBjb25zdGFudHNbaV0uZ2V0KCk7
Ci0KLSAgICAgICAgaWYgKCFjb25zdGFudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChj
b25zdGFudC5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGNvbnN0
YW50LmFzQ2VsbCgpOwotICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBqc0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChtX3VubGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRoVHlwZVByb2ZpbGVy
T3Bjb2RlcygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAgIHN3aXRj
aCAoY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2ldKSB7CisgICAgICAgIGNhc2Ug
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAgICAgICAg
Y29uc3RhbnQgPSBnbG9iYWxPYmplY3QtPmxpbmtUaW1lQ29uc3RhbnQoc3RhdGljX2Nhc3Q8TGlu
a1RpbWVDb25zdGFudD4oY29uc3RhbnQuYXNJbnQzMkFzQW55SW50KCkpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXI6Cisg
ICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpJbnRlZ2VyOgorICAgICAgICBj
YXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6RG91YmxlOgorICAgICAgICAgICAgaWYgKCFj
b25zdGFudC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNDZWxs
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gY29uc3RhbnQuYXNDZWxs
KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBq
c0R5bmFtaWNDYXN0PFN5bWJvbFRhYmxlKj4odm0sIGNlbGwpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5cGVQcm9maWxlck9w
Y29kZXMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxl
KiBjbG9uZSA9IHN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0YUNvZGVCbG9jayh0aGlzKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnQgPSBjbG9uZTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5hbWljQ2FzdDxKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFibGUtPmNyZWF0ZVRl
bXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9iamVjdDsKICAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBjbG9uZSA9IHN5bWJvbFRh
YmxlLT5jbG9uZVNjb3BlUGFydCh2bSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3YXNDb21w
aWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9u
ZS0+c2V0UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29u
c3RhbnQgPSBjbG9uZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGRlc2NyaXB0
b3IgPSBqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj4odm0sIGNlbGwp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxF
eGVjdXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3Ip
OwotICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotICAgICAgICAgICAgICAgICAgICBjb25zdGFudCA9IHRlbXBsYXRlT2JqZWN0OwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0KICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tpXS5zZXQodm0sIHRoaXMsIGNvbnN0YW50
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9G
aXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IGUyNDRm
ZDYyNzA5YjQyNWE2MjhlMjI0NTY2MzhiMGU1NjNjZGFlMDkuLmVkYTI0YmU0Njk1NjRiMmU1MGM2
NGZlNjA4MWJhMjFmOWNlZDlhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMu
aApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgotI2lu
Y2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVw
dGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MTlmOTc1NjhhMzk1MjIxMDZkZDEyNzBjYjliMTFlMWFhODkw
ZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TGlua1RpbWVDb25zdGFudC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisK
KyNkZWZpbmUgUFJJTlRfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIFwKKyAgICBjYXNl
IEpTQzo6TGlua1RpbWVDb25zdGFudDo6bmFtZTogXAorICAgICAgICBvdXQucHJpbnQoI25hbWUp
OyBcCisgICAgICAgIHJldHVybjsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6TGlua1RpbWVDb25zdGFudCBjb25zdGFudCkKK3sKKyAgICBzd2l0Y2ggKGNvbnN0
YW50KSB7CisgICAgICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoUFJJTlRfTElO
S19USU1FX0NPTlNUQU5UKQorICAgIH0KK30KKworI3VuZGVmIFBSSU5UX0xJTktfVElNRV9DT05T
VEFOVAorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNmU3MjYyNDA5Yzg1NzQz
MmQ0YjJmY2ZhY2YxN2M3NjBkMTdiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0wLDAgKzEsMTIyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
Q29kZUJsb2NrOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hf
TElOS19USU1FX0NPTlNUQU5UUyh2KSBcCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElP
Tl9QUklWQVRFX0dMT0JBTF9OQU1FKHYpIFwKKyAgICB2KHRocm93VHlwZUVycm9yRnVuY3Rpb24s
IG51bGxwdHIpIFwKKyAgICB2KGltcG9ydE1vZHVsZSwgbnVsbHB0cikgXAorICAgIHYobWFwQnVj
a2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0TmV4dCwgbnVsbHB0cikgXAorICAg
IHYobWFwQnVja2V0S2V5LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRWYWx1ZSwgbnVsbHB0
cikgXAorICAgIHYoc2V0QnVja2V0SGVhZCwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0TmV4
dCwgbnVsbHB0cikgXAorICAgIHYoc2V0QnVja2V0S2V5LCBudWxscHRyKSBcCisgICAgdihwcm9w
ZXJ0eUlzRW51bWVyYWJsZSwgbnVsbHB0cikgXAorICAgIHYob3duS2V5cywgbnVsbHB0cikgXAor
ICAgIHYoZW5xdWV1ZUpvYiwgbnVsbHB0cikgXAorICAgIHYobWFrZVR5cGVFcnJvciwgbnVsbHB0
cikgXAorICAgIHYodHlwZWRBcnJheUxlbmd0aCwgbnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJh
eUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTb3J0
LCBudWxscHRyKSBcCisgICAgdihpc1R5cGVkQXJyYXlWaWV3LCBudWxscHRyKSBcCisgICAgdih0
eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzQm91bmRGdW5jdGlv
biwgbnVsbHB0cikgXAorICAgIHYoaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihpbnN0YW5jZU9mLCBudWxscHRyKSBcCisgICAgdihCdWlsdGluTG9nLCBudWxscHRy
KSBcCisgICAgdihCdWlsdGluRGVzY3JpYmUsIG51bGxwdHIpIFwKKyAgICB2KFJlZ0V4cCwgbnVs
bHB0cikgXAorICAgIHYodHJ1bmMsIG51bGxwdHIpIFwKKyAgICB2KFByb21pc2UsIG51bGxwdHIp
IFwKKyAgICB2KEludGVybmFsUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoZGVmYXVsdFByb21p
c2VUaGVuLCBudWxscHRyKSBcCisgICAgdihyZXBlYXRDaGFyYWN0ZXIsIG51bGxwdHIpIFwKKyAg
ICB2KGFycmF5U3BlY2llc0NyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNBcnJheSwgbnVsbHB0
cikgXAorICAgIHYoaXNBcnJheVNsb3csIG51bGxwdHIpIFwKKyAgICB2KGNvbmNhdE1lbWNweSwg
bnVsbHB0cikgXAorICAgIHYoYXBwZW5kTWVtY3B5LCBudWxscHRyKSBcCisgICAgdihob3N0UHJv
bWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKKyAgICB2KEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbiwgbnVsbHB0cikgXAorICAgIHYoU2V0LCBudWxscHRyKSBcCisgICAgdih0aGlzVGlt
ZVZhbHVlLCBudWxscHRyKSBcCisgICAgdihpc0NvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAg
dihyZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b0ds
b2JhbEdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVy
LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b011bHRpbGluZUdldHRlciwgbnVsbHB0cikg
XAorICAgIHYocmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4
cFByb3RvU3RpY2t5R2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1VuaWNvZGVH
ZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cEJ1aWx0aW5FeGVjLCBudWxscHRyKSBcCisg
ICAgdihyZWdFeHBDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzUmVnRXhwLCBudWxscHRyKSBc
CisgICAgdihyZWdFeHBNYXRjaEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNlYXJjaEZh
c3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFNwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYo
cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwVGVz
dEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwsIG51bGxwdHIp
IFwKKyAgICB2KHN0cmluZ1NwbGl0RmFzdCwgbnVsbHB0cikgXAorICAgIHYoc3RyaW5nU3Vic3Ry
SW50ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KG1ha2VCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihoYXNPd25MZW5ndGhQcm9wZXJ0eSwgbnVsbHB0cikgXAorICAgIHYoZGF0ZVRpbWVG
b3JtYXQsIG51bGxwdHIpIFwKKyAgICB2KHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVy
bmFsLCBudWxscHRyKSBcCisgICAgdih3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50
ZXJuYWwsIG51bGxwdHIpIFwKKyAgICB2KE9iamVjdCwgbnVsbHB0cikgXAorICAgIHYoQXJyYXks
IG51bGxwdHIpIFwKKyAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGNhbGxG
dW5jdGlvbiwgbnVsbHB0cikgXAorCisKKyNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RB
TlQobmFtZSwgY29kZSkgbmFtZSwKK2VudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMy
X3QgeworICAgIEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoREVDTEFSRV9MSU5LX1RJ
TUVfQ09OU1RBTlQpCit9OworI3VuZGVmIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UCisjZGVm
aW5lIENPVU5UX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSAxICsKK3N0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50cyA9IEpTQ19GT1JFQUNIX0xJ
TktfVElNRV9DT05TVEFOVFMoQ09VTlRfTElOS19USU1FX0NPTlNUQU5UKSAwOworI3VuZGVmIENP
VU5UX0xJTktfVElNRV9DT05TVEFOVAorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNl
IFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWQzZjI0Y2EwNDgxZDExYTY3ZWJkMWJmYmFi
ZTg2NmZkMzFkNDhiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTcGVjaWFs
UG9pbnRlci5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12
b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNwZWNp
YWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5hY3R1YWxQ
b2ludGVyRm9yKHBvaW50ZXIpOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGFj
dHVhbFBvaW50ZXJGb3IoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcG9pbnRlcik7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6U3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewot
ICAgIHN3aXRjaCAocG9pbnRlcikgewotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpDYWxsRnVuY3Rp
b246Ci0gICAgICAgIG91dC5wcmludCgiQ2FsbEZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6QXBwbHlGdW5jdGlvbjoKLSAgICAgICAgb3V0LnByaW50
KCJBcHBseUZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lh
bDo6T2JqZWN0Q29uc3RydWN0b3I6Ci0gICAgICAgIG91dC5wcmludCgiT2JqZWN0Q29uc3RydWN0
b3IiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpBcnJheUNvbnN0
cnVjdG9yOgotICAgICAgICBvdXQucHJpbnQoIkFycmF5Q29uc3RydWN0b3IiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpUYWJsZVNpemU6Ci0gICAgICAgIG91dC5w
cmludCgiVGFibGVTaXplIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWNpYWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBv
aW50ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ5MmJhYjc2ZWEyYmZmN2U2
ZTg4MzUzNWVhNGQ3NmM0MWIwNDY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotCi1uYW1l
c3BhY2UgU3BlY2lhbCB7Ci1lbnVtIFBvaW50ZXIgOiB1bnNpZ25lZCB7Ci0gICAgQ2FsbEZ1bmN0
aW9uLAotICAgIEFwcGx5RnVuY3Rpb24sCi0gICAgT2JqZWN0Q29uc3RydWN0b3IsCi0gICAgQXJy
YXlDb25zdHJ1Y3RvciwKLSAgICBUYWJsZVNpemUgLy8gTm90IGEgcmVhbCBzcGVjaWFsIHBvaW50
ZXIuIFVzZSB0aGlzIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzLgotfTsKLX0g
Ly8gbmFtZXNwYWNlIFNwZWNpYWwKLQotZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAg
ICBUaHJvd1R5cGVFcnJvckZ1bmN0aW9uLAotfTsKLWNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29u
c3RhbnRDb3VudCA9IDE7Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Z1bmN0aW9uKFNwZWNpYWw6
OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIg
PCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9v
bCBwb2ludGVySXNDZWxsKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBBU1NFUlRf
VU5VU0VEKHBvaW50ZXIsIHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkKiBhY3R1YWxQb2ludGVyRm9yKEpTR2xvYmFsT2JqZWN0KiwgU3Bl
Y2lhbDo6UG9pbnRlcik7Ci12b2lkKiBhY3R1YWxQb2ludGVyRm9yKENvZGVCbG9jayosIFNwZWNp
YWw6OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LWNsYXNzIFByaW50U3RyZWFtOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OlNwZWNpYWw6OlBvaW50ZXIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4
IDIzNGZhNTc3YzVhZjBhMTIxNmM3YjRkNmQwNDQ3ZDBiY2Y4ZDRjNDkuLmQ1ZGRlZThkNTYwNzcw
MzIzYjFmZDVmMWFjY2NjYzA1MDJjMTI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNzYsOCArNzYsNiBAQCBV
bmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9tZXRhZGF0YShVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmNy
ZWF0ZSgpKQogewotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlckluZGV4IDogbV9saW5r
VGltZUNvbnN0YW50cykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlckluZGV4ID0gMDsKICAgICBB
U1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29u
c3RydWN0b3JLaW5kKCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29kZVR5cGUpKTsKICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0NzM5ZGE3ODM1NjhkM2Vi
MjYzMWVlZjFhNzI0MjkyODc5N2Y1NjY5Li5kNjA3MzYwMTRkZDFlMzE1NzEzYTg1MmU4N2RhNjU2
MTQxNjMwMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk9wY29kZS5oIgog
I2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCi0jaW5jbHVkZSAi
U3BlY2lhbFBvaW50ZXIuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IgogI2luY2x1ZGUgIlVubGlua2VkTWV0YWRhdGFUYWJsZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgpAQCAtMTgwLDI3ICsxNzksMTcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24uYXBwZW5kKHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQg
dHlwZSkKKyAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IGxpbmtUaW1l
Q29uc3RhbnQpCiAgICAgewogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICBh
dXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKHZtLmhlYXAsIGNlbGxMb2NrKCkpOwogICAg
ICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAg
ICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50
Q291bnQpOwotICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XSA9IHJlc3VsdDsKICAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkp
OwotICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3Rl
cnMubGFzdCgpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obGlu
a1RpbWVDb25zdGFudCkpKTsKKyAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24uYXBwZW5kKFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdW5zaWduZWQgcmVnaXN0ZXJJ
bmRleEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQotICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7Ci0gICAg
ICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAgICAgIHJldHVy
biBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKLSAgICB9Ci0KICAgICBjb25zdCBWZWN0b3I8
V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2Nv
bnN0YW50UmVnaXN0ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25z
dGFudFJlZ2lzdGVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVy
c1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CkBAIC00MDYsOCArMzk1LDYg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdp
c3RlcjsKIAotICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4g
bV9saW5rVGltZUNvbnN0YW50czsKLQogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAg
IHVuc2lnbmVkIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQ29uc3RydWN0
b3IgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAyZGI4MThmMGI5YjU0YjIxNWJhZjA2Y2NjNmFl
MzFjM2MyOWFkZmFlLi44MzZmZDU3OGYyYzE4NGZiMzM2MjU1ODcxYzZiMTJjM2MxMzY3YTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMzA4LDkgKzMwOCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJl
Z2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJl
Z2lzdGVyID0gbnVsbHB0cjsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEp
OyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM2
MCw5ICszNTcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV9uZWVkc1RvVXBk
YXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
IHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBl
KGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25z
dGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25z
dGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJv
bFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAgICBmdW5jdGlvblN5bWJvbFRh
YmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFsKTsKICAgICBpbnQg
c3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwxMSArNzgyLDcgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJl
c29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJvd25WYWx1ZSk7CiAgICAgICAg
IC8vIHJldHVybiBAcHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJSZWplY3RQcm9taXNlID0gdmFy
aWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlamVjdFByb21pc2VXaXRoRmly
c3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgbW92ZShzY29w
ZS5nZXQoKSwgZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSkp
OwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IGVtaXRHZXRGcm9t
U2NvcGUobmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJSZWplY3RQcm9taXNlLCBUaHJv
d0lmTm90Rm91bmQpOwotCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWplY3RQcm9taXNl
ID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6cmVqZWN0
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKTsKICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAgICAgICAgZW1pdExvYWQoYXJn
cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIG1vdmUoYXJncy5hcmd1
bWVudFJlZ2lzdGVyKDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBAIC04NDgsOSArODM4LDYgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2Vz
RXZhbCgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRy
OwotCiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7CiAKICAgICBwdXNoVERa
VmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246
OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CkBAIC05MTAsOSArODk3
LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxl
UHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNpemUoKSk7CiAK
LSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdp
c3RlcnMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwotCiAgICAgU3ltYm9s
VGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRl
KG1fdm0pOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJp
Y3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUtPnNldFNjb3BlVHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUp
OwpAQCAtMTQ0MiwxMiArMTQyNiwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVt
cElmRmFsc2UoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdldCkKIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBM
YWJlbCYgdGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFs
OjpDYWxsRnVuY3Rpb24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQo
dGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFu
dDo6Y2FsbEZ1bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBM
YWJlbCYgdGFyZ2V0KQogewotICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25kLCBTcGVjaWFs
OjpBcHBseUZ1bmN0aW9uLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0
KHRoaXMsIGNvbmQsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3Rh
bnQ6OmFwcGx5RnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIGJvb2wgQnl0ZWNv
ZGVHZW5lcmF0b3I6Omhhc0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApA
QCAtMzEwMSw3ICszMDg1LDcgQEAgRXhwZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEV4cGVjdGVkRnVuY3Rpb25TbmlwcGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYg
KGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA+PSAyKQogICAgICAg
ICAgICAgcmV0dXJuIE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5l
cVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3RvciwgcmVhbENh
bGwtPmJpbmQodGhpcykpOworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92
ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KSwgcmVh
bENhbGwtPmJpbmQodGhpcykpOwogICAgICAgICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVk
UmVzdWx0KCkpCiAgICAgICAgICAgICBlbWl0TmV3T2JqZWN0KGRzdCk7CkBAIC0zMTE3LDcgKzMx
MDEsNyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhwZWN0ZWRG
dW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAoY2FsbEFyZ3VtZW50
cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID4gMikKICAgICAgICAgICAgIHJldHVybiBO
b0V4cGVjdGVkRnVuY3Rpb247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhp
cywgZnVuYywgU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3RvciwgcmVhbENhbGwtPmJpbmQodGhpcykp
OworICAgICAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgZnVuYywgbW92ZUxpbmtUaW1lQ29uc3Rh
bnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6QXJyYXkpLCByZWFsQ2FsbC0+YmluZCh0aGlz
KSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAg
ICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA9
PSAyKQpAQCAtMzI4NSw3ICszMjY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHAKICAgICBp
ZiAoYXR0cmlidXRlcy5oYXNHZXQoKSB8fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgICAgICBpZiAo
IWF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgIWF0dHJpYnV0ZXMuaGFzU2V0KCkpCi0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
TGlua1RpbWVDb25zdGFudDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGdldHRlcjsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCkBA
IC00NDc0LDEwICs0NDU4LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EKIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBuZXh0TWV0aG9kID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0
ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7CiAKLSAgICBhdXRvIHZhckNyZWF0
ZUFzeW5jRnJvbVN5bmNJdGVyYXRvciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5jcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBtb3ZlKHNjb3Bl
LmdldCgpLCBlbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXJDcmVhdGVBc3luY0Zyb21T
eW5jSXRlcmF0b3IpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCks
IHZhckNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gbW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlQXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yKTsKIAogICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMik7
CiAgICAgZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggMmQ3MjFlYjc3OTBiMzczMDIzNzhmZmFjYjkxMjI3MmRmYjhlN2M0Zi4uZjVi
MzU2OGQxZDc1NTAyODc0ZmQ2N2FkNTVmZDhkODJmM2FlNzU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCisjaW5jbHVkZSAiTGlu
a1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJy
b3IuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgpAQCAtMTIxNiw3ICsx
MjE3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1
ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25ld1RhcmdldFJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVyaXZlZENvbnN0
dWN0b3IgeyBudWxscHRyIH07Ci0gICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1RpbWVDb25zdGFu
dFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdOworICAgICAgICBSZWdpc3RlcklEKiBt
X2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbbnVtYmVyT2ZMaW5rVGltZUNvbnN0YW50c10geyB9
OwogICAgICAgICBSZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fcHJvbWlz
ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMmUwM2JlMGI3Yzc1ZGRiMDI3ZWM0
ZTZmNjU2MjE4ZDhlMGZlNTFhNi4uNTI0NjhlMWYyYWExMWUxMjA2YWU3ZjQ1YTE1ZjI5MGIzOWRh
ZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
CiAKIFJlZ2lzdGVySUQqIEltcG9ydE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGltcG9ydE1vZHVsZSA9IGdlbmVyYXRvci5lbWl0R2V0R2xvYmFsUHJpdmF0ZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
aW1wb3J0TW9kdWxlUHJpdmF0ZU5hbWUoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGltcG9y
dE1vZHVsZSA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGlt
ZUNvbnN0YW50OjppbXBvcnRNb2R1bGUpOwogICAgIENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdl
bmVyYXRvciwgbnVsbHB0ciwgMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFy
Z3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBtX2V4cHIpOwpAQCAtOTg1LDcgKzk4NSwxMSBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKLSAgICByZXR1cm4gKHRoaXMtPiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0
KTsKKyAgICBpZiAobV9lbnRyeS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
VHlwZTo6RW1pdHRlcikKKyAgICAgICAgcmV0dXJuICh0aGlzLT4qbV9lbnRyeS5lbWl0dGVyKCkp
KGdlbmVyYXRvciwgZHN0KTsKKyAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZUxp
bmtUaW1lQ29uc3RhbnQoZHN0LCBtX2VudHJ5LmxpbmtUaW1lQ29uc3RhbnQoKSk7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QnlJZERp
cmVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0x
MDEzLDkgKzEwMTcsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19nZXRCeUlkRGlyZWN0UHJpdmF0ZShCeXRlY29kZUcKIAogc3RhdGljIEpTUHJv
bWlzZTo6RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05v
ZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKKyAgICBBU1NFUlQobm9k
ZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1p
dHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZEZsYWdzKQogICAgICAgICByZXR1
cm4gSlNQcm9taXNlOjpGaWVsZDo6RmxhZ3M7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAm
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlv
bnNPclJlc3VsdCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1
bHQpCiAgICAgICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNPclJlc3VsdDsK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU1Byb21pc2U6
OkZpZWxkOjpGbGFnczsKQEAgLTEwMjMsMTMgKzEwMjgsMTQgQEAgc3RhdGljIEpTUHJvbWlzZTo6
RmllbGQgcHJvbWlzZUludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5v
ZGUpCiAKIHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxGaWVsZElu
ZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRl
cigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZp
ZWxkU3RhdGUpCisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVt
aXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0
b3JGaWVsZFN0YXRlKQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsK
LSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2dlbmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9y
RmllbGROZXh0KQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0OwotICAg
IGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFRoaXMpCiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXM7Ci0gICAgaWYg
KG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19nZW5lcmF0b3JGaWVsZEZyYW1lKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9
PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZEZy
YW1lKQogICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6
OlN0YXRlOwpAQCAtMTAzNywxOSArMTA0MywyMCBAQCBzdGF0aWMgSlNHZW5lcmF0b3I6OkZpZWxk
IGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZAog
CiBzdGF0aWMgSlNBc3luY0dlbmVyYXRvcjo6RmllbGQgYXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZp
ZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJh
dG9yRmllbGRTdGF0ZSkKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5
KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dl
bmVyYXRvckZpZWxkU3RhdGUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVs
ZDo6U3RhdGU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVu
dHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dlbmVyYXRvckZpZWxkTmV4dCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZp
ZWxkOjpOZXh0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQorICAgIGlmIChub2RlLT5l
bnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19nZW5lcmF0b3JGaWVsZFRoaXMpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpG
aWVsZDo6VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCisgICAgaWYgKG5vZGUt
PmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9y
OjpGaWVsZDo6RnJhbWU7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNv
bikKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCiAg
ICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3VzcGVuZFJlYXNvbjsKLSAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUZpcnN0KQorICAgIGlmIChub2RlLT5lbnRy
eSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19h
c3luY0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5l
cmF0b3I6OkZpZWxkOjpRdWV1ZUZpcnN0OwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1
ZXVlTGFzdCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFF1ZXVlTGFzdCkK
ICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpRdWV1ZUxhc3Q7CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRv
cjo6RmllbGQ6OlN0YXRlOwpAQCAtNDA5NiwxMCArNDEwMyw3IEBAIHZvaWQgRnVuY3Rpb25Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgICAgIC8v
IGxvYWQgYW5kIGNhbGwgQGFzeW5jRnVuY3Rpb25SZXN1bWUKLSAgICAgICAgYXV0byB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJh
dG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdl
dCgpLCB2YXIpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rpb25SZXN1
bWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBhc3luY0Z1bmN0aW9uUmVzdW1lID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0
YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmFzeW5jRnVuY3Rpb25SZXN1bWUpOwogCiAg
ICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDQpOwogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudENvdW50ID0gMDsKQEAgLTQ1NzgsMTEgKzQ1ODIsNyBAQCB2b2lk
IE9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogcmhzKQogICAgIElkZW50aWZpZXJTZXQgZXhjbHVkZWRTZXQ7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGFkZE1ldGhvZDsKICAgICBpZiAobV9jb250YWluc1Jlc3RFbGVt
ZW50ICYmIG1fY29udGFpbnNDb21wdXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGF1dG8gdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuU2V0UHJpdmF0ZU5hbWUoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29w
ZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIs
IFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXRDb25zdHJ1
Y3RvciA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50OjpTZXQpOwogCiAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51
bGxwdHIsIDApOwogICAgICAgICBleGNsdWRlZExpc3QgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVj
dChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBzZXRDb25z
dHJ1Y3Rvci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNDYzMywxMSArNDYzMyw3IEBAIHZvaWQgT2JqZWN0UGF0
dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiByaHMpCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqZWN0ID0gZ2Vu
ZXJhdG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0g
ICAgICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNvcHlEYXRhUHJvcGVydGllc1ByaXZhdGVOYW1lKCkp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShzY29w
ZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwot
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVy
YXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0
KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBjb3B5RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVs
bHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNV
bmRlZmluZWQoKSk7CkBAIC00ODEwLDExICs0ODA2LDcgQEAgUmVnaXN0ZXJJRCogT2JqZWN0U3By
ZWFkRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG8KICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoc3JjLmdldCgpLCBtX2V4cHJlc3Npb24pOwogICAg
IAogICAgIC8vIGxvYWQgYW5kIGNhbGwgQGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucwot
ICAgIGF1dG8gdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zUHJpdmF0ZU5h
bWUoKSk7Ci0gICAgCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwotICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1v
dmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJv
cGVydGllc05vRXhjbHVzaW9ucyk7CiAgICAgCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVy
YXRvciwgbnVsbHB0ciwgMik7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlMGVlZjQ5MTdhYTY4MWZhYzI5NGM5ODg0OTgyNWIy
ZDkzZjAwZjFhLi4zMzc4YWQwOTJmNmEyNDIwMzNjZjQwNzY4M2Q5Mzg5NWQzZDNjZDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
NjM0MiwxMSArNjM0Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjogewogICAg
ICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRy
PigpOwotICAgICAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBzcGVjaWFsUG9pbnRlciA9IGJ5dGVj
b2RlLm1fc3BlY2lhbFBvaW50ZXI7Ci0gICAgICAgICAgICBBU1NFUlQocG9pbnRlcklzQ2VsbChz
cGVjaWFsUG9pbnRlcikpOwotICAgICAgICAgICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyID0gc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oCi0gICAgICAgICAgICAgICAgYWN0dWFsUG9pbnRlckZvcihtX2lu
bGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgc3BlY2lhbFBvaW50ZXIpKTsKLSAgICAgICAgICAg
IEZyb3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemUoYWN0dWFsUG9pbnRl
cik7CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nZXRDb25zdGFudChieXRl
Y29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBy
ZWxhdGl2ZU9mZnNldCA9IGp1bXBUYXJnZXQoYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAg
ICAgICAgICBOb2RlKiBjaGlsZCA9IGdldChieXRlY29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAg
IGlmIChieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1faGFzSnVtcGVkKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwZDA0OTk0NTgwZDliMzg4MWM5
MDJiMDFhYmEzZTYxZDk2MDM2ZTU5Li44ZWJlNDlmZWJiZjUxMzViNTM1ZTNjZGQ3Njk2NTY4MTUw
NTNkYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ3
MSwxMSArNDcxLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9m
ZnNldCgpOwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9p
bnRlcjsKKyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0Q29uc3RhbnRPcGVyYW5kKGJ5
dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAgIEFTU0VSVChzcGVjaWFsUG9p
bnRlci5pc0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFs
ID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9y
KG1fY29kZUJsb2NrLCBwdHIpKSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGVxdWFsID0gYnJh
bmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwo
KSkpOwogICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7
CiAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7CiAgICAgZXF1YWwubGluayh0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzZTBj
ZWI0NjkzYTU4OTVmM2FmZWJjOTYyYTljMTQzZjA4MjhjNTMxLi40ZTk0MjQ1NDc5ZjNmNDc2OTdh
OGI2OTNjNWRmMWYwMTBlYjIzMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCkBAIC00NzgsMTIgKzQ3OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qbmVxX3B0cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQg
c3JjID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0
ciA9IGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRl
ciA9IGdldENvbnN0YW50T3BlcmFuZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgp
KTsKKyAgICBBU1NFUlQoc3BlY2lhbFBvaW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdENl
bGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDEpOwotICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIo
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2RlQmxvY2ss
IHB0cikpKTsKKyAgICBKdW1wIGVxdWFsID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgVHJ1c3Rl
ZEltbVB0cihzcGVjaWFsUG9pbnRlci5hc0NlbGwoKSkpOwogICAgIG5vdENlbGwubGluayh0aGlz
KTsKICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQpOwog
ICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMzdlZTIy
YjQ5M2QwYjVhZTRkMzc0MmRiMTIyZjUyM2JlYWYzZjZhLi4zMTU1NDhmMTBiMTIwZTllNmY1MWIy
MTAyODgxNTIwNmUyNjY1ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNDYyLDYgKzQ2MiwxOCBA
QCBtYWNybyBsb2FkVmFyaWFibGUoZ2V0LCBmaWVsZE5hbWUsIGluZGV4UmVnLCB0YWdSZWcsIHBh
eWxvYWRSZWcpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4UmVnLCA4XSwgcGF5
bG9hZFJlZwogZW5kCiAKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJl
bnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFu
dChzaXplLCBpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIHNpemUoRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXhOYXJyb3csIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4V2lkZTE2LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleFdpZGUzMiwgbWFjcm8gKEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4KQorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5
bG9hZF0sIHBheWxvYWQKKyAgICAgICAgc3VicCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwg
aW5kZXgKKyAgICAgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisg
ICAgICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisg
ICAgZW5kKQorZW5kCisKICMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJl
bnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKICMgY2hhbmdlZC4KIG1hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoc2l6ZSwgaW5kZXgsIHRhZywgcGF5bG9hZCkKQEAgLTE3MTAsMTIgKzE3MjIs
MTAgQEAgdW5kZWZpbmVkT3JOdWxsSnVtcE9wKGpudW5kZWZpbmVkX29yX251bGwsIE9wSm51bmRl
ZmluZWRPck51bGwsCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIsIE9wSm5lcVB0
ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0
KG1fdmFsdWUsIHQwKQotICAgIGdldHUoc2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNpYWxQb2ludGVy
LCB0MSkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIKKyAgICBnZXQobV9zcGVjaWFsUG9pbnRlciwgdDEpCisg
ICAgbG9hZENvbnN0YW50KHNpemUsIHQxLCB0MywgdDIpCiAgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCi0gICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fc3BlY2lhbFBvaW50ZXJzW3QyLCB0MSwgNF0sIHQxCi0gICAgYnBlcSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisgICAgYnBlcSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCiAub3BK
bmVxUHRyQnJhbmNoOgogICAgIG1ldGFkYXRhKHQ1LCB0MikKICAgICBzdG9yZWIgMSwgT3BKbmVx
UHRyOjpNZXRhZGF0YTo6bV9oYXNKdW1wZWRbdDVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDA0NDNmMGNmZThi
MzcyN2VjOTRiZDRkNTg5NzA5NjEwYjQyOWM4NmEuLjU1ODhlNWI4MzQ1MDYyYmNjN2ZhZDJkZmQz
OTRiNjg1ODY0ODhiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC00NjUsNiArNDY1LDMwIEBAIG1hY3JvIGxv
YWRWYXJpYWJsZShnZXQsIGZpZWxkTmFtZSwgdmFsdWVSZWcpCiAgICAgbG9hZHEgW2NmciwgdmFs
dWVSZWcsIDhdLCB2YWx1ZVJlZwogZW5kCiAKKyMgSW5kZXggYW5kIHZhbHVlIG11c3QgYmUgZGlm
ZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25z
dGFudChzaXplLCBpbmRleCwgdmFsdWUpCisgICAgbWFjcm8gbG9hZE5hcnJvdygpCisgICAgICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB2YWx1ZQorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Y29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdmFsdWVdLCB2YWx1ZQorICAg
ICAgICBsb2FkcSAtKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4TmFycm93ICogOClbdmFsdWUs
IGluZGV4LCA4XSwgdmFsdWUKKyAgICBlbmQKKworICAgIG1hY3JvIGxvYWRXaWRlMTYoKQorICAg
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKKyAgICAgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3ZhbHVlXSwgdmFsdWUK
KyAgICAgICAgbG9hZHEgLShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleFdpZGUxNiAqIDgpW3Zh
bHVlLCBpbmRleCwgOF0sIHZhbHVlCisgICAgZW5kCisKKyAgICBtYWNybyBsb2FkV2lkZTMyKCkK
KyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHZhbHVlCisgICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt2YWx1ZV0sIHZh
bHVlCisgICAgICAgIHN1YnAgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhXaWRlMzIsIGluZGV4
CisgICAgICAgIGxvYWRxIFt2YWx1ZSwgaW5kZXgsIDhdLCB2YWx1ZQorICAgIGVuZAorCisgICAg
c2l6ZShsb2FkTmFycm93LCBsb2FkV2lkZTE2LCBsb2FkV2lkZTMyLCBtYWNybyAobG9hZCkgbG9h
ZCgpIGVuZCkKK2VuZAorCiAjIEluZGV4IGFuZCB2YWx1ZSBtdXN0IGJlIGRpZmZlcmVudCByZWdp
c3RlcnMuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHNpemUsIGluZGV4LCB2YWx1ZSkKICAgICBtYWNybyBsb2FkTmFycm93KCkKQEAgLTE4MTYs
MTEgKzE4NDAsOSBAQCB1bmRlZmluZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwg
T3BKbnVuZGVmaW5lZE9yTnVsbCwKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwg
T3BKbmVxUHRyLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
ICAgICBnZXQobV92YWx1ZSwgdDApCi0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lh
bFBvaW50ZXIsIHQxKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgotICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0
OjptX3NwZWNpYWxQb2ludGVyc1t0MiwgdDEsIFB0clNpemVdLCB0MQotICAgIGJwbmVxIHQxLCBb
Y2ZyLCB0MCwgOF0sIC5vcEpuZXFQdHJUYXJnZXQKKyAgICBnZXQobV9zcGVjaWFsUG9pbnRlciwg
dDEpCisgICAgbG9hZENvbnN0YW50KHNpemUsIHQxLCB0MikKKyAgICBicG5lcSB0MiwgW2Nmciwg
dDAsIDhdLCAub3BKbmVxUHRyVGFyZ2V0CiAgICAgZGlzcGF0Y2goKQogCiAub3BKbmVxUHRyVGFy
Z2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBjYWYw
MzA4MjkyMWQxMjk1YTA0MjhkYjBjYmUwNDEyYzNhY2YwYzk5Li5jYzU5N2Y1YjQ0YjllNzE3OWY1
ZGU1NWIwZWVkMmJmODY5MDVlZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaApAQCAtMjAwLDggKzIwMCw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAg
ICAgICAgdXNlc0FyZ3VtZW50cygpOwogCiAgICAgICAgIGlmIChpZGVudC5pc1N5bWJvbCgpKSB7
Ci0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVyVHlwZSBlbWl0
dGVyID0gbV92bS5ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KCkubG9va3VwKGlkZW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNp
Y05vZGUoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpDb25zdGFudCwgbG9jYXRpb24sIGVt
aXR0ZXIsIGlkZW50LCBudWxscHRyLCBzdGFydCwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBh
dXRvIGVudHJ5ID0gbV92bS5ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KCkubG9va3VwKGlkZW50
KTsKKyAgICAgICAgICAgIGlmIChlbnRyeSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjpUeXBlOjpDb25zdGFudCwgbG9jYXRpb24sIGVudHJ5LnZhbHVlKCksIGlkZW50LCBudWxscHRy
LCBzdGFydCwgc3RhcnQsIGVuZCk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0KTsKQEAgLTEz
ODQsOCArMTM4NSw4IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25D
YWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgaWYgKGZ1bmMtPmlz
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpIHsKICAgICAgICAgQVNTRVJUKCFpc09wdGlvbmFsQ2Fs
bCk7CiAgICAgICAgIEJ5dGVjb2RlSW50cmluc2ljTm9kZSogaW50cmluc2ljID0gc3RhdGljX2Nh
c3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4oZnVuYyk7Ci0gICAgICAgIGlmIChpbnRyaW5zaWMt
PnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50KQotICAgICAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMt
PmVtaXR0ZXIoKSwgaW50cmluc2ljLT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIGlmIChpbnRyaW5zaWMtPnR5cGUoKSA9PSBCeXRlY29k
ZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50ICYmIGludHJpbnNpYy0+ZW50cnkoKS50eXBl
KCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcikKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRl
Y29kZUludHJpbnNpY05vZGU6OlR5cGU6OkZ1bmN0aW9uLCBsb2NhdGlvbiwgaW50cmluc2ljLT5l
bnRyeSgpLCBpbnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKTsKICAgICB9CiAKICAgICBpZiAoZnVuYy0+aXNPcHRpb25hbENoYWluKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5k
ZXggNzU4OWQ3YzkxZTg5NWViMmQ5OTYzM2RiZjViNGFhNWQyNmFlYjg0ZS4uOWM3YjlhMjgyMDcz
YzU3NmE2MzQ5ZTRkNjljMjIwYmE1Y2NkZWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTQxMywxMCArNDEzLDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUoVHlwZSB0eXBlLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFbWl0dGVyVHlwZSBlbWl0dGVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQorICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2lj
Tm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5IGVudHJ5LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBt
X2VtaXR0ZXIoZW1pdHRlcikKKyAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQogICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgICAgICwgbV90eXBlKHR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggYWE0NDg2NjRkMWQ0ODE0
MGQxMGE0NTkwYzA2N2Q1MDFhOGI2Mjg3Zi4uZmFkNTMyOGEyYjk0NDM3ZGIyZGFlN2YxYzg2YjI4
OWMxYTM0MWZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtOTQ0LDE0
ICs5NDQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBGdW5jdGlvbgogICAgICAg
ICB9OwogCi0gICAgICAgIHR5cGVkZWYgUmVnaXN0ZXJJRCogKEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6KiBFbWl0dGVyVHlwZSkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKik7Ci0KLSAg
ICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEVtaXR0ZXJUeXBlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZShUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5OjpFbnRyeSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgICAgIGJvb2wgaXNCeXRlY29kZUlu
dHJpbnNpY05vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAgIEVtaXR0ZXJUeXBl
IGVtaXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2VtaXR0ZXI7IH0KKyAgICAgICAgQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeTo6RW50cnkgZW50cnkoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5OyB9
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50OyB9CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0ZVTkNU
SU9OUyhuYW1lKSBSZWdpc3RlcklEKiBlbWl0X2ludHJpbnNpY18jI25hbWUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKik7CkBAIC05NjQsNyArOTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpGdW5jdGlvbjsgfQogCi0gICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1p
dHRlcjsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnkgbV9lbnRyeTsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9k
ZSogbV9hcmdzOwogICAgICAgICBUeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA2MDM1YTQ5MDkyNmM0YWU1ZmMzMzI3YWZm
ZWRmNDI3NmI5M2YwNjU3Li5lYjlkOTkzYjI1MTRjNjcyOWUxMDJmNjVlNzIwYTcyOGFmMmMyNDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBA
IC0xODAxLDcgKzE4MDEsNiBAQCBjbGFzcyBDYWNoZWRDb2RlQmxvY2sgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PENvZGVCbG9ja1R5cGU+IHsKIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1f
dGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7Ci0gICAg
c3RkOjphcnJheTx1bnNpZ25lZCwgTGlua1RpbWVDb25zdGFudENvdW50PiBtX2xpbmtUaW1lQ29u
c3RhbnRzOwogCiAgICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbV9p
c1N0cmljdE1vZGUgOiAxOwpAQCAtMjAzOSw5ICsyMDM4LDYgQEAgQUxXQVlTX0lOTElORSBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0
dXJlKgogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9p
ZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBVbmxpbmtlZENvZGVCbG9jayYgY29kZUJsb2NrKSBjb25zdAogewotICAgIGZvciAodW5zaWdu
ZWQgaSA9IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaS0tOykKLSAgICAgICAgY29kZUJsb2NrLm1f
bGlua1RpbWVDb25zdGFudHNbaV0gPSBtX2xpbmtUaW1lQ29uc3RhbnRzW2ldOwotCiAgICAgbV9j
b25zdGFudFJlZ2lzdGVycy5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fY29uc3RhbnRSZWdp
c3RlcnMsICZjb2RlQmxvY2spOwogICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0
aW9uLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb24pOwogICAgIG1fZXhwcmVzc2lvbkluZm8uZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9j
ay5tX2V4cHJlc3Npb25JbmZvKTsKQEAgLTIyMDcsOSArMjIwMyw2IEBAIEFMV0FZU19JTkxJTkUg
dm9pZCBDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zCiAgICAgbV9jb2RlR2VuZXJhdGlvbk1vZGUgPSBjb2RlQmxvY2subV9jb2RlR2Vu
ZXJhdGlvbk1vZGU7CiAgICAgbV9jb2RlVHlwZSA9IGNvZGVCbG9jay5tX2NvZGVUeXBlOwogCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gTGlua1RpbWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW2ldID0gY29kZUJsb2NrLm1fbGlua1RpbWVDb25zdGFudHNb
aV07Ci0KICAgICBtX21ldGFkYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9tZXRhZGF0
YS5nZXQoKSk7CiAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fcmFy
ZURhdGEuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKaW5kZXggNDdmY2QzMzhiNDA1OTgzNmNkMzY4MWU4NGUwMWZhYjc0MzM5NzY3NC4uMjU5OWUy
YzU2MjkxMGY5ODE0NmM5MThiNTIyNDljODU1YmQyYTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMTI5LDcgKzEyOSw4IEBAIGJvb2wgaXNJbnQ1
Mihkb3VibGUpOwogZW51bSBjbGFzcyBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gOiB1aW50OF90
IHsKICAgICBPdGhlciwKICAgICBJbnRlZ2VyLAotICAgIERvdWJsZQorICAgIERvdWJsZSwKKyAg
ICBMaW5rVGltZUNvbnN0YW50LAogfTsKIAogY2xhc3MgSlNWYWx1ZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzY1YjBiMzcw
ZDAyNTc1ZTAwYjFmNTA0OTA5OTEwN2U3NzBlNzI4ZC4uYjg2MmI0ZDhjZTg5NzA0MDgyYzFmNTJm
NmM2NjM1MzJkOGIzZmNiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTM1LDYgKzEzNSw3IEBACiAjaW5jbHVkZSAiSlNXaXRo
U2NvcGUuaCIKICNpbmNsdWRlICJMYXp5Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTGF6eVByb3BlcnR5SW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIK
ICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCkBAIC00MTEsNiArNDEyLDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZUpvYihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWwKIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIDApCiAgICAgLCBt
X3ZtKCZ2bSkKKyAgICAsIG1fbGlua1RpbWVDb25zdGFudHMobnVtYmVyT2ZMaW5rVGltZUNvbnN0
YW50cykKICAgICAsIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoYWRvcHRSZWYo
bmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCiAgICAgLCBtX2hhdmluZ0FCYWRUaW1lV2F0
Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKICAgICAsIG1f
dmFySW5qZWN0aW9uV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNo
ZWQpKSkKQEAgLTUyMiw4ICs1MjQsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2
bSkKICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICBKU0Z1bmN0
aW9uKiBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICBtX2Z1bmN0aW9u
UHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXModm0sIHRoaXMsICZjYWxsRnVuY3Rpb24s
ICZhcHBseUZ1bmN0aW9uLCAmaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7Ci0gICAgbV9jYWxs
RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBjYWxsRnVuY3Rpb24pOwotICAgIG1fYXBwbHlGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIGFwcGx5RnVuY3Rpb24pOwogICAgIG1fYXJyYXlQcm90b1RvU3RyaW5n
RnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5j
dGlvbj4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0
cmluZygpLCBhcnJheVByb3RvRnVuY1RvU3RyaW5nLCBOb0ludHJpbnNpYykpOwpAQCAtNzIzLDcg
KzcyMyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZ2VuZXJh
dG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0s
IHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0
ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fYXN5bmNHZW5lcmF0b3JQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBBc3luY0dlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBB
c3luY0dlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2FzeW5j
SXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAKLSAgICBtX3Byb21pc2VQcm90b1RoZW5GdW5j
dGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJvbWlzZVByb3RvdHlw
ZVRoZW5Db2RlR2VuZXJhdG9yKHZtKSwgdGhpcykpOworICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRQ
cm9taXNlVGhlbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJvbWlzZVByb3RvdHlwZVRoZW5D
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZGVmYXVsdFByb21pc2VUaGVuKV0uc2V0
KHZtLCB0aGlzLCBkZWZhdWx0UHJvbWlzZVRoZW4pOwogCiAjZGVmaW5lIENSRUFURV9QUk9UT1RZ
UEVfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGlu
c3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgaWYgKGZlYXR1
cmVGbGFnKSB7IFwKICAgICAgICAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS5zZXQodm0s
IHRoaXMsIGNhcGl0YWxOYW1lIyNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgY2FwaXRhbE5h
bWUjI1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtXyAjIyBwcm90b3R5cGVC
YXNlICMjIFByb3RvdHlwZS5nZXQoKSkpKTsgXApAQCAtNzUwLDE4ICs3NTEsMjEgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAKICAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2Jq
ZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6T2JqZWN0KV0u
c2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAKICAgICBKU0Z1bmN0aW9uKiB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKLSAgICBtX3Rocm93VHlwZUVycm9yRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9u
KTsKIAogICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpOwogICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMs
IGZ1bmN0aW9uQ29uc3RydWN0b3IpOwogCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25z
dHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsK
ICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpBcnJheSldLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgCiAg
ICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gUmVnRXhwQ29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgUmVnRXhwQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCBt
X3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1fcmVnRXhwQ29uc3RydWN0b3Iuc2V0
KHZtLCB0aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6UmVnRXhwKV0uc2V0KHZtLCB0
aGlzLCByZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgbV9yZWdFeHBHbG9iYWxEYXRhLmNhY2hlZFJl
c3VsdCgpLnJlY29yZCh2bSwgdGhpcywgbnVsbHB0ciwganNFbXB0eVN0cmluZyh2bSksIE1hdGNo
UmVzdWx0KDAsIDApKTsKICAgICAKICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKQEAg
LTc4Myw2ICs3ODcsOCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMj
IENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgbV9wcm9taXNl
Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1faW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6UHJvbWlzZSldLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVj
dG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpJbnRlcm5hbFByb21pc2UpXS5zZXQodm0sIHRoaXMsIGludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yKTsKICAgICAKICAgICBtX2V2YWxFcnJvclN0cnVjdHVyZS5pbml0TGF0
ZXIoCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7
CkBAIC04NDIsOSArODQ4LDYgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+QXJyYXksIGFycmF5Q29u
c3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+UmVnRXhwLCByZWdFeHBDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk9iamVjdFByaXZhdGVOYW1l
KCksIG9iamVjdENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLkFycmF5UHJpdmF0ZU5hbWUoKSwgYXJyYXlDb25zdHJ1Y3RvciwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9C
VUZGRVIpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPlNoYXJlZEFycmF5QnVmZmVyLCBzaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJB
dG9taWNzIiksIGF0b21pY3NPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTkxNywxODAgKzkyMCwyMjYgQEAgY2FwaXRhbE5hbWUg
IyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8g
Y2FwaXRhbE5hbWUKICAgICBpZiAoT3B0aW9uczo6ZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIo
KSkKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPkxvYWRlciwgbW9kdWxlTG9hZGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5Mb2cgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRl
bnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwotICAgIEpTRnVuY3Rpb24q
IGJ1aWx0aW5EZXNjcmliZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJv
cGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkRl
c2NyaWJlKTsKLQotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHJ1bmMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIFRydW5j
SW50cmluc2ljKTsKLQotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jUHJvcGVydHlJc0VudW1l
cmFibGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxG
dW5jUHJvcGVydHlJc0VudW1lcmFibGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jT3du
S2V5cyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1
bmNPd25LZXlzKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNJbXBvcnRN
b2R1bGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jTWFrZVR5cGVFcnJvciA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVy
cm9yKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGggPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jTGVuZ3RoKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlHZXRP
cmlnaW5hbENvbnN0cnVjdG9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0dldE9yaWdpbmFsQ29uc3RydWN0b3IpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheVNvcnQgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29y
dCk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3ID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0lzVHlwZWRBcnJheVZpZXcsIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMpOwotICAgIEpT
RnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVu
Y1N1YmFycmF5Q3JlYXRlKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQm91bmRGdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGlzQm91bmRG
dW5jdGlvbik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNIYXNJbnN0YW5jZUJvdW5kRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBoYXNJbnN0
YW5jZUJvdW5kRnVuY3Rpb24pOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW5zdGFuY2VP
ZiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG9iamVjdFByaXZh
dGVGdW5jSW5zdGFuY2VPZik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUaGlzVGltZVZh
bHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3Rv
RnVuY0dldFRpbWUpOwotI2lmIEVOQUJMRShJTlRMKQotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVG
dW5jRGF0ZVRpbWVGb3JtYXQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmlu
ZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpOwotI2VuZGlmCi0gICAgSlNGdW5jdGlvbiog
cHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
U3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KTsKLSAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY0NvbmNhdE1lbWNweSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRN
ZW1jcHkpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVj
a2V0SGVhZCwgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2
YXRlRnVuY01hcEJ1Y2tldE5leHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0
cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIEpTTWFwQnVja2V0TmV4dEludHJp
bnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkgPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dEtleSwgSlNNYXBCdWNrZXRLZXlJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVG
dW5jTWFwQnVja2V0VmFsdWUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmlu
ZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlLCBKU01hcEJ1Y2tldFZhbHVlSW50cmlu
c2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQgPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tl
dEhlYWQsIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0
ZUZ1bmNTZXRCdWNrZXROZXh0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBKU1NldEJ1Y2tldE5leHRJbnRyaW5z
aWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0S2V5ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRL
ZXksIEpTU2V0QnVja2V0S2V5SW50cmluc2ljKTsKLQogICAgIEdldHRlclNldHRlciogcmVnRXhw
UHJvdG9GbGFnc0dldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUu
Z2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9GbGFnc0dldHRlcildLnNldCh2bSwgdGhp
cywgcmVnRXhwUHJvdG9GbGFnc0dldHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90
b0dsb2JhbEdldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0
KCksIHZtLnByb3BlcnR5TmFtZXMtPmdsb2JhbCk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwotICAgIG1fcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIuc2V0KHZtLCB0aGlzLCBy
ZWdFeHBQcm90b0dsb2JhbEdldHRlcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIp
XS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0
ZXIqIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlciA9IGdldEdldHRlckJ5SWQodGhpcywgbV9y
ZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZUNhc2UpOwogICAg
IGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0lnbm9y
ZUNhc2VHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlcik7
CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b011bHRpbGluZUdldHRlciA9IGdldEdldHRl
ckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm11
bHRpbGluZSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJl
Z0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b011bHRp
bGluZUdldHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1NvdXJjZUdldHRlciA9
IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5
TmFtZXMtPnNvdXJjZSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OnJlZ0V4cFByb3RvU291cmNlR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1Nv
dXJjZUdldHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1N0aWNreUdldHRlciA9
IGdldEdldHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5
TmFtZXMtPnN0aWNreSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OnJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1N0
aWNreUdldHRlcik7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIg
PSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0
eU5hbWVzLT51bmljb2RlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0g
ICAgbV9yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIuc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1Vu
aWNvZGVHZXR0ZXIpOwotICAgIEpTT2JqZWN0KiBidWlsdGluUmVnRXhwRXhlYyA9IGFzT2JqZWN0
KG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWMp
LmFzQ2VsbCgpKTsKLSAgICBtX3JlZ0V4cFByb3RvRXhlYy5zZXQodm0sIHRoaXMsIGJ1aWx0aW5S
ZWdFeHBFeGVjKTsKLSAgICBKU09iamVjdCogcmVnRXhwU3ltYm9sUmVwbGFjZSA9IGFzT2JqZWN0
KG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxh
Y2VTeW1ib2wpLmFzQ2VsbCgpKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpXS5z
ZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcik7CisgICAgSlNGdW5jdGlvbiog
cmVnRXhwU3ltYm9sUmVwbGFjZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9yZWdFeHBQcm90b3R5
cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJvbCkpOwogICAg
IG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLnNldCh2bSwgdGhpcywgcmVnRXhwU3ltYm9sUmVw
bGFjZSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6cmVnRXhwQnVpbHRpbkV4ZWMpXS5zZXQodm0sIHRoaXMsIGpzQ2FzdDxK
U0Z1bmN0aW9uKj4obV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+ZXhlYykpKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlKV0uc2V0
KHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5yZXBsYWNlU3ltYm9sKS5hc0NlbGwoKSk7CisKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTZXQpXS5zZXQodm0sIHRo
aXMsIHNldENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0FycmF5KV0uc2V0KHZtLCB0aGlzLCBhcnJh
eUNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLmFz
Q2VsbCgpKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpjYWxsRnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlv
bik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6YXBwbHlGdW5jdGlvbildLnNldCh2bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7
CisKKyNkZWZpbmUgSU5JVF9QUklWQVRFX0dMT0JBTChmdW5jTmFtZSwgY29kZSkgXAorICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OmZ1bmNOYW1lKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0
KSB7IFwKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsgXAorICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRvcihpbml0LnZtKSwg
Z2xvYmFsT2JqZWN0KSk7IFwKKyAgICAgICAgfSk7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCisjdW5kZWYg
SU5JVF9QUklWQVRFX0dMT0JBTAogCi0jZGVmaW5lIENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5D
VElPTih2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgSlNGdW5jdGlvbiogdmFyTmFtZSAjIyBQcml2
YXRlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGUgIyMgQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpOwotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9H
TE9CQUxfTkFNRShDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVOQ1RJT04pCi0jdW5kZWYgQ1JFQVRF
X1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OCi0KKyAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRo
ZW0gbGF6aWx5LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM3OTUKICAgICBKU09iamVjdCogYXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IEFycmF5SXRl
cmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlJdGVyYXRvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0g
ICAgYXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7Cisg
ICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpB
cnJheUl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBhc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUgPSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgdGhpcywgQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBhc3luY0Zyb21T
eW5jSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7
CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpBc3luY0Zyb21TeW5jSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09i
amVjdCogbWFwSXRlcmF0b3JQcm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgbWFwSXRlcmF0b3JDb25zdHJ1Y3Rv
clByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGlt
ZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Ok1hcEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7CiAKICAg
ICBKU09iamVjdCogcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgPSBSZWdFeHBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdl
dCgpKSk7Ci0gICAgcmVnRXhwU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlv
bi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0
YW50KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cFN0cmluZ0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWdFeHBTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZSk7CiAKICAgICBKU09iamVjdCogc2V0SXRlcmF0b3JQcm90b3R5cGUgPSBTZXRJdGVyYXRv
clByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgc2V0
SXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNldEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nhc3Q8
SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldEl0ZXJhdG9y
KSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVyYXRv
clByb3RvdHlwZSk7CiAKLSAgICBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBuZXdQcm9taXNlQ2FwYWJpbGl0eVByaXZhdGVGdW5jdGlvbik7Ci0gICAgbV9yZXNv
bHZlUHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVzb2x2ZVByb21pc2VQcml2YXRlRnVu
Y3Rpb24pOwotICAgIG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgcmVqZWN0
UHJvbWlzZVByaXZhdGVGdW5jdGlvbik7CisgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4KKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjptYXBCdWNrZXRIZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBt
YXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIEpTTWFwQnVja2V0TmV4
dEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRLZXkpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBK
U01hcEJ1Y2tldEtleUludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRW
YWx1ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNN
YXBCdWNrZXRWYWx1ZSwgSlNNYXBCdWNrZXRWYWx1ZUludHJpbnNpYykpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpzZXRCdWNrZXRIZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygp
LCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQsIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYykp
OworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXROZXh0KV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVja2V0
TmV4dEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpzZXRCdWNrZXRLZXkpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5
LCBKU1NldEJ1Y2tldEtleUludHJpbnNpYykpOworICAgICAgICB9KTsKKworICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmltcG9y
dE1vZHVsZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0lt
cG9ydE1vZHVsZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZSld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Byb3BlcnR5SXNF
bnVtZXJhYmxlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om93bktleXMpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNPd25LZXlzKSk7CisgICAgICAgIH0pOwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OmVucXVldWVKb2IpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgImVucXVldWVKb2Ii
X3MsIGVucXVldWVKb2IpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFrZVR5cGVFcnJvcildLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3Ip
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheUxlbmd0aCldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCkpOwor
ICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvcildLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVu
Y0dldE9yaWdpbmFsQ29uc3RydWN0b3IpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJh
eVNvcnQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNTb3J0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzVHlwZWRBcnJheVZpZXcp
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3Jl
YXRlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQm91bmRGdW5jdGlvbildLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6Omhhc0luc3RhbmNlQm91bmRGdW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAw
LCBTdHJpbmcoKSwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKSk7CisgICAgICAgIH0pOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6Omluc3RhbmNlT2YpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG9iamVj
dFByaXZhdGVGdW5jSW5zdGFuY2VPZikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluTG9n
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxv
ZykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpCdWlsdGluRGVzY3JpYmUpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMSwgU3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUpKTsKKyAgICAg
ICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6dHJ1bmMpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
Q2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IG1hdGhQcm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6cmVwZWF0Q2hhcmFjdGVyKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBz
dHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXJy
YXlTcGVjaWVzQ3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBhcnJh
eVByb3RvRnVuY1NwZWNpZXNDcmVhdGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNBcnJheVNs
b3cpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQ
cml2YXRlRnVuY0lzQXJyYXlTbG93KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNvbmNhdE1lbWNw
eSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVG
dW5jQ29uY2F0TWVtY3B5KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFwcGVuZE1lbWNweSldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBw
ZW5kTWVtY3B5KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhvc3RQcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0hvc3RQ
cm9taXNlUmVqZWN0aW9uVHJhY2tlcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGluaXQuc2V0KElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkp
OworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50Ojp0aGlzVGltZVZhbHVlKV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0VGltZSwgRGF0ZVByb3RvdHlwZUdldFRp
bWVJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNDb25zdHJ1Y3RvcildLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRy
aW5zaWMpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMu
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6cmVnRXhwQ3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygp
LCBlc1NwZWNSZWdFeHBDcmVhdGUsIE5vSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OmlzUmVnRXhwKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0
KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCBlc1NwZWNJc1Jl
Z0V4cCwgTm9JbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwTWF0Y2hGYXN0
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNNYXRj
aEZhc3QsIFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpy
ZWdFeHBTZWFyY2hGYXN0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCByZWdF
eHBQcm90b0Z1bmNTZWFyY2hGYXN0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNwbGl0
RmFzdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5j
U3BsaXRGYXN0KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFRlc3RGYXN0KV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVn
RXhwVGVzdEZhc3RJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBTdHJpbmcucHJv
dG90eXBlIGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6c3RyaW5nSW5jbHVkZXNJbnRlcm5hbCldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwp
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6c3RyaW5nU3BsaXRGYXN0KV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpKTsKKyAgICAgICAg
fSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6c3RyaW5nU3Vic3RySW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCkpOworICAgICAgICB9KTsK
KworICAgIC8vIEZ1bmN0aW9uIHByb3RvdHlwZSBoZWxwZXJzLgorICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VCb3VuZEZ1
bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDUsIFN0cmluZygpLCBtYWtlQm91bmRGdW5j
dGlvbikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpoYXNPd25MZW5ndGhQcm9wZXJ0eSldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpKTsKKyAg
ICAgICAgfSk7CiAKLSAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewot
I2RlZmluZSBJTklUX1BSSVZBVEVfR0xPQkFMKHZhck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY05hbWUg
IyMgUHJpdmF0ZU5hbWUoKSwgdmFyTmFtZSAjIyBQcml2YXRlRnVuY3Rpb24sIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9QUklWQVRFX0dMT0JBTF9OQU1FKElOSVRfUFJJVkFURV9HTE9CQUwpCi0jdW5kZWYgSU5J
VF9QUklWQVRFX0dMT0JBTAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNO
dW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNP
d25LZXlzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1
bGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgImVucXVldWVKb2IiX3MsIGVucXVldWVKb2IpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlVHlwZUVycm9yUHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNNYWtlVHlwZUVycm9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS50eXBlZEFycmF5TGVuZ3RoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNU
eXBlZEFycmF5TGVuZ3RoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50
eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
VHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlTb3J0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNU
eXBlZEFycmF5U29ydCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNU
eXBlZEFycmF5Vmlld1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5Vmlldywg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVN1YmFycmF5
Q3JlYXRlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQm91bmRGdW5jdGlvblBy
aXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb25Qcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5zdGFuY2VPZlByaXZhdGVOYW1lKCksIHByaXZhdGVG
dW5jSW5zdGFuY2VPZiwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuQnVp
bHRpbkxvZ1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5Mb2csIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLkJ1aWx0aW5EZXNjcmliZVByaXZhdGVOYW1lKCksIGJ1aWx0aW5EZXNj
cmliZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUmVnRXhwUHJpdmF0
ZU5hbWUoKSwgcmVnRXhwQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnRydW5jUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUcnVuYywgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCksIHByb21p
c2VDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW50
ZXJuYWxQcm9taXNlUHJpdmF0ZU5hbWUoKSwgaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmF1bHRQcm9taXNlVGhlblBy
aXZhdGVOYW1lKCksIHByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcGVhdENoYXJhY3RlclByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1Jl
cGVhdENoYXJhY3RlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFy
cmF5U3BlY2llc0NyZWF0ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNv
bnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0FycmF5U2xvd1ByaXZhdGVOYW1l
KCksIHByaXZhdGVGdW5jSXNBcnJheVNsb3csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmNvbmNhdE1lbWNweVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jQ29uY2F0TWVt
Y3B5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBlbmRNZW1jcHlQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXJQcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBnbG9iYWxG
dW5jSG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5T
ZXRQcml2YXRlTmFtZSgpLCBzZXRDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkudGhpc1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhp
c1RpbWVWYWx1ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmIEVOQUJM
RShJTlRMKQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZGF0ZVRpbWVGb3JtYXRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0RhdGVU
aW1lRm9ybWF0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZGF0
ZVRpbWVGb3JtYXQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1
bmNEYXRlVGltZUZvcm1hdCkpOworICAgICAgICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkK
LQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaXNDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0ZsYWdzR2V0
dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9GbGFnc0dldHRlciwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJQcml2YXRlTmFt
ZSgpLCByZWdFeHBQcm90b0dsb2JhbEdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVn
RXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWdFeHBQcm90b011bHRpbGluZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFBy
b3RvTXVsdGlsaW5lR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5yZWdFeHBQcm90b1NvdXJjZUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvU291cmNl
R2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90
b1N0aWNreUdldHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b1VuaWNvZGVHZXR0
ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBl
cnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWdFeHBCdWlsdGluRXhlY1ByaXZhdGVOYW1lKCksIGJ1aWx0aW5SZWdFeHBFeGVj
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBDcmVhdGVQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBlc1Nw
ZWNSZWdFeHBDcmVhdGUsIE5vSW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaXNSZWdFeHBQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBNYXRjaEZhc3RQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90
b0Z1bmNNYXRjaEZhc3QsIFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYyksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFNlYXJjaEZhc3RQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNT
ZWFyY2hGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
U3BsaXRGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBT
dHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZVByaXZhdGVOYW1l
KCksIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJl
cGxhY2VTeW1ib2wpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdF
eHBUZXN0RmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwg
U3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0RmFzdEludHJpbnNp
YyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBTdHJp
bmcucHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdJbmNsdWRlc0ludGVybmFsUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0
cmluZ0luY2x1ZGVzSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5zdHJpbmdTcGxpdEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdHJpbmdTdWJzdHJJbnRlcm5hbFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGJ1aWx0aW5T
dHJpbmdTdWJzdHJJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
LQotICAgICAgICAvLyBGdW5jdGlvbiBwcm90b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VCb3VuZEZ1
bmN0aW9uUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCA1LCBTdHJp
bmcoKSwgbWFrZUJvdW5kRnVuY3Rpb24pLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5oYXNPd25MZW5ndGhQcm9wZXJ0eVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIE1hcCBhbmQgU2V0IGhl
bHBlcnMuCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5tYXBCdWNrZXRIZWFkUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNr
ZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRO
ZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY01hcEJ1Y2tldEtleSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkubWFwQnVja2V0VmFsdWVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVl
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRIZWFkUHJp
dmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXROZXh0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNTZXRCdWNrZXROZXh0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5z
ZXRCdWNrZXRLZXlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYg
RU5BQkxFKFdFQkFTU0VNQkxZX1NUUkVBTUlOR19BUEkpCi0gICAgICAgIC8vIFdlYkFzc2VtYmx5
IFN0cmVhbWluZyBBUEkKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgd2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS53ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWxQ
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3
ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCisgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQorICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OndlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkp
OworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50
ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5SW5z
dGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkpOworICAgICAgICB9KTsKICNlbmRpZgorCisgICAg
R2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
aW5maW5pdHkoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpz
VW5kZWZpbmVkKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hc3NlcnRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDEsIFN0cmluZygpLCBhc3NlcnRDYWxsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAogI2VuZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRp
Y0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIAotICAgIG1f
c3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkNhbGxGdW5jdGlvbl0gPSBtX2NhbGxGdW5jdGlvbi5n
ZXQoKTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcHBseUZ1bmN0aW9uXSA9IG1f
YXBwbHlGdW5jdGlvbi5nZXQoKTsKLSAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmpl
Y3RDb25zdHJ1Y3Rvcl0gPSBvYmplY3RDb25zdHJ1Y3RvcjsKLSAgICBtX3NwZWNpYWxQb2ludGVy
c1tTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7Ci0KLSAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpUaHJvd1R5cGVFcnJvckZ1bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0
KCk7Ci0KICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpCiAgICAgICAg
IGV4cG9zZURvbGxhclZNKHZtKTsKIApAQCAtMTcxMSwyMiArMTc2MCwxNiBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24udmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUZsb2F0RnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOwotICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0
LT5tX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwotICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWplY3RQcm9taXNlRnVuY3Rpb24pOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9u
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvVmFsdWVPZkZ1
bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bWJlclByb3RvVG9T
dHJpbmdGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlv
blByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV90aHJv
d1R5cGVFcnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxl
ckdldHRlclNldHRlcik7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIudmlzaXQodmlz
aXRvcik7CiAKQEAgLTE3OTQsNiArMTgzNyw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2Jq
ZWN0LT5tX3Byb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworCisgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eSA6IHRoaXNPYmplY3QtPm1fbGlua1RpbWVDb25zdGFudHMpCisg
ICAgICAgIHByb3BlcnR5LnZpc2l0KHZpc2l0b3IpOwogICAgIAogI2lmIEVOQUJMRShTSEFSRURf
QVJSQVlfQlVGRkVSKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJy
YXlCdWZmZXJQcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggODkyNmFhYWRmZDY4ZDFhZjEyOTI4MDRlMmQwMzQyMmQ3ZmY0
NGY2NS4uMzE1ZGYxZDUzN2ZmN2YzNmI4MTc5MTljOGZkNTljM2Y0YzRhNmRmYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00Miw3ICs0
Miw2IEBACiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHBHbG9iYWxE
YXRhLmgiCiAjaW5jbHVkZSAiUnVudGltZUZsYWdzLmgiCi0jaW5jbHVkZSAiU3BlY2lhbFBvaW50
ZXIuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJWTS5oIgpAQCAtMTE5LDYgKzExOCw3IEBAIGNsYXNzIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQ7CiBz
dHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsKIHN0cnVjdCBIYXNoVGFibGU7CitlbnVtIGNsYXNz
IExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogCiAjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJM
RUQKIGNsYXNzIFdyYXBwZXJNYXA7CkBAIC0yOTcsMjYgKzI5NywxNiBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VJbnRGdW5jdGlvbjsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcGFyc2VGbG9hdEZ1
bmN0aW9uOwogCi0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwot
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247Ci0gICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVu
Y3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2Fy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb247CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rp
b247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9yZXNvbHZlUHJvbWlzZUZ1
bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3JlamVjdFByb21pc2VGdW5j
dGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9wcm9taXNlUHJvdG9UaGVuRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbnVtYmVyUHJvdG9Ub1N0
cmluZ0Z1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJv
dG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwotICAgIFdy
aXRlQmFycmllcjxKU09iamVjdD4gbV9yZWdFeHBQcm90b0V4ZWM7CiAgICAgV3JpdGVCYXJyaWVy
PEpTT2JqZWN0PiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZTsKLSAgICBXcml0ZUJhcnJpZXI8
R2V0dGVyU2V0dGVyPiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyOwotICAgIFdyaXRlQmFycmll
cjxHZXR0ZXJTZXR0ZXI+IG1fcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyOwogICAgIFdyaXRlQmFy
cmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxs
ZXJHZXR0ZXJTZXR0ZXI7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTTW9k
dWxlTG9hZGVyPiBtX21vZHVsZUxvYWRlcjsKQEAgLTQzMCw4ICs0MjAsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBGT1Jf
RUFDSF9UWVBFRF9BUlJBWV9UWVBFKERFQ0xBUkVfVFlQRURfQVJSQVlfVFlQRV9TVFJVQ1RVUkUp
CiAjdW5kZWYgREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NUUlVDVFVSRQogCi0gICAgSlNDZWxs
KiBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50
ZXJzIHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCi0gICAgSlNDZWxsKiBtX2xpbmtUaW1lQ29u
c3RhbnRzW0xpbmtUaW1lQ29uc3RhbnRDb3VudF07CisgICAgVmVjdG9yPExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNDZWxsPj4gbV9saW5rVGltZUNvbnN0YW50czsKIAogICAgIFN0cmlu
ZyBtX25hbWU7CiAKQEAgLTYxNiwyNCArNjA1LDIyIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIHBhcnNl
RmxvYXRGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VGbG9hdEZ1bmN0aW9uLmdldCh0
aGlzKTsgfQogCiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9ldmFsRnVuY3Rpb24uZ2V0KHRoaXMpOyB9Ci0gICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9u
KiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgpOyB9
Ci0gICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHRocm93
VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVG9T
dHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rp
b24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KHRoaXMpOyB9
CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9Ci0gICAgSlNGdW5jdGlv
biogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3UHJv
bWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIG5ld1Byb21p
c2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLmdl
dCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIHJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3Jlc29sdmVQcm9taXNlRnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0
aW9uKiByZWplY3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlamVjdFByb21p
c2VGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIHByb21pc2VQcm90b1RoZW5GdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uLmdldCgpOyB9
CisgICAgSlNGdW5jdGlvbiogcmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0OworICAgIEpT
RnVuY3Rpb24qIHJlamVjdFByb21pc2VGdW5jdGlvbigpIGNvbnN0OworICAgIEpTRnVuY3Rpb24q
IHByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIG9iamVj
dFByb3RvVmFsdWVPZkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b1ZhbHVl
T2ZGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIG51bWJlclByb3RvVG9TdHJpbmdG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0V4ZWMuZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9u
KiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZWdFeHBQ
cm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9T
eW1ib2xSZXBsYWNlLmdldCgpOyB9Ci0gICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2Jh
bEdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIuZ2V0KCk7
IH0KLSAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLmdldCgpOyB9CisgICAgR2V0dGVyU2V0
dGVyKiByZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0OworICAgIEdldHRlclNldHRlciog
cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJv
d1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdl
dHRlclNldHRlci5nZXQoKTsKQEAgLTkxMSwxNiArODk4LDkgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBs
YXp5VHlwZWRBcnJheVN0cnVjdHVyZSh0eXBlKS5jb25zdHJ1Y3Rvcih0aGlzKTsKICAgICB9CiAK
LSAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQor
ICAgIEpTQ2VsbCogbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHZhbHVlKSBjb25z
dAogICAgIHsKLSAgICAgICAgQVNTRVJUKHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwot
ICAgICAgICByZXR1cm4gbV9zcGVjaWFsUG9pbnRlcnNbcG9pbnRlcl07Ci0gICAgfQotICAgIEpT
Q2VsbCoganNDZWxsRm9yTGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCi0g
ICAgewotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBl
KTsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgTGlua1RpbWVDb25zdGFudENvdW50KTsKLSAgICAg
ICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudHNbaW5kZXhdOworICAgICAgICByZXR1cm4gbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpXS5nZXQodGhpcyk7
CiAgICAgfQogCiAgICAgV2F0Y2hwb2ludFNldCogbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnQoKSB7IHJldHVybiBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50LmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0SW5saW5lcy5oCmluZGV4IGUwMzY5YmVjYjA2ZjNiOTgyY2ZkOTBhNWRiMjAzOWU2MzNiZDQx
MjUuLjNmMjZkNWNhZmUyYmY3NTYxNGJkMjA3NjdiODQ0MjA0MDJkMDVkZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAyLDYg
KzEwMywxNSBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNHbG9iYWxPYmplY3Q6OmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsbwogICAgIHJldHVybiBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+YXJyYXlDb25zdHJ1Y3RvcigpLCBuZXdUYXJnZXQsIGFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKIH0KIAoraW5saW5lIEpTRnVu
Y3Rpb24qIEpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6OnRocm93VHlwZUVycm9yRnVuY3Rpb24pKTsgfQoraW5saW5lIEpTRnVuY3Rpb24q
IEpTR2xvYmFsT2JqZWN0OjpuZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6Om5ld1Byb21pc2VDYXBhYmlsaXR5KSk7IH0KK2lubGluZSBKU0Z1bmN0aW9uKiBK
U0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpyZXNvbHZlUHJvbWlzZSkpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6
OnJlamVjdFByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1
bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWplY3RQcm9taXNl
KSk7IH0KK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvVGhl
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5r
VGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbikpOyB9Citp
bmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0
YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cEJ1aWx0aW5FeGVjKSk7IH0KK2lubGluZSBHZXR0
ZXJTZXR0ZXIqIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxHZXR0ZXJTZXR0ZXIqPihsaW5rVGltZUNvbnN0YW50KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKSk7IH0KK2lubGluZSBHZXR0
ZXJTZXR0ZXIqIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpKTsgfQorCiBBTFdBWVNf
SU5MSU5FIFZNJiBnZXRWTShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJl
dHVybiBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODZlYmM5MzdmMmY1ODUyMDlhNDY1MTU4
M2ZhMGY3NGY2Y2UzOTlhNi4uMzlmZjI5NjU2MjZjMTk3ZjM0YzU3N2MxNTU2NTI2Yjc5MThjMDky
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTExLTAzICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW50cm9kdWNlIExpbmtUaW1lQ29uc3Rh
bnQgbWVjaGFuaXNtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTM3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRl
ZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQ6CisKIDIwMTktMTEtMDIgIFl1cnkgU2Vt
aWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTjogWyBN
YWMgXSBpbnNwZWN0b3IvZG9tL2dldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZS5odG1s
IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90
YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1l
cy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0CmluZGV4IGU4MmE3
OTk3NmRjNmYzZmZjZjhhNWVlODM3Yzg3YWUyODExYTJhODkuLjIxMjVmYjUyOTcxY2VjZWFiN2Mw
ODAzNGYyZDUzNmM3YTJhNGI0ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwt
ZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4
dApAQCAtMTQsNiArMTQsNiBAQCBDQUxMIFNUQUNLOgogMzogW0ZdIHN0YXJ0QUJDCiAgIHRoaXM6
IHVuZGVmaW5lZAogNDogW1BdIEdsb2JhbCBDb2RlCi0gIHRoaXM6IHRlc3QgLSAKKyAgdGhpczog
YyAtIAogUkVTVU1FRAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382706</attachid>
            <date>2019-11-03 02:14:34 -0800</date>
            <delta_ts>2019-11-03 17:20:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103021433.patch</filename>
            <type>text/plain</type>
            <size>139781</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi43YWFjZTM5YjBkOGVjYWFk
YTcyYjgxMmM5ODI3MTViOTlhZWQzNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzYgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSB1
c2luZyBwcml2YXRlLW5hbWUtdmFyaWFibGVzIG9mIEpTR2xvYmFsT2JqZWN0IGFzIGEgd2F5IHRv
IGFjY2VzcyB0byBjb25zdGFudHMgdGhhdCBhcmUgbWF0ZXJpYWxpemVkIHBlciBKU0dsb2JhbE9i
amVjdC4KKyAgICAgICAgQW5kIHdlIGFsc28gaGF2ZSBzcGVjaWFsLXBvaW50ZXJzIGFuZCBvbGQg
bGluay10aW1lLWNvbnN0YW50cyB0byBhY2Nlc3MgdG8gcGVyIEpTR2xvYmFsT2JqZWN0IGNvbnN0
YW50cy4KKyAgICAgICAgV2UgaGF2ZSBieXRlY29kZSBpbnRyaW5zaWMgY29uc3RhbnRzLCBidXQg
aXQgaXMgb25seSBhdmFpbGFibGUgZm9yIHBlciBWTSB2YWx1ZXMuCisKKyAgICAgICAgSG93ZXZl
ciwgdGhlc2Ugb25lcyBoYXZlIG11bHRpcGxlIHByb2JsZW1zLgorCisgICAgICAgIDEuIHByaXZh
dGUtbmFtZS12YXJpYWJsZXMgaXMgdG9vIGNvc3RseS4gV2UgbmVlZCB0byBoYXZlIGFuIGVudHJ5
IGluIEpTR2xvYmFsT2JqZWN0J3MgdmFyaWFibGUsIHRoaXMgbWFrZXMgU3ltYm9sVGFibGUgb2Yg
SlNHbG9iYWxPYmplY3QgbGFyZ2UuCisgICAgICAgICAgIEl0IGFsc28gcmVxdWlyZXMgV2F0Y2hw
b2ludFNldCB0byBtYWtlIGl0IGNvbnN0YW50LWZvbGQgaW4gREZHLiBBbmQgYWNjZXNzaW5nIHRo
ZXNlIHZhcmlhYmxlcyBmcm9tIGJ1aWx0aW4gSlMgdGFrZXMgb3BfcmVzb2x2ZV9zY29wZSBhbmQg
b3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgIGVubGFyZ2luZyBieXRlY29kZSBhbmQgc2xv
dyBpbiBpbnRlcnByZXRlciBhbmQgYmFzZWxpbmUgY29tcGFyZWQgdG8ganVzdCBnZXR0aW5nIHRo
ZW0gYXMgYSBjb25zdGFudCByZWdpc3Rlci4KKyAgICAgICAgMi4gc3BlY2lhbC1wb2ludGVycyBh
cmUgdGFpbG9yZWQgdG8gb3Bfam5lX3B0ciBvcGNvZGUsIGFuZCBub3QgdXNhYmxlIGluIHRoZSBv
dGhlciBieXRlY29kZSBzaW5jZSB0aGlzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBWaXJ0
dWFsUmVnaXN0ZXIuCisgICAgICAgIDMuIE9sZCBsaW5rLXRpbWUtY29uc3RhbnRzIGltcGxlbWVu
dGF0aW9uIGlzIHB1dHRpbmcgYXJyYXkgb2YgYWxsIGxpbmstdGltZS1jb25zdGFudHMgb24gZWFj
aCBVbmxpbmtlZENvZGVCbG9jaywgZXZlbiBpZiBpdCBpcyBub3QgdXNlZC4gSWYgeW91IGluY3Jl
YXNlICMgb2YKKyAgICAgICAgICAgbGluay10aW1lLWNvbnN0YW50LCBpdCBpbmNyZWFzZXMgc2l6
ZW9mKFVubGlua2VkQ29kZUJsb2NrKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGluay10aW1lLWNvbnN0YW50IG1lY2hhbmlzbSBhbmQgcmVtb3ZlIHRoZSBh
Ym92ZSBvbGQgb25lcyBtb3N0bHkuIChwcml2YXRlLW5hbWUtdmFyaWFibGVzIHN0aWxsIGV4aXN0
cyBmb3IgV2ViQ29yZSBhbmQgQGFzc2VydCkuCisgICAgICAgIFdlIG1hbmFnZSBsaW5rLXRpbWUt
Y29uc3RhbnRzIGluIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnksIGFuZCBlbWl0IEludDMyOkxp
bmtUaW1lQ29uc3RhbnRJRCBjb25zdGFudCB3aGVuIGdlbmVyYXRpbmcgYW4gVW5saW5rZWRDb2Rl
QmxvY2suIExhdGVyLCB0aGlzIGNvbnN0YW50CisgICAgICAgIGlzIGFsdGVybmF0ZWQgdG8gYW4g
YWN0dWFsIHZhbHVlIHdoZW4gd2UgbGluayBVbmxpbmtlZENvZGVCbG9jayB0byBDb2RlQmxvY2sg
d2l0aCBzcGVjaWZpYyBKU0dsb2JhbE9iamVjdC4gcHJpdmF0ZS1uYW1lLXZhcmlhYmxlcyBhY2Nl
c3NlcyBhcmUgbm93IGNvbnZlcnRlZCB0bworICAgICAgICBjb25zdGFudCByZWdpc3RlciBzbyB0
aGF0IGl0IGlzIHZlcnkgZWZmaWNpZW50bHkgYWNjZXNzZWQgYW5kIGl0IHJlZHVjZXMgbWVtb3J5
IHVzZWQgZm9yIFN5bWJvbFRhYmxlIGFuZCBXYXRjaHBvaW50U2V0LiBvcF9qbmVfcHRyIHRha2Vz
IGxpbmstdGltZS1jb25zdGFudAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXJzIGluc3RlYWQgb2Yg
c3BlY2lhbC1wb2ludGVycywgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHNwZWNpYWwtcG9pbnRlcnMg
bWVjaGFuaXNtLiBXZSBhbHNvIHJlcGxhY2Ugb2xkIGxpbmstdGltZS1jb25zdGFudHMgd2l0aCBu
ZXcgb25lLCB3aGljaCByZWR1Y2VzCisgICAgICAgIHNpemVvZihVbmxpbmtlZENvZGVCbG9jayku
CisKKyAgICAgICAgRnVydGhlcm1vcmUsIG5ldyBsaW5rLXRpbWUtY29uc3RhbnQgc3VwcG9ydHMg
bGF6eSBpbml0aWFsaXphdGlvbiBieSB1c2luZyBMYXp5UHJvcGVydHkgaW4gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgYWxsb3dzIHVzIHRvIGxhemlseSBnZW5lcmF0ZSBtYW55IGludGVybmFsIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IGFyZSBwcmV2aW91c2x5IGluaXRpYWxpemVkIGVhZ2VybHkuIFRo
aXMgcmVkdWNlcyAjIG9mIGFsbG9jYXRlZCBKU0Z1bmN0aW9uIHNpZ25pZmljYW50bHkgd2hlbiBp
bml0aWFsaXppbmcgSlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1h
bnVhbGx5IGFkZHMgMjU2IHRvIE1hcmtlZFNwYWNlJ3Mgc2l6ZS1jbGFzcy4gV2UgZW1waXJpY2Fs
bHkga25vdyB0aGF0IGFkZGluZyAyNTYgaGVyZSBtYWtlcyBzZXF1ZW5jZSBvZiBzaXplLWNsYXNz
IGJldHRlciBmb3IgbWVtb3J5IGNvbnN1bXB0aW9uLgorICAgICAgICBCdXQgdGhpcyB3YXMgYWNo
aWV2ZWQgYnkgYWRkaW5nIGBzaXplb2YoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaylgLiBOb3cg
c2l6ZW9mKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spIGlzIGNoYW5nZWQgYnkgdGhpcyBwYXRj
aCwgYW5kIHRoaXMgcGF0Y2ggdW5pbnRlbnRpb25hbGx5CisgICAgICAgIGJyZWFrcyB0aGF0IHNl
cXVlbmNlLiBXZSBzaG91bGQgZXhwbGljaXRseSBhZGQgMjU2IGluc3RlYWQgb2YgYWRkaW5nIHNp
emVvZihVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSBhZGhvY2x5LgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaGVhZGVyLnB5OgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFs
X3ByaXZhdGVfY29kZV9uYW1lX21hY3JvKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanM6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAg
ICAgICAobmFrZWRDb25zdHJ1Y3Rvci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRD
b25zdHJ1Y3Rvci5Qcm9taXNlLnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0
cnVjdG9yLkludGVybmFsUHJvbWlzZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQ29uc3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAg
ICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNp
YWxQb2ludGVyLmguCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9u
U25pcHBldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmlu
ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVs
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAg
ICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBh
dHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRF
eHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9q
bmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBh
cnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlc29s
dmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBhcnNl
ci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1RpbWVDb25zdGFudCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsRnVuY3Rpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXBwbHlGdW5jdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5pY29k
ZUdldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojph
Y3R1YWxQb2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0
dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlciBjb25zdCk6CisKIDIwMTktMTEtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvcjI1
MTg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYyNWZmNjFkYjk5MGFk
N2Y2ODhhYThlYzE2ZjFkZjlkOGI2ZWM3NjIuLmZlNzBhMzUyMmQ2ZTNmYWM2OTAxNmZkNjhmYjA1
Mzk5NjczZTE0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUyMiw2
ICs1MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKICAgICBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAogICAgIGJ5dGVjb2RlL0xhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmgKKyAgICBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKICAg
ICBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKICAgICBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9u
UHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaApAQCAtNTI5
LDcgKzUzMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRp
b24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvU3BlY2lhbFBv
aW50ZXIuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1
Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGFiODQ2OWEyYWIxYzU4ZjI4ZjExNzIxYjQ1YjRiM2ZjMmM5MDAyODUu
LmE3MWUxNDAzZDMyN2RlZjkwM2RlM2I5ZTQyZjRlMjg0ZTBkZTRhY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zNjIsNyArMzYyLDYgQEAKIAkJMEY0RjgyOEMxRTMxQjk3NjAw
NzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRGODI4QTFFMzFCOTcxMDA3
NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCAqLzsgfTsKIAkJ
MEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MEFGM0IxOTNF
OEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovOyB9OwogCQkwRjU1
MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTUxM0E1MUQ1QTY4MkEwMEMzMkJEOCAvKiBGcmVl
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTQxQjAxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZlRnJv
bVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjU1OTg5NzE3Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBGNTE0RDEwNjND
MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU2QTFE
MzE1MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8q
IEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTgxMiw2ICsxODExLDcgQEAKIAkJRTM1Q0ExNTQxREJDM0E1QzAwRjgz
NTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
NUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3Rh
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjM3
RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBX
YXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI1ODUsOCArMjU4NSw2IEBACiAJCTBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAv
KiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJl
Q2xvYmJlclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTUxM0E1MUQ1
QTY4MkEwMEMzMkJEOCAvKiBGcmVlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmVlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1MTNBNzFE
NUE2OENCMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnJlZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQz
IC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRvTmF0aXZlRnJvbVZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVDMTkzMTcyNzZFNDYwMENFQUJG
RCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR0Fic3RyYWN0VmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0VmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2
NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MzUsNiAr
NDkzMyw4IEBACiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MzdF
RTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkUyMkY4RDYxMTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIzNyw2ICs4MjM3LDggQEAKIAkJCQlCQ0ZEOEM5
MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2
ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1NDY3
NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLywKKwkJCQlF
MzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5jcHAgKi8sCisJCQkJ
RTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLywKIAkJCQkw
RjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQk1
M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQk1M0ZBMkFFMDFDRjM3RjNGMDAyMjcxMUQgLyog
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCkBAIC04
Mjg0LDggKzgyODYsNiBAQAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRl
ZFN0YXR1c2VzLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VX
aGl0ZXNwYWNlLmggKi8sCi0JCQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQ
b2ludGVyLmNwcCAqLywKLQkJCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuaCAqLywKIAkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuY3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlw
ZS5oICovLAogCQkJCTBGQjQzOEEyMTkyNzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQuY3Bw
ICovLApAQCAtOTg0Myw2ICs5ODQzLDcgQEAKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAg
LyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAv
KiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVF
NyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzYzN0VFOTIzNkU1NkIwMDA5
NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIw
RkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
REU5QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAwOTYsNyArMTAwOTcsNiBAQAogCQkJCTBGREU4N0ZDMURGRTZFNTEw
MDY0QzM5MCAvKiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1
bmtKSVQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBT
cGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg1RjZCQzE4QzU1
M0ZFMDBGMTA2MjYgLyogU3BpbGxSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjNBQzc1MjE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eQppbmRleCAzMzQxOWY1NWY2MWM1NDRhZmM4Yzg0YzNjNzk2OTY3NWU3OTAxYjU2Li4wNDJiMzIy
YmI4YmRkZjEzNGE3ODAxYmE2ZmJkYjJhN2M1NWE5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtMTcyLDExICsxNzIsMTAg
QEAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2dsb2JhbF9wcml2YXRlX2NvZGVfbmFtZV9tYWNy
byhzZWxmKToKICAgICAgICAgZnVuY3Rpb25zLnNvcnQoa2V5PWxhbWJkYSB4OiB4LmZ1bmN0aW9u
X25hbWUpCiAgICAgICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CiAgICAgICAgICAgICBm
dW5jdGlvbl9hcmdzID0gewotICAgICAgICAgICAgICAgICd2YXJOYW1lJzogZ2V0X3Zhcl9uYW1l
KGZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlv
bl9uYW1lLAogICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1h
bmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pLAogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKHZhck5hbWUpcywgJShmdW5jTmFtZSlzLCAl
KGNvZGVOYW1lKXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMsICUoY29kZU5hbWUpcykgXFwiICUgZnVuY3Rpb25f
YXJncykKIAogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGM5MDhhZmI1MGUwNWMxOGNlNmRlMWIxZDdjZDY1ZDZjNTg4ZGUzMjgu
LjUxOTIxZDcxODYwOWJhMWU3YjQ4MTQxMDYzNDdhZWQyMmU4NjA4ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTI0NCw2ICsyNDQsNyBAQCBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAogYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCitieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcAog
Ynl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAt
MjYzLDcgKzI2NCw2IEBAIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRC
eUlkVmFyaWFudC5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9S
ZWR1Y2VXaGl0ZXNwYWNlLmNwcAotYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCiBieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggZGQzM2NhODAzNmEzMGJmNjRlMDhh
MGEzODdlZTFiNWI3MTFhNzhmMS4uZDQzZTQ4ZjBiYTMxZWJkY2Y4YmVkMThiNmU5YWIwYjhkYmY1
NjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBKU0NfQ09NTU9OX0JZVEVD
T0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXAogICAgIG1h
Y3JvKGFkZCkgXAorICAgIG1hY3JvKGFwcGx5RnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheUl0
ZXJhdG9yTmV4dEluZGV4KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kKSBcCiAgICAg
bWFjcm8oYXJyYXlJdGVyYXRvck5leHQpIFwKQEAgLTUyLDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvcktpbmQpIFwKICAgICBtYWNybyhhcnJheVNwZWNp
ZXNDcmVhdGUpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKKyAgICBtYWNybyhjYWxsRnVuY3Rpb24p
IFwKICAgICBtYWNybyhjaGFyQ29kZUF0KSBcCiAgICAgbWFjcm8oZXhlY3V0b3IpIFwKICAgICBt
YWNybyhpc1ZpZXcpIFwKQEAgLTczLDYgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFj
cm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAogICAgIG1hY3JvKG93bktleXMpIFwKICAgICBtYWNy
byhTZXQpIFwKKyAgICBtYWNybyh0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8o
dHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlTb3J0KSBcCiAgICAgbWFj
cm8odHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmluZGV4IDMwZmM2
NmU0Yjg5ZjJlYTBiZDY5YTdiODFkZTEzODUwZjAxY2RiNzQuLjY2Zjk1MWZiNGZjNmQxYzY1MWUw
MzA3NzBkZWQ1MTVlOTBkZWI5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMjM3LDE5ICsyMzcsMTYgQEAgZnVu
Y3Rpb24gUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNl
KHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNlKTsKICAgICB2YXIgY2FwdHVyZWRQ
cm9taXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxsb3cgdXNpbmcg
ZnVuY3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3QgPSBmdW5jdGlvbiBAcmVq
ZWN0KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNv
bHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7Ci0gICAgfTsK
LQogICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAgZnVuY3Rpb24gQHJl
c29sdmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBAcmVzb2x2ZVByb21p
c2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJl
c29sdXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0
dXJlZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAgICB9IGNhdGNoIChlcnJv
cikgewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJlamVjdFByb21pc2VXaXRo
Rmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7CiAgICAgfQog
CiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0yNjYsMTkgKzI2MywxNiBAQCBmdW5jdGlvbiBJbnRl
cm5hbFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFyIHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZSh0
aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyB0cnVlKTsKICAgICB2YXIgY2FwdHVyZWRQcm9t
aXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxsb3cgdXNpbmcgZnVu
Y3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3QgPSBmdW5jdGlvbiBAcmVqZWN0
KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZp
bmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7Ci0gICAgfTsKLQog
ICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAgZnVuY3Rpb24gQHJlc29s
dmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBAcmVzb2x2ZVByb21pc2VX
aXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlc29s
dXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
QHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJl
ZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJlamVjdFByb21pc2VXaXRoRmly
c3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBhZjgwNzY5MzMyYzljYjUwZTIyY2MzM2RhYzc0NWEy
ZGJlMGZlMzA0Li44NThhYjkwNTAyZTg0ZDcwNzkxNTMyNWY2OTNlZTNkNWQ1ODVjOGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
QEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcENvbnN0YW50cygpCiAgICAgICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bjo6T3RoZXI6CiAgICAgICAgICAgICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3Jp
cHRpb24gPSAiIjsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAgICAgICAgICAg
IHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIjogaW4gc291cmNlIGFzIGxp
bmtlLXRpbWUtY29uc3RhbnQiOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIgICBrJXUgPSAlcyVzXG4iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRvQ1N0cmluZyhjb25zdGFudC5nZXQoKSkuZGF0YSgpLCBz
b3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgICAgICAgICArK2k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggZDQxNjMzYzU1YjYwOWNkNTdlMjQzYjJiMWE0YzQ0
MDkyMTRjNWFkYS4uOTlmM2ViYjVjNjQyYTA5ZjQ0NDYzN2NiNjQwZGM1NWQzNTU2YmRhZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtNDIsNyArNDIsOCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQo
bmFtZSkgbV9ieXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkubmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljXyMjbmFtZSk7CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVf
SU5UUklOU0lDX05BTUVTX1RPX1NFVChuYW1lKSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmFkZCh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLmltcGwo
KSwgRW50cnkoJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfIyNuYW1lKSk7
CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RPX1NFVF9GT1Jf
TElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRk
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1w
bCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWUpOwogCiBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICA6IG1fdm0odm0p
CkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklO
U0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFN
RVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19F
QUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQorICAg
IEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRS
SU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5LX1RJTUVfQ09OU1RBTlQpCiAKICAgICBtX3VuZGVm
aW5lZC5zZXQobV92bSwganNVbmRlZmluZWQoKSk7CiAgICAgbV9JbmZpbml0eS5zZXQobV92bSwg
anNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7
CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVh
c29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dl
bmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpOb25lKSkpOwogfQogCi1CeXRl
Y29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK09wdGlvbmFsPEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29r
dXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFpZGVudC5pc1By
aXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZp
bmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNp
Y01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBlZTVmOTQ5MzVmMzhhNzRhNjE1Njc4NjliZi4uNTY3
YjAyNmI1ZTFkMDVjODM2YzAxOWM5MzdjODUwOTUzYzgyNWY3MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTM3LDcgKzEzOCw0NCBAQCBjbGFzcyBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKIAogICAgIHR5cGVkZWYgUmVnaXN0ZXJJRCogKEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6KiBFbWl0dGVyVHlwZSkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKik7CiAKLSAgICBFbWl0dGVyVHlwZSBsb29rdXAoY29uc3QgSWRlbnRpZmllciYp
IGNvbnN0OworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBFbWl0dGVy
ID0gMCwKKyAgICAgICAgTGlua1RpbWVDb25zdGFudCA9IDEsCisgICAgfTsKKworICAgIGNsYXNz
IEVudHJ5IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEVudHJ5KCkKKyAgICAgICAgICAgIDogbV90
eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZW1pdHRlciA9IG51
bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBFbnRyeShFbWl0dGVyVHlwZSBlbWl0dGVyKQor
ICAgICAgICAgICAgOiBtX3R5cGUoVHlwZTo6RW1pdHRlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9lbWl0dGVyID0gZW1pdHRlcjsKKyAgICAgICAgfQorCisgICAgICAgIEVudHJ5KExpbmtU
aW1lQ29uc3RhbnQgbGlua1RpbWVDb25zdGFudCkKKyAgICAgICAgICAgIDogbV90eXBlKFR5cGU6
OkxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGlua1RpbWVDb25z
dGFudCA9IGxpbmtUaW1lQ29uc3RhbnQ7CisgICAgICAgIH0KKworICAgICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgTGlua1RpbWVDb25zdGFudCBsaW5r
VGltZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50OyB9CisgICAg
ICAgIEVtaXR0ZXJUeXBlIGVtaXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2VtaXR0ZXI7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIEVtaXR0ZXJUeXBlIG1f
ZW1pdHRlcjsKKyAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgbV9saW5rVGltZUNvbnN0YW50
OworICAgICAgICB9OworICAgICAgICBUeXBlIG1fdHlwZTsKKyAgICB9OworCisgICAgT3B0aW9u
YWw8RW50cnk+IGxvb2t1cChjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAKICNkZWZpbmUgSlND
X0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgSlNW
YWx1ZSBuYW1lIyNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpOwogICAgIEpTQ19DT01NT05fQllU
RUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19FQUNIX05BTUUoSlNDX0RFQ0xBUkVfQllURUNPREVf
SU5UUklOU0lDX0NPTlNUQU5UX0dFTkVSQVRPUlMpCkBAIC0xNDUsNyArMTgzLDcgQEAgY2xhc3Mg
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAKIHByaXZhdGU6CiAgICAgVk0mIG1fdm07Ci0g
ICAgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFbWl0dGVyVHlwZSwgSWRlbnRp
ZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+LCBFbnRyeSwgSWRlbnRpZmllclJlcEhhc2g+IG1fYnl0ZWNvZGVJ
bnRyaW5zaWNNYXA7CiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0NP
TlNUQU5UX0dFTkVSQVRPUlMobmFtZSkgU3Ryb25nPFVua25vd24+IG1fIyNuYW1lOwogICAgIEpT
Q19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19TSU1QTEVfRUFDSF9OQU1FKEpT
Q19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggZDY1MmI2
NTg4NGM3OGIwM2JkODBkMmQ2N2Q0OGYxNjg2MTBiOWE3OC4uMzRjMTUyYTBkNjYyZjM1Mjk3ZGYx
NDQ0ODY0ZmI0YmJhMzQwZWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC02NCwxMCArNjQsNiBAQAogICAgIDpPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSwKIF0KIAotbmFtZXNwYWNlIDpTcGVjaWFsIGRvCi0gICAgdHlwZXMgWyA6UG9p
bnRlciBdCi1lbmQKLQogdGVtcGxhdGVzIFsKICAgICA6V3JpdGVCYXJyaWVyLAogICAgIDpXcml0
ZUJhcnJpZXJCYXNlLApAQCAtNjc1LDcgKzY3MSw3IEBACiBvcCA6am5lcV9wdHIsCiAgICAgYXJn
czogewogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBzcGVjaWFsUG9p
bnRlcjogU3BlY2lhbDo6UG9pbnRlciwKKyAgICAgICAgc3BlY2lhbFBvaW50ZXI6IFZpcnR1YWxS
ZWdpc3RlciwKICAgICAgICAgdGFyZ2V0TGFiZWw6IEJvdW5kTGFiZWwsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCA1ZWMyNDZjOTFkODJlY2U2MjRkZGRjMjZhYmI1ZDU1NDI0M2RiOTgyLi4wZjhlN2Y4
YjRmOTI0NDQ3MzgyYTVkOGU4ODEzNzYwN2Q0OWMyNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzk5LDEyICszOTksNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJs
b2NrLT5jb25zdGFudFJlZ2lzdGVycygpLCB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRzU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uKCksIHRvcExldmVsRXhlY3V0YWJsZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgTGlua1RpbWVDb25zdGFudENvdW50OyBpKyspIHsKLSAgICAgICAgTGlua1RpbWVD
b25zdGFudCB0eXBlID0gc3RhdGljX2Nhc3Q8TGlua1RpbWVDb25zdGFudD4oaSk7Ci0gICAgICAg
IGlmICh1bnNpZ25lZCByZWdpc3RlckluZGV4ID0gdW5saW5rZWRDb2RlQmxvY2stPnJlZ2lzdGVy
SW5kZXhGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKQotICAgICAgICAgICAgbV9jb25zdGFudFJl
Z2lzdGVyc1tyZWdpc3RlckluZGV4XS5zZXQodm0sIHRoaXMsIG1fZ2xvYmFsT2JqZWN0LT5qc0Nl
bGxGb3JMaW5rVGltZUNvbnN0YW50KHR5cGUpKTsKLSAgICB9Ci0KICAgICAvLyBXZSBhbHJlYWR5
IGhhdmUgdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQg
c2luY2Ugd2UgbmVlZCB0byBpbnN0YW50aWF0ZQogICAgIC8vIHRoZSBtb2R1bGUgZW52aXJvbm1l
bnRzIGJlZm9yZSBsaW5raW5nIHRoZSBjb2RlIGJsb2NrLiBXZSByZXBsYWNlIHRoZSBzdG9yZWQg
c3ltYm9sIHRhYmxlIHdpdGggdGhlIGFscmVhZHkgY2xvbmVkIG9uZS4KICAgICBpZiAoVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sg
PSBqc0R5bmFtaWNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHZtLCB1bmxp
bmtlZENvZGVCbG9jaykpIHsKQEAgLTkwNSwyOSArODk5LDM2IEBAIHZvaWQgQ29kZUJsb2NrOjpz
ZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYg
Y29uc3RhCiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewog
ICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gY29uc3RhbnRzW2ldLmdldCgpOwotCi0gICAgICAg
IGlmICghY29uc3RhbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3RhbnQuaXND
ZWxsKCkpIHsKLSAgICAgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBjb25zdGFudC5hc0NlbGwo
KTsKLSAgICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0ganNEeW5h
bWljQ2FzdDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAobV91bmxpbmtlZENvZGUtPndhc0NvbXBpbGVkV2l0aFR5cGVQcm9maWxlck9wY29kZXMoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1i
b2xUYWJsZS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5w
cmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAgICBzd2l0Y2ggKGNvbnN0YW50
c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpXSkgeworICAgICAgICBjYXNlIFNvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbjo6TGlua1RpbWVDb25zdGFudDoKKyAgICAgICAgICAgIGNvbnN0YW50ID0g
Z2xvYmFsT2JqZWN0LT5saW5rVGltZUNvbnN0YW50KHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3Rh
bnQ+KGNvbnN0YW50LmFzSW50MzJBc0FueUludCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyOgorICAgICAgICBjYXNl
IFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6SW50ZWdlcjoKKyAgICAgICAgY2FzZSBTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToKKyAgICAgICAgICAgIGlmICghY29uc3RhbnQuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50LmlzQ2VsbCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGNvbnN0YW50LmFzQ2VsbCgpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0ganNEeW5hbWljQ2Fz
dDxTeW1ib2xUYWJsZSo+KHZtLCBjZWxsKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5
bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogY2xvbmUgPSBz
eW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQodm0pOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHdhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xvbmU7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpzRHluYW1pY0Nhc3Q8SlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IHRlbXBsYXRlT2JqZWN0ID0gdG9wTGV2ZWxFeGVjdXRhYmxlLT5jcmVhdGVUZW1wbGF0ZU9iamVj
dChnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogY2xvbmUgPSBzeW1ib2xUYWJsZS0+Y2xvbmVT
Y29wZVBhcnQodm0pOwotICAgICAgICAgICAgICAgICAgICBpZiAod2FzQ29tcGlsZWRXaXRoRGVi
dWdnaW5nT3Bjb2RlcygpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUtPnNldFJhcmVE
YXRhQ29kZUJsb2NrKHRoaXMpOwotCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gY2xv
bmU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBkZXNjcmlwdG9yID0ganNEeW5h
bWljQ2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KHZtLCBjZWxsKSkgewotICAgICAg
ICAgICAgICAgICAgICBhdXRvKiB0ZW1wbGF0ZU9iamVjdCA9IHRvcExldmVsRXhlY3V0YWJsZS0+
Y3JlYXRlVGVtcGxhdGVPYmplY3QoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9yKTsKLSAgICAgICAg
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29uc3RhbnQgPSB0ZW1wbGF0ZU9iamVjdDsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotCiAgICAgICAg
IG1fY29uc3RhbnRSZWdpc3RlcnNbaV0uc2V0KHZtLCB0aGlzLCBjb25zdGFudCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCBlMjQ0ZmQ2MjcwOWI0MjVh
NjI4ZTIyNDU2NjM4YjBlNTYzY2RhZTA5Li5lZGEyNGJlNDY5NTY0YjJlNTBjNjRmZTYwODFiYTIx
ZjljZWQ5YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUg
IlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKLSNpbmNsdWRlICJTcGVj
aWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzE5Zjk3NTY4YTM5NTIyMTA2ZGQxMjcwY2I5YjExZTFhYTg5MGRiOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29u
c3RhbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCisjZGVmaW5lIFBS
SU5UX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBcCisgICAgY2FzZSBKU0M6OkxpbmtU
aW1lQ29uc3RhbnQ6Om5hbWU6IFwKKyAgICAgICAgb3V0LnByaW50KCNuYW1lKTsgXAorICAgICAg
ICByZXR1cm47CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6Okxp
bmtUaW1lQ29uc3RhbnQgY29uc3RhbnQpCit7CisgICAgc3dpdGNoIChjb25zdGFudCkgeworICAg
ICAgICBKU0NfRk9SRUFDSF9MSU5LX1RJTUVfQ09OU1RBTlRTKFBSSU5UX0xJTktfVElNRV9DT05T
VEFOVCkKKyAgICB9Cit9CisKKyN1bmRlZiBQUklOVF9MSU5LX1RJTUVfQ09OU1RBTlQKKworfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmtUaW1lQ29uc3RhbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjZlNzI2MjQwOWM4NTc0MzJkNGIyZmNmYWNm
MTdjNzYwZDE3YjY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSlNDQnVpbHRpbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsK
K2NsYXNzIEpTR2xvYmFsT2JqZWN0OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0xJTktfVElNRV9D
T05TVEFOVFModikgXAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fUFJJVkFURV9H
TE9CQUxfTkFNRSh2KSBcCisgICAgdih0aHJvd1R5cGVFcnJvckZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihpbXBvcnRNb2R1bGUsIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldEhlYWQsIG51
bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldE5leHQsIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tl
dEtleSwgbnVsbHB0cikgXAorICAgIHYobWFwQnVja2V0VmFsdWUsIG51bGxwdHIpIFwKKyAgICB2
KHNldEJ1Y2tldEhlYWQsIG51bGxwdHIpIFwKKyAgICB2KHNldEJ1Y2tldE5leHQsIG51bGxwdHIp
IFwKKyAgICB2KHNldEJ1Y2tldEtleSwgbnVsbHB0cikgXAorICAgIHYocHJvcGVydHlJc0VudW1l
cmFibGUsIG51bGxwdHIpIFwKKyAgICB2KG93bktleXMsIG51bGxwdHIpIFwKKyAgICB2KGVucXVl
dWVKb2IsIG51bGxwdHIpIFwKKyAgICB2KG1ha2VUeXBlRXJyb3IsIG51bGxwdHIpIFwKKyAgICB2
KHR5cGVkQXJyYXlMZW5ndGgsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlHZXRPcmlnaW5h
bENvbnN0cnVjdG9yLCBudWxscHRyKSBcCisgICAgdih0eXBlZEFycmF5U29ydCwgbnVsbHB0cikg
XAorICAgIHYoaXNUeXBlZEFycmF5VmlldywgbnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheVN1
YmFycmF5Q3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0JvdW5kRnVuY3Rpb24sIG51bGxwdHIp
IFwKKyAgICB2KGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaW5z
dGFuY2VPZiwgbnVsbHB0cikgXAorICAgIHYoQnVpbHRpbkxvZywgbnVsbHB0cikgXAorICAgIHYo
QnVpbHRpbkRlc2NyaWJlLCBudWxscHRyKSBcCisgICAgdihSZWdFeHAsIG51bGxwdHIpIFwKKyAg
ICB2KHRydW5jLCBudWxscHRyKSBcCisgICAgdihQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihJ
bnRlcm5hbFByb21pc2UsIG51bGxwdHIpIFwKKyAgICB2KGRlZmF1bHRQcm9taXNlVGhlbiwgbnVs
bHB0cikgXAorICAgIHYocmVwZWF0Q2hhcmFjdGVyLCBudWxscHRyKSBcCisgICAgdihhcnJheVNw
ZWNpZXNDcmVhdGUsIG51bGxwdHIpIFwKKyAgICB2KGlzQXJyYXksIG51bGxwdHIpIFwKKyAgICB2
KGlzQXJyYXlTbG93LCBudWxscHRyKSBcCisgICAgdihjb25jYXRNZW1jcHksIG51bGxwdHIpIFwK
KyAgICB2KGFwcGVuZE1lbWNweSwgbnVsbHB0cikgXAorICAgIHYoaG9zdFByb21pc2VSZWplY3Rp
b25UcmFja2VyLCBudWxscHRyKSBcCisgICAgdihJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24sIG51
bGxwdHIpIFwKKyAgICB2KFNldCwgbnVsbHB0cikgXAorICAgIHYodGhpc1RpbWVWYWx1ZSwgbnVs
bHB0cikgXAorICAgIHYoaXNDb25zdHJ1Y3RvciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJv
dG9GbGFnc0dldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIs
IG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlciwgbnVsbHB0cikg
XAorICAgIHYocmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJl
Z0V4cFByb3RvU291cmNlR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b1N0aWNr
eUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLCBudWxs
cHRyKSBcCisgICAgdihyZWdFeHBCdWlsdGluRXhlYywgbnVsbHB0cikgXAorICAgIHYocmVnRXhw
Q3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc1JlZ0V4cCwgbnVsbHB0cikgXAorICAgIHYocmVn
RXhwTWF0Y2hGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBTZWFyY2hGYXN0LCBudWxscHRy
KSBcCisgICAgdihyZWdFeHBTcGxpdEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3Rv
dHlwZVN5bWJvbFJlcGxhY2UsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFRlc3RGYXN0LCBudWxs
cHRyKSBcCisgICAgdihzdHJpbmdJbmNsdWRlc0ludGVybmFsLCBudWxscHRyKSBcCisgICAgdihz
dHJpbmdTcGxpdEZhc3QsIG51bGxwdHIpIFwKKyAgICB2KHN0cmluZ1N1YnN0ckludGVybmFsLCBu
dWxscHRyKSBcCisgICAgdihtYWtlQm91bmRGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoaGFz
T3duTGVuZ3RoUHJvcGVydHksIG51bGxwdHIpIFwKKyAgICB2KGRhdGVUaW1lRm9ybWF0LCBudWxs
cHRyKSBcCisgICAgdih3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCwgbnVsbHB0
cikgXAorICAgIHYod2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsLCBudWxs
cHRyKSBcCisgICAgdihPYmplY3QsIG51bGxwdHIpIFwKKyAgICB2KEFycmF5LCBudWxscHRyKSBc
CisgICAgdihhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihjYWxsRnVuY3Rpb24sIG51
bGxwdHIpIFwKKworCisjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNv
ZGUpIG5hbWUsCitlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90IHsKKyAgICBK
U0NfRk9SRUFDSF9MSU5LX1RJTUVfQ09OU1RBTlRTKERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5U
KQorfTsKKyN1bmRlZiBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVAorI2RlZmluZSBDT1VOVF9M
SU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgMSArCitzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bWJlck9mTGlua1RpbWVDb25zdGFudHMgPSBKU0NfRk9SRUFDSF9MSU5LX1RJTUVfQ09O
U1RBTlRTKENPVU5UX0xJTktfVElNRV9DT05TVEFOVCkgMDsKKyN1bmRlZiBDT1VOVF9MSU5LX1RJ
TUVfQ09OU1RBTlQKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitj
bGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlND
OjpMaW5rVGltZUNvbnN0YW50KTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWFkM2YyNGNhMDQ4MWQxMWE2N2ViZDFiZmJhYmU4NjZmZDMxZDQ4
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIK
LQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0j
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdm9pZCogYWN0dWFs
UG9pbnRlckZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTcGVjaWFsOjpQb2ludGVy
IHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+YWN0dWFsUG9pbnRlckZvcihw
b2ludGVyKTsKLX0KLQotdm9pZCogYWN0dWFsUG9pbnRlckZvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIHJldHVybiBhY3R1YWxQb2ludGVy
Rm9yKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHBvaW50ZXIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OlNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICBzd2l0Y2gg
KHBvaW50ZXIpIHsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6Q2FsbEZ1bmN0aW9uOgotICAgICAg
ICBvdXQucHJpbnQoIkNhbGxGdW5jdGlvbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBK
U0M6OlNwZWNpYWw6OkFwcGx5RnVuY3Rpb246Ci0gICAgICAgIG91dC5wcmludCgiQXBwbHlGdW5j
dGlvbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6Ok9iamVjdENv
bnN0cnVjdG9yOgotICAgICAgICBvdXQucHJpbnQoIk9iamVjdENvbnN0cnVjdG9yIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEpTQzo6U3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3RvcjoKLSAg
ICAgICAgb3V0LnByaW50KCJBcnJheUNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEpTQzo6U3BlY2lhbDo6VGFibGVTaXplOgotICAgICAgICBvdXQucHJpbnQoIlRhYmxl
U2l6ZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OTJiYWI3NmVhMmJmZjdlNmU4ODM1MzVlYTRk
NzZjNDFiMDQ2NzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBKU0MgewotCi1j
bGFzcyBDb2RlQmxvY2s7Ci1jbGFzcyBKU0dsb2JhbE9iamVjdDsKLQotbmFtZXNwYWNlIFNwZWNp
YWwgewotZW51bSBQb2ludGVyIDogdW5zaWduZWQgewotICAgIENhbGxGdW5jdGlvbiwKLSAgICBB
cHBseUZ1bmN0aW9uLAotICAgIE9iamVjdENvbnN0cnVjdG9yLAotICAgIEFycmF5Q29uc3RydWN0
b3IsCi0gICAgVGFibGVTaXplIC8vIE5vdCBhIHJlYWwgc3BlY2lhbCBwb2ludGVyLiBVc2UgdGhp
cyB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwb2ludGVycy4KLX07Ci19IC8vIG5hbWVzcGFj
ZSBTcGVjaWFsCi0KLWVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCB7Ci0gICAgVGhyb3dUeXBl
RXJyb3JGdW5jdGlvbiwKLX07Ci1jb25zdCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0YW50Q291bnQg
PSAxOwotCi1pbmxpbmUgYm9vbCBwb2ludGVySXNGdW5jdGlvbihTcGVjaWFsOjpQb2ludGVyIHBv
aW50ZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChwb2ludGVyLCBwb2ludGVyIDwgU3BlY2lhbDo6
VGFibGVTaXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJvb2wgcG9pbnRlcklz
Q2VsbChTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChwb2lu
dGVyLCBwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCogYWN0dWFsUG9pbnRlckZvcihKU0dsb2JhbE9iamVjdCosIFNwZWNpYWw6OlBvaW50
ZXIpOwotdm9pZCogYWN0dWFsUG9pbnRlckZvcihDb2RlQmxvY2sqLCBTcGVjaWFsOjpQb2ludGVy
KTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmlu
dFN0cmVhbTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpTcGVjaWFs
OjpQb2ludGVyKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAyMzRmYTU3N2M1
YWYwYTEyMTZjN2I0ZDZkMDQ0N2QwYmNmOGQ0YzQ5Li5kNWRkZWU4ZDU2MDc3MDMyM2IxZmQ1ZjFh
Y2NjY2MwNTAyYzEyNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTc2LDggKzc2LDYgQEAgVW5saW5rZWRDb2Rl
QmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENv
ZGVUeXBlIGNvZGUKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9k
ZSkKICAgICAsIG1fbWV0YWRhdGEoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpjcmVhdGUoKSkKIHsK
LSAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXJJbmRleCA6IG1fbGlua1RpbWVDb25zdGFu
dHMpCi0gICAgICAgIGNvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDA7CiAgICAgQVNTRVJUKG1fY29u
c3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2lu
ZCgpKSk7CiAgICAgQVNTRVJUKG1fY29kZVR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVUeXBlKSk7CiAgICAgQVNTRVJUKG1fZGlkT3B0aW1pemUgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE1peGVkVHJpU3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDczOWRhNzgzNTY4ZDNlYjI2MzFlZWYxYTcy
NDI5Mjg3OTdmNTY2OS4uZDYwNzM2MDE0ZGQxZTMxNTcxM2E4NTJlODdkYTY1NjE0MTYzMDA4OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQ
YXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2lu
dGVyLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRl
ICJVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
QEAgLTE4MCwyNyArMTc5LDE3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVu
ZChzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KLSAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCisgICAg
dW5zaWduZWQgYWRkQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0YW50KQog
ICAgIHsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgYXV0byBsb2NrZXIg
PSBsb2NrRHVyaW5nTWFya2luZyh2bS5oZWFwLCBjZWxsTG9jaygpKTsKICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHQpOwotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
eXBlKTsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgTGlua1RpbWVDb25zdGFudENvdW50KTsKLSAg
ICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tpbmRleF0gPSByZXN1bHQ7CiAgICAgICAgIG1fY29u
c3RhbnRSZWdpc3RlcnMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKLSAgICAgICAg
bV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbjo6T3RoZXIpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmxhc3QoKS5z
ZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGxpbmtUaW1lQ29uc3Rh
bnQpKSk7CisgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLmFwcGVu
ZChTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXhGb3JMaW5r
VGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKLSAgICB7Ci0gICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOwotICAgICAgICBBU1NFUlQo
aW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAgICAgICByZXR1cm4gbV9saW5rVGlt
ZUNvbnN0YW50c1tpbmRleF07Ci0gICAgfQotCiAgICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmll
cjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lz
dGVyczsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3Rl
cihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXND
b25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQpAQCAtNDA2LDggKzM5NSw2IEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1f
dGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7CiAKLSAg
ICBzdGQ6OmFycmF5PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVD
b25zdGFudHM7Ci0KICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBt
X2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggMmRiODE4ZjBiOWI1NGIyMTViYWYwNmNjYzZhZTMxYzNjMjlhZGZh
ZS4uODM2ZmQ1NzhmMmMxODRmYjMzNjI1NTg3MWM2YjEyYzNjMTM2N2EwZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTMwOCw5ICszMDgsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogewogICAg
IEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZh
cmlhYmxlcy0+c2l6ZSgpKTsKIAotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1f
bGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51
bGxwdHI7Ci0KICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2Nh
dGUgc3BhY2UgZm9yICJ0aGlzIgogCiAgICAgZW1pdEVudGVyKCk7CkBAIC0zNjAsOSArMzU3LDYg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVu
Y3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBmdW5jdGlv
bk5vZGUtPnVzZXNFdmFsKCkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2st
PmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3Rl
ciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKLSAgICAgICAgY29uc3RhbnRSZWdpc3Rl
ciA9IG51bGxwdHI7Ci0KICAgICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1ib2xUYWJsZSA9IFN5
bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7CiAgICAgZnVuY3Rpb25TeW1ib2xUYWJsZS0+c2V0VXNl
c05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAgaW50IHN5bWJvbFRhYmxl
Q29uc3RhbnRJbmRleCA9IDA7CkBAIC03ODgsMTEgKzc4Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAKICAgICAgICAgLy8gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5j
dGlvbkNhbGxDaGVjayhAcHJvbWlzZSwgdGhyb3duVmFsdWUpOwogICAgICAgICAvLyByZXR1cm4g
QHByb21pc2U7Ci0gICAgICAgIGF1dG8gdmFyUmVqZWN0UHJvbWlzZSA9IHZhcmlhYmxlKHByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5yZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5n
RnVuY3Rpb25DYWxsQ2hlY2tQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIG1vdmUoc2NvcGUuZ2V0KCksIGVt
aXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhclJlamVjdFByb21pc2UpKTsKLSAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdFByb21pc2UgPSBlbWl0R2V0RnJvbVNjb3BlKG5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyUmVqZWN0UHJvbWlzZSwgVGhyb3dJZk5vdEZvdW5k
KTsKLQorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJvbWlzZSA9IG1vdmVMaW5r
VGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OnJlamVjdFByb21pc2VXaXRo
Rmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayk7CiAgICAgICAgIENhbGxBcmd1bWVudHMg
YXJncygqdGhpcywgbnVsbHB0ciwgMik7CiAgICAgICAgIGVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBtb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rl
cigwKSwgcHJvbWlzZVJlZ2lzdGVyKCkpOwpAQCAtODQ4LDkgKzgzOCw2IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5s
aW5rZWRFdmFsQ29kCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChl
dmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKICAg
ICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkp
CiB7Ci0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50
UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKLQogICAgIG1f
Y29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOwogCiAgICAgcHVzaFREWlZhcmlhYmxlcygq
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGlt
aXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOwpAQCAtOTEwLDkgKzg5Nyw2IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2Rl
KiBtb2R1bGVQcm9ncmFtTm9kCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwogCi0gICAgZm9yIChh
dXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQotICAg
ICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRhYmxlKiBtb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAg
ICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3Vz
ZXNOb25TdHJpY3RFdmFsKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRT
Y29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsKQEAgLTE0NDIs
MTIgKzE0MjYsMTIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZkZhbHNlKFJl
Z2lzdGVySUQqIGNvbmQsIExhYmVsJiB0YXJnZXQpCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdl
dCkKIHsKLSAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgU3BlY2lhbDo6Q2FsbEZ1bmN0
aW9uLCB0YXJnZXQuYmluZCh0aGlzKSk7CisgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQs
IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNhbGxGdW5j
dGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwmIHRhcmdl
dCkKIHsKLSAgICBPcEpuZXFQdHI6OmVtaXQodGhpcywgY29uZCwgU3BlY2lhbDo6QXBwbHlGdW5j
dGlvbiwgdGFyZ2V0LmJpbmQodGhpcykpOworICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBjb25k
LCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjphcHBseUZ1
bmN0aW9uKSwgdGFyZ2V0LmJpbmQodGhpcykpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjpoYXNDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKQEAgLTMxMDEsNyAr
MzA4NSw3IEBAIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3Rl
ZEZ1bmN0aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3QsCiAgICAgICAgIGlmIChjYWxsQXJndW1l
bnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPj0gMikKICAgICAgICAgICAgIHJldHVy
biBOb0V4cGVjdGVkRnVuY3Rpb247CiAgICAgICAgIAotICAgICAgICBPcEpuZXFQdHI6OmVtaXQo
dGhpcywgZnVuYywgU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3IsIHJlYWxDYWxsLT5iaW5kKHRo
aXMpKTsKKyAgICAgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGZ1bmMsIG1vdmVMaW5rVGltZUNv
bnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6Ok9iamVjdCksIHJlYWxDYWxsLT5iaW5k
KHRoaXMpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKQog
ICAgICAgICAgICAgZW1pdE5ld09iamVjdChkc3QpOwpAQCAtMzExNyw3ICszMTAxLDcgQEAgRXhw
ZWN0ZWRGdW5jdGlvbiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cGVjdGVkRnVuY3Rpb25Tbmlw
cGV0KFJlZ2lzdGVySUQqIGRzdCwKICAgICAgICAgaWYgKGNhbGxBcmd1bWVudHMuYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSA+IDIpCiAgICAgICAgICAgICByZXR1cm4gTm9FeHBlY3RlZEZ1
bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGZ1bmMsIFNw
ZWNpYWw6OkFycmF5Q29uc3RydWN0b3IsIHJlYWxDYWxsLT5iaW5kKHRoaXMpKTsKKyAgICAgICAg
T3BKbmVxUHRyOjplbWl0KHRoaXMsIGZ1bmMsIG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIs
IExpbmtUaW1lQ29uc3RhbnQ6OkFycmF5KSwgcmVhbENhbGwtPmJpbmQodGhpcykpOwogICAgICAg
ICAKICAgICAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGlm
IChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPT0gMikKQEAgLTMy
ODUsNyArMzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwCiAgICAgaWYgKGF0dHJpYnV0
ZXMuaGFzR2V0KCkgfHwgYXR0cmlidXRlcy5oYXNTZXQoKSkgewogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVz
Lmhhc0dldCgpIHx8ICFhdHRyaWJ1dGVzLmhhc1NldCgpKQotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3JGdW5jdGlvbiA9IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29u
c3RhbnQ6OlRocm93VHlwZUVycm9yRnVuY3Rpb24pOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3JGdW5jdGlvbiA9IG1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3Rh
bnQ6OnRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBnZXR0ZXI7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQpAQCAtNDQ3NCwxMCAr
NDQ1OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXN5bmNJdGVy
YXRvcihSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhCiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gbmV4dE1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvci5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLm5leHQpOwogCi0gICAgYXV0byB2YXJDcmVhdGVBc3luY0Zyb21T
eW5jSXRlcmF0b3IgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY3Jl
YXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJpdmF0ZU5hbWUoKSk7Ci0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgbW92ZShzY29wZS5nZXQoKSwgZW1p
dFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyQ3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9y
KSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvciA9
IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJDcmVhdGVB
c3luY0Zyb21TeW5jSXRlcmF0b3IsIFRocm93SWZOb3RGb3VuZCk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvciA9IG1vdmVMaW5rVGltZUNvbnN0YW50
KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvcik7
CiAKICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIsIDIpOwogICAgIGVtaXRM
b2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDJkNzIxZWI3NzkwYjM3MzAyMzc4ZmZhY2I5MTIyNzJkZmI4ZTdjNGYuLmY1YjM1NjhkMWQ3NTUw
Mjg3NGZkNjdhZDU1ZmQ4ZDgyZjNhZTc1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQxLDYgKzQxLDcg
QEAKICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxh
YmVsLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3Rh
bnQuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5j
bHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKQEAgLTEyMTYsNyArMTIxNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVSZWdpc3RlciB7
IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7IG51
bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9pc0Rlcml2ZWRDb25zdHVjdG9yIHsgbnVs
bHB0ciB9OwotICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNb
TGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICAgICAgUmVnaXN0ZXJJRCogbV9saW5rVGltZUNv
bnN0YW50UmVnaXN0ZXJzW251bWJlck9mTGlua1RpbWVDb25zdGFudHNdIHsgfTsKICAgICAgICAg
UmVnaXN0ZXJJRCogbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX3Byb21pc2VSZWdpc3RlciB7
IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDJlMDNiZTBiN2M3NWRkYjAyN2VjNGU2ZjY1NjIxOGQ4
ZTBmZTUxYTYuLjUyNDY4ZTFmMmFhMTFlMTIwNmFlN2Y0NWExNWYyOTBiMzlkYWY0NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBSZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3Rl
cklEKiBJbXBvcnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbXBvcnRNb2R1
bGUgPSBnZW5lcmF0b3IuZW1pdEdldEdsb2JhbFByaXZhdGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmltcG9ydE1vZHVs
ZVByaXZhdGVOYW1lKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbXBvcnRNb2R1bGUgPSBn
ZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6
aW1wb3J0TW9kdWxlKTsKICAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51
bGxwdHIsIDEpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmd1bWVudHMuYXJn
dW1lbnRSZWdpc3RlcigwKSwgbV9leHByKTsKQEAgLTk4NSw3ICs5ODUsMTEgQEAgUmVnaXN0ZXJJ
RCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgcmV0dXJuICh0aGlzLT4qbV9lbWl0dGVyKShnZW5lcmF0b3IsIGRzdCk7CisgICAgaWYg
KG1fZW50cnkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0
ZXIpCisgICAgICAgIHJldHVybiAodGhpcy0+Km1fZW50cnkuZW1pdHRlcigpKShnZW5lcmF0b3Is
IGRzdCk7CisgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0
YW50KGRzdCwgbV9lbnRyeS5saW5rVGltZUNvbnN0YW50KCkpOwogfQogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEJ5SWREaXJlY3QoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMTAxMyw5ICsxMDE3
LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
Z2V0QnlJZERpcmVjdFByaXZhdGUoQnl0ZWNvZGVHCiAKIHN0YXRpYyBKU1Byb21pc2U6OkZpZWxk
IHByb21pc2VJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQog
ewotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkRmxhZ3MpCisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCku
dHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAg
IGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19wcm9taXNlRmllbGRGbGFncykKICAgICAgICAgcmV0dXJuIEpTUHJvbWlz
ZTo6RmllbGQ6OkZsYWdzOwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHJvbWlzZUZpZWxkUmVhY3Rpb25zT3JSZXN1bHQp
CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KQogICAgICAg
ICByZXR1cm4gSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQ7CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNQcm9taXNlOjpGaWVsZDo6Rmxh
Z3M7CkBAIC0xMDIzLDEzICsxMDI4LDE0IEBAIHN0YXRpYyBKU1Byb21pc2U6OkZpZWxkIHByb21p
c2VJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogCiBzdGF0
aWMgSlNHZW5lcmF0b3I6OkZpZWxkIGdlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29k
ZUludHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQor
ICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0
ZSkKICAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7Ci0gICAgaWYgKG5v
ZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19n
ZW5lcmF0b3JGaWVsZE5leHQpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkTmV4dCkK
ICAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsKLSAgICBpZiAobm9kZS0+
ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVy
YXRvckZpZWxkVGhpcykKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRUaGlzKQogICAg
ICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOwotICAgIGlmIChub2RlLT5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9y
RmllbGRGcmFtZSkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkKICAgICAg
ICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWU7CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKQEAg
LTEwMzcsMTkgKzEwNDMsMjAgQEAgc3RhdGljIEpTR2VuZXJhdG9yOjpGaWVsZCBnZW5lcmF0b3JJ
bnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2QKIAogc3RhdGljIEpT
QXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5
dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3Rh
dGUpCisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFN0YXRlKQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwot
ICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JG
aWVsZE5leHQpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6TmV4dDsK
LSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9y
RmllbGRUaGlzKQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlRoaXM7
Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZEZyYW1lKQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVt
aXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0
b3JGaWVsZEZyYW1lKQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OkZy
YW1lOwotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24pCisgICAgaWYg
KG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQogICAgICAgICByZXR1
cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN1c3BlbmRSZWFzb247Ci0gICAgaWYgKG5vZGUt
PmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hc3lu
Y0dlbmVyYXRvckZpZWxkUXVldWVGaXJzdCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0
b3JGaWVsZFF1ZXVlRmlyc3QpCiAgICAgICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVs
ZDo6UXVldWVGaXJzdDsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QpCisg
ICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRRdWV1ZUxhc3QpCiAgICAgICAgIHJl
dHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6UXVldWVMYXN0OwogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpT
dGF0ZTsKQEAgLTQwOTYsMTAgKzQxMDMsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAgICAgICAvLyBsb2FkIGFuZCBj
YWxsIEBhc3luY0Z1bmN0aW9uUmVzdW1lCi0gICAgICAgIGF1dG8gdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuYXN5bmNGdW5j
dGlvblJlc3VtZVByaXZhdGVOYW1lKCkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKHNj
b3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7
Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhc3luY0Z1bmN0aW9uUmVzdW1lID0gZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQo
KSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXN5
bmNGdW5jdGlvblJlc3VtZSA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRy
LCBMaW5rVGltZUNvbnN0YW50Ojphc3luY0Z1bmN0aW9uUmVzdW1lKTsKIAogICAgICAgICBDYWxs
QXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCA0KTsKICAgICAgICAgdW5zaWduZWQg
YXJndW1lbnRDb3VudCA9IDA7CkBAIC00NTc4LDExICs0NTgyLDcgQEAgdm9pZCBPYmplY3RQYXR0
ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIHJocykKICAgICBJZGVudGlmaWVyU2V0IGV4Y2x1ZGVkU2V0OwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBhZGRNZXRob2Q7CiAgICAgaWYgKG1fY29udGFpbnNSZXN0RWxlbWVudCAmJiBtX2Nv
bnRhaW5zQ29tcHV0ZWRQcm9wZXJ0eSkgewotICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLlNldFByaXZh
dGVOYW1lKCkpOwotCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsKLSAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNldENvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0Q29uc3RydWN0b3IgPSBnZW5l
cmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6U2V0
KTsKIAogICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAwKTsK
ICAgICAgICAgZXhjbHVkZWRMaXN0ID0gZ2VuZXJhdG9yLmVtaXRDb25zdHJ1Y3QoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBzZXRDb25zdHJ1Y3Rvci5nZXQoKSwgc2V0Q29uc3RydWN0b3IuZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKQEAgLTQ2MzMsMTEgKzQ2MzMsNyBAQCB2b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjpi
aW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQog
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5ld09iamVjdCA9IGdlbmVyYXRvci5lbWl0
TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIC8vIGxvYWQgYW5kIGNhbGwgQGNvcHlEYXRhUHJvcGVydGllcwotICAgICAgICAgICAg
YXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5i
dWlsdGluTmFtZXMoKS5jb3B5RGF0YVByb3BlcnRpZXNQcml2YXRlTmFtZSgpKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsKLSAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IuZW1pdEdl
dEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRo
cm93SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQ
cm9wZXJ0aWVzID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtU
aW1lQ29uc3RhbnQ6OmNvcHlEYXRhUHJvcGVydGllcyk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDMpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkp
OwpAQCAtNDgxMCwxMSArNDgwNiw3IEBAIFJlZ2lzdGVySUQqIE9iamVjdFNwcmVhZEV4cHJlc3Np
b25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvCiAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKHNyYy5nZXQoKSwgbV9leHByZXNzaW9uKTsKICAgICAKICAgICAvLyBs
b2FkIGFuZCBjYWxsIEBjb3B5RGF0YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnMKLSAgICBhdXRvIHZh
ciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9uc1ByaXZhdGVOYW1lKCkpOwotICAg
IAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKLSAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb3B5RGF0
YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGllcyA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVD
b25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50Ojpjb3B5RGF0YVByb3BlcnRpZXNOb0V4
Y2x1c2lvbnMpOwogICAgIAogICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxw
dHIsIDIpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggZTBlZWY0OTE3YWE2ODFmYWMyOTRjOTg4NDk4MjViMmQ5M2YwMGYxYS4u
MzM3OGFkMDkyZjZhMjQyMDMzY2Y0MDc2ODNkOTM4OTVkM2QzY2Q0MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTYzNDIsMTEgKzYz
NDIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6IHsKICAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKLSAgICAg
ICAgICAgIFNwZWNpYWw6OlBvaW50ZXIgc3BlY2lhbFBvaW50ZXIgPSBieXRlY29kZS5tX3NwZWNp
YWxQb2ludGVyOwotICAgICAgICAgICAgQVNTRVJUKHBvaW50ZXJJc0NlbGwoc3BlY2lhbFBvaW50
ZXIpKTsKLSAgICAgICAgICAgIEpTQ2VsbCogYWN0dWFsUG9pbnRlciA9IHN0YXRpY19jYXN0PEpT
Q2VsbCo+KAotICAgICAgICAgICAgICAgIGFjdHVhbFBvaW50ZXJGb3IobV9pbmxpbmVTdGFja1Rv
cC0+bV9jb2RlQmxvY2ssIHNwZWNpYWxQb2ludGVyKSk7Ci0gICAgICAgICAgICBGcm96ZW5WYWx1
ZSogZnJvemVuUG9pbnRlciA9IG1fZ3JhcGguZnJlZXplKGFjdHVhbFBvaW50ZXIpOworICAgICAg
ICAgICAgRnJvemVuVmFsdWUqIGZyb3plblBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyht
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoYnl0ZWNvZGUubV9zcGVj
aWFsUG9pbnRlci5vZmZzZXQoKSkpOwogICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZz
ZXQgPSBqdW1wVGFyZ2V0KGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogICAgICAgICAgICAgTm9k
ZSogY2hpbGQgPSBnZXQoYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgICAgICAgICBpZiAoYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2hhc0p1bXBlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCmluZGV4IGNhMGYxMjY3MDk4ZDNhMWJhZjFkMmJhZDdi
MTlkYTJkNDVhMzNkMDIuLjc3ZTE3OGY0YmMwM2E3MGRjNGYzNDY0ZmY1OWM3M2RiY2M3YTlhYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKQEAgLTEzOSw4
ICsxMzksNyBAQCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgc2l6ZUNsYXNzZXMoKQogICAgICAgICAg
ICAgLy8gTWFudWFsbHkgaW5qZWN0IHNpemUgY2xhc3NlcyBmb3Igb2JqZWN0cyB3ZSBrbm93IHdp
bGwgYmUgYWxsb2NhdGVkIGluIGhpZ2ggdm9sdW1lLgogICAgICAgICAgICAgLy8gRklYTUU6IEFs
bCBvZiB0aGVzZSB0aGluZ3Mgc2hvdWxkIGhhdmUgSXNvU3Vic3BhY2VzLgogICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTg3NgotICAgICAg
ICAgICAgYWRkKHNpemVvZihVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSk7Ci0gICAgICAgICAg
ICBhZGQoc2l6ZW9mKEpTU3RyaW5nKSk7CisgICAgICAgICAgICBhZGQoMjU2KTsKIAogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIC8vIFNvcnQgYW5kIGRlZHVwbGljYXRlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMGQwNDk5NDU4MGQ5YjM4ODFj
OTAyYjAxYWJhM2U2MWQ5NjAzNmU1OS4uOGViZTQ5ZmViYmY1MTM1YjUzNWUzY2RkNzY5NjU2ODE1
MDUzZGE2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC00
NzEsMTEgKzQ3MSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSm5lcVB0cj4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgc3JjID0gYnl0ZWNvZGUubV92YWx1ZS5v
ZmZzZXQoKTsKLSAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGJ5dGVjb2RlLm1fc3BlY2lhbFBv
aW50ZXI7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdldENvbnN0YW50T3BlcmFuZChi
eXRlY29kZS5tX3NwZWNpYWxQb2ludGVyLm9mZnNldCgpKTsKKyAgICBBU1NFUlQoc3BlY2lhbFBv
aW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVu
dEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBlcXVh
bCA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoYWN0dWFsUG9pbnRlckZv
cihtX2NvZGVCbG9jaywgcHRyKSkpOworICAgIENDYWxsSGVscGVyczo6SnVtcCBlcXVhbCA9IGJy
YW5jaFB0cihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW1QdHIoc3BlY2lhbFBvaW50ZXIuYXNDZWxs
KCkpKTsKICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKDEpLCAmbWV0YWRhdGEubV9oYXNKdW1wZWQp
OwogICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOwogICAgIGVxdWFsLmxpbmsodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggM2Uw
Y2ViNDY5M2E1ODk1ZjNhZmViYzk2MmE5YzE0M2YwODI4YzUzMS4uNGU5NDI0NTQ3OWYzZjQ3Njk3
YThiNjkzYzVkZjFmMDEwZWIyMzJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcApAQCAtNDc4LDEyICs0NzgsMTMgQEAgdm9pZCBKSVQ6OmVtaXRf
b3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7CiAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgaW50
IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7Ci0gICAgU3BlY2lhbDo6UG9pbnRlciBw
dHIgPSBieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyOworICAgIEpTVmFsdWUgc3BlY2lhbFBvaW50
ZXIgPSBnZXRDb25zdGFudE9wZXJhbmQoYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRlci5vZmZzZXQo
KSk7CisgICAgQVNTRVJUKHNwZWNpYWxQb2ludGVyLmlzQ2VsbCgpKTsKICAgICB1bnNpZ25lZCB0
YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRM
YWJlbCk7CiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBub3RD
ZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsKLSAgICBKdW1wIGVxdWFsID0gYnJhbmNoUHRy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihhY3R1YWxQb2ludGVyRm9yKG1fY29kZUJsb2Nr
LCBwdHIpKSk7CisgICAgSnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW1QdHIoc3BlY2lhbFBvaW50ZXIuYXNDZWxsKCkpKTsKICAgICBub3RDZWxsLmxpbmsodGhp
cyk7CiAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgJm1ldGFkYXRhLm1faGFzSnVtcGVkKTsK
ICAgICBhZGRKdW1wKGp1bXAoKSwgdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMzM3ZWUy
MmI0OTNkMGI1YWU0ZDM3NDJkYjEyMmY1MjNiZWFmM2Y2YS4uMzE1NTQ4ZjEwYjEyMGU5ZTZmNTFi
MjEwMjg4MTUyMDZlMjY2NTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTQ2Miw2ICs0NjIsMTgg
QEAgbWFjcm8gbG9hZFZhcmlhYmxlKGdldCwgZmllbGROYW1lLCBpbmRleFJlZywgdGFnUmVnLCBw
YXlsb2FkUmVnKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleFJlZywgOF0sIHBh
eWxvYWRSZWcKIGVuZAogCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVy
ZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3Rh
bnQoc2l6ZSwgaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBzaXplKEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4TmFycm93LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleFdpZGUxNiwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXhXaWRlMzIsIG1hY3JvIChGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCkKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Bh
eWxvYWRdLCBwYXlsb2FkCisgICAgICAgIHN1YnAgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
IGluZGV4CisgICAgICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZwor
ICAgICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGVuZCkKK2VuZAorCiAjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVy
ZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CiAjIGNoYW5nZWQuCiBtYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIGluZGV4LCB0YWcsIHBheWxvYWQpCkBAIC0xNzEwLDEyICsxNzIy
LDEwIEBAIHVuZGVmaW5lZE9yTnVsbEp1bXBPcChqbnVuZGVmaW5lZF9vcl9udWxsLCBPcEpudW5k
ZWZpbmVkT3JOdWxsLAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQ
dHIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdl
dChtX3ZhbHVlLCB0MCkKLSAgICBnZXR1KHNpemUsIE9wSm5lcVB0ciwgbV9zcGVjaWFsUG9pbnRl
ciwgdDEpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0Ml0sIHQyCisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIsIHQxKQor
ICAgIGxvYWRDb25zdGFudChzaXplLCB0MSwgdDMsIHQyKQogICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAotICAgIGxvYWRwIEpTR2xvYmFs
T2JqZWN0OjptX3NwZWNpYWxQb2ludGVyc1t0MiwgdDEsIDRdLCB0MQotICAgIGJwZXEgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorICAgIGJwZXEg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAogLm9w
Sm5lcVB0ckJyYW5jaDoKICAgICBtZXRhZGF0YSh0NSwgdDIpCiAgICAgc3RvcmViIDEsIE9wSm5l
cVB0cjo6TWV0YWRhdGE6Om1faGFzSnVtcGVkW3Q1XQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAwNDQzZjBjZmU4
YjM3MjdlYzk0YmQ0ZDU4OTcwOTYxMGI0MjljODZhLi41NTg4ZTViODM0NTA2MmJjYzdmYWQyZGZk
Mzk0YjY4NTg2NDg4YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNDY1LDYgKzQ2NSwzMCBAQCBtYWNybyBs
b2FkVmFyaWFibGUoZ2V0LCBmaWVsZE5hbWUsIHZhbHVlUmVnKQogICAgIGxvYWRxIFtjZnIsIHZh
bHVlUmVnLCA4XSwgdmFsdWVSZWcKIGVuZAogCisjIEluZGV4IGFuZCB2YWx1ZSBtdXN0IGJlIGRp
ZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29u
c3RhbnQoc2l6ZSwgaW5kZXgsIHZhbHVlKQorICAgIG1hY3JvIGxvYWROYXJyb3coKQorICAgICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3ZhbHVlXSwgdmFsdWUKKyAg
ICAgICAgbG9hZHEgLShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleE5hcnJvdyAqIDgpW3ZhbHVl
LCBpbmRleCwgOF0sIHZhbHVlCisgICAgZW5kCisKKyAgICBtYWNybyBsb2FkV2lkZTE2KCkKKyAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHZhbHVlCisgICAgICAgIGxvYWRwIENvZGVCbG9j
azo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt2YWx1ZV0sIHZhbHVl
CisgICAgICAgIGxvYWRxIC0oRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhXaWRlMTYgKiA4KVt2
YWx1ZSwgaW5kZXgsIDhdLCB2YWx1ZQorICAgIGVuZAorCisgICAgbWFjcm8gbG9hZFdpZGUzMigp
CisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB2YWx1ZQorICAgICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdmFsdWVdLCB2
YWx1ZQorICAgICAgICBzdWJwIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4V2lkZTMyLCBpbmRl
eAorICAgICAgICBsb2FkcSBbdmFsdWUsIGluZGV4LCA4XSwgdmFsdWUKKyAgICBlbmQKKworICAg
IHNpemUobG9hZE5hcnJvdywgbG9hZFdpZGUxNiwgbG9hZFdpZGUzMiwgbWFjcm8gKGxvYWQpIGxv
YWQoKSBlbmQpCitlbmQKKwogIyBJbmRleCBhbmQgdmFsdWUgbXVzdCBiZSBkaWZmZXJlbnQgcmVn
aXN0ZXJzLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCBpbmRleCwgdmFsdWUpCiAgICAgbWFjcm8gbG9hZE5hcnJvdygpCkBAIC0xODE2
LDExICsxODQwLDkgQEAgdW5kZWZpbmVkT3JOdWxsSnVtcE9wKGpudW5kZWZpbmVkX29yX251bGws
IE9wSm51bmRlZmluZWRPck51bGwsCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bfam5lcV9wdHIs
IE9wSm5lcVB0ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgZ2V0KG1fdmFsdWUsIHQwKQotICAgIGdldHUoc2l6ZSwgT3BKbmVxUHRyLCBtX3NwZWNp
YWxQb2ludGVyLCB0MSkKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKLSAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9zcGVjaWFsUG9pbnRlcnNbdDIsIHQxLCBQdHJTaXplXSwgdDEKLSAgICBicG5lcSB0MSwg
W2NmciwgdDAsIDhdLCAub3BKbmVxUHRyVGFyZ2V0CisgICAgZ2V0KG1fc3BlY2lhbFBvaW50ZXIs
IHQxKQorICAgIGxvYWRDb25zdGFudChzaXplLCB0MSwgdDIpCisgICAgYnBuZXEgdDIsIFtjZnIs
IHQwLCA4XSwgLm9wSm5lcVB0clRhcmdldAogICAgIGRpc3BhdGNoKCkKIAogLm9wSm5lcVB0clRh
cmdldDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggY2Fm
MDMwODI5MjFkMTI5NWEwNDI4ZGIwY2JlMDQxMmMzYWNmMGM5OS4uY2M1OTdmNWI0NGI5ZTcxNzlm
NWRlNTViMGVlZDJiZjg2OTA1ZWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTIwMCw4ICsyMDAsOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAg
ICAgICAgIHVzZXNBcmd1bWVudHMoKTsKIAogICAgICAgICBpZiAoaWRlbnQuaXNTeW1ib2woKSkg
ewotICAgICAgICAgICAgaWYgKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgZW1p
dHRlciA9IG1fdm0uYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlKEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQsIGxvY2F0aW9uLCBl
bWl0dGVyLCBpZGVudCwgbnVsbHB0ciwgc3RhcnQsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAg
YXV0byBlbnRyeSA9IG1fdm0uYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVu
dCk7CisgICAgICAgICAgICBpZiAoZW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6VHlwZTo6Q29uc3RhbnQsIGxvY2F0aW9uLCBlbnRyeS52YWx1ZSgpLCBpZGVudCwgbnVsbHB0
ciwgc3RhcnQsIHN0YXJ0LCBlbmQpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBzdGFydCk7CkBAIC0x
Mzg0LDggKzEzODUsOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIGlmIChmdW5jLT5p
c0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXNPcHRpb25hbENh
bGwpOwogICAgICAgICBCeXRlY29kZUludHJpbnNpY05vZGUqIGludHJpbnNpYyA9IHN0YXRpY19j
YXN0PEJ5dGVjb2RlSW50cmluc2ljTm9kZSo+KGZ1bmMpOwotICAgICAgICBpZiAoaW50cmluc2lj
LT50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpDb25zdGFudCkKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShC
eXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkZ1bmN0aW9uLCBsb2NhdGlvbiwgaW50cmluc2lj
LT5lbWl0dGVyKCksIGludHJpbnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RT
dGFydCwgZGl2b3RFbmQpOworICAgICAgICBpZiAoaW50cmluc2ljLT50eXBlKCkgPT0gQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpDb25zdGFudCAmJiBpbnRyaW5zaWMtPmVudHJ5KCkudHlw
ZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpCisgICAgICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+
ZW50cnkoKSwgaW50cmluc2ljLT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CiAgICAgfQogCiAgICAgaWYgKGZ1bmMtPmlzT3B0aW9uYWxDaGFpbigpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmlu
ZGV4IDc1ODlkN2M5MWU4OTVlYjJkOTk2MzNkYmY1YjRhYTVkMjZhZWI4NGUuLjljN2I5YTI4MjA3
M2M1NzZhNjM0OWU0ZDY5YzIyMGJhNWNjZGVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC00MTMsMTAgKzQxMywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5cGUgdHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRW1pdHRlclR5cGUgZW1pdHRlciwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCkKKyAgICBpbmxpbmUgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNp
Y05vZGUoVHlwZSB0eXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBCeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBlbnRyeSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwg
bV9lbWl0dGVyKGVtaXR0ZXIpCisgICAgICAgICwgbV9lbnRyeShlbnRyeSkKICAgICAgICAgLCBt
X2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgICAgICAsIG1fdHlwZSh0
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGFhNDQ4NjY0ZDFkNDgx
NDBkMTBhNDU5MGMwNjdkNTAxYThiNjI4N2YuLmZhZDUzMjhhMmI5NDQzN2RiMmRhZTdmMWM4NmIy
ODljMWEzNDFmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTk0NCwx
NCArOTQ0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgRnVuY3Rpb24KICAgICAg
ICAgfTsKIAotICAgICAgICB0eXBlZGVmIFJlZ2lzdGVySUQqIChCeXRlY29kZUludHJpbnNpY05v
ZGU6OiogRW1pdHRlclR5cGUpKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwotCi0g
ICAgICAgIEJ5dGVjb2RlSW50cmluc2ljTm9kZShUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFbWl0dGVyVHlwZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBCeXRlY29kZUludHJpbnNp
Y05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeTo6RW50cnksIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgICAgICBib29sIGlzQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgICAgICBFbWl0dGVyVHlw
ZSBlbWl0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9lbWl0dGVyOyB9CisgICAgICAgIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5IGVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeTsg
fQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudDsgfQogCiAjZGVmaW5lIEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5D
VElPTlMobmFtZSkgUmVnaXN0ZXJJRCogZW1pdF9pbnRyaW5zaWNfIyNuYW1lKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopOwpAQCAtOTY0LDcgKzk2Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3R5cGUgPT0gVHlwZTo6RnVuY3Rpb247IH0KIAotICAgICAgICBFbWl0dGVyVHlwZSBtX2Vt
aXR0ZXI7CisgICAgICAgIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5IG1fZW50cnk7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05v
ZGUqIG1fYXJnczsKICAgICAgICAgVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNjAzNWE0OTA5MjZjNGFlNWZjMzMyN2Fm
ZmVkZjQyNzZiOTNmMDY1Ny4uZWI5ZDk5M2IyNTE0YzY3MjllMTAyZjY1ZTcyMGE3MjhhZjJjMjQz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApA
QCAtMTgwMSw3ICsxODAxLDYgQEAgY2xhc3MgQ2FjaGVkQ29kZUJsb2NrIDogcHVibGljIENhY2hl
ZE9iamVjdDxDb2RlQmxvY2tUeXBlPiB7CiBwcml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBt
X3RoaXNSZWdpc3RlcjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwotICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIExpbmtUaW1lQ29uc3RhbnRDb3VudD4gbV9saW5rVGltZUNv
bnN0YW50czsKIAogICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNTdHJpY3RNb2RlIDogMTsKQEAgLTIwMzksOSArMjAzOCw2IEBAIEFMV0FZU19JTkxJTkUgVW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKERlY29kZXImIGRlY29kZXIsIFN0cnVj
dHVyZSoKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CiBBTFdBWVNfSU5MSU5FIHZv
aWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgVW5saW5rZWRDb2RlQmxvY2smIGNvZGVCbG9jaykgY29uc3QKIHsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIGNvZGVCbG9jay5t
X2xpbmtUaW1lQ29uc3RhbnRzW2ldID0gbV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQogICAgIG1f
Y29uc3RhbnRSZWdpc3RlcnMuZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50UmVn
aXN0ZXJzLCAmY29kZUJsb2NrKTsKICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbi5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKTsKICAgICBtX2V4cHJlc3Npb25JbmZvLmRlY29kZShkZWNvZGVyLCBjb2RlQmxv
Y2subV9leHByZXNzaW9uSW5mbyk7CkBAIC0yMjA3LDkgKzIyMDMsNiBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgQ2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29ucwogICAgIG1fY29kZUdlbmVyYXRpb25Nb2RlID0gY29kZUJsb2NrLm1fY29kZUdl
bmVyYXRpb25Nb2RlOwogICAgIG1fY29kZVR5cGUgPSBjb2RlQmxvY2subV9jb2RlVHlwZTsKIAot
ICAgIGZvciAodW5zaWduZWQgaSA9IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaS0tOykKLSAgICAg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tpXSA9IGNvZGVCbG9jay5tX2xpbmtUaW1lQ29uc3RhbnRz
W2ldOwotCiAgICAgbV9tZXRhZGF0YS5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fbWV0YWRh
dGEuZ2V0KCkpOwogICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX3Jh
cmVEYXRhLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCmluZGV4IDQ3ZmNkMzM4YjQwNTk4MzZjZDM2ODFlODRlMDFmYWI3NDMzOTc2NzQuLjI1OTll
MmM1NjI5MTBmOTgxNDZjOTE4YjUyMjQ5Yzg1NWJkMmE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTEyOSw3ICsxMjksOCBAQCBib29sIGlzSW50
NTIoZG91YmxlKTsKIGVudW0gY2xhc3MgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIDogdWludDhf
dCB7CiAgICAgT3RoZXIsCiAgICAgSW50ZWdlciwKLSAgICBEb3VibGUKKyAgICBEb3VibGUsCisg
ICAgTGlua1RpbWVDb25zdGFudCwKIH07CiAKIGNsYXNzIEpTVmFsdWUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGM2NWIwYjM3
MGQwMjU3NWUwMGIxZjUwNDkwOTkxMDdlNzcwZTcyOGQuLmI4NjJiNGQ4Y2U4OTcwNDA4MmMxZjUy
ZjZjNjYzNTMyZDhiM2ZjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNSw2ICsxMzUsNyBAQAogI2luY2x1ZGUgIkpTV2l0
aFNjb3BlLmgiCiAjaW5jbHVkZSAiTGF6eUNsYXNzU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxhenlQcm9wZXJ0eUlubGluZXMuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50Lmgi
CiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTWFwQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJNYXBJdGVyYXRvclByb3RvdHlwZS5oIgpAQCAtNDExLDYgKzQxMiw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVucXVldWVKb2IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsCiBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCAwKQogICAgICwg
bV92bSgmdm0pCisgICAgLCBtX2xpbmtUaW1lQ29uc3RhbnRzKG51bWJlck9mTGlua1RpbWVDb25z
dGFudHMpCiAgICAgLCBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KGFkb3B0UmVm
KG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogICAgICwgbV9oYXZpbmdBQmFkVGltZVdh
dGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCiAgICAgLCBt
X3ZhckluamVjdGlvbldhdGNocG9pbnQoYWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRj
aGVkKSkpCkBAIC01MjIsOCArNTI0LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgSlNGdW5j
dGlvbiogaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKHZtLCB0aGlzLCAmY2FsbEZ1bmN0aW9u
LCAmYXBwbHlGdW5jdGlvbiwgJmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwotICAgIG1fY2Fs
bEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKLSAgICBtX2FwcGx5RnVuY3Rp
b24uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKICAgICBtX2FycmF5UHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVu
Y3Rpb24+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5z
dHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZywgTm9JbnRyaW5zaWMpKTsKQEAgLTcyMyw3
ICs3MjMsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2dlbmVy
YXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
LnNldCh2bSwgdGhpcywgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
QXN5bmNHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9hc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogCi0gICAgbV9wcm9taXNlUHJvdG9UaGVuRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5
cGVUaGVuQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpKTsKKyAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0
UHJvbWlzZVRoZW4gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVu
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbildLnNl
dCh2bSwgdGhpcywgZGVmYXVsdFByb21pc2VUaGVuKTsKIAogI2RlZmluZSBDUkVBVEVfUFJPVE9U
WVBFX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBp
bnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIGlmIChmZWF0
dXJlRmxhZykgeyBcCiAgICAgICAgIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIGNhcGl0YWxO
YW1lIyNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV8gIyMgcHJvdG90eXBl
QmFzZSAjIyBQcm90b3R5cGUuZ2V0KCkpKSk7IFwKQEAgLTc1MCwxOCArNzUxLDIxIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9i
amVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2Jq
ZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ok9iamVjdCld
LnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogCiAgICAgSlNGdW5jdGlvbiogdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik7Ci0gICAgbV90aHJvd1R5cGVFcnJvckZ1
bmN0aW9uLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dGhy
b3dUeXBlRXJyb3JGdW5jdGlvbildLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JGdW5jdGlv
bik7CiAKICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKTsKICAgICBtX2Z1bmN0aW9uQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlz
LCBmdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29u
c3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7
CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6QXJyYXkpXS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOwogICAgIAog
ICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwg
bV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwg
dGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1fcmVnRXhwR2xvYmFsRGF0YS5jYWNoZWRS
ZXN1bHQoKS5yZWNvcmQodm0sIHRoaXMsIG51bGxwdHIsIGpzRW1wdHlTdHJpbmcodm0pLCBNYXRj
aFJlc3VsdCgwLCAwKSk7CiAgICAgCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIpCkBA
IC03ODMsNiArNzg3LDggQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIG1fcHJvbWlz
ZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAgICBtX2lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OlByb21pc2UpXS5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1
Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6SW50ZXJuYWxQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgCiAgICAgbV9ldmFsRXJyb3JTdHJ1Y3R1cmUuaW5pdExh
dGVyKAogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkg
ewpAQCAtODQyLDkgKzg0OCw2IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkFycmF5LCBhcnJheUNv
bnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPlJlZ0V4cCwgcmVnRXhwQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5PYmplY3RQcml2YXRlTmFt
ZSgpLCBvYmplY3RDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5BcnJheVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0b3IsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLQogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlf
QlVGRkVSKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5TaGFyZWRBcnJheUJ1ZmZlciwgc2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvciwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
QXRvbWljcyIpLCBhdG9taWNzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC05MTcsMTgwICs5MjAsMjI2IEBAIGNhcGl0YWxOYW1l
ICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/
IGNhcGl0YWxOYW1lCiAgICAgaWYgKE9wdGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVy
KCkpCiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5Mb2FkZXIsIG1vZHVsZUxvYWRlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBKU0Z1bmN0aW9uKiBidWlsdGluTG9nID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlk
ZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKLSAgICBKU0Z1bmN0aW9u
KiBidWlsdGluRGVzY3JpYmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnBy
b3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5E
ZXNjcmliZSk7Ci0KLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RydW5jID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWF0aFByb3RvRnVuY1RydW5jLCBUcnVu
Y0ludHJpbnNpYyk7Ci0KLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1Byb3BlcnR5SXNFbnVt
ZXJhYmxlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFs
RnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY093
bktleXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxG
dW5jT3duS2V5cyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJbXBvcnRNb2R1bGUgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jSW1wb3J0
TW9kdWxlKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01ha2VUeXBlRXJyb3IgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jTWFrZVR5cGVF
cnJvcik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5TGVuZ3RoID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2
YXRlRnVuY0xlbmd0aCk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0
T3JpZ2luYWxDb25zdHJ1Y3RvciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKTsK
LSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlTb3J0ID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1Nv
cnQpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNUeXBlZEFycmF5VmlldyA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljKTsKLSAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY1R5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTdWJhcnJheUNyZWF0ZSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc0JvdW5kRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBpc0JvdW5k
RnVuY3Rpb24pOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSGFzSW5zdGFuY2VCb3VuZEZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaGFzSW5z
dGFuY2VCb3VuZEZ1bmN0aW9uKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0luc3RhbmNl
T2YgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBvYmplY3RQcml2
YXRlRnVuY0luc3RhbmNlT2YpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVGhpc1RpbWVW
YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGRhdGVQcm90
b0Z1bmNHZXRUaW1lKTsKLSNpZiBFTkFCTEUoSU5UTCkKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY0RhdGVUaW1lRm9ybWF0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KTsKLSNlbmRpZgotICAgIEpTRnVuY3Rpb24q
IHByaXZhdGVGdW5jSXNBcnJheVNsb3cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAs
IFN0cmluZygpLCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyk7Ci0gICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkp
OwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jQXBwZW5kTWVtY3B5ID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5k
TWVtY3B5KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1
Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJp
dmF0ZUZ1bmNNYXBCdWNrZXROZXh0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBT
dHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBKU01hcEJ1Y2tldE5leHRJbnRy
aW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jTWFwQnVja2V0S2V5ID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNr
ZXRLZXksIEpTTWFwQnVja2V0S2V5SW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY01hcEJ1Y2tldFZhbHVlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1ZSwgSlNNYXBCdWNrZXRWYWx1ZUludHJp
bnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNr
ZXRIZWFkLCBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZh
dGVGdW5jU2V0QnVja2V0TmV4dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCwgSlNTZXRCdWNrZXROZXh0SW50cmlu
c2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1NldEJ1Y2tldEtleSA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0
S2V5LCBKU1NldEJ1Y2tldEtleUludHJpbnNpYyk7Ci0KICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4
cFByb3RvRmxhZ3NHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBl
LmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5mbGFncyk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpXS5zZXQodm0sIHRo
aXMsIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJv
dG9HbG9iYWxHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdl
dCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5nbG9iYWwpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKLSAgICBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLnNldCh2bSwgdGhpcywg
cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVy
KV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b0dsb2JhbEdldHRlcik7CiAgICAgR2V0dGVyU2V0
dGVyKiByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIgPSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1f
cmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5pZ25vcmVDYXNlKTsKICAg
ICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9JZ25v
cmVDYXNlR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIp
OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIgPSBnZXRHZXR0
ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5t
dWx0aWxpbmUpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpy
ZWdFeHBQcm90b011bHRpbGluZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9NdWx0
aWxpbmVHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIg
PSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0
eU5hbWVzLT5zb3VyY2UpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpyZWdFeHBQcm90b1NvdXJjZUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9T
b3VyY2VHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIg
PSBnZXRHZXR0ZXJCeUlkKHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0
eU5hbWVzLT5zdGlja3kpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpyZWdFeHBQcm90b1N0aWNreUdldHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9T
dGlja3lHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVy
ID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVy
dHlOYW1lcy0+dW5pY29kZSk7CiAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwot
ICAgIG1fcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9V
bmljb2RlR2V0dGVyKTsKLSAgICBKU09iamVjdCogYnVpbHRpblJlZ0V4cEV4ZWMgPSBhc09iamVj
dChtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVj
KS5hc0NlbGwoKSk7Ci0gICAgbV9yZWdFeHBQcm90b0V4ZWMuc2V0KHZtLCB0aGlzLCBidWlsdGlu
UmVnRXhwRXhlYyk7Ci0gICAgSlNPYmplY3QqIHJlZ0V4cFN5bWJvbFJlcGxhY2UgPSBhc09iamVj
dChtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBs
YWNlU3ltYm9sKS5hc0NlbGwoKSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKV0u
c2V0KHZtLCB0aGlzLCByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIpOworICAgIEpTRnVuY3Rpb24q
IHJlZ0V4cFN5bWJvbFJlcGxhY2UgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fcmVnRXhwUHJvdG90
eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpKTsKICAg
ICBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5zZXQodm0sIHRoaXMsIHJlZ0V4cFN5bWJvbFJl
cGxhY2UpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cEJ1aWx0aW5FeGVjKV0uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8
SlNGdW5jdGlvbio+KG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmV4ZWMpKSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSldLnNl
dCh2bSwgdGhpcywgbV9yZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cmVwbGFjZVN5bWJvbCkuYXNDZWxsKCkpOworCisgICAgbV9saW5rVGltZUNvbnN0YW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U2V0KV0uc2V0KHZtLCB0
aGlzLCBzZXRDb25zdHJ1Y3Rvcik7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNBcnJheSldLnNldCh2bSwgdGhpcywgYXJy
YXlDb25zdHJ1Y3Rvci0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5KS5h
c0NlbGwoKSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6Y2FsbEZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBjYWxsRnVuY3Rp
b24pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OmFwcGx5RnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIGFwcGx5RnVuY3Rpb24p
OworCisjZGVmaW5lIElOSVRfUFJJVkFURV9HTE9CQUwoZnVuY05hbWUsIGNvZGUpIFwKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpmdW5jTmFtZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeyBcCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7IFwKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBjb2RlICMjIENvZGVHZW5lcmF0b3IoaW5pdC52bSks
IGdsb2JhbE9iamVjdCkpOyBcCisgICAgICAgIH0pOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5f
RlVOQ1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShJTklUX1BSSVZBVEVfR0xPQkFMKQorI3VuZGVm
IElOSVRfUFJJVkFURV9HTE9CQUwKIAotI2RlZmluZSBDUkVBVEVfUFJJVkFURV9HTE9CQUxfRlVO
Q1RJT04odmFyTmFtZSwgZnVuY05hbWUsIGNvZGUpIEpTRnVuY3Rpb24qIHZhck5hbWUgIyMgUHJp
dmF0ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlICMjIENvZGVHZW5lcmF0
b3Iodm0pLCB0aGlzKTsKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVf
R0xPQkFMX05BTUUoQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKQotI3VuZGVmIENSRUFU
RV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTgotCisgICAgLy8gRklYTUU6IEluaXRpYWxpemluZyB0
aGVtIGxhemlseS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzNzk1CiAgICAgSlNPYmplY3QqIGFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBBcnJheUl0
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwot
ICAgIGFycmF5SXRlcmF0b3JDb25zdHJ1Y3RvclByaXZhdGVGdW5jdGlvbi0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFycmF5SXRlcmF0b3JQcm90b3R5cGUpOwor
ICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6
QXJyYXlJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogYXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yUHJvdG90eXBlID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIHRoaXMsIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAgYXN5bmNGcm9t
U3luY0l0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUp
OworICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6QXN5bmNGcm9tU3luY0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNP
YmplY3QqIG1hcEl0ZXJhdG9yUHJvdG90eXBlID0gTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgdGhpcywgTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIG1hcEl0ZXJhdG9yQ29uc3RydWN0
b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpNYXBJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbWFwSXRlcmF0b3JQcm90b3R5cGUpOwogCiAg
ICAgSlNPYmplY3QqIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlID0gUmVnRXhwU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhwU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpOwotICAgIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rp
b24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWdFeHBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25z
dGFudChMaW5rVGltZUNvbnN0YW50OjpSZWdFeHBTdHJpbmdJdGVyYXRvcikpLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIHNldEl0ZXJhdG9yUHJvdG90eXBlID0gU2V0SXRlcmF0
b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIHNl
dEl0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVyYXRvclByb3RvdHlwZSk7CisgICAganNDYXN0
PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpTZXRJdGVyYXRv
cikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2V0SXRlcmF0
b3JQcm90b3R5cGUpOwogCi0gICAgbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgbmV3UHJvbWlzZUNhcGFiaWxpdHlQcml2YXRlRnVuY3Rpb24pOwotICAgIG1fcmVz
b2x2ZVByb21pc2VGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHJlc29sdmVQcm9taXNlUHJpdmF0ZUZ1
bmN0aW9uKTsKLSAgICBtX3JlamVjdFByb21pc2VGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHJlamVj
dFByb21pc2VQcml2YXRlRnVuY3Rpb24pOworICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCisg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6bWFwQnVja2V0SGVhZCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwg
bWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkLCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0TmV4dCldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXROZXh0LCBKU01hcEJ1Y2tldE5l
eHRJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0S2V5KV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEtleSwg
SlNNYXBCdWNrZXRLZXlJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFwQnVja2V0
VmFsdWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5j
TWFwQnVja2V0VmFsdWUsIEpTTWFwQnVja2V0VmFsdWVJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6c2V0QnVja2V0SGVhZCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRIZWFkLCBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWMp
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6c2V0QnVja2V0TmV4dCldLmluaXRMYXRlcihbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXROZXh0LCBKU1NldEJ1Y2tl
dE5leHRJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6c2V0QnVja2V0S2V5KV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtl
eSwgSlNTZXRCdWNrZXRLZXlJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjppbXBv
cnRNb2R1bGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNJ
bXBvcnRNb2R1bGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cHJvcGVydHlJc0VudW1lcmFibGUp
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm9wZXJ0eUlz
RW51bWVyYWJsZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpvd25LZXlzKV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jT3duS2V5cykpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjplbnF1ZXVlSm9iKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsICJlbnF1ZXVlSm9i
Il9zLCBlbnF1ZXVlSm9iKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9y
KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlMZW5ndGgpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6dHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnR5cGVkQXJy
YXlTb3J0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jU29ydCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc1R5cGVkQXJyYXlWaWV3
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jSXNUeXBlZEFycmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYykpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNy
ZWF0ZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0JvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGlzQm91bmRGdW5jdGlvbikpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MCwgU3RyaW5nKCksIGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbikpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjppbnN0YW5jZU9mKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBvYmpl
Y3RQcml2YXRlRnVuY0luc3RhbmNlT2YpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkxv
ZyldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5M
b2cpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QnVpbHRpbkRlc2NyaWJlKV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkRlc2NyaWJlKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnRydW5jKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxK
U0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUo
aW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygp
LCBtYXRoUHJvdG9GdW5jVHJ1bmMsIFRydW5jSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OnJlcGVhdENoYXJhY3RlcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwg
c3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKSk7CisgICAgICAgIH0pOworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmFy
cmF5U3BlY2llc0NyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgYXJy
YXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXlT
bG93KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheUNvbnN0cnVjdG9y
UHJpdmF0ZUZ1bmNJc0FycmF5U2xvdykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpjb25jYXRNZW1j
cHkpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRl
RnVuY0NvbmNhdE1lbWNweSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcHBlbmRNZW1jcHkpXS5p
bml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0Fw
cGVuZE1lbWNweSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpob3N0UHJvbWlzZVJlamVjdGlvblRy
YWNrZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0
UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBpbml0LnNldChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRlcihbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90b3R5cGVHZXRU
aW1lSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQ29uc3RydWN0b3IpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGVzU3BlY0lzQ29uc3RydWN0b3IsIE5vSW50
cmluc2ljKSk7CisgICAgICAgIH0pOworCisgICAgLy8gUmVnRXhwLnByb3RvdHlwZSBoZWxwZXJz
LgorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OnJlZ0V4cENyZWF0ZSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJpbmco
KSwgZXNTcGVjUmVnRXhwQ3JlYXRlLCBOb0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
Ojppc1JlZ0V4cCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNS
ZWdFeHAsIE5vSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cE1hdGNoRmFz
dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jTWF0
Y2hGYXN0LCBSZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
cmVnRXhwU2VhcmNoRmFzdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcmVn
RXhwUHJvdG9GdW5jU2VhcmNoRmFzdCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBTcGxp
dEZhc3QpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVu
Y1NwbGl0RmFzdCkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBUZXN0RmFzdCldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QsIFJl
Z0V4cFRlc3RGYXN0SW50cmluc2ljKSk7CisgICAgICAgIH0pOworCisgICAgLy8gU3RyaW5nLnBy
b3RvdHlwZSBoZWxwZXJzLgorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFs
KSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnN0cmluZ1NwbGl0RmFzdCldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KSk7CisgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OnN0cmluZ1N1YnN0ckludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDIsIFN0cmluZygpLCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwpKTsKKyAgICAgICAgfSk7
CisKKyAgICAvLyBGdW5jdGlvbiBwcm90b3R5cGUgaGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlQm91bmRG
dW5jdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCA1LCBTdHJpbmcoKSwgbWFrZUJvdW5kRnVu
Y3Rpb24pKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aGFzT3duTGVuZ3RoUHJvcGVydHkpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGhhc093bkxlbmd0aFByb3BlcnR5KSk7Cisg
ICAgICAgIH0pOwogCi0gICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsK
LSNkZWZpbmUgSU5JVF9QUklWQVRFX0dMT0JBTCh2YXJOYW1lLCBmdW5jTmFtZSwgY29kZSkgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmNOYW1l
ICMjIFByaXZhdGVOYW1lKCksIHZhck5hbWUgIyMgUHJpdmF0ZUZ1bmN0aW9uLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fUFJJVkFURV9HTE9CQUxfTkFNRShJTklUX1BSSVZBVEVfR0xPQkFMKQotI3VuZGVmIElO
SVRfUFJJVkFURV9HTE9CQUwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPk5hTiwganNOYU4oKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpz
TnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb3BlcnR5SXNFbnVtZXJhYmxlUHJpdmF0
ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkub3duS2V5c1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
T3duS2V5cywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW1wb3J0TW9k
dWxlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJbXBvcnRNb2R1bGUsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVucXVldWVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsICJlbnF1ZXVlSm9iIl9zLCBlbnF1ZXVlSm9iKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFrZVR5cGVFcnJvclByaXZhdGVO
YW1lKCksIHByaXZhdGVGdW5jTWFrZVR5cGVFcnJvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheUxlbmd0aFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
VHlwZWRBcnJheUxlbmd0aCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
dHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y1R5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5U29ydFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
VHlwZWRBcnJheVNvcnQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlz
VHlwZWRBcnJheVZpZXdQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlTdWJhcnJh
eUNyZWF0ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHlwZWRBcnJheVN1YmFycmF5Q3JlYXRl
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0JvdW5kRnVuY3Rpb25Q
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0lzQm91bmRGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNIYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluc3RhbmNlT2ZQcml2YXRlTmFtZSgpLCBwcml2YXRl
RnVuY0luc3RhbmNlT2YsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkJ1
aWx0aW5Mb2dQcml2YXRlTmFtZSgpLCBidWlsdGluTG9nLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5CdWlsdGluRGVzY3JpYmVQcml2YXRlTmFtZSgpLCBidWlsdGluRGVz
Y3JpYmUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlJlZ0V4cFByaXZh
dGVOYW1lKCksIHJlZ0V4cENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS50cnVuY1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVHJ1bmMsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlByb21pc2VQcml2YXRlTmFtZSgpLCBwcm9t
aXNlQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLklu
dGVybmFsUHJvbWlzZVByaXZhdGVOYW1lKCksIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5kZWZhdWx0UHJvbWlzZVRoZW5Q
cml2YXRlTmFtZSgpLCBwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24oKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZXBlYXRDaGFyYWN0ZXJQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNS
ZXBlYXRDaGFyYWN0ZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5h
cnJheVNwZWNpZXNDcmVhdGVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDIsIFN0cmluZygpLCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0FycmF5UHJpdmF0ZU5hbWUoKSwgYXJyYXlD
b25zdHJ1Y3Rvci0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5KSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNBcnJheVNsb3dQcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY0lzQXJyYXlTbG93LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5jb25jYXRNZW1jcHlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0NvbmNhdE1l
bWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwZW5kTWVtY3B5
UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZ2xvYmFs
RnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
U2V0UHJpdmF0ZU5hbWUoKSwgc2V0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnRoaXNUaW1lVmFsdWVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1Ro
aXNUaW1lVmFsdWUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiBFTkFC
TEUoSU5UTCkKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmRhdGVUaW1lRm9ybWF0UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNEYXRl
VGltZUZvcm1hdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRh
dGVUaW1lRm9ybWF0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxG
dW5jRGF0ZVRpbWVGb3JtYXQpKTsKKyAgICAgICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwp
Ci0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmlzQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9GbGFnc0dl
dHRlclByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyUHJpdmF0ZU5h
bWUoKSwgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlclByaXZhdGVOYW1lKCksIHJl
Z0V4cFByb3RvSWdub3JlQ2FzZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQ
cm90b011bHRpbGluZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkucmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1NvdXJj
ZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJv
dG9TdGlja3lHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90b1N0aWNreUdldHRlciwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwUHJvdG9Vbmljb2RlR2V0
dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gUmVnRXhwLnByb3RvdHlwZSBoZWxw
ZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucmVnRXhwQnVpbHRpbkV4ZWNQcml2YXRlTmFtZSgpLCBidWlsdGluUmVnRXhwRXhl
YywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwQ3JlYXRlUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZXNT
cGVjUmVnRXhwQ3JlYXRlLCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmlzUmVnRXhwUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAxLCBTdHJpbmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmluc2ljKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwTWF0Y2hGYXN0UHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJv
dG9GdW5jTWF0Y2hGYXN0LCBSZWdFeHBNYXRjaEZhc3RJbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBTZWFyY2hGYXN0UHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5j
U2VhcmNoRmFzdCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4
cFNwbGl0RmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwg
U3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2VQcml2YXRlTmFt
ZSgpLCBtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
ZXBsYWNlU3ltYm9sKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVn
RXhwVGVzdEZhc3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEs
IFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCwgUmVnRXhwVGVzdEZhc3RJbnRyaW5z
aWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gU3Ry
aW5nLnByb3RvdHlwZSBoZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RyaW5nSW5jbHVkZXNJbnRlcm5hbFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGJ1aWx0aW5T
dHJpbmdJbmNsdWRlc0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuc3RyaW5nU3BsaXRGYXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RyaW5nU3Vic3RySW50ZXJuYWxQcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBidWlsdGlu
U3RyaW5nU3Vic3RySW50ZXJuYWwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0KLSAgICAgICAgLy8gRnVuY3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYWtlQm91bmRG
dW5jdGlvblByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgNSwgU3Ry
aW5nKCksIG1ha2VCb3VuZEZ1bmN0aW9uKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaGFzT3duTGVuZ3RoUHJvcGVydHlQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBoYXNPd25MZW5ndGhQcm9wZXJ0eSksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLQotICAgICAgICAvLyBNYXAgYW5kIFNldCBo
ZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwQnVja2V0SGVhZFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVj
a2V0SGVhZCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0
TmV4dFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0S2V5UHJpdmF0ZU5hbWUoKSwgcHJp
dmF0ZUZ1bmNNYXBCdWNrZXRLZXksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm1hcEJ1Y2tldFZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNNYXBCdWNrZXRWYWx1
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0SGVhZFBy
aXZhdGVOYW1lKCksIHByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0TmV4dFByaXZhdGVOYW1lKCksIHByaXZhdGVG
dW5jU2V0QnVja2V0TmV4dCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
c2V0QnVja2V0S2V5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYm
IEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQotICAgICAgICAvLyBXZWJBc3NlbWJs
eSBTdHJlYW1pbmcgQVBJCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS53ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbFBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHdl
YkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkud2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFs
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwg
d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50Ojp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwp
KTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0lu
dGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJseUlu
c3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpKTsKKyAgICAgICAgfSk7CiAjZW5kaWYKKworICAg
IEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CisgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBq
c1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuYXNzZXJ0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgYXNzZXJ0Q2FsbCksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKICNlbmRpZgogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0
aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKLSAgICBt
X3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpDYWxsRnVuY3Rpb25dID0gbV9jYWxsRnVuY3Rpb24u
Z2V0KCk7Ci0gICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXBwbHlGdW5jdGlvbl0gPSBt
X2FwcGx5RnVuY3Rpb24uZ2V0KCk7Ci0gICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6T2Jq
ZWN0Q29uc3RydWN0b3JdID0gb2JqZWN0Q29uc3RydWN0b3I7Ci0gICAgbV9zcGVjaWFsUG9pbnRl
cnNbU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3Rvcl0gPSBhcnJheUNvbnN0cnVjdG9yOwotCi0gICAg
bV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFu
dDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbildID0gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLmdl
dCgpOwotCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZURvbGxhclZNKCkpKQogICAgICAg
ICBleHBvc2VEb2xsYXJWTSh2bSk7CiAKQEAgLTE3MTEsMjIgKzE3NjAsMTYgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9wYXJzZUludEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fcGFyc2VGbG9hdEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09iamVj
dC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jlc29sdmVQcm9taXNlRnVuY3Rpb24pOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKTsK
LSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VQcm90b1RoZW5GdW5jdGlv
bik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b1ZhbHVlT2ZG
dW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udW1iZXJQcm90b1Rv
U3RyaW5nRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rp
b25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fdGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2UpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxs
ZXJHZXR0ZXJTZXR0ZXIpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyLnZpc2l0KHZp
c2l0b3IpOwogCkBAIC0xNzk0LDYgKzE4MzcsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09i
amVjdC0+bV9wcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAg
dGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKworICAg
IGZvciAoYXV0byYgcHJvcGVydHkgOiB0aGlzT2JqZWN0LT5tX2xpbmtUaW1lQ29uc3RhbnRzKQor
ICAgICAgICBwcm9wZXJ0eS52aXNpdCh2aXNpdG9yKTsKICAgICAKICNpZiBFTkFCTEUoU0hBUkVE
X0FSUkFZX0JVRkZFUikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYXJlZEFy
cmF5QnVmZmVyUHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IDg5MjZhYWFkZmQ2OGQxYWYxMjkyODA0ZTJkMDM0MjJkN2Zm
NDRmNjUuLjMxNWRmMWQ1MzdmZjdmMzZiODE3OTE5YzhmZDU5YzNmNGM0YTZkZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDIsNyAr
NDIsNiBAQAogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwR2xvYmFs
RGF0YS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVGbGFncy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2lu
dGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiVk0uaCIKQEAgLTExOSw2ICsxMTgsNyBAQCBjbGFzcyBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50Owog
c3RydWN0IEFjdGl2YXRpb25TdGFja05vZGU7CiBzdHJ1Y3QgSGFzaFRhYmxlOworZW51bSBjbGFz
cyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKIAogI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFC
TEVECiBjbGFzcyBXcmFwcGVyTWFwOwpAQCAtMjk3LDI2ICsyOTcsMTYgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3BhcnNlSW50RnVuY3Rpb247CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3BhcnNlRmxvYXRG
dW5jdGlvbjsKIAotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsK
LSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcHBseUZ1bmN0aW9uOwotICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9h
cnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0
aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5
RnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVzb2x2ZVByb21pc2VG
dW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9yZWplY3RQcm9taXNlRnVu
Y3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcHJvbWlzZVByb3RvVGhlbkZ1
bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3RvVmFsdWVP
ZkZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX251bWJlclByb3RvVG9T
dHJpbmdGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblBy
b3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKLSAgICBX
cml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJvdG9FeGVjOwogICAgIFdyaXRlQmFycmll
cjxKU09iamVjdD4gbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2U7Ci0gICAgV3JpdGVCYXJyaWVy
PEdldHRlclNldHRlcj4gbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlcjsKLSAgICBXcml0ZUJhcnJp
ZXI8R2V0dGVyU2V0dGVyPiBtX3JlZ0V4cFByb3RvVW5pY29kZUdldHRlcjsKICAgICBXcml0ZUJh
cnJpZXI8R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2Fs
bGVyR2V0dGVyU2V0dGVyOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU01v
ZHVsZUxvYWRlcj4gbV9tb2R1bGVMb2FkZXI7CkBAIC00MzAsOCArNDIwLDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgRk9S
X0VBQ0hfVFlQRURfQVJSQVlfVFlQRShERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJF
KQogI3VuZGVmIERFQ0xBUkVfVFlQRURfQVJSQVlfVFlQRV9TVFJVQ1RVUkUKIAotICAgIEpTQ2Vs
bCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2lu
dGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgotICAgIEpTQ2VsbCogbV9saW5rVGltZUNv
bnN0YW50c1tMaW5rVGltZUNvbnN0YW50Q291bnRdOworICAgIFZlY3RvcjxMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTQ2VsbD4+IG1fbGlua1RpbWVDb25zdGFudHM7CiAKICAgICBTdHJp
bmcgbV9uYW1lOwogCkBAIC02MTYsMjQgKzYwNSwyMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBwYXJz
ZUZsb2F0RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlRmxvYXRGdW5jdGlvbi5nZXQo
dGhpcyk7IH0KIAogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZXZhbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlv
biogYXBwbHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsg
fQotICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1Rv
U3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0
aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsg
fQogICAgIEpTRnVuY3Rpb24qIGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQotICAgIEpTRnVuY3Rp
b24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25ld1By
b21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBuZXdQcm9t
aXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJl
c29sdmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5n
ZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5j
dGlvbiogcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWplY3RQcm9t
aXNlRnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBwcm9taXNlUHJvdG9UaGVuRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbi5nZXQoKTsg
fQorICAgIEpTRnVuY3Rpb24qIHJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25zdDsKKyAgICBK
U0Z1bmN0aW9uKiByZWplY3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdDsKKyAgICBKU0Z1bmN0aW9u
KiBwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU0Z1bmN0aW9uKiBvYmpl
Y3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG9WYWx1
ZU9mRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5n
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5n
ZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbi5nZXQoKTsgfQotICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9FeGVjLmdldCgpOyB9CisgICAgSlNGdW5jdGlv
biogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdDsKICAgICBKU09iamVjdCogcmVnRXhw
UHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3Rv
U3ltYm9sUmVwbGFjZS5nZXQoKTsgfQotICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9i
YWxHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLmdldCgp
OyB9Ci0gICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvVW5pY29kZUdldHRlci5nZXQoKTsgfQorICAgIEdldHRlclNl
dHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsKKyAgICBHZXR0ZXJTZXR0ZXIq
IHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogdGhy
b3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJH
ZXR0ZXJTZXR0ZXIuZ2V0KCk7CkBAIC05MTEsMTYgKzg5OCw5IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4g
bGF6eVR5cGVkQXJyYXlTdHJ1Y3R1cmUodHlwZSkuY29uc3RydWN0b3IodGhpcyk7CiAgICAgfQog
Ci0gICAgSlNDZWxsKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikK
KyAgICBKU0NlbGwqIGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB2YWx1ZSkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChwb2ludGVyIDwgU3BlY2lhbDo6VGFibGVTaXplKTsK
LSAgICAgICAgcmV0dXJuIG1fc3BlY2lhbFBvaW50ZXJzW3BvaW50ZXJdOwotICAgIH0KLSAgICBK
U0NlbGwqIGpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCB0eXBlKQot
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlw
ZSk7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IExpbmtUaW1lQ29uc3RhbnRDb3VudCk7Ci0gICAg
ICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRzW2luZGV4XTsKKyAgICAgICAgcmV0dXJuIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKV0uZ2V0KHRoaXMp
OwogICAgIH0KIAogICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCkgeyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdElubGluZXMuaAppbmRleCBlMDM2OWJlY2IwNmYzYjk4MmNmZDkwYTVkYjIwMzllNjMzYmQ0
MTI1Li4zZjI2ZDVjYWZlMmJmNzU2MTRiZDIwNzY3Yjg0NDIwNDAyZDA1ZGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMu
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgog
I2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMiw2
ICsxMDMsMTUgQEAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEpTR2xvYmFsT2JqZWN0OjphcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG8KICAgICByZXR1cm4gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPmFycmF5Q29uc3RydWN0b3IoKSwgbmV3VGFyZ2V0LCBhcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSk7CiB9CiAKK2lubGluZSBKU0Z1
bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGlt
ZUNvbnN0YW50Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSk7IH0KK2lubGluZSBKU0Z1bmN0aW9u
KiBKU0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGlt
ZUNvbnN0YW50OjpuZXdQcm9taXNlQ2FwYWJpbGl0eSkpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiog
SlNHbG9iYWxPYmplY3Q6OnJlc29sdmVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6cmVzb2x2ZVByb21pc2UpKTsgfQoraW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0
OjpyZWplY3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNG
dW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVqZWN0UHJvbWlz
ZSkpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6OnByb21pc2VQcm90b1Ro
ZW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlu
a1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pKTsgfQor
aW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b0V4ZWNGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25z
dGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYykpOyB9CitpbmxpbmUgR2V0
dGVyU2V0dGVyKiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcikpOyB9CitpbmxpbmUgR2V0
dGVyU2V0dGVyKiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29u
c3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEdldHRlclNldHRlcio+KGxpbmtUaW1lQ29uc3RhbnQo
TGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKSk7IH0KKwogQUxXQVlT
X0lOTElORSBWTSYgZ2V0Vk0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2ZWJjOTM3ZjJmNTg1MjA5YTQ2NTE1
ODNmYTBmNzRmNmNlMzk5YTYuLjM5ZmYyOTY1NjI2YzE5N2YzNGM1NzdjMTU1NjUyNmI3OTE4YzA5
MjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMS0wMyAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBMaW5rVGltZUNvbnN0
YW50IG1lY2hhbmlzbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0
ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTExLTAyICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsg
TWFjIF0gaW5zcGVjdG9yL2RvbS9nZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUuaHRt
bCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
dGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFt
ZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dAppbmRleCBlODJh
Nzk5NzZkYzZmM2ZmY2Y4YTVlZTgzN2M4N2FlMjgxMWEyYTg5Li4yMTI1ZmI1Mjk3MWNlY2VhYjdj
MDgwMzRmMmQ1MzZjN2EyYTRiNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFs
dWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWls
LWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50
eHQKQEAgLTE0LDYgKzE0LDYgQEAgQ0FMTCBTVEFDSzoKIDM6IFtGXSBzdGFydEFCQwogICB0aGlz
OiB1bmRlZmluZWQKIDQ6IFtQXSBHbG9iYWwgQ29kZQotICB0aGlzOiB0ZXN0IC0gCisgIHRoaXM6
IGMgLSAKIFJFU1VNRUQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382711</attachid>
            <date>2019-11-03 17:20:14 -0800</date>
            <delta_ts>2019-11-03 18:47:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103172013.patch</filename>
            <type>text/plain</type>
            <size>141939</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi43YWFjZTM5YjBkOGVjYWFk
YTcyYjgxMmM5ODI3MTViOTlhZWQzNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzYgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSB1
c2luZyBwcml2YXRlLW5hbWUtdmFyaWFibGVzIG9mIEpTR2xvYmFsT2JqZWN0IGFzIGEgd2F5IHRv
IGFjY2VzcyB0byBjb25zdGFudHMgdGhhdCBhcmUgbWF0ZXJpYWxpemVkIHBlciBKU0dsb2JhbE9i
amVjdC4KKyAgICAgICAgQW5kIHdlIGFsc28gaGF2ZSBzcGVjaWFsLXBvaW50ZXJzIGFuZCBvbGQg
bGluay10aW1lLWNvbnN0YW50cyB0byBhY2Nlc3MgdG8gcGVyIEpTR2xvYmFsT2JqZWN0IGNvbnN0
YW50cy4KKyAgICAgICAgV2UgaGF2ZSBieXRlY29kZSBpbnRyaW5zaWMgY29uc3RhbnRzLCBidXQg
aXQgaXMgb25seSBhdmFpbGFibGUgZm9yIHBlciBWTSB2YWx1ZXMuCisKKyAgICAgICAgSG93ZXZl
ciwgdGhlc2Ugb25lcyBoYXZlIG11bHRpcGxlIHByb2JsZW1zLgorCisgICAgICAgIDEuIHByaXZh
dGUtbmFtZS12YXJpYWJsZXMgaXMgdG9vIGNvc3RseS4gV2UgbmVlZCB0byBoYXZlIGFuIGVudHJ5
IGluIEpTR2xvYmFsT2JqZWN0J3MgdmFyaWFibGUsIHRoaXMgbWFrZXMgU3ltYm9sVGFibGUgb2Yg
SlNHbG9iYWxPYmplY3QgbGFyZ2UuCisgICAgICAgICAgIEl0IGFsc28gcmVxdWlyZXMgV2F0Y2hw
b2ludFNldCB0byBtYWtlIGl0IGNvbnN0YW50LWZvbGQgaW4gREZHLiBBbmQgYWNjZXNzaW5nIHRo
ZXNlIHZhcmlhYmxlcyBmcm9tIGJ1aWx0aW4gSlMgdGFrZXMgb3BfcmVzb2x2ZV9zY29wZSBhbmQg
b3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgIGVubGFyZ2luZyBieXRlY29kZSBhbmQgc2xv
dyBpbiBpbnRlcnByZXRlciBhbmQgYmFzZWxpbmUgY29tcGFyZWQgdG8ganVzdCBnZXR0aW5nIHRo
ZW0gYXMgYSBjb25zdGFudCByZWdpc3Rlci4KKyAgICAgICAgMi4gc3BlY2lhbC1wb2ludGVycyBh
cmUgdGFpbG9yZWQgdG8gb3Bfam5lX3B0ciBvcGNvZGUsIGFuZCBub3QgdXNhYmxlIGluIHRoZSBv
dGhlciBieXRlY29kZSBzaW5jZSB0aGlzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBWaXJ0
dWFsUmVnaXN0ZXIuCisgICAgICAgIDMuIE9sZCBsaW5rLXRpbWUtY29uc3RhbnRzIGltcGxlbWVu
dGF0aW9uIGlzIHB1dHRpbmcgYXJyYXkgb2YgYWxsIGxpbmstdGltZS1jb25zdGFudHMgb24gZWFj
aCBVbmxpbmtlZENvZGVCbG9jaywgZXZlbiBpZiBpdCBpcyBub3QgdXNlZC4gSWYgeW91IGluY3Jl
YXNlICMgb2YKKyAgICAgICAgICAgbGluay10aW1lLWNvbnN0YW50LCBpdCBpbmNyZWFzZXMgc2l6
ZW9mKFVubGlua2VkQ29kZUJsb2NrKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGluay10aW1lLWNvbnN0YW50IG1lY2hhbmlzbSBhbmQgcmVtb3ZlIHRoZSBh
Ym92ZSBvbGQgb25lcyBtb3N0bHkuIChwcml2YXRlLW5hbWUtdmFyaWFibGVzIHN0aWxsIGV4aXN0
cyBmb3IgV2ViQ29yZSBhbmQgQGFzc2VydCkuCisgICAgICAgIFdlIG1hbmFnZSBsaW5rLXRpbWUt
Y29uc3RhbnRzIGluIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnksIGFuZCBlbWl0IEludDMyOkxp
bmtUaW1lQ29uc3RhbnRJRCBjb25zdGFudCB3aGVuIGdlbmVyYXRpbmcgYW4gVW5saW5rZWRDb2Rl
QmxvY2suIExhdGVyLCB0aGlzIGNvbnN0YW50CisgICAgICAgIGlzIGFsdGVybmF0ZWQgdG8gYW4g
YWN0dWFsIHZhbHVlIHdoZW4gd2UgbGluayBVbmxpbmtlZENvZGVCbG9jayB0byBDb2RlQmxvY2sg
d2l0aCBzcGVjaWZpYyBKU0dsb2JhbE9iamVjdC4gcHJpdmF0ZS1uYW1lLXZhcmlhYmxlcyBhY2Nl
c3NlcyBhcmUgbm93IGNvbnZlcnRlZCB0bworICAgICAgICBjb25zdGFudCByZWdpc3RlciBzbyB0
aGF0IGl0IGlzIHZlcnkgZWZmaWNpZW50bHkgYWNjZXNzZWQgYW5kIGl0IHJlZHVjZXMgbWVtb3J5
IHVzZWQgZm9yIFN5bWJvbFRhYmxlIGFuZCBXYXRjaHBvaW50U2V0LiBvcF9qbmVfcHRyIHRha2Vz
IGxpbmstdGltZS1jb25zdGFudAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXJzIGluc3RlYWQgb2Yg
c3BlY2lhbC1wb2ludGVycywgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHNwZWNpYWwtcG9pbnRlcnMg
bWVjaGFuaXNtLiBXZSBhbHNvIHJlcGxhY2Ugb2xkIGxpbmstdGltZS1jb25zdGFudHMgd2l0aCBu
ZXcgb25lLCB3aGljaCByZWR1Y2VzCisgICAgICAgIHNpemVvZihVbmxpbmtlZENvZGVCbG9jayku
CisKKyAgICAgICAgRnVydGhlcm1vcmUsIG5ldyBsaW5rLXRpbWUtY29uc3RhbnQgc3VwcG9ydHMg
bGF6eSBpbml0aWFsaXphdGlvbiBieSB1c2luZyBMYXp5UHJvcGVydHkgaW4gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgYWxsb3dzIHVzIHRvIGxhemlseSBnZW5lcmF0ZSBtYW55IGludGVybmFsIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IGFyZSBwcmV2aW91c2x5IGluaXRpYWxpemVkIGVhZ2VybHkuIFRo
aXMgcmVkdWNlcyAjIG9mIGFsbG9jYXRlZCBKU0Z1bmN0aW9uIHNpZ25pZmljYW50bHkgd2hlbiBp
bml0aWFsaXppbmcgSlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1h
bnVhbGx5IGFkZHMgMjU2IHRvIE1hcmtlZFNwYWNlJ3Mgc2l6ZS1jbGFzcy4gV2UgZW1waXJpY2Fs
bHkga25vdyB0aGF0IGFkZGluZyAyNTYgaGVyZSBtYWtlcyBzZXF1ZW5jZSBvZiBzaXplLWNsYXNz
IGJldHRlciBmb3IgbWVtb3J5IGNvbnN1bXB0aW9uLgorICAgICAgICBCdXQgdGhpcyB3YXMgYWNo
aWV2ZWQgYnkgYWRkaW5nIGBzaXplb2YoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaylgLiBOb3cg
c2l6ZW9mKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spIGlzIGNoYW5nZWQgYnkgdGhpcyBwYXRj
aCwgYW5kIHRoaXMgcGF0Y2ggdW5pbnRlbnRpb25hbGx5CisgICAgICAgIGJyZWFrcyB0aGF0IHNl
cXVlbmNlLiBXZSBzaG91bGQgZXhwbGljaXRseSBhZGQgMjU2IGluc3RlYWQgb2YgYWRkaW5nIHNp
emVvZihVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSBhZGhvY2x5LgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaGVhZGVyLnB5OgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFs
X3ByaXZhdGVfY29kZV9uYW1lX21hY3JvKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanM6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAg
ICAgICAobmFrZWRDb25zdHJ1Y3Rvci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRD
b25zdHJ1Y3Rvci5Qcm9taXNlLnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0
cnVjdG9yLkludGVybmFsUHJvbWlzZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQ29uc3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAg
ICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNp
YWxQb2ludGVyLmguCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9u
U25pcHBldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmlu
ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVs
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAg
ICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBh
dHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRF
eHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9q
bmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBh
cnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlc29s
dmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBhcnNl
ci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1RpbWVDb25zdGFudCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsRnVuY3Rpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXBwbHlGdW5jdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5pY29k
ZUdldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojph
Y3R1YWxQb2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0
dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlciBjb25zdCk6CisKIDIwMTktMTEtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvcjI1
MTg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYyNWZmNjFkYjk5MGFk
N2Y2ODhhYThlYzE2ZjFkZjlkOGI2ZWM3NjIuLmZlNzBhMzUyMmQ2ZTNmYWM2OTAxNmZkNjhmYjA1
Mzk5NjczZTE0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUyMiw2
ICs1MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKICAgICBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAogICAgIGJ5dGVjb2RlL0xhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmgKKyAgICBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKICAg
ICBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKICAgICBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9u
UHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaApAQCAtNTI5
LDcgKzUzMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRp
b24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvU3BlY2lhbFBv
aW50ZXIuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1
Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGFiODQ2OWEyYWIxYzU4ZjI4ZjExNzIxYjQ1YjRiM2ZjMmM5MDAyODUu
LmE3MWUxNDAzZDMyN2RlZjkwM2RlM2I5ZTQyZjRlMjg0ZTBkZTRhY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zNjIsNyArMzYyLDYgQEAKIAkJMEY0RjgyOEMxRTMxQjk3NjAw
NzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRGODI4QTFFMzFCOTcxMDA3
NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCAqLzsgfTsKIAkJ
MEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MEFGM0IxOTNF
OEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovOyB9OwogCQkwRjU1
MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTUxM0E1MUQ1QTY4MkEwMEMzMkJEOCAvKiBGcmVl
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTQxQjAxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZlRnJv
bVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjU1OTg5NzE3Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBGNTE0RDEwNjND
MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU2QTFE
MzE1MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8q
IEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTgxMiw2ICsxODExLDcgQEAKIAkJRTM1Q0ExNTQxREJDM0E1QzAwRjgz
NTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
NUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3Rh
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjM3
RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBX
YXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI1ODUsOCArMjU4NSw2IEBACiAJCTBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAv
KiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJl
Q2xvYmJlclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTUxM0E1MUQ1
QTY4MkEwMEMzMkJEOCAvKiBGcmVlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmVlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1MTNBNzFE
NUE2OENCMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnJlZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQz
IC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRvTmF0aXZlRnJvbVZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVDMTkzMTcyNzZFNDYwMENFQUJG
RCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR0Fic3RyYWN0VmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0VmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2
NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MzUsNiAr
NDkzMyw4IEBACiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MzdF
RTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkUyMkY4RDYxMTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIzNyw2ICs4MjM3LDggQEAKIAkJCQlCQ0ZEOEM5
MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2
ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1NDY3
NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLywKKwkJCQlF
MzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5jcHAgKi8sCisJCQkJ
RTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLywKIAkJCQkw
RjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQk1
M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQk1M0ZBMkFFMDFDRjM3RjNGMDAyMjcxMUQgLyog
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCkBAIC04
Mjg0LDggKzgyODYsNiBAQAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRl
ZFN0YXR1c2VzLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VX
aGl0ZXNwYWNlLmggKi8sCi0JCQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQ
b2ludGVyLmNwcCAqLywKLQkJCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuaCAqLywKIAkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuY3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlw
ZS5oICovLAogCQkJCTBGQjQzOEEyMTkyNzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQuY3Bw
ICovLApAQCAtOTg0Myw2ICs5ODQzLDcgQEAKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAg
LyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAv
KiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVF
NyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzYzN0VFOTIzNkU1NkIwMDA5
NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIw
RkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
REU5QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAwOTYsNyArMTAwOTcsNiBAQAogCQkJCTBGREU4N0ZDMURGRTZFNTEw
MDY0QzM5MCAvKiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1
bmtKSVQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBT
cGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg1RjZCQzE4QzU1
M0ZFMDBGMTA2MjYgLyogU3BpbGxSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjNBQzc1MjE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eQppbmRleCAzMzQxOWY1NWY2MWM1NDRhZmM4Yzg0YzNjNzk2OTY3NWU3OTAxYjU2Li4wNDJiMzIy
YmI4YmRkZjEzNGE3ODAxYmE2ZmJkYjJhN2M1NWE5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtMTcyLDExICsxNzIsMTAg
QEAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2dsb2JhbF9wcml2YXRlX2NvZGVfbmFtZV9tYWNy
byhzZWxmKToKICAgICAgICAgZnVuY3Rpb25zLnNvcnQoa2V5PWxhbWJkYSB4OiB4LmZ1bmN0aW9u
X25hbWUpCiAgICAgICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CiAgICAgICAgICAgICBm
dW5jdGlvbl9hcmdzID0gewotICAgICAgICAgICAgICAgICd2YXJOYW1lJzogZ2V0X3Zhcl9uYW1l
KGZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlv
bl9uYW1lLAogICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1h
bmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pLAogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKHZhck5hbWUpcywgJShmdW5jTmFtZSlzLCAl
KGNvZGVOYW1lKXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMsICUoY29kZU5hbWUpcykgXFwiICUgZnVuY3Rpb25f
YXJncykKIAogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGM5MDhhZmI1MGUwNWMxOGNlNmRlMWIxZDdjZDY1ZDZjNTg4ZGUzMjgu
LjUxOTIxZDcxODYwOWJhMWU3YjQ4MTQxMDYzNDdhZWQyMmU4NjA4ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTI0NCw2ICsyNDQsNyBAQCBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAogYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCitieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcAog
Ynl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAt
MjYzLDcgKzI2NCw2IEBAIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRC
eUlkVmFyaWFudC5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9S
ZWR1Y2VXaGl0ZXNwYWNlLmNwcAotYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCiBieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggZGQzM2NhODAzNmEzMGJmNjRlMDhh
MGEzODdlZTFiNWI3MTFhNzhmMS4uZDQzZTQ4ZjBiYTMxZWJkY2Y4YmVkMThiNmU5YWIwYjhkYmY1
NjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBKU0NfQ09NTU9OX0JZVEVD
T0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXAogICAgIG1h
Y3JvKGFkZCkgXAorICAgIG1hY3JvKGFwcGx5RnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheUl0
ZXJhdG9yTmV4dEluZGV4KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kKSBcCiAgICAg
bWFjcm8oYXJyYXlJdGVyYXRvck5leHQpIFwKQEAgLTUyLDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvcktpbmQpIFwKICAgICBtYWNybyhhcnJheVNwZWNp
ZXNDcmVhdGUpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKKyAgICBtYWNybyhjYWxsRnVuY3Rpb24p
IFwKICAgICBtYWNybyhjaGFyQ29kZUF0KSBcCiAgICAgbWFjcm8oZXhlY3V0b3IpIFwKICAgICBt
YWNybyhpc1ZpZXcpIFwKQEAgLTczLDYgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFj
cm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAogICAgIG1hY3JvKG93bktleXMpIFwKICAgICBtYWNy
byhTZXQpIFwKKyAgICBtYWNybyh0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8o
dHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlTb3J0KSBcCiAgICAgbWFj
cm8odHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmluZGV4IDMwZmM2
NmU0Yjg5ZjJlYTBiZDY5YTdiODFkZTEzODUwZjAxY2RiNzQuLjY2Zjk1MWZiNGZjNmQxYzY1MWUw
MzA3NzBkZWQ1MTVlOTBkZWI5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMjM3LDE5ICsyMzcsMTYgQEAgZnVu
Y3Rpb24gUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNl
KHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNlKTsKICAgICB2YXIgY2FwdHVyZWRQ
cm9taXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxsb3cgdXNpbmcg
ZnVuY3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3QgPSBmdW5jdGlvbiBAcmVq
ZWN0KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNv
bHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7Ci0gICAgfTsK
LQogICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAgZnVuY3Rpb24gQHJl
c29sdmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBAcmVzb2x2ZVByb21p
c2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJl
c29sdXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0
dXJlZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAgICB9IGNhdGNoIChlcnJv
cikgewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJlamVjdFByb21pc2VXaXRo
Rmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7CiAgICAgfQog
CiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0yNjYsMTkgKzI2MywxNiBAQCBmdW5jdGlvbiBJbnRl
cm5hbFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFyIHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZSh0
aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyB0cnVlKTsKICAgICB2YXIgY2FwdHVyZWRQcm9t
aXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxsb3cgdXNpbmcgZnVu
Y3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3QgPSBmdW5jdGlvbiBAcmVqZWN0
KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZp
bmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7Ci0gICAgfTsKLQog
ICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAgZnVuY3Rpb24gQHJlc29s
dmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBAcmVzb2x2ZVByb21pc2VX
aXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlc29s
dXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
QHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJl
ZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJlamVjdFByb21pc2VXaXRoRmly
c3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBhZjgwNzY5MzMyYzljYjUwZTIyY2MzM2RhYzc0NWEy
ZGJlMGZlMzA0Li44NThhYjkwNTAyZTg0ZDcwNzkxNTMyNWY2OTNlZTNkNWQ1ODVjOGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
QEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcENvbnN0YW50cygpCiAgICAgICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bjo6T3RoZXI6CiAgICAgICAgICAgICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3Jp
cHRpb24gPSAiIjsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAgICAgICAgICAg
IHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIjogaW4gc291cmNlIGFzIGxp
bmtlLXRpbWUtY29uc3RhbnQiOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIgICBrJXUgPSAlcyVzXG4iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRvQ1N0cmluZyhjb25zdGFudC5nZXQoKSkuZGF0YSgpLCBz
b3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgICAgICAgICArK2k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggZDQxNjMzYzU1YjYwOWNkNTdlMjQzYjJiMWE0YzQ0
MDkyMTRjNWFkYS4uOTlmM2ViYjVjNjQyYTA5ZjQ0NDYzN2NiNjQwZGM1NWQzNTU2YmRhZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtNDIsNyArNDIsOCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQo
bmFtZSkgbV9ieXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkubmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljXyMjbmFtZSk7CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVf
SU5UUklOU0lDX05BTUVTX1RPX1NFVChuYW1lKSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmFkZCh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLmltcGwo
KSwgRW50cnkoJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfIyNuYW1lKSk7
CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RPX1NFVF9GT1Jf
TElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRk
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1w
bCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWUpOwogCiBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICA6IG1fdm0odm0p
CkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklO
U0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFN
RVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19F
QUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQorICAg
IEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRS
SU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5LX1RJTUVfQ09OU1RBTlQpCiAKICAgICBtX3VuZGVm
aW5lZC5zZXQobV92bSwganNVbmRlZmluZWQoKSk7CiAgICAgbV9JbmZpbml0eS5zZXQobV92bSwg
anNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7
CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVh
c29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dl
bmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpOb25lKSkpOwogfQogCi1CeXRl
Y29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK09wdGlvbmFsPEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29r
dXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFpZGVudC5pc1By
aXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZp
bmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNp
Y01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBlZTVmOTQ5MzVmMzhhNzRhNjE1Njc4NjliZi4uZjc2
Zjc4NWJlMWJhMDQyZGFmOGRhMzMzZDJiMTM5ZDNhMTgzMDM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogY2xhc3MgQnl0
ZWNvZGVHZW5lcmF0b3I7CiBjbGFzcyBCeXRlY29kZUludHJpbnNpY05vZGU7CiBjbGFzcyBSZWdp
c3RlcklEOworZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKIAogI2RlZmlu
ZSBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1hY3Jv
KSBcCiAgICAgbWFjcm8oYXJndW1lbnQpIFwKQEAgLTEzNyw3ICsxMzgsNDQgQEAgY2xhc3MgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAKICAgICB0eXBlZGVmIFJlZ2lzdGVySUQqIChCeXRl
Y29kZUludHJpbnNpY05vZGU6OiogRW1pdHRlclR5cGUpKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopOwogCi0gICAgRW1pdHRlclR5cGUgbG9va3VwKGNvbnN0IElkZW50aWZpZXImKSBj
b25zdDsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgRW1pdHRlciA9
IDAsCisgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgPSAxLAorICAgIH07CisKKyAgICBjbGFzcyBF
bnRyeSB7CisgICAgcHVibGljOgorICAgICAgICBFbnRyeSgpCisgICAgICAgICAgICA6IG1fdHlw
ZShUeXBlOjpFbWl0dGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX2VtaXR0ZXIgPSBudWxs
cHRyOworICAgICAgICB9CisKKyAgICAgICAgRW50cnkoRW1pdHRlclR5cGUgZW1pdHRlcikKKyAg
ICAgICAgICAgIDogbV90eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fZW1pdHRlciA9IGVtaXR0ZXI7CisgICAgICAgIH0KKworICAgICAgICBFbnRyeShMaW5rVGlt
ZUNvbnN0YW50IGxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAgICAgICA6IG1fdHlwZShUeXBlOjpM
aW5rVGltZUNvbnN0YW50KQorICAgICAgICB7CisgICAgICAgICAgICBtX2xpbmtUaW1lQ29uc3Rh
bnQgPSBsaW5rVGltZUNvbnN0YW50OworICAgICAgICB9CisKKyAgICAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgbGlua1Rp
bWVDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudDsgfQorICAgICAg
ICBFbWl0dGVyVHlwZSBlbWl0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9lbWl0dGVyOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBFbWl0dGVyVHlwZSBtX2Vt
aXR0ZXI7CisgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IG1fbGlua1RpbWVDb25zdGFudDsK
KyAgICAgICAgfTsKKyAgICAgICAgVHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIE9wdGlvbmFs
PEVudHJ5PiBsb29rdXAoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCiAjZGVmaW5lIEpTQ19E
RUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JTKG5hbWUpIEpTVmFs
dWUgbmFtZSMjVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKTsKICAgICBKU0NfQ09NTU9OX0JZVEVD
T0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfRUFDSF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lO
VFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JTKQpAQCAtMTQ1LDcgKzE4Myw3IEBAIGNsYXNzIEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogCiBwcml2YXRlOgogICAgIFZNJiBtX3ZtOwotICAg
IEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRW1pdHRlclR5cGUsIElkZW50aWZp
ZXJSZXBIYXNoPiBtX2J5dGVjb2RlSW50cmluc2ljTWFwOworICAgIEhhc2hNYXA8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgRW50cnksIElkZW50aWZpZXJSZXBIYXNoPiBtX2J5dGVjb2RlSW50
cmluc2ljTWFwOwogCiAjZGVmaW5lIEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05T
VEFOVF9HRU5FUkFUT1JTKG5hbWUpIFN0cm9uZzxVbmtub3duPiBtXyMjbmFtZTsKICAgICBKU0Nf
Q09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfU0lNUExFX0VBQ0hfTkFNRShKU0Nf
REVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGQ2NTJiNjU4
ODRjNzhiMDNiZDgwZDJkNjdkNDhmMTY4NjEwYjlhNzguLjM0YzE1MmEwZDY2MmYzNTI5N2RmMTQ0
NDg2NGZiNGJiYTM0MGVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgpAQCAtNjQsMTAgKzY0LDYgQEAKICAgICA6T2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUsCiBdCiAKLW5hbWVzcGFjZSA6U3BlY2lhbCBkbwotICAgIHR5cGVzIFsgOlBvaW50
ZXIgXQotZW5kCi0KIHRlbXBsYXRlcyBbCiAgICAgOldyaXRlQmFycmllciwKICAgICA6V3JpdGVC
YXJyaWVyQmFzZSwKQEAgLTY3NSw3ICs2NzEsNyBAQAogb3AgOmpuZXFfcHRyLAogICAgIGFyZ3M6
IHsKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgc3BlY2lhbFBvaW50
ZXI6IFNwZWNpYWw6OlBvaW50ZXIsCisgICAgICAgIHNwZWNpYWxQb2ludGVyOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAogICAgIH0sCiAgICAgbWV0
YWRhdGE6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggNWVjMjQ2YzkxZDgyZWNlNjI0ZGRkYzI2YWJiNWQ1NTQyNDNkYjk4Mi4uMGY4ZTdmOGI0
ZjkyNDQ0NzM4MmE1ZDhlODgxMzc2MDdkNDljMjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM5OSwxMiArMzk5LDYgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9j
ay0+Y29uc3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50c1NvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbigpLCB0b3BMZXZlbEV4ZWN1dGFibGUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7Ci0gICAgICAgIExpbmtUaW1lQ29u
c3RhbnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOwotICAgICAgICBp
ZiAodW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3Rlcklu
ZGV4Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKLSAgICAgICAgICAgIG1fY29uc3RhbnRSZWdp
c3RlcnNbcmVnaXN0ZXJJbmRleF0uc2V0KHZtLCB0aGlzLCBtX2dsb2JhbE9iamVjdC0+anNDZWxs
Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSk7Ci0gICAgfQotCiAgICAgLy8gV2UgYWxyZWFkeSBo
YXZlIHRoZSBjbG9uZWQgc3ltYm9sIHRhYmxlIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IHNp
bmNlIHdlIG5lZWQgdG8gaW5zdGFudGlhdGUKICAgICAvLyB0aGUgbW9kdWxlIGVudmlyb25tZW50
cyBiZWZvcmUgbGlua2luZyB0aGUgY29kZSBibG9jay4gV2UgcmVwbGFjZSB0aGUgc3RvcmVkIHN5
bWJvbCB0YWJsZSB3aXRoIHRoZSBhbHJlYWR5IGNsb25lZCBvbmUuCiAgICAgaWYgKFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrID0g
anNEeW5hbWljQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih2bSwgdW5saW5r
ZWRDb2RlQmxvY2spKSB7CkBAIC05MDUsMjkgKzg5OSwzNiBAQCB2b2lkIENvZGVCbG9jazo6c2V0
Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNv
bnN0YQogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAg
ICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGNvbnN0YW50c1tpXS5nZXQoKTsKLQotICAgICAgICBp
ZiAoIWNvbnN0YW50LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKGNvbnN0YW50LmlzQ2Vs
bCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gY29uc3RhbnQuYXNDZWxsKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGpzRHluYW1p
Y0Nhc3Q8U3ltYm9sVGFibGUqPih2bSwgY2VsbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUtPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJl
cGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2VyKTsKKyAgICAgICAgc3dpdGNoIChjb25zdGFudHNT
b3VyY2VDb2RlUmVwcmVzZW50YXRpb25baV0pIHsKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQ6CisgICAgICAgICAgICBjb25zdGFudCA9IGds
b2JhbE9iamVjdC0+bGlua1RpbWVDb25zdGFudChzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0YW50
Pihjb25zdGFudC5hc0ludDMyQXNBbnlJbnQoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcjoKKyAgICAgICAgY2FzZSBT
b3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkludGVnZXI6CisgICAgICAgIGNhc2UgU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOjpEb3VibGU6CisgICAgICAgICAgICBpZiAoIWNvbnN0YW50LmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC5pc0NlbGwoKSkgeworICAgICAg
ICAgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBjb25zdGFudC5hc0NlbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGpzRHluYW1pY0Nhc3Q8
U3ltYm9sVGFibGUqPih2bSwgY2VsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X3VubGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2RlcygpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1i
b2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJs
ZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIGNsb25lID0gc3lt
Ym9sVGFibGUtPmNsb25lU2NvcGVQYXJ0KHZtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh3YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25lOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGF1dG8qIGRlc2NyaXB0b3IgPSBqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yKj4odm0sIGNlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiB0
ZW1wbGF0ZU9iamVjdCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdGFudCA9IHRlbXBsYXRlT2JqZWN0OwogICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIGNsb25lID0gc3ltYm9sVGFibGUtPmNsb25lU2Nv
cGVQYXJ0KHZtKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdhc0NvbXBpbGVkV2l0aERlYnVn
Z2luZ09wY29kZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0
YUNvZGVCbG9jayh0aGlzKTsKLQotICAgICAgICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25l
OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFibGUtPmNy
ZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvcik7Ci0gICAgICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQogICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzW2ldLnNldCh2bSwgdGhpcywgY29uc3RhbnQpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggZTI0NGZkNjI3MDliNDI1YTYy
OGUyMjQ1NjYzOGIwZTU2M2NkYWUwOS4uZWRhMjRiZTQ2OTU2NGIyZTUwYzY0ZmU2MDgxYmEyMWY5
Y2VkOWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQ
dXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU3BlY2lh
bFBvaW50ZXIuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1
ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxOWY5NzU2OGEzOTUyMjEwNmRkMTI3MGNiOWIxMWUxYWE4OTBkYjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0
YW50LmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworI2RlZmluZSBQUklO
VF9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgXAorICAgIGNhc2UgSlNDOjpMaW5rVGlt
ZUNvbnN0YW50OjpuYW1lOiBcCisgICAgICAgIG91dC5wcmludCgjbmFtZSk7IFwKKyAgICAgICAg
cmV0dXJuOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpMaW5r
VGltZUNvbnN0YW50IGNvbnN0YW50KQoreworICAgIHN3aXRjaCAoY29uc3RhbnQpIHsKKyAgICAg
ICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhQUklOVF9MSU5LX1RJTUVfQ09OU1RB
TlQpCisgICAgfQorfQorCisjdW5kZWYgUFJJTlRfTElOS19USU1FX0NPTlNUQU5UCisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI2ZTcyNjI0MDljODU3NDMyZDRiMmZjZmFjZjE3
Yzc2MGQxN2I2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb2RlQmxvY2s7Citj
bGFzcyBKU0dsb2JhbE9iamVjdDsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9MSU5LX1RJTUVfQ09O
U1RBTlRTKHYpIFwKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xP
QkFMX05BTUUodikgXAorICAgIHYodGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwgbnVsbHB0cikgXAor
ICAgIHYoaW1wb3J0TW9kdWxlLCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRIZWFkLCBudWxs
cHRyKSBcCisgICAgdihtYXBCdWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRL
ZXksIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldFZhbHVlLCBudWxscHRyKSBcCisgICAgdihz
ZXRCdWNrZXRIZWFkLCBudWxscHRyKSBcCisgICAgdihzZXRCdWNrZXROZXh0LCBudWxscHRyKSBc
CisgICAgdihzZXRCdWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KHByb3BlcnR5SXNFbnVtZXJh
YmxlLCBudWxscHRyKSBcCisgICAgdihvd25LZXlzLCBudWxscHRyKSBcCisgICAgdihlbnF1ZXVl
Sm9iLCBudWxscHRyKSBcCisgICAgdihtYWtlVHlwZUVycm9yLCBudWxscHRyKSBcCisgICAgdih0
eXBlZEFycmF5TGVuZ3RoLCBudWxscHRyKSBcCisgICAgdih0eXBlZEFycmF5R2V0T3JpZ2luYWxD
b25zdHJ1Y3RvciwgbnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheVNvcnQsIG51bGxwdHIpIFwK
KyAgICB2KGlzVHlwZWRBcnJheVZpZXcsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTdWJh
cnJheUNyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGluc3Rh
bmNlT2YsIG51bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKKyAgICB2KEJ1
aWx0aW5EZXNjcmliZSwgbnVsbHB0cikgXAorICAgIHYoUmVnRXhwLCBudWxscHRyKSBcCisgICAg
dih0cnVuYywgbnVsbHB0cikgXAorICAgIHYoUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoSW50
ZXJuYWxQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihkZWZhdWx0UHJvbWlzZVRoZW4sIG51bGxw
dHIpIFwKKyAgICB2KHJlcGVhdENoYXJhY3RlciwgbnVsbHB0cikgXAorICAgIHYoYXJyYXlTcGVj
aWVzQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0FycmF5LCBudWxscHRyKSBcCisgICAgdihp
c0FycmF5U2xvdywgbnVsbHB0cikgXAorICAgIHYoY29uY2F0TWVtY3B5LCBudWxscHRyKSBcCisg
ICAgdihhcHBlbmRNZW1jcHksIG51bGxwdHIpIFwKKyAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9u
VHJhY2tlciwgbnVsbHB0cikgXAorICAgIHYoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLCBudWxs
cHRyKSBcCisgICAgdihTZXQsIG51bGxwdHIpIFwKKyAgICB2KHRoaXNUaW1lVmFsdWUsIG51bGxw
dHIpIFwKKyAgICB2KGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3Rv
RmxhZ3NHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLCBu
dWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIsIG51bGxwdHIpIFwK
KyAgICB2KHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdF
eHBQcm90b1NvdXJjZUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9TdGlja3lH
ZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciwgbnVsbHB0
cikgXAorICAgIHYocmVnRXhwQnVpbHRpbkV4ZWMsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cENy
ZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNSZWdFeHAsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4
cE1hdGNoRmFzdCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwU2VhcmNoRmFzdCwgbnVsbHB0cikg
XAorICAgIHYocmVnRXhwU3BsaXRGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b3R5
cGVTeW1ib2xSZXBsYWNlLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBUZXN0RmFzdCwgbnVsbHB0
cikgXAorICAgIHYoc3RyaW5nSW5jbHVkZXNJbnRlcm5hbCwgbnVsbHB0cikgXAorICAgIHYoc3Ry
aW5nU3BsaXRGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTdWJzdHJJbnRlcm5hbCwgbnVs
bHB0cikgXAorICAgIHYobWFrZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGhhc093
bkxlbmd0aFByb3BlcnR5LCBudWxscHRyKSBcCisgICAgdihkYXRlVGltZUZvcm1hdCwgbnVsbHB0
cikgXAorICAgIHYod2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwsIG51bGxwdHIp
IFwKKyAgICB2KHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCwgbnVsbHB0
cikgXAorICAgIHYoT2JqZWN0LCBudWxscHRyKSBcCisgICAgdihBcnJheSwgbnVsbHB0cikgXAor
ICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoY2FsbEZ1bmN0aW9uLCBudWxs
cHRyKSBcCisKKworI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2Rl
KSBuYW1lLAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdCB7CisgICAgSlND
X0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVCkK
K307CisjdW5kZWYgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQKKyNkZWZpbmUgQ09VTlRfTElO
S19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIDEgKworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzID0gSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNU
QU5UUyhDT1VOVF9MSU5LX1RJTUVfQ09OU1RBTlQpIDA7CisjdW5kZWYgQ09VTlRfTElOS19USU1F
X0NPTlNUQU5UCisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xh
c3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
TGlua1RpbWVDb25zdGFudCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVhZDNmMjRjYTA0ODFkMTFhNjdlYmQxYmZiYWJlODY2ZmQzMWQ0OGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCi0K
LSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXZvaWQqIGFjdHVhbFBv
aW50ZXJGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3BlY2lhbDo6UG9pbnRlciBw
b2ludGVyKQotewotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9p
bnRlcik7Ci19Ci0KLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gYWN0dWFsUG9pbnRlckZv
cihjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBwb2ludGVyKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgc3dpdGNoIChw
b2ludGVyKSB7Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkNhbGxGdW5jdGlvbjoKLSAgICAgICAg
b3V0LnByaW50KCJDYWxsRnVuY3Rpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlND
OjpTcGVjaWFsOjpBcHBseUZ1bmN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkFwcGx5RnVuY3Rp
b24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpPYmplY3RDb25z
dHJ1Y3RvcjoKLSAgICAgICAgb3V0LnByaW50KCJPYmplY3RDb25zdHJ1Y3RvciIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkFycmF5Q29uc3RydWN0b3I6Ci0gICAg
ICAgIG91dC5wcmludCgiQXJyYXlDb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBKU0M6OlNwZWNpYWw6OlRhYmxlU2l6ZToKLSAgICAgICAgb3V0LnByaW50KCJUYWJsZVNp
emUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDkyYmFiNzZlYTJiZmY3ZTZlODgzNTM1ZWE0ZDc2
YzQxYjA0Njc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xh
c3MgQ29kZUJsb2NrOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0KLW5hbWVzcGFjZSBTcGVjaWFs
IHsKLWVudW0gUG9pbnRlciA6IHVuc2lnbmVkIHsKLSAgICBDYWxsRnVuY3Rpb24sCi0gICAgQXBw
bHlGdW5jdGlvbiwKLSAgICBPYmplY3RDb25zdHJ1Y3RvciwKLSAgICBBcnJheUNvbnN0cnVjdG9y
LAotICAgIFRhYmxlU2l6ZSAvLyBOb3QgYSByZWFsIHNwZWNpYWwgcG9pbnRlci4gVXNlIHRoaXMg
dG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcG9pbnRlcnMuCi19OwotfSAvLyBuYW1lc3BhY2Ug
U3BlY2lhbAotCi1lbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIFRocm93VHlwZUVy
cm9yRnVuY3Rpb24sCi19OwotY29uc3QgdW5zaWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0g
MTsKLQotaW5saW5lIGJvb2wgcG9pbnRlcklzRnVuY3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2lu
dGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwgcG9pbnRlciA8IFNwZWNpYWw6OlRh
YmxlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Nl
bGwoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRl
ciwgcG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoSlNHbG9iYWxPYmplY3QqLCBTcGVjaWFsOjpQb2ludGVy
KTsKLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiwgU3BlY2lhbDo6UG9pbnRlcik7
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRT
dHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6U3BlY2lhbDo6
UG9pbnRlcik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjM0ZmE1NzdjNWFm
MGExMjE2YzdiNGQ2ZDA0NDdkMGJjZjhkNGM0OS4uZDVkZGVlOGQ1NjA3NzAzMjNiMWZkNWYxYWNj
Y2NjMDUwMmMxMjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC03Niw4ICs3Niw2IEBAIFVubGlua2VkQ29kZUJs
b2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2Rl
VHlwZSBjb2RlCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUp
CiAgICAgLCBtX21ldGFkYXRhKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCkpCiB7Ci0g
ICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVySW5kZXggOiBtX2xpbmtUaW1lQ29uc3RhbnRz
KQotICAgICAgICBjb25zdGFudFJlZ2lzdGVySW5kZXggPSAwOwogICAgIEFTU0VSVChtX2NvbnN0
cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQo
KSkpOwogICAgIEFTU0VSVChtX2NvZGVUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2Rl
VHlwZSkpOwogICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihNaXhlZFRyaVN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDQ3MzlkYTc4MzU2OGQzZWIyNjMxZWVmMWE3MjQy
OTI4Nzk3ZjU2NjkuLjZjMDUwYTJjNjQyYWYzNmI4ZGVmZGZiYzMzZGJjMmM5NGY2MDdhMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUGFy
c2VyTW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRl
ci5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
VW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBA
IC02Myw2ICs2Miw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvOworZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJf
dDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGNsYXNzIENhY2hlZENvZGVC
bG9jazsKQEAgLTE4MCwyNyArMTgwLDE3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
LmFwcGVuZChzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLSAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUp
CisgICAgdW5zaWduZWQgYWRkQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0
YW50KQogICAgIHsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyh2bS5oZWFwLCBjZWxsTG9jaygpKTsKICAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7Ci0gICAgICAgIEFT
U0VSVChyZXN1bHQpOwotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0eXBlKTsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgTGlua1RpbWVDb25zdGFudENvdW50
KTsKLSAgICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tpbmRleF0gPSByZXN1bHQ7CiAgICAgICAg
IG1fY29uc3RhbnRSZWdpc3RlcnMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKLSAg
ICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbjo6T3RoZXIpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmxh
c3QoKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGxpbmtUaW1l
Q29uc3RhbnQpKSk7CisgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
LmFwcGVuZChTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXhG
b3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKLSAgICB7Ci0gICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOwotICAgICAgICBB
U1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAgICAgICByZXR1cm4gbV9s
aW5rVGltZUNvbnN0YW50c1tpbmRleF07Ci0gICAgfQotCiAgICAgY29uc3QgVmVjdG9yPFdyaXRl
QmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFu
dFJlZ2lzdGVyczsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRS
ZWdpc3RlcihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5k
ZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRl
eCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQpAQCAtNDA2LDggKzM5Niw2IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIG1fdGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7
CiAKLSAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlu
a1RpbWVDb25zdGFudHM7Ci0KICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNp
Z25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDog
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggMmRiODE4ZjBiOWI1NGIyMTViYWYwNmNjYzZhZTMxYzNj
MjlhZGZhZS4uMjVkODIzMmM3YTk3ZTAwN2UyYjQzZTg4NWJiNTJlODhmMGQzOTZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRl
cmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50Lmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgiCkBAIC0zMDIsMTUgKzMwMywx
MyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAg
LCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQorICAgICwg
bV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVDb25zdGFudHMsIG51
bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCiAgICAgLCBtX3ZtKHZtKQogICAg
ICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVzZXNB
cnJvd0Z1bmN0aW9uKCkgfHwgcHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVz
LT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGlt
ZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsK
LQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFj
ZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM0NSw2ICszNDQsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKFN0cm9uZzxV
bmxpbmtlZENvZGVCbG9jaz4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJh
dGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25O
b2RlKQorICAgICwgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVD
b25zdGFudHMsIG51bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKEZ1bmN0aW9uQ29kZSkKICAgICAs
IG1fdm0odm0pCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGlu
RnVuY3Rpb24oKSkKQEAgLTM2MCw5ICszNjAsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51
c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1f
ZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0g
ICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0
ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRh
YmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAg
ICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJp
Y3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwx
MSArNzg1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJv
d25WYWx1ZSk7CiAgICAgICAgIC8vIHJldHVybiBAcHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJS
ZWplY3RQcm9taXNlID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJl
amVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1l
KCkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsK
LSAgICAgICAgbW92ZShzY29wZS5nZXQoKSwgZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwg
dmFyUmVqZWN0UHJvbWlzZSkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJv
bWlzZSA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJS
ZWplY3RQcm9taXNlLCBUaHJvd0lmTm90Rm91bmQpOwotCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZWplY3RQcm9taXNlID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENo
ZWNrKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAg
ICAgICAgZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAg
ICAgIG1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBA
IC04NDIsMTUgKzgzNSwxMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgICwgbV9jb2Rl
R2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZh
bE5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKQorICAgICwgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVD
b25zdGFudHMsIG51bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKEV2YWxDb2RlKQogICAgICwgbV92
bSh2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYm
ICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQoZXZhbE5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUt
PnVzZXNFdmFsKCkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2
ZWRDb250ZXh0VHlwZSgpKQogewotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1f
bGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51
bGxwdHI7Ci0KICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIAogICAgIHB1
c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXph
dGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKQEAgLTkwMyw2
ICs4OTQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBN
b2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICwgbV9jb2RlR2VuZXJhdGlv
bk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3Jh
bU5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKQorICAgICwgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVD
b25zdGFudHMsIG51bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBt
X3ZtKHZtKQogICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKQEAgLTkxMCw5ICs5MDIs
NiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQ
cm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIAot
ICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVycykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBTeW1ib2xU
YWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUo
bV92bSk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmlj
dEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZS0+c2V0U2NvcGVUeXBlKFN5bWJvbFRhYmxlOjpTY29wZVR5cGU6OkxleGljYWxTY29wZSk7
CkBAIC0xNDQyLDEyICsxNDMxLDEyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1w
SWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExh
YmVsJiB0YXJnZXQpCiB7Ci0gICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6
OkNhbGxGdW5jdGlvbiwgdGFyZ2V0LmJpbmQodGhpcykpOworICAgIE9wSm5lcVB0cjo6ZW1pdCh0
aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50
OjpjYWxsRnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQsIExh
YmVsJiB0YXJnZXQpCiB7Ci0gICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6
OkFwcGx5RnVuY3Rpb24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQo
dGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFu
dDo6YXBwbHlGdW5jdGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAogYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6aGFzQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CkBA
IC0zMTAxLDcgKzMwOTAsNyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAo
Y2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID49IDIpCiAgICAgICAg
ICAgICByZXR1cm4gTm9FeHBlY3RlZEZ1bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgT3BKbmVx
UHRyOjplbWl0KHRoaXMsIGZ1bmMsIFNwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yLCByZWFsQ2Fs
bC0+YmluZCh0aGlzKSk7CisgICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpLCByZWFs
Q2FsbC0+YmluZCh0aGlzKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRS
ZXN1bHQoKSkKICAgICAgICAgICAgIGVtaXROZXdPYmplY3QoZHN0KTsKQEAgLTMxMTcsNyArMzEw
Niw3IEBAIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1
bmN0aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3QsCiAgICAgICAgIGlmIChjYWxsQXJndW1lbnRz
LmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPiAyKQogICAgICAgICAgICAgcmV0dXJuIE5v
RXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlz
LCBmdW5jLCBTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7
CisgICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFu
dChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpBcnJheSksIHJlYWxDYWxsLT5iaW5kKHRoaXMp
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAg
ICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID09
IDIpCkBAIC0zMjg1LDcgKzMyNzQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcAogICAgIGlm
IChhdHRyaWJ1dGVzLmhhc0dldCgpIHx8IGF0dHJpYnV0ZXMuaGFzU2V0KCkpIHsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgICAgIGlmICgh
YXR0cmlidXRlcy5oYXNHZXQoKSB8fCAhYXR0cmlidXRlcy5oYXNTZXQoKSkKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBM
aW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yRnVuY3Rpb24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5r
VGltZUNvbnN0YW50Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZ2V0dGVyOwogICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKQEAg
LTQ0NzQsMTAgKzQ0NjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YQogCiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRl
cmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAotICAgIGF1dG8gdmFyQ3JlYXRl
QXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgIG1vdmUoc2NvcGUu
Z2V0KCksIGVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFzeW5jRnJvbVN5
bmNJdGVyYXRvcikpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVBc3luY0Zyb21TeW5j
SXRlcmF0b3IgPSBlbWl0R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwg
dmFyQ3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBtb3ZlTGlua1Rp
bWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVBc3luY0Zyb21TeW5j
SXRlcmF0b3IpOwogCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsK
ICAgICBlbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCAyZDcyMWViNzc5MGIzNzMwMjM3OGZmYWNiOTEyMjcyZGZiOGU3YzRmLi4zNmFl
NjRjN2NmZjE2MWY4MDUxOGFiOGY4OWNlZDdkNDdjZTRlNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03
Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgZW51bSBjbGFzcyBEZWJ1Z2dhYmxl
Q2FsbCB7IFllcywgTm8gfTsKICAgICBlbnVtIGNsYXNzIFRoaXNSZXNvbHV0aW9uVHlwZSB7IExv
Y2FsLCBTY29wZWQgfTsKKyAgICBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90
OwogICAgIAogICAgIGNsYXNzIENhbGxBcmd1bWVudHMgewogICAgIHB1YmxpYzoKQEAgLTEyMTYs
NyArMTIxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5
VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJn
ZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9pc0Rlcml2ZWRD
b25zdHVjdG9yIHsgbnVsbHB0ciB9OwotICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnNbTGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICAgICAgVmVjdG9yPFJl
Z2lzdGVySUQqPiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnM7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51
bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9wcm9taXNlUmVnaXN0ZXIgeyBudWxscHRy
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAyZTAzYmUwYjdjNzVkZGIwMjdlYzRlNmY2NTYyMThkOGUwZmU1MWE2
Li41MjQ2OGUxZjJhYTExZTEyMDZhZTdmNDVhMTVmMjkwYjM5ZGFmNDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogSW1w
b3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRHbG9iYWxQcml2YXRlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRl
TmFtZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2VuZXJhdG9y
Lm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydE1v
ZHVsZSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAx
KTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJndW1lbnRzLmFyZ3VtZW50UmVn
aXN0ZXIoMCksIG1fZXhwcik7CkBAIC05ODUsNyArOTg1LDExIEBAIFJlZ2lzdGVySUQqIEZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIHJl
dHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOworICAgIGlmIChtX2VudHJ5
LnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAg
ICAgICByZXR1cm4gKHRoaXMtPiptX2VudHJ5LmVtaXR0ZXIoKSkoZ2VuZXJhdG9yLCBkc3QpOwor
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChkc3Qs
IG1fZW50cnkubGlua1RpbWVDb25zdGFudCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRCeUlkRGlyZWN0KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTEwMTMsOSArMTAxNywxMCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEJ5SWRE
aXJlY3RQcml2YXRlKEJ5dGVjb2RlRwogCiBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNl
SW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX3Byb21pc2VGaWVsZEZsYWdzKQorICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9
PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9k
ZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfcHJvbWlzZUZpZWxkRmxhZ3MpCiAgICAgICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxk
OjpGbGFnczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KQorICAgIGlm
IChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdCkKICAgICAgICAgcmV0dXJu
IEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0OwogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwpAQCAt
MTAyMywxMyArMTAyOCwxNCBAQCBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50ZXJu
YWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIAogc3RhdGljIEpTR2Vu
ZXJhdG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkKKyAgICBBU1NF
UlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlw
ZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCiAgICAg
ICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwotICAgIGlmIChub2RlLT5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9y
RmllbGROZXh0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCiAgICAgICAg
IHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKICAgICAgICAgcmV0
dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJh
bWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVy
biBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBAIC0xMDM3LDE5
ICsxMDQzLDIwIEBAIHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxG
aWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kCiAKIHN0YXRpYyBKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUlu
dHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAg
IEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkK
ICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dlbmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0
KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYg
KG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19nZW5lcmF0b3JGaWVsZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhp
cykKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOwotICAgIGlm
IChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRG
cmFtZSkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKLSAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQorICAgIGlmIChub2RlLT5l
bnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKICAgICAgICAgcmV0dXJuIEpTQXN5
bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uOwotICAgIGlmIChub2RlLT5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0
b3JGaWVsZFF1ZXVlRmlyc3QpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRR
dWV1ZUZpcnN0KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVl
Rmlyc3Q7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQorICAgIGlmIChu
b2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQogICAgICAgICByZXR1cm4gSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdDsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBA
IC00MDk2LDEwICs0MTAzLDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNl
dCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAYXN5
bmNGdW5jdGlvblJlc3VtZQotICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1
bWVQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQo
KSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXN5bmNGdW5jdGlvblJlc3VtZSA9IGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rp
b25SZXN1bWUgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6YXN5bmNGdW5jdGlvblJlc3VtZSk7CiAKICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgNCk7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50
Q291bnQgPSAwOwpAQCAtNDU3OCwxMSArNDU4Miw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMp
CiAgICAgSWRlbnRpZmllclNldCBleGNsdWRlZFNldDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YWRkTWV0aG9kOwogICAgIGlmIChtX2NvbnRhaW5zUmVzdEVsZW1lbnQgJiYgbV9jb250YWluc0Nv
bXB1dGVkUHJvcGVydHkpIHsKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUo
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRlTmFtZSgp
KTsKLQotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldENvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLm1v
dmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlNldCk7CiAKICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CiAgICAgICAg
IGV4Y2x1ZGVkTGlzdCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2V0Q29uc3RydWN0b3IuZ2V0KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CkBAIC00NjMzLDExICs0NjMzLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXdPYmplY3QgPSBnZW5lcmF0b3IuZW1pdE5ld09iamVj
dChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBsb2FkIGFuZCBjYWxsIEBjb3B5RGF0YVByb3BlcnRpZXMKLSAgICAgICAgICAgIGF1dG8gdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuY29weURhdGFQcm9wZXJ0aWVzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGll
cyA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50Ojpjb3B5RGF0YVByb3BlcnRpZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAzKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTQ4
MTAsMTEgKzQ4MDYsNyBAQCBSZWdpc3RlcklEKiBPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0bwogICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShzcmMuZ2V0KCksIG1fZXhwcmVzc2lvbik7CiAgICAgCiAgICAgLy8gbG9hZCBhbmQg
Y2FsbCBAY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zCi0gICAgYXV0byB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5j
b3B5RGF0YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnNQcml2YXRlTmFtZSgpKTsKLSAgICAKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAg
Z2VuZXJhdG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNj
b3BlLmdldCgpLCB2YXIpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0
aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBjb3B5RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQo
bnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25z
KTsKICAgICAKICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAyKTsK
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGUwZWVmNDkxN2FhNjgxZmFjMjk0Yzk4ODQ5ODI1YjJkOTNmMDBmMWEuLjMzNzhhZDA5
MmY2YTI0MjAzM2NmNDA3NjgzZDkzODk1ZDNkM2NkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02MzQyLDExICs2MzQyLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7Ci0gICAgICAgICAgICBT
cGVjaWFsOjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRl
cjsKLSAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNDZWxsKHNwZWNpYWxQb2ludGVyKSk7Ci0g
ICAgICAgICAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXIgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPigK
LSAgICAgICAgICAgICAgICBhY3R1YWxQb2ludGVyRm9yKG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLCBzcGVjaWFsUG9pbnRlcikpOwotICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3pl
blBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZShhY3R1YWxQb2ludGVyKTsKKyAgICAgICAgICAgIEZy
b3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50
ZXIub2Zmc2V0KCkpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVt
cFRhcmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIGNoaWxk
ID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jaykubV9oYXNKdW1wZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAppbmRleCBjYTBmMTI2NzA5OGQzYTFiYWYxZDJiYWQ3YjE5ZGEyZDQ1
YTMzZDAyLi43N2UxNzhmNGJjMDNhNzBkYzRmMzQ2NGZmNTljNzNkYmNjN2E5YWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBAIC0xMzksOCArMTM5LDcg
QEAgY29uc3QgVmVjdG9yPHNpemVfdD4mIHNpemVDbGFzc2VzKCkKICAgICAgICAgICAgIC8vIE1h
bnVhbGx5IGluamVjdCBzaXplIGNsYXNzZXMgZm9yIG9iamVjdHMgd2Uga25vdyB3aWxsIGJlIGFs
bG9jYXRlZCBpbiBoaWdoIHZvbHVtZS4KICAgICAgICAgICAgIC8vIEZJWE1FOiBBbGwgb2YgdGhl
c2UgdGhpbmdzIHNob3VsZCBoYXZlIElzb1N1YnNwYWNlcy4KICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk4NzYKLSAgICAgICAgICAgIGFk
ZChzaXplb2YoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykpOwotICAgICAgICAgICAgYWRkKHNp
emVvZihKU1N0cmluZykpOworICAgICAgICAgICAgYWRkKDI1Nik7CiAKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAvLyBTb3J0IGFuZCBkZWR1cGxpY2F0ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDBkMDQ5OTQ1ODBkOWIzODgxYzkwMmIwMWFi
YTNlNjFkOTYwMzZlNTkuLjhlYmU0OWZlYmJmNTEzNWI1MzVlM2NkZDc2OTY1NjgxNTA1M2RhNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNDcxLDExICs0
NzEsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEpuZXFQdHI+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7
Ci0gICAgU3BlY2lhbDo6UG9pbnRlciBwdHIgPSBieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyOwor
ICAgIEpTVmFsdWUgc3BlY2lhbFBvaW50ZXIgPSBnZXRDb25zdGFudE9wZXJhbmQoYnl0ZWNvZGUu
bV9zcGVjaWFsUG9pbnRlci5vZmZzZXQoKSk7CisgICAgQVNTRVJUKHNwZWNpYWxQb2ludGVyLmlz
Q2VsbCgpKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihzcmMsIHJlZ1QwKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFu
Y2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2Rl
QmxvY2ssIHB0cikpKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIo
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHNwZWNpYWxQb2ludGVyLmFzQ2VsbCgpKSk7CiAg
ICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgJm1ldGFkYXRhLm1faGFzSnVtcGVkKTsKICAgICBh
ZGRKdW1wKGp1bXAoKSwgdGFyZ2V0KTsKICAgICBlcXVhbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDNlMGNlYjQ2OTNh
NTg5NWYzYWZlYmM5NjJhOWMxNDNmMDgyOGM1MzEuLjRlOTQyNDU0NzlmM2Y0NzY5N2E4YjY5M2M1
ZGYxZjAxMGViMjMyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKQEAgLTQ3OCwxMiArNDc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFf
cHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBi
eXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0
ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKKyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0
Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAg
IEFTU0VSVChzcGVjaWFsUG9pbnRlci5pc0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0g
anVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwog
CiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgSnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW1QdHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRyKSkp
OworICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRy
KHNwZWNpYWxQb2ludGVyLmFzQ2VsbCgpKSk7CiAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwogICAg
IHN0b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRk
SnVtcChqdW1wKCksIHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDMzN2VlMjJiNDkzZDBi
NWFlNGQzNzQyZGIxMjJmNTIzYmVhZjNmNmEuLjMxNTU0OGYxMGIxMjBlOWU2ZjUxYjIxMDI4ODE1
MjA2ZTI2NjU4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC00NjIsNiArNDYyLDE4IEBAIG1hY3Jv
IGxvYWRWYXJpYWJsZShnZXQsIGZpZWxkTmFtZSwgaW5kZXhSZWcsIHRhZ1JlZywgcGF5bG9hZFJl
ZykKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXhSZWcsIDhdLCBwYXlsb2FkUmVn
CiBlbmQKIAorIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdp
c3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50KHNpemUs
IGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgc2l6ZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eE5hcnJvdywgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhXaWRlMTYsIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4V2lkZTMyLCBtYWNybyAoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpCisg
ICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwg
cGF5bG9hZAorICAgICAgICBzdWJwIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBpbmRleAor
ICAgICAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICAgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBlbmQp
CitlbmQKKwogIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdp
c3RlcnMuIEluZGV4IGlzIG5vdAogIyBjaGFuZ2VkLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCBpbmRleCwgdGFnLCBwYXlsb2FkKQpAQCAtMTcxMCwxMiArMTcyMiwxMCBAQCB1
bmRlZmluZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9y
TnVsbCwKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1
ZSwgdDApCi0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQot
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxPYmplY3RbdDJdLCB0MgorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnQoc2l6ZSwgdDEsIHQzLCB0MikKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6
bV9zcGVjaWFsUG9pbnRlcnNbdDIsIHQxLCA0XSwgdDEKLSAgICBicGVxIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKyAgICBicGVxIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQyLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKIC5vcEpuZXFQdHJC
cmFuY2g6CiAgICAgbWV0YWRhdGEodDUsIHQyKQogICAgIHN0b3JlYiAxLCBPcEpuZXFQdHI6Ok1l
dGFkYXRhOjptX2hhc0p1bXBlZFt0NV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMDQ0M2YwY2ZlOGIzNzI3ZWM5
NGJkNGQ1ODk3MDk2MTBiNDI5Yzg2YS4uNTU4OGU1YjgzNDUwNjJiY2M3ZmFkMmRmZDM5NGI2ODU4
NjQ4OGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTQ2NSw2ICs0NjUsMzAgQEAgbWFjcm8gbG9hZFZhcmlh
YmxlKGdldCwgZmllbGROYW1lLCB2YWx1ZVJlZykKICAgICBsb2FkcSBbY2ZyLCB2YWx1ZVJlZywg
OF0sIHZhbHVlUmVnCiBlbmQKIAorIyBJbmRleCBhbmQgdmFsdWUgbXVzdCBiZSBkaWZmZXJlbnQg
cmVnaXN0ZXJzLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50KHNp
emUsIGluZGV4LCB2YWx1ZSkKKyAgICBtYWNybyBsb2FkTmFycm93KCkKKyAgICAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHZhbHVlCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFu
dFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt2YWx1ZV0sIHZhbHVlCisgICAgICAgIGxv
YWRxIC0oRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhOYXJyb3cgKiA4KVt2YWx1ZSwgaW5kZXgs
IDhdLCB2YWx1ZQorICAgIGVuZAorCisgICAgbWFjcm8gbG9hZFdpZGUxNigpCisgICAgICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB2YWx1ZQorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29u
c3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdmFsdWVdLCB2YWx1ZQorICAgICAg
ICBsb2FkcSAtKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4V2lkZTE2ICogOClbdmFsdWUsIGlu
ZGV4LCA4XSwgdmFsdWUKKyAgICBlbmQKKworICAgIG1hY3JvIGxvYWRXaWRlMzIoKQorICAgICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3ZhbHVlXSwgdmFsdWUKKyAg
ICAgICAgc3VicCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleFdpZGUzMiwgaW5kZXgKKyAgICAg
ICAgbG9hZHEgW3ZhbHVlLCBpbmRleCwgOF0sIHZhbHVlCisgICAgZW5kCisKKyAgICBzaXplKGxv
YWROYXJyb3csIGxvYWRXaWRlMTYsIGxvYWRXaWRlMzIsIG1hY3JvIChsb2FkKSBsb2FkKCkgZW5k
KQorZW5kCisKICMgSW5kZXggYW5kIHZhbHVlIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4g
SW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgaW5kZXgsIHZhbHVlKQogICAgIG1hY3JvIGxvYWROYXJyb3coKQpAQCAtMTgxNiwxMSArMTg0
MCw5IEBAIHVuZGVmaW5lZE9yTnVsbEp1bXBPcChqbnVuZGVmaW5lZF9vcl9udWxsLCBPcEpudW5k
ZWZpbmVkT3JOdWxsLAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQ
dHIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdl
dChtX3ZhbHVlLCB0MCkKLSAgICBnZXR1KHNpemUsIE9wSm5lcVB0ciwgbV9zcGVjaWFsUG9pbnRl
ciwgdDEpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0Ml0sIHQyCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fc3Bl
Y2lhbFBvaW50ZXJzW3QyLCB0MSwgUHRyU2l6ZV0sIHQxCi0gICAgYnBuZXEgdDEsIFtjZnIsIHQw
LCA4XSwgLm9wSm5lcVB0clRhcmdldAorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAg
ICBsb2FkQ29uc3RhbnQoc2l6ZSwgdDEsIHQyKQorICAgIGJwbmVxIHQyLCBbY2ZyLCB0MCwgOF0s
IC5vcEpuZXFQdHJUYXJnZXQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEpuZXFQdHJUYXJnZXQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNhZjAzMDgyOTIx
ZDEyOTVhMDQyOGRiMGNiZTA0MTJjM2FjZjBjOTkuLmNjNTk3ZjViNDRiOWU3MTc5ZjVkZTU1YjBl
ZWQyYmY4NjkwNWVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCkBAIC0yMDAsOCArMjAwLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICB1
c2VzQXJndW1lbnRzKCk7CiAKICAgICAgICAgaWYgKGlkZW50LmlzU3ltYm9sKCkpIHsKLSAgICAg
ICAgICAgIGlmIChCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIGVtaXR0ZXIgPSBt
X3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShC
eXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2NhdGlvbiwgZW1pdHRlciwg
aWRlbnQsIG51bGxwdHIsIHN0YXJ0LCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGF1dG8gZW50
cnkgPSBtX3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpOworICAg
ICAgICAgICAgaWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6
OkNvbnN0YW50LCBsb2NhdGlvbiwgZW50cnkudmFsdWUoKSwgaWRlbnQsIG51bGxwdHIsIHN0YXJ0
LCBzdGFydCwgZW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOwpAQCAtMTM4NCw4ICsx
Mzg1LDggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBpZiAoZnVuYy0+aXNCeXRlY29k
ZUludHJpbnNpY05vZGUoKSkgewogICAgICAgICBBU1NFUlQoIWlzT3B0aW9uYWxDYWxsKTsKICAg
ICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBpbnRyaW5zaWMgPSBzdGF0aWNfY2FzdDxCeXRl
Y29kZUludHJpbnNpY05vZGUqPihmdW5jKTsKLSAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgp
ID09IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQpCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW1pdHRl
cigpLCBpbnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKKyAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQgJiYgaW50cmluc2ljLT5lbnRyeSgpLnR5cGUoKSA9PSBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVudHJ5KCks
IGludHJpbnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpOwogICAgIH0KIAogICAgIGlmIChmdW5jLT5pc09wdGlvbmFsQ2hhaW4oKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA3NTg5
ZDdjOTFlODk1ZWIyZDk5NjMzZGJmNWI0YWE1ZDI2YWViODRlLi45YzdiOWEyODIwNzNjNTc2YTYz
NDllNGQ2OWMyMjBiYTVjY2RlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5
dGVjb2RlSW50cmluc2ljTm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEVtaXR0ZXJUeXBlIGVtaXR0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisg
ICAgaW5saW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5
cGUgdHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6RW50cnkgZW50cnksIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fZW1pdHRl
cihlbWl0dGVyKQorICAgICAgICAsIG1fZW50cnkoZW50cnkpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICAgICAgLCBtX3R5cGUodHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBhYTQ0ODY2NGQxZDQ4MTQwZDEwYTQ1
OTBjMDY3ZDUwMWE4YjYyODdmLi5mYWQ1MzI4YTJiOTQ0MzdkYjJkYWU3ZjFjODZiMjg5YzFhMzQx
ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC05NDQsMTQgKzk0NCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEZ1bmN0aW9uCiAgICAgICAgIH07CiAK
LSAgICAgICAgdHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVt
aXR0ZXJUeXBlKShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKLQotICAgICAgICBC
eXRlY29kZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRl
clR5cGUsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5
cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVu
dHJ5LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2lj
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsgfQorICAgICAgICBCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5OjpFbnRyeSBlbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnk7IH0KICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7
IH0KIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TKG5h
bWUpIFJlZ2lzdGVySUQqIGVtaXRfaW50cmluc2ljXyMjbmFtZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKTsKQEAgLTk2NCw3ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OkZ1bmN0aW9uOyB9CiAKLSAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOwor
ICAgICAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBtX2VudHJ5OwogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2Fy
Z3M7CiAgICAgICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDYwMzVhNDkwOTI2YzRhZTVmYzMzMjdhZmZlZGY0Mjc2
YjkzZjA2NTcuLmViOWQ5OTNiMjUxNGM2NzI5ZTEwMmY2NWU3MjBhNzI4YWYyYzI0MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MDEs
NyArMTgwMSw2IEBAIGNsYXNzIENhY2hlZENvZGVCbG9jayA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8
Q29kZUJsb2NrVHlwZT4gewogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVn
aXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKLSAgICBzdGQ6OmFy
cmF5PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7
CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0
TW9kZSA6IDE7CkBAIC0yMDM5LDkgKzIwMzgsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29k
ZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIENhY2hl
ZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlu
a2VkQ29kZUJsb2NrJiBjb2RlQmxvY2spIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
TGlua1RpbWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBjb2RlQmxvY2subV9saW5rVGlt
ZUNvbnN0YW50c1tpXSA9IG1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX2NvbnN0YW50
UmVnaXN0ZXJzLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywg
JmNvZGVCbG9jayk7CiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVj
b2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bik7CiAgICAgbV9leHByZXNzaW9uSW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhw
cmVzc2lvbkluZm8pOwpAQCAtMjIwNyw5ICsyMjAzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENh
Y2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnMKICAgICBtX2NvZGVHZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9u
TW9kZTsKICAgICBtX2NvZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbaV0gPSBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQog
ICAgIG1fbWV0YWRhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX21ldGFkYXRhLmdldCgp
KTsKICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9yYXJlRGF0YS5n
ZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRl
eCA0N2ZjZDMzOGI0MDU5ODM2Y2QzNjgxZTg0ZTAxZmFiNzQzMzk3Njc0Li4yNTk5ZTJjNTYyOTEw
Zjk4MTQ2YzkxOGI1MjI0OWM4NTViZDJhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xMjksNyArMTI5LDggQEAgYm9vbCBpc0ludDUyKGRvdWJs
ZSk7CiBlbnVtIGNsYXNzIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA6IHVpbnQ4X3QgewogICAg
IE90aGVyLAogICAgIEludGVnZXIsCi0gICAgRG91YmxlCisgICAgRG91YmxlLAorICAgIExpbmtU
aW1lQ29uc3RhbnQsCiB9OwogCiBjbGFzcyBKU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjNjViMGIzNzBkMDI1NzVl
MDBiMWY1MDQ5MDk5MTA3ZTc3MGU3MjhkLi5iODYyYjRkOGNlODk3MDQwODJjMWY1MmY2YzY2MzUz
MmQ4YjNmY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIkxhenlDbGFzc1N0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJMYXp5
UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWFw
SXRlcmF0b3JQcm90b3R5cGUuaCIKQEAgLTQxMSw2ICs0MTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVlSm9iKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbAogSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgMCkKICAgICAsIG1fdm0oJnZt
KQorICAgICwgbV9saW5rVGltZUNvbnN0YW50cyhudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzKQog
ICAgICwgbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0
Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKICAgICAsIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50
KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogICAgICwgbV92YXJJbmpl
Y3Rpb25XYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQpA
QCAtNTIyLDggKzUyNCw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24gPSBudWxscHRyOwogICAgIEpTRnVuY3Rpb24qIGhh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBudWxscHRyOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5
cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyh2bSwgdGhpcywgJmNhbGxGdW5jdGlvbiwgJmFwcGx5
RnVuY3Rpb24sICZoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKLSAgICBtX2NhbGxGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlvbik7Ci0gICAgbV9hcHBseUZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlv
bi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYg
aW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcuc3RyaW5nKCks
IGFycmF5UHJvdG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7CkBAIC03MjMsNyArNzIzLDgg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9nZW5lcmF0b3JQcm90
b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQ
cm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0s
IHRoaXMsIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fYXN5bmNJdGVyYXRv
clByb3RvdHlwZS5nZXQoKSkpKTsKIAotICAgIG1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAgSlNGdW5jdGlvbiogZGVmYXVsdFByb21pc2VU
aGVuID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNvZGVHZW5l
cmF0b3Iodm0pLCB0aGlzKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pXS5zZXQodm0sIHRo
aXMsIGRlZmF1bHRQcm9taXNlVGhlbik7CiAKICNkZWZpbmUgQ1JFQVRFX1BST1RPVFlQRV9GT1Jf
U0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VU
eXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZsYWcp
IHsgXAogICAgICAgICBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLnNldCh2bSwgdGhpcywg
Y2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fICMjIHByb3RvdHlwZUJhc2UgIyMg
UHJvdG90eXBlLmdldCgpKSkpOyBcCkBAIC03NTAsMTggKzc1MSwyMSBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKIAogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25z
dHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpXS5zZXQodm0s
IHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKIAogICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOwotICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnRocm93VHlwZUVy
cm9yRnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAg
ICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgZnVuY3Rp
b25Db25zdHJ1Y3Rvcik7CiAKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9y
ID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Fy
cmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1f
YXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OkFycmF5KV0uc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsKICAgICAKICAgICBSZWdF
eHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2ll
c0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIHJlZ0V4cENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpSZWdFeHApXS5zZXQodm0sIHRoaXMsIHJl
Z0V4cENvbnN0cnVjdG9yKTsKICAgICBtX3JlZ0V4cEdsb2JhbERhdGEuY2FjaGVkUmVzdWx0KCku
cmVjb3JkKHZtLCB0aGlzLCBudWxscHRyLCBqc0VtcHR5U3RyaW5nKHZtKSwgTWF0Y2hSZXN1bHQo
MCwgMCkpOwogICAgIAogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQpAQCAtNzgzLDYg
Kzc4Nyw4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX3Byb21pc2VDb25zdHJ1
Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9pbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IpOwogICAgIAogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRlcigKICAg
ICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKQEAgLTg0
Miw5ICs4NDgsNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENv
bnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3Rv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWdF
eHAsIHJlZ0V4cENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuT2JqZWN0UHJpdmF0ZU5hbWUoKSwgb2Jq
ZWN0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7Ci0KICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U2hh
cmVkQXJyYXlCdWZmZXIsIHNoYXJlZEFycmF5QnVmZmVyQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkF0b21pY3Mi
KSwgYXRvbWljc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwpAQCAtOTE3LDE4MCArOTIwLDIyNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25z
dHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFs
TmFtZQogICAgIGlmIChPcHRpb25zOjpleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlcigpKQogICAg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TG9h
ZGVyLCBtb2R1bGVMb2FkZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiogYnVpbHRpbkxvZyA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVy
LnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7Ci0gICAgSlNGdW5jdGlvbiogYnVpbHRp
bkRlc2NyaWJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUp
OwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUcnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5z
aWMpOwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm9w
ZXJ0eUlzRW51bWVyYWJsZSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNPd25LZXlzID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY093bktl
eXMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYWtlVHlwZUVycm9yID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheUxlbmd0aCA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheUdldE9yaWdpbmFs
Q29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcik7Ci0gICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKLSAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNU
eXBlZEFycmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlv
biogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJy
YXlDcmVhdGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1bmN0aW9u
KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGhhc0luc3RhbmNlQm91
bmRGdW5jdGlvbik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJbnN0YW5jZU9mID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RoaXNUaW1lVmFsdWUgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0
VGltZSk7Ci0jaWYgRU5BQkxFKElOVEwpCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNEYXRl
VGltZUZvcm1hdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGds
b2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk7Ci0jZW5kaWYKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY0lzQXJyYXlTbG93ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3cpOwotICAgIEpTRnVuY3Rp
b24qIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KTsKLSAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFk
LCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
TWFwQnVja2V0TmV4dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCks
IG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBCdWNrZXROZXh0SW50cmluc2ljKTsK
LSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tldEtleSA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBK
U01hcEJ1Y2tldEtleUludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBC
dWNrZXRWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1h
cFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIEpTTWFwQnVja2V0VmFsdWVJbnRyaW5zaWMpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCwg
SlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1Nl
dEJ1Y2tldE5leHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBz
ZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVja2V0TmV4dEludHJpbnNpYyk7Ci0g
ICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXkgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgSlNT
ZXRCdWNrZXRLZXlJbnRyaW5zaWMpOwotCiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0Zs
YWdzR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwg
dm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0ZsYWdzR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdF
eHBQcm90b0ZsYWdzR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFs
R2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0u
cHJvcGVydHlOYW1lcy0+Z2xvYmFsKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7Ci0gICAgbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5zZXQodm0sIHRoaXMsIHJlZ0V4cFBy
b3RvR2xvYmFsR2V0dGVyKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcildLnNldCh2
bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVn
RXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2FzZSk7CiAgICAgY2F0Y2hT
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdl
dHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKTsKICAgICBH
ZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0
aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bXVsdGlsaW5l
KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJv
dG9NdWx0aWxpbmVHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyID0gZ2V0R2V0
dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+
c291cmNlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVn
RXhwUHJvdG9Tb3VyY2VHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvU291cmNlR2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyID0gZ2V0R2V0
dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+
c3RpY2t5KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVn
RXhwUHJvdG9TdGlja3lHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvU3RpY2t5R2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciA9IGdldEdl
dHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMt
PnVuaWNvZGUpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX3Jl
Z0V4cFByb3RvVW5pY29kZUdldHRlci5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvVW5pY29kZUdl
dHRlcik7Ci0gICAgSlNPYmplY3QqIGJ1aWx0aW5SZWdFeHBFeGVjID0gYXNPYmplY3QobV9yZWdF
eHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlYykuYXNDZWxs
KCkpOwotICAgIG1fcmVnRXhwUHJvdG9FeGVjLnNldCh2bSwgdGhpcywgYnVpbHRpblJlZ0V4cEV4
ZWMpOwotICAgIEpTT2JqZWN0KiByZWdFeHBTeW1ib2xSZXBsYWNlID0gYXNPYmplY3QobV9yZWdF
eHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJv
bCkuYXNDZWxsKCkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRlcildLnNldCh2bSwg
dGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKKyAgICBKU0Z1bmN0aW9uKiByZWdFeHBT
eW1ib2xSZXBsYWNlID0ganNDYXN0PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSk7CiAgICAgbV9yZWdF
eHBQcm90b1N5bWJvbFJlcGxhY2Uuc2V0KHZtLCB0aGlzLCByZWdFeHBTeW1ib2xSZXBsYWNlKTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYyldLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rp
b24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
eGVjKSkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2UpXS5zZXQodm0sIHRo
aXMsIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJl
cGxhY2VTeW1ib2wpLmFzQ2VsbCgpKTsKKworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLnNldCh2bSwgdGhpcywgc2V0
Q29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXkpXS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3Ry
dWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSkuYXNDZWxsKCkp
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmNhbGxGdW5jdGlvbildLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjphcHBseUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKKworI2Rl
ZmluZSBJTklUX1BSSVZBVEVfR0xPQkFMKGZ1bmNOYW1lLCBjb2RlKSBcCisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZnVuY05h
bWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsgXAor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpOyBcCisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBnbG9iYWxP
YmplY3QpKTsgXAorICAgICAgICB9KTsKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X1BSSVZBVEVfR0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkKKyN1bmRlZiBJTklUX1BS
SVZBVEVfR0xPQkFMCiAKLSNkZWZpbmUgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKHZh
ck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBKU0Z1bmN0aW9uKiB2YXJOYW1lICMjIFByaXZhdGVGdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKHZtKSwg
dGhpcyk7Ci0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9O
QU1FKENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTikKLSN1bmRlZiBDUkVBVEVfUFJJVkFU
RV9HTE9CQUxfRlVOQ1RJT04KLQorICAgIC8vIEZJWE1FOiBJbml0aWFsaXppbmcgdGhlbSBsYXpp
bHkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzc5
NQogICAgIEpTT2JqZWN0KiBhcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gQXJyYXlJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBhcnJh
eUl0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nh
c3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFycmF5SXRl
cmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFycmF5
SXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIGFzeW5jRnJvbVN5bmNJdGVyYXRv
clByb3RvdHlwZSA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0
aGlzLCBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIGFzeW5jRnJvbVN5bmNJdGVy
YXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBq
c0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFzeW5j
RnJvbVN5bmNJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBt
YXBJdGVyYXRvclByb3RvdHlwZSA9IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRo
aXMsIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBtYXBJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0
ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbWFw
SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6TWFwSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2Jq
ZWN0KiByZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsK
LSAgICByZWdFeHBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6UmVnRXhwU3RyaW5nSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKTsK
IAogICAgIEpTT2JqZWN0KiBzZXRJdGVyYXRvclByb3RvdHlwZSA9IFNldEl0ZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGUodm0sIHRoaXMsIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBzZXRJdGVyYXRv
ckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgc2V0SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVj
dCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6U2V0SXRlcmF0b3IpKS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNldEl0ZXJhdG9yUHJvdG90
eXBlKTsKIAotICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IG5ld1Byb21pc2VDYXBhYmlsaXR5UHJpdmF0ZUZ1bmN0aW9uKTsKLSAgICBtX3Jlc29sdmVQcm9t
aXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZXNvbHZlUHJvbWlzZVByaXZhdGVGdW5jdGlvbik7
Ci0gICAgbV9yZWplY3RQcm9taXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZWplY3RQcm9taXNl
UHJpdmF0ZUZ1bmN0aW9uKTsKKyAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgorICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1h
cEJ1Y2tldEhlYWQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZh
dGVGdW5jTWFwQnVja2V0SGVhZCwgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljKSk7CisgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldE5leHQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBCdWNrZXROZXh0SW50cmlu
c2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldEtleSldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXksIEpTTWFwQnVj
a2V0S2V5SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldFZhbHVlKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dFZhbHVlLCBKU01hcEJ1Y2tldFZhbHVlSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnNldEJ1Y2tldEhlYWQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHNldFBy
aXZhdGVGdW5jU2V0QnVja2V0SGVhZCwgSlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnNldEJ1Y2tldE5leHQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCwgSlNTZXRCdWNrZXROZXh0SW50
cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnNldEJ1Y2tldEtleSldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXksIEpTU2V0
QnVja2V0S2V5SW50cmluc2ljKSk7CisgICAgICAgIH0pOworCisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW1wb3J0TW9kdWxl
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jSW1wb3J0TW9k
dWxlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnByb3BlcnR5SXNFbnVtZXJhYmxlKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFi
bGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6b3duS2V5cyldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY093bktleXMpKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
ZW5xdWV1ZUpvYildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5x
dWV1ZUpvYikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlVHlwZUVycm9yKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcikpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5TGVuZ3RoKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKSk7CisgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3Jp
Z2luYWxDb25zdHJ1Y3RvcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U29ydCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY1NvcnQpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNUeXBlZEFycmF5VmlldyldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lz
VHlwZWRBcnJheVZpZXcsIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6dHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6aXNCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBpc0JvdW5kRnVuY3Rpb24pKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
aGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmlu
ZygpLCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW5z
dGFuY2VPZildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0
ZUZ1bmNJbnN0YW5jZU9mKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5Mb2cpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKSk7Cisg
ICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5EZXNjcmliZSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSkpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50Ojp0cnVuYyldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWF0aFBy
b3RvRnVuY1RydW5jLCBUcnVuY0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZXBl
YXRDaGFyYWN0ZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIHN0cmluZ1By
b3RvRnVuY1JlcGVhdENoYXJhY3RlcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcnJheVNwZWNp
ZXNDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9G
dW5jU3BlY2llc0NyZWF0ZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0FycmF5U2xvdyldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVG
dW5jSXNBcnJheVNsb3cpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y29uY2F0TWVtY3B5KV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXBwZW5kTWVtY3B5KV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1j
cHkpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VS
ZWplY3Rpb25UcmFja2VyKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgaW5pdC5zZXQoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnRoaXNUaW1lVmFsdWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGRhdGVQcm90b0Z1bmNHZXRUaW1lLCBEYXRlUHJvdG90eXBlR2V0VGltZUludHJp
bnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0NvbnN0cnVjdG9yKV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYykp
OworICAgICAgICB9KTsKKworICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpyZWdFeHBDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGVzU3Bl
Y1JlZ0V4cENyZWF0ZSwgTm9JbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNSZWdF
eHApXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBO
b0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBNYXRjaEZhc3QpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdCwg
UmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNl
YXJjaEZhc3QpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3Rv
RnVuY1NlYXJjaEZhc3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwU3BsaXRGYXN0KV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTcGxpdEZh
c3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwVGVzdEZhc3QpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0
RmFzdEludHJpbnNpYykpOworICAgICAgICB9KTsKKworICAgIC8vIFN0cmluZy5wcm90b3R5cGUg
aGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpzdHJpbmdJbmNsdWRlc0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCkpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpzdHJpbmdTcGxpdEZhc3QpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCkpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpzdHJpbmdTdWJzdHJJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJp
bmcoKSwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKSk7CisgICAgICAgIH0pOworCisgICAg
Ly8gRnVuY3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFrZUJvdW5kRnVuY3Rpb24p
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgNSwgU3RyaW5nKCksIG1ha2VCb3VuZEZ1bmN0aW9uKSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc093bkxlbmd0aFByb3BlcnR5KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCBoYXNPd25MZW5ndGhQcm9wZXJ0eSkpOworICAgICAgICB9
KTsKIAotICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7Ci0jZGVmaW5l
IElOSVRfUFJJVkFURV9HTE9CQUwodmFyTmFtZSwgZnVuY05hbWUsIGNvZGUpIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5jTmFtZSAjIyBQcml2
YXRlTmFtZSgpLCB2YXJOYW1lICMjIFByaXZhdGVGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BS
SVZBVEVfR0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkKLSN1bmRlZiBJTklUX1BSSVZB
VEVfR0xPQkFMCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5O
YU4sIGpzTmFOKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9wZXJ0eUlzRW51bWVyYWJsZVByaXZhdGVOYW1lKCks
IHByaXZhdGVGdW5jUHJvcGVydHlJc0VudW1lcmFibGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLm93bktleXNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY093bktleXMs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmltcG9ydE1vZHVsZVByaXZh
dGVOYW1lKCksIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1ZUpvYiksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY01ha2VUeXBlRXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJy
YXlMZW5ndGgsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJy
YXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFy
cmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudHlwZWRBcnJheVNvcnRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJy
YXlTb3J0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5U3ViYXJyYXlDcmVhdGVQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNJc0JvdW5kRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmhhc0luc3RhbmNlQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIHBy
aXZhdGVGdW5jSGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pbnN0YW5jZU9mUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJbnN0
YW5jZU9mLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5CdWlsdGluTG9n
UHJpdmF0ZU5hbWUoKSwgYnVpbHRpbkxvZywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuQnVpbHRpbkRlc2NyaWJlUHJpdmF0ZU5hbWUoKSwgYnVpbHRpbkRlc2NyaWJlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5SZWdFeHBQcml2YXRlTmFtZSgp
LCByZWdFeHBDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkudHJ1bmNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1RydW5jLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0
cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnRlcm5hbFBy
b21pc2VQcml2YXRlTmFtZSgpLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVmYXVsdFByb21pc2VUaGVuUHJpdmF0ZU5h
bWUoKSwgcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVwZWF0Q2hhcmFjdGVyUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hh
cmFjdGVyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXJyYXlTcGVj
aWVzQ3JlYXRlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBT
dHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNBcnJheVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0
b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlTbG93UHJpdmF0ZU5hbWUoKSwgcHJp
dmF0ZUZ1bmNJc0FycmF5U2xvdywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuY29uY2F0TWVtY3B5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGVuZE1lbWNweVByaXZhdGVO
YW1lKCksIHByaXZhdGVGdW5jQXBwZW5kTWVtY3B5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlclByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0
UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlNldFByaXZh
dGVOYW1lKCksIHNldENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS50aGlzVGltZVZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUaGlzVGltZVZh
bHVlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgRU5BQkxFKElOVEwp
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5kYXRlVGltZUZvcm1hdFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jRGF0ZVRpbWVGb3Jt
YXQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpkYXRlVGltZUZv
cm1hdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVU
aW1lRm9ybWF0KSk7CisgICAgICAgIH0pOwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQotCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5p
c0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAx
LCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXJQcml2
YXRlTmFtZSgpLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0dsb2JhbEdldHRlclByaXZhdGVOYW1lKCksIHJl
Z0V4cFByb3RvR2xvYmFsR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5yZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90
b0lnbm9yZUNhc2VHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9NdWx0
aWxpbmVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4
cFByb3RvU291cmNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvU3RpY2t5
R2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvVW5pY29kZUdldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZ0V4cEJ1aWx0aW5FeGVjUHJpdmF0ZU5hbWUoKSwgYnVpbHRpblJlZ0V4cEV4ZWMsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cENyZWF0ZVByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGVzU3BlY1JlZ0V4
cENyZWF0ZSwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pc1JlZ0V4cFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cE1hdGNoRmFzdFByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY01h
dGNoRmFzdCwgUmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU2VhcmNoRmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZh
c3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBTcGxpdEZh
c3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygp
LCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5yZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlUHJpdmF0ZU5hbWUoKSwgbV9y
ZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5
bWJvbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFRlc3RG
YXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmco
KSwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QsIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIFN0cmluZy5wcm90
b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ0luY2x1ZGVzSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5j
bHVkZXNJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0
cmluZ1NwbGl0RmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ1N1YnN0ckludGVybmFsUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ1N1
YnN0ckludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAg
ICAgIC8vIEZ1bmN0aW9uIHByb3RvdHlwZSBoZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFrZUJvdW5kRnVuY3Rpb25Q
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDUsIFN0cmluZygpLCBt
YWtlQm91bmRGdW5jdGlvbiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
Lmhhc093bkxlbmd0aFByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAxLCBTdHJpbmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4K
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm1hcEJ1Y2tldEhlYWRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldE5leHRQcml2
YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
TWFwQnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBC
dWNrZXRWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldEhlYWRQcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnNldEJ1Y2tldE5leHRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1
Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tl
dEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUo
V0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkKLSAgICAgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFt
aW5nIEFQSQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkud2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJs
eUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHdlYkFzc2Vt
Ymx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKKyAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6d2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlJbnN0YW50aWF0
ZVN0cmVhbWluZ0ludGVybmFsKSk7CisgICAgICAgIH0pOwogI2VuZGlmCisKKyAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0geworICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5JbmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmlu
ZWQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmFzc2VydFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMSwgU3RyaW5nKCksIGFzc2VydENhbGwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCiAjZW5kaWYKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFs
cywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCi0gICAgbV9zcGVjaWFs
UG9pbnRlcnNbU3BlY2lhbDo6Q2FsbEZ1bmN0aW9uXSA9IG1fY2FsbEZ1bmN0aW9uLmdldCgpOwot
ICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25dID0gbV9hcHBseUZ1
bmN0aW9uLmdldCgpOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0
cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNp
YWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLQotICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93
VHlwZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKLQog
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VEb2xsYXJWTSgpKSkKICAgICAgICAgZXhwb3Nl
RG9sbGFyVk0odm0pOwogCkBAIC0xNzExLDIyICsxNzYwLDE2IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAog
ICAgIHRoaXNPYmplY3QtPm1fcGFyc2VJbnRGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3BhcnNlRmxvYXRGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3Rocm93VHlwZUVycm9yRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9ldmFsRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVy
YXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9w
cm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7Ci0gICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlamVjdFByb21pc2VGdW5jdGlvbik7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24pOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24p
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9I
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVy
cm9yR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVy
U2V0dGVyKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlci52aXNpdCh2aXNpdG9yKTsK
IApAQCAtMTc5NCw2ICsxODM3LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1f
cHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9j
YWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisKKyAgICBmb3IgKGF1
dG8mIHByb3BlcnR5IDogdGhpc09iamVjdC0+bV9saW5rVGltZUNvbnN0YW50cykKKyAgICAgICAg
cHJvcGVydHkudmlzaXQodmlzaXRvcik7CiAgICAgCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9C
VUZGRVIpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zaGFyZWRBcnJheUJ1ZmZl
clByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCA4OTI2YWFhZGZkNjhkMWFmMTI5MjgwNGUyZDAzNDIyZDdmZjQ0ZjY1Li4z
MTVkZjFkNTM3ZmY3ZjM2YjgxNzkxOWM4ZmQ1OWMzZjRjNGE2ZGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQyLDcgKzQyLDYgQEAK
ICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cEdsb2JhbERhdGEuaCIK
ICNpbmNsdWRlICJSdW50aW1lRmxhZ3MuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgog
I2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlZNLmgiCkBAIC0xMTksNiArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBB
Y3RpdmF0aW9uU3RhY2tOb2RlOwogc3RydWN0IEhhc2hUYWJsZTsKK2VudW0gY2xhc3MgTGlua1Rp
bWVDb25zdGFudCA6IGludDMyX3Q7CiAKICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAogY2xh
c3MgV3JhcHBlck1hcDsKQEAgLTI5NywyNiArMjk3LDE2IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUludEZ1bmN0aW9uOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247
CiAKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbjsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5j
dGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKLSAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
OwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Jlc29sdmVQcm9taXNlRnVuY3Rpb247
Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uOwot
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBH
ZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7Ci0gICAgV3JpdGVCYXJy
aWVyPEpTT2JqZWN0PiBtX3JlZ0V4cFByb3RvRXhlYzsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+IG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlOwotICAgIFdyaXRlQmFycmllcjxHZXR0ZXJT
ZXR0ZXI+IG1fcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXI7Ci0gICAgV3JpdGVCYXJyaWVyPEdldHRl
clNldHRlcj4gbV9yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXI7CiAgICAgV3JpdGVCYXJyaWVyPEdl
dHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRl
clNldHRlcjsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2Fk
ZXI+IG1fbW9kdWxlTG9hZGVyOwpAQCAtNDMwLDggKzQyMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEUoREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NUUlVDVFVSRSkKICN1bmRl
ZiBERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFCiAKLSAgICBKU0NlbGwqIG1fc3Bl
Y2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNl
ZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KLSAgICBKU0NlbGwqIG1fbGlua1RpbWVDb25zdGFudHNb
TGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICBWZWN0b3I8TGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0NlbGw+PiBtX2xpbmtUaW1lQ29uc3RhbnRzOwogCiAgICAgU3RyaW5nIG1fbmFt
ZTsKIApAQCAtNjE2LDI0ICs2MDUsMjIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogcGFyc2VGbG9hdEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZUZsb2F0RnVuY3Rpb24uZ2V0KHRoaXMpOyB9
CiAKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxG
dW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIGFwcGx5
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBK
U0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aHJv
d1R5cGVFcnJvckZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJy
b3JGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQo
dGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBK
U0Z1bmN0aW9uKiBpdGVyYXRvclByb3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2l0
ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2Fw
YWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFi
aWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9Ci0gICAgSlNGdW5jdGlvbiogcmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIHJl
amVjdFByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVqZWN0UHJvbWlzZUZ1bmN0
aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBK
U0Z1bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlv
biogcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogcHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9W
YWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0
aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KCk7IH0K
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24u
Z2V0KCk7IH0KLSAgICBKU09iamVjdCogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvRXhlYy5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHJlZ0V4
cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU3lt
Ym9sUmVwbGFjZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b1N5bWJvbFJl
cGxhY2UuZ2V0KCk7IH0KLSAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5nZXQoKTsgfQotICAg
IEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIuZ2V0KCk7IH0KKyAgICBHZXR0ZXJTZXR0ZXIqIHJl
Z0V4cFByb3RvR2xvYmFsR2V0dGVyKCkgY29uc3Q7CisgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQ
cm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVy
cm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0
dGVyLmdldCgpOwpAQCAtOTExLDE2ICs4OTgsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIGxhenlUeXBl
ZEFycmF5U3RydWN0dXJlKHR5cGUpLmNvbnN0cnVjdG9yKHRoaXMpOwogICAgIH0KIAotICAgIEpT
Q2VsbCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCisgICAgSlND
ZWxsKiBsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdmFsdWUpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQocG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgICAg
IHJldHVybiBtX3NwZWNpYWxQb2ludGVyc1twb2ludGVyXTsKLSAgICB9Ci0gICAgSlNDZWxsKiBq
c0NlbGxGb3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOwotICAg
ICAgICBBU1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAgICAgICByZXR1
cm4gbV9saW5rVGltZUNvbnN0YW50c1tpbmRleF07CisgICAgICAgIHJldHVybiBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSldLmdldCh0aGlzKTsKICAgICB9
CiAKICAgICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgp
IHsgcmV0dXJuIG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxp
bmVzLmgKaW5kZXggZTAzNjliZWNiMDZmM2I5ODJjZmQ5MGE1ZGIyMDM5ZTYzM2JkNDEyNS4uM2Yy
NmQ1Y2FmZTJiZjc1NjE0YmQyMDc2N2I4NDQyMDQwMmQwNWRkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJB
cnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkxpbmtUaW1lQ29uc3RhbnQuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm90b3R5cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDIsNiArMTAzLDE1
IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU0dsb2JhbE9iamVjdDo6YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvCiAgICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5hcnJh
eUNvbnN0cnVjdG9yKCksIG5ld1RhcmdldCwgYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpOwogfQogCitpbmxpbmUgSlNGdW5jdGlvbiog
SlNHbG9iYWxPYmplY3Q6OnRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6dGhyb3dUeXBlRXJyb3JGdW5jdGlvbikpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9i
YWxPYmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6bmV3UHJvbWlzZUNhcGFiaWxpdHkpKTsgfQoraW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFs
T2JqZWN0OjpyZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9j
YXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlc29s
dmVQcm9taXNlKSk7IH0KK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6cmVqZWN0
UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24q
PihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlamVjdFByb21pc2UpKTsgfQor
aW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29u
c3RhbnQoTGlua1RpbWVDb25zdGFudDo6ZGVmYXVsdFByb21pc2VUaGVuKSk7IH0KK2lubGluZSBK
U0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6cmVnRXhwQnVpbHRpbkV4ZWMpKTsgfQoraW5saW5lIEdldHRlclNldHRl
ciogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEdldHRlclNldHRlcio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpKTsgfQoraW5saW5lIEdldHRlclNldHRl
ciogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxHZXR0ZXJTZXR0ZXIqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRlcikpOyB9CisKIEFMV0FZU19JTkxJTkUg
Vk0mIGdldFZNKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NmViYzkzN2YyZjU4NTIwOWE0NjUxNTgzZmEwZjc0
ZjZjZTM5OWE2Li4zOWZmMjk2NTYyNmMxOTdmMzRjNTc3YzE1NTY1MjZiNzkxOGMwOTI1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNo
YW5pc20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
Mzc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1l
cy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMS0wMiAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OOiBbIE1hYyBdIGlu
c3BlY3Rvci9kb20vZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlLmh0bWwgaXMgZmFp
bGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVs
ZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwt
ZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS1leHBlY3RlZC50eHQKaW5kZXggZTgyYTc5OTc2ZGM2
ZjNmZmNmOGE1ZWU4MzdjODdhZTI4MTFhMmE4OS4uMjEyNWZiNTI5NzFjZWNlYWI3YzA4MDM0ZjJk
NTM2YzdhMmE0YjRlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVk
LWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0x
NCw2ICsxNCw2IEBAIENBTEwgU1RBQ0s6CiAzOiBbRl0gc3RhcnRBQkMKICAgdGhpczogdW5kZWZp
bmVkCiA0OiBbUF0gR2xvYmFsIENvZGUKLSAgdGhpczogdGVzdCAtIAorICB0aGlzOiBjIC0gCiBS
RVNVTUVECiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382713</attachid>
            <date>2019-11-03 18:47:50 -0800</date>
            <delta_ts>2019-11-04 12:20:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153792-20191103184749.patch</filename>
            <type>text/plain</type>
            <size>142022</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzA2MTMwNjcxNjM1MmExMDE2OWYyMTUxNDAwMWEwMDM3YTlkMTRlLi43YWFjZTM5YjBkOGVjYWFk
YTcyYjgxMmM5ODI3MTViOTlhZWQzNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzYgQEAKKzIwMTktMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgTGlua1RpbWVDb25zdGFudCBtZWNoYW5pc20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSB1
c2luZyBwcml2YXRlLW5hbWUtdmFyaWFibGVzIG9mIEpTR2xvYmFsT2JqZWN0IGFzIGEgd2F5IHRv
IGFjY2VzcyB0byBjb25zdGFudHMgdGhhdCBhcmUgbWF0ZXJpYWxpemVkIHBlciBKU0dsb2JhbE9i
amVjdC4KKyAgICAgICAgQW5kIHdlIGFsc28gaGF2ZSBzcGVjaWFsLXBvaW50ZXJzIGFuZCBvbGQg
bGluay10aW1lLWNvbnN0YW50cyB0byBhY2Nlc3MgdG8gcGVyIEpTR2xvYmFsT2JqZWN0IGNvbnN0
YW50cy4KKyAgICAgICAgV2UgaGF2ZSBieXRlY29kZSBpbnRyaW5zaWMgY29uc3RhbnRzLCBidXQg
aXQgaXMgb25seSBhdmFpbGFibGUgZm9yIHBlciBWTSB2YWx1ZXMuCisKKyAgICAgICAgSG93ZXZl
ciwgdGhlc2Ugb25lcyBoYXZlIG11bHRpcGxlIHByb2JsZW1zLgorCisgICAgICAgIDEuIHByaXZh
dGUtbmFtZS12YXJpYWJsZXMgaXMgdG9vIGNvc3RseS4gV2UgbmVlZCB0byBoYXZlIGFuIGVudHJ5
IGluIEpTR2xvYmFsT2JqZWN0J3MgdmFyaWFibGUsIHRoaXMgbWFrZXMgU3ltYm9sVGFibGUgb2Yg
SlNHbG9iYWxPYmplY3QgbGFyZ2UuCisgICAgICAgICAgIEl0IGFsc28gcmVxdWlyZXMgV2F0Y2hw
b2ludFNldCB0byBtYWtlIGl0IGNvbnN0YW50LWZvbGQgaW4gREZHLiBBbmQgYWNjZXNzaW5nIHRo
ZXNlIHZhcmlhYmxlcyBmcm9tIGJ1aWx0aW4gSlMgdGFrZXMgb3BfcmVzb2x2ZV9zY29wZSBhbmQg
b3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgIGVubGFyZ2luZyBieXRlY29kZSBhbmQgc2xv
dyBpbiBpbnRlcnByZXRlciBhbmQgYmFzZWxpbmUgY29tcGFyZWQgdG8ganVzdCBnZXR0aW5nIHRo
ZW0gYXMgYSBjb25zdGFudCByZWdpc3Rlci4KKyAgICAgICAgMi4gc3BlY2lhbC1wb2ludGVycyBh
cmUgdGFpbG9yZWQgdG8gb3Bfam5lX3B0ciBvcGNvZGUsIGFuZCBub3QgdXNhYmxlIGluIHRoZSBv
dGhlciBieXRlY29kZSBzaW5jZSB0aGlzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBWaXJ0
dWFsUmVnaXN0ZXIuCisgICAgICAgIDMuIE9sZCBsaW5rLXRpbWUtY29uc3RhbnRzIGltcGxlbWVu
dGF0aW9uIGlzIHB1dHRpbmcgYXJyYXkgb2YgYWxsIGxpbmstdGltZS1jb25zdGFudHMgb24gZWFj
aCBVbmxpbmtlZENvZGVCbG9jaywgZXZlbiBpZiBpdCBpcyBub3QgdXNlZC4gSWYgeW91IGluY3Jl
YXNlICMgb2YKKyAgICAgICAgICAgbGluay10aW1lLWNvbnN0YW50LCBpdCBpbmNyZWFzZXMgc2l6
ZW9mKFVubGlua2VkQ29kZUJsb2NrKS4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGluay10aW1lLWNvbnN0YW50IG1lY2hhbmlzbSBhbmQgcmVtb3ZlIHRoZSBh
Ym92ZSBvbGQgb25lcyBtb3N0bHkuIChwcml2YXRlLW5hbWUtdmFyaWFibGVzIHN0aWxsIGV4aXN0
cyBmb3IgV2ViQ29yZSBhbmQgQGFzc2VydCkuCisgICAgICAgIFdlIG1hbmFnZSBsaW5rLXRpbWUt
Y29uc3RhbnRzIGluIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnksIGFuZCBlbWl0IEludDMyOkxp
bmtUaW1lQ29uc3RhbnRJRCBjb25zdGFudCB3aGVuIGdlbmVyYXRpbmcgYW4gVW5saW5rZWRDb2Rl
QmxvY2suIExhdGVyLCB0aGlzIGNvbnN0YW50CisgICAgICAgIGlzIGFsdGVybmF0ZWQgdG8gYW4g
YWN0dWFsIHZhbHVlIHdoZW4gd2UgbGluayBVbmxpbmtlZENvZGVCbG9jayB0byBDb2RlQmxvY2sg
d2l0aCBzcGVjaWZpYyBKU0dsb2JhbE9iamVjdC4gcHJpdmF0ZS1uYW1lLXZhcmlhYmxlcyBhY2Nl
c3NlcyBhcmUgbm93IGNvbnZlcnRlZCB0bworICAgICAgICBjb25zdGFudCByZWdpc3RlciBzbyB0
aGF0IGl0IGlzIHZlcnkgZWZmaWNpZW50bHkgYWNjZXNzZWQgYW5kIGl0IHJlZHVjZXMgbWVtb3J5
IHVzZWQgZm9yIFN5bWJvbFRhYmxlIGFuZCBXYXRjaHBvaW50U2V0LiBvcF9qbmVfcHRyIHRha2Vz
IGxpbmstdGltZS1jb25zdGFudAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXJzIGluc3RlYWQgb2Yg
c3BlY2lhbC1wb2ludGVycywgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHNwZWNpYWwtcG9pbnRlcnMg
bWVjaGFuaXNtLiBXZSBhbHNvIHJlcGxhY2Ugb2xkIGxpbmstdGltZS1jb25zdGFudHMgd2l0aCBu
ZXcgb25lLCB3aGljaCByZWR1Y2VzCisgICAgICAgIHNpemVvZihVbmxpbmtlZENvZGVCbG9jayku
CisKKyAgICAgICAgRnVydGhlcm1vcmUsIG5ldyBsaW5rLXRpbWUtY29uc3RhbnQgc3VwcG9ydHMg
bGF6eSBpbml0aWFsaXphdGlvbiBieSB1c2luZyBMYXp5UHJvcGVydHkgaW4gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgYWxsb3dzIHVzIHRvIGxhemlseSBnZW5lcmF0ZSBtYW55IGludGVybmFsIGZ1bmN0
aW9ucworICAgICAgICB0aGF0IGFyZSBwcmV2aW91c2x5IGluaXRpYWxpemVkIGVhZ2VybHkuIFRo
aXMgcmVkdWNlcyAjIG9mIGFsbG9jYXRlZCBKU0Z1bmN0aW9uIHNpZ25pZmljYW50bHkgd2hlbiBp
bml0aWFsaXppbmcgSlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1h
bnVhbGx5IGFkZHMgMjU2IHRvIE1hcmtlZFNwYWNlJ3Mgc2l6ZS1jbGFzcy4gV2UgZW1waXJpY2Fs
bHkga25vdyB0aGF0IGFkZGluZyAyNTYgaGVyZSBtYWtlcyBzZXF1ZW5jZSBvZiBzaXplLWNsYXNz
IGJldHRlciBmb3IgbWVtb3J5IGNvbnN1bXB0aW9uLgorICAgICAgICBCdXQgdGhpcyB3YXMgYWNo
aWV2ZWQgYnkgYWRkaW5nIGBzaXplb2YoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaylgLiBOb3cg
c2l6ZW9mKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spIGlzIGNoYW5nZWQgYnkgdGhpcyBwYXRj
aCwgYW5kIHRoaXMgcGF0Y2ggdW5pbnRlbnRpb25hbGx5CisgICAgICAgIGJyZWFrcyB0aGF0IHNl
cXVlbmNlLiBXZSBzaG91bGQgZXhwbGljaXRseSBhZGQgMjU2IGluc3RlYWQgb2YgYWRkaW5nIHNp
emVvZihVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSBhZGhvY2x5LgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaGVhZGVyLnB5OgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfZ2xvYmFs
X3ByaXZhdGVfY29kZV9uYW1lX21hY3JvKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanM6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAg
ICAgICAobmFrZWRDb25zdHJ1Y3Rvci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAobmFrZWRD
b25zdHJ1Y3Rvci5Qcm9taXNlLnJlamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChuYWtlZENvbnN0
cnVjdG9yLkludGVybmFsUHJvbWlzZS5yZWplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQ29uc3RhbnRzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6RW50cnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeTo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5OjpsaW5rVGltZUNvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk6OmVtaXR0ZXIgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDb25zdGFudFJlZ2lzdGVycyk6CisgICAg
ICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNp
YWxQb2ludGVyLmguCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6cmVnaXN0ZXJJbmRleEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1bmN0aW9u
U25pcHBldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmlu
ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBc3lu
Y0l0ZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
SW1wb3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpwcm9taXNlSW50ZXJuYWxGaWVs
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAg
ICAgICAgKEpTQzo6YXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBh
dHRlcm5Ob2RlOjpiaW5kVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RTcHJlYWRF
eHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9q
bmVxX3B0cik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBh
cnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlc29s
dmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUpOgorICAgICAgICAqIHBhcnNl
ci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmRlY29kZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGlua1RpbWVDb25zdGFudCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjYWxsRnVuY3Rpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXBwbHlGdW5jdGlvbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5pY29k
ZUdldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojph
Y3R1YWxQb2ludGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmpzQ2VsbEZvckxpbmtUaW1lQ29uc3RhbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzb2x2ZVByb21pc2VGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvRXhlY0Z1bmN0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xvYmFsR2V0
dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlciBjb25zdCk6CisKIDIwMTktMTEtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvcjI1
MTg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGYyNWZmNjFkYjk5MGFk
N2Y2ODhhYThlYzE2ZjFkZjlkOGI2ZWM3NjIuLmZlNzBhMzUyMmQ2ZTNmYWM2OTAxNmZkNjhmYjA1
Mzk5NjczZTE0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUyMiw2
ICs1MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKICAgICBieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaAogICAgIGJ5dGVjb2RlL0xhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmgKKyAgICBieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKICAg
ICBieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKICAgICBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9u
UHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaApAQCAtNTI5
LDcgKzUzMCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRp
b24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCi0gICAgYnl0ZWNvZGUvU3BlY2lhbFBv
aW50ZXIuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1
Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGFiODQ2OWEyYWIxYzU4ZjI4ZjExNzIxYjQ1YjRiM2ZjMmM5MDAyODUu
LmE3MWUxNDAzZDMyN2RlZjkwM2RlM2I5ZTQyZjRlMjg0ZTBkZTRhY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zNjIsNyArMzYyLDYgQEAKIAkJMEY0RjgyOEMxRTMxQjk3NjAw
NzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRGODI4QTFFMzFCOTcxMDA3
NTE4NEMgLyogU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuaCAqLzsgfTsKIAkJ
MEY1MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MEFGM0IxOTNF
OEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovOyB9OwogCQkwRjU1
MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTUxM0E1MUQ1QTY4MkEwMEMzMkJEOCAvKiBGcmVl
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTQxQjAxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0aXZlRnJv
bVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjU1OTg5NzE3Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBGNTE0RDEwNjND
MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU2QTFE
MzE1MDAwRjM1MDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8q
IEV4ZWN1dGlvbkNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTgxMiw2ICsxODExLDcgQEAKIAkJRTM1Q0ExNTQxREJDM0E1QzAwRjgz
NTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5n
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
NUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3Rh
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjM3
RUU3MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBX
YXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI1ODUsOCArMjU4NSw2IEBACiAJCTBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAv
KiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJl
Q2xvYmJlclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTUxM0E1MUQ1
QTY4MkEwMEMzMkJEOCAvKiBGcmVlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmVlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1MTNBNzFE
NUE2OENCMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnJlZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQz
IC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRvTmF0aXZlRnJvbVZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVDMTkzMTcyNzZFNDYwMENFQUJG
RCAvKiBERkdBYnN0cmFjdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR0Fic3RyYWN0VmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0VmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2
NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MzUsNiAr
NDkzMyw4IEBACiAJCUUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1RTAzNUUxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2MzdF
RTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGlua1RpbWVDb25zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkUyMkY4RDYxMTAwRDA5
ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIzNyw2ICs4MjM3LDggQEAKIAkJCQlCQ0ZEOEM5
MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8sCiAJCQkJMEZCNTQ2NzgxNEY1QzQ2
ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLywKIAkJCQkwRkI1NDY3
NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLywKKwkJCQlF
MzYzN0VFODIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5jcHAgKi8sCisJCQkJ
RTM2MzdFRTcyMzZFNTZCMDAwOTZCRDBBIC8qIExpbmtUaW1lQ29uc3RhbnQuaCAqLywKIAkJCQkw
RjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQk1
M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcCAqLywKIAkJCQk1M0ZBMkFFMDFDRjM3RjNGMDAyMjcxMUQgLyog
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi8sCkBAIC04
Mjg0LDggKzgyODYsNiBAQAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRl
ZFN0YXR1c2VzLmggKi8sCiAJCQkJMEZGNjBBQkYxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuY3BwICovLAogCQkJCTBGRjYwQUMwMTY3NDBGODEwMDAyOTc3OSAvKiBSZWR1Y2VX
aGl0ZXNwYWNlLmggKi8sCi0JCQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQ
b2ludGVyLmNwcCAqLywKLQkJCQkwRjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuaCAqLywKIAkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuY3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlw
ZS5oICovLAogCQkJCTBGQjQzOEEyMTkyNzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQuY3Bw
ICovLApAQCAtOTg0Myw2ICs5ODQzLDcgQEAKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAg
LyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAv
KiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0MzMTAxNTlEN0YwMDI4NjVF
NyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzYzN0VFOTIzNkU1NkIwMDA5
NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdFMkVBNkIw
RkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
REU5QTA5MUJFN0Q2OUUwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAwOTYsNyArMTAwOTcsNiBAQAogCQkJCTBGREU4N0ZDMURGRTZFNTEw
MDY0QzM5MCAvKiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1
bmtKSVQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNTU0MUIyMTYxM0MxRkIwMENFM0UyNSAvKiBT
cGVjaWFsUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTQxNDFEQUVFRTAwMTc5
Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg1RjZCQzE4QzU1
M0ZFMDBGMTA2MjYgLyogU3BpbGxSZWdpc3RlcnNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjNBQzc1MjE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eQppbmRleCAzMzQxOWY1NWY2MWM1NDRhZmM4Yzg0YzNjNzk2OTY3NWU3OTAxYjU2Li4wNDJiMzIy
YmI4YmRkZjEzNGE3ODAxYmE2ZmJkYjJhN2M1NWE5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtMTcyLDExICsxNzIsMTAg
QEAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2dsb2JhbF9wcml2YXRlX2NvZGVfbmFtZV9tYWNy
byhzZWxmKToKICAgICAgICAgZnVuY3Rpb25zLnNvcnQoa2V5PWxhbWJkYSB4OiB4LmZ1bmN0aW9u
X25hbWUpCiAgICAgICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CiAgICAgICAgICAgICBm
dW5jdGlvbl9hcmdzID0gewotICAgICAgICAgICAgICAgICd2YXJOYW1lJzogZ2V0X3Zhcl9uYW1l
KGZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlv
bl9uYW1lLAogICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1h
bmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pLAogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKHZhck5hbWUpcywgJShmdW5jTmFtZSlzLCAl
KGNvZGVOYW1lKXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMsICUoY29kZU5hbWUpcykgXFwiICUgZnVuY3Rpb25f
YXJncykKIAogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IGM5MDhhZmI1MGUwNWMxOGNlNmRlMWIxZDdjZDY1ZDZjNTg4ZGUzMjgu
LjUxOTIxZDcxODYwOWJhMWU3YjQ4MTQxMDYzNDdhZWQyMmU4NjA4ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTI0NCw2ICsyNDQsNyBAQCBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcAogYnl0ZWNvZGUvTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAogYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCitieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmNwcAog
Ynl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAt
MjYzLDcgKzI2NCw2IEBAIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRC
eUlkVmFyaWFudC5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9S
ZWR1Y2VXaGl0ZXNwYWNlLmNwcAotYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCiBieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAKIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggZGQzM2NhODAzNmEzMGJmNjRlMDhh
MGEzODdlZTFiNWI3MTFhNzhmMS4uZDQzZTQ4ZjBiYTMxZWJkY2Y4YmVkMThiNmU5YWIwYjhkYmY1
NjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBKU0NfQ09NTU9OX0JZVEVD
T0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXAogICAgIG1h
Y3JvKGFkZCkgXAorICAgIG1hY3JvKGFwcGx5RnVuY3Rpb24pIFwKICAgICBtYWNybyhhcnJheUl0
ZXJhdG9yTmV4dEluZGV4KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kKSBcCiAgICAg
bWFjcm8oYXJyYXlJdGVyYXRvck5leHQpIFwKQEAgLTUyLDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvcktpbmQpIFwKICAgICBtYWNybyhhcnJheVNwZWNp
ZXNDcmVhdGUpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKKyAgICBtYWNybyhjYWxsRnVuY3Rpb24p
IFwKICAgICBtYWNybyhjaGFyQ29kZUF0KSBcCiAgICAgbWFjcm8oZXhlY3V0b3IpIFwKICAgICBt
YWNybyhpc1ZpZXcpIFwKQEAgLTczLDYgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFj
cm8oZ2V0T3duUHJvcGVydHlOYW1lcykgXAogICAgIG1hY3JvKG93bktleXMpIFwKICAgICBtYWNy
byhTZXQpIFwKKyAgICBtYWNybyh0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8o
dHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlTb3J0KSBcCiAgICAgbWFj
cm8odHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmluZGV4IDMwZmM2
NmU0Yjg5ZjJlYTBiZDY5YTdiODFkZTEzODUwZjAxY2RiNzQuLjY2Zjk1MWZiNGZjNmQxYzY1MWUw
MzA3NzBkZWQ1MTVlOTBkZWI5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwpAQCAtMjM3LDE5ICsyMzcsMTYgQEAgZnVu
Y3Rpb24gUHJvbWlzZShleGVjdXRvcikKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNl
KHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNlKTsKICAgICB2YXIgY2FwdHVyZWRQ
cm9taXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxsb3cgdXNpbmcg
ZnVuY3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3QgPSBmdW5jdGlvbiBAcmVq
ZWN0KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNv
bHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7Ci0gICAgfTsK
LQogICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAgZnVuY3Rpb24gQHJl
c29sdmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBAcmVzb2x2ZVByb21p
c2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJl
c29sdXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0
dXJlZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAgICB9IGNhdGNoIChlcnJv
cikgewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJlamVjdFByb21pc2VXaXRo
Rmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7CiAgICAgfQog
CiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0yNjYsMTkgKzI2MywxNiBAQCBmdW5jdGlvbiBJbnRl
cm5hbFByb21pc2UoZXhlY3V0b3IpCiAgICAgdmFyIHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZSh0
aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyB0cnVlKTsKICAgICB2YXIgY2FwdHVyZWRQcm9t
aXNlID0gcHJvbWlzZTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxsb3cgdXNpbmcgZnVu
Y3Rpb24tZGVjbGFyYXRpb24gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNTAyCi0gICAgdmFyIEByZWplY3QgPSBmdW5jdGlvbiBAcmVqZWN0
KHJlYXNvbikgewotICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZp
bmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlYXNvbik7Ci0gICAgfTsKLQog
ICAgIHRyeSB7CiAgICAgICAgIGV4ZWN1dG9yKAogICAgICAgICAgICAgZnVuY3Rpb24gQHJlc29s
dmUocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBAcmVzb2x2ZVByb21pc2VX
aXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJlZFByb21pc2UsIHJlc29s
dXRpb24pOwotICAgICAgICAgICAgfSwgQHJlamVjdCk7CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
QHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhjYXB0dXJl
ZFByb21pc2UsIHJlYXNvbik7CisgICAgICAgICAgICB9KTsKICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICBAcmVqZWN0KGVycm9yKTsKKyAgICAgICAgQHJlamVjdFByb21pc2VXaXRoRmly
c3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcAppbmRleCBhZjgwNzY5MzMyYzljYjUwZTIyY2MzM2RhYzc0NWEy
ZGJlMGZlMzA0Li44NThhYjkwNTAyZTg0ZDcwNzkxNTMyNWY2OTNlZTNkNWQ1ODVjOGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
QEAgLTEzNiw2ICsxMzYsOSBAQCB2b2lkIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcENvbnN0YW50cygpCiAgICAgICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bjo6T3RoZXI6CiAgICAgICAgICAgICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3Jp
cHRpb24gPSAiIjsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpMaW5rVGltZUNvbnN0YW50OgorICAgICAgICAgICAgICAg
IHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIjogaW4gc291cmNlIGFzIGxp
bmtlLXRpbWUtY29uc3RhbnQiOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgdGhpcy0+bV9vdXQucHJpbnRmKCIgICBrJXUgPSAlcyVzXG4iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRvQ1N0cmluZyhjb25zdGFudC5nZXQoKSkuZGF0YSgpLCBz
b3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgICAgICAgICArK2k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggZDQxNjMzYzU1YjYwOWNkNTdlMjQzYjJiMWE0YzQ0
MDkyMTRjNWFkYS4uOTlmM2ViYjVjNjQyYTA5ZjQ0NDYzN2NiNjQwZGM1NWQzNTU2YmRhZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtNDIsNyArNDIsOCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotI2RlZmluZSBJTklUSUFMSVpFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQo
bmFtZSkgbV9ieXRlY29kZUludHJpbnNpY01hcC5hZGQodm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkubmFtZSMjUHJpdmF0ZU5hbWUoKS5pbXBsKCksICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljXyMjbmFtZSk7CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVf
SU5UUklOU0lDX05BTUVTX1RPX1NFVChuYW1lKSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmFkZCh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLmltcGwo
KSwgRW50cnkoJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfIyNuYW1lKSk7
CisjZGVmaW5lIElOSVRJQUxJWkVfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RPX1NFVF9GT1Jf
TElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuYWRk
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm5hbWUjI1ByaXZhdGVOYW1lKCkuaW1w
bCgpLCBKU0M6OkxpbmtUaW1lQ29uc3RhbnQ6Om5hbWUpOwogCiBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICA6IG1fdm0odm0p
CkBAIC01MCw2ICs1MSw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogewogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklO
U0lDX0ZVTkNUSU9OU19FQUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFN
RVNfVE9fU0VUKQogICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19F
QUNIX05BTUUoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQorICAg
IEpTQ19GT1JFQUNIX0xJTktfVElNRV9DT05TVEFOVFMoSU5JVElBTElaRV9CWVRFQ09ERV9JTlRS
SU5TSUNfTkFNRVNfVE9fU0VUX0ZPUl9MSU5LX1RJTUVfQ09OU1RBTlQpCiAKICAgICBtX3VuZGVm
aW5lZC5zZXQobV92bSwganNVbmRlZmluZWQoKSk7CiAgICAgbV9JbmZpbml0eS5zZXQobV92bSwg
anNEb3VibGVOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7
CkBAIC05OCwxMyArMTAwLDEzIEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVh
c29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dl
bmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpOb25lKSkpOwogfQogCi1CeXRl
Y29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK09wdGlvbmFsPEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29r
dXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFpZGVudC5pc1By
aXZhdGVOYW1lKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZp
bmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNp
Y01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKaW5kZXggZmFlYjIzODliOGZkNzBlZTVmOTQ5MzVmMzhhNzRhNjE1Njc4NjliZi4uZjc2
Zjc4NWJlMWJhMDQyZGFmOGRhMzMzZDJiMTM5ZDNhMTgzMDM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwogY2xhc3MgQnl0
ZWNvZGVHZW5lcmF0b3I7CiBjbGFzcyBCeXRlY29kZUludHJpbnNpY05vZGU7CiBjbGFzcyBSZWdp
c3RlcklEOworZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKIAogI2RlZmlu
ZSBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1hY3Jv
KSBcCiAgICAgbWFjcm8oYXJndW1lbnQpIFwKQEAgLTEzNyw3ICsxMzgsNDQgQEAgY2xhc3MgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAKICAgICB0eXBlZGVmIFJlZ2lzdGVySUQqIChCeXRl
Y29kZUludHJpbnNpY05vZGU6OiogRW1pdHRlclR5cGUpKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopOwogCi0gICAgRW1pdHRlclR5cGUgbG9va3VwKGNvbnN0IElkZW50aWZpZXImKSBj
b25zdDsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgRW1pdHRlciA9
IDAsCisgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgPSAxLAorICAgIH07CisKKyAgICBjbGFzcyBF
bnRyeSB7CisgICAgcHVibGljOgorICAgICAgICBFbnRyeSgpCisgICAgICAgICAgICA6IG1fdHlw
ZShUeXBlOjpFbWl0dGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX2VtaXR0ZXIgPSBudWxs
cHRyOworICAgICAgICB9CisKKyAgICAgICAgRW50cnkoRW1pdHRlclR5cGUgZW1pdHRlcikKKyAg
ICAgICAgICAgIDogbV90eXBlKFR5cGU6OkVtaXR0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fZW1pdHRlciA9IGVtaXR0ZXI7CisgICAgICAgIH0KKworICAgICAgICBFbnRyeShMaW5rVGlt
ZUNvbnN0YW50IGxpbmtUaW1lQ29uc3RhbnQpCisgICAgICAgICAgICA6IG1fdHlwZShUeXBlOjpM
aW5rVGltZUNvbnN0YW50KQorICAgICAgICB7CisgICAgICAgICAgICBtX2xpbmtUaW1lQ29uc3Rh
bnQgPSBsaW5rVGltZUNvbnN0YW50OworICAgICAgICB9CisKKyAgICAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgbGlua1Rp
bWVDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudDsgfQorICAgICAg
ICBFbWl0dGVyVHlwZSBlbWl0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9lbWl0dGVyOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBFbWl0dGVyVHlwZSBtX2Vt
aXR0ZXI7CisgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IG1fbGlua1RpbWVDb25zdGFudDsK
KyAgICAgICAgfTsKKyAgICAgICAgVHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIE9wdGlvbmFs
PEVudHJ5PiBsb29rdXAoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCiAjZGVmaW5lIEpTQ19E
RUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JTKG5hbWUpIEpTVmFs
dWUgbmFtZSMjVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKTsKICAgICBKU0NfQ09NTU9OX0JZVEVD
T0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfRUFDSF9OQU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lO
VFJJTlNJQ19DT05TVEFOVF9HRU5FUkFUT1JTKQpAQCAtMTQ1LDcgKzE4Myw3IEBAIGNsYXNzIEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogCiBwcml2YXRlOgogICAgIFZNJiBtX3ZtOwotICAg
IEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRW1pdHRlclR5cGUsIElkZW50aWZp
ZXJSZXBIYXNoPiBtX2J5dGVjb2RlSW50cmluc2ljTWFwOworICAgIEhhc2hNYXA8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgRW50cnksIElkZW50aWZpZXJSZXBIYXNoPiBtX2J5dGVjb2RlSW50
cmluc2ljTWFwOwogCiAjZGVmaW5lIEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05T
VEFOVF9HRU5FUkFUT1JTKG5hbWUpIFN0cm9uZzxVbmtub3duPiBtXyMjbmFtZTsKICAgICBKU0Nf
Q09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfU0lNUExFX0VBQ0hfTkFNRShKU0Nf
REVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRfR0VORVJBVE9SUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGQ2NTJiNjU4
ODRjNzhiMDNiZDgwZDJkNjdkNDhmMTY4NjEwYjlhNzguLjM0YzE1MmEwZDY2MmYzNTI5N2RmMTQ0
NDg2NGZiNGJiYTM0MGVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgpAQCAtNjQsMTAgKzY0LDYgQEAKICAgICA6T2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUsCiBdCiAKLW5hbWVzcGFjZSA6U3BlY2lhbCBkbwotICAgIHR5cGVzIFsgOlBvaW50
ZXIgXQotZW5kCi0KIHRlbXBsYXRlcyBbCiAgICAgOldyaXRlQmFycmllciwKICAgICA6V3JpdGVC
YXJyaWVyQmFzZSwKQEAgLTY3NSw3ICs2NzEsNyBAQAogb3AgOmpuZXFfcHRyLAogICAgIGFyZ3M6
IHsKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgc3BlY2lhbFBvaW50
ZXI6IFNwZWNpYWw6OlBvaW50ZXIsCisgICAgICAgIHNwZWNpYWxQb2ludGVyOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHRhcmdldExhYmVsOiBCb3VuZExhYmVsLAogICAgIH0sCiAgICAgbWV0
YWRhdGE6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggNWVjMjQ2YzkxZDgyZWNlNjI0ZGRkYzI2YWJiNWQ1NTQyNDNkYjk4Mi4uMGY4ZTdmOGI0
ZjkyNDQ0NzM4MmE1ZDhlODgxMzc2MDdkNDljMjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTM5OSwxMiArMzk5LDYgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9j
ay0+Y29uc3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50c1NvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbigpLCB0b3BMZXZlbEV4ZWN1dGFibGUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IExpbmtUaW1lQ29uc3RhbnRDb3VudDsgaSsrKSB7Ci0gICAgICAgIExpbmtUaW1lQ29u
c3RhbnQgdHlwZSA9IHN0YXRpY19jYXN0PExpbmtUaW1lQ29uc3RhbnQ+KGkpOwotICAgICAgICBp
ZiAodW5zaWduZWQgcmVnaXN0ZXJJbmRleCA9IHVubGlua2VkQ29kZUJsb2NrLT5yZWdpc3Rlcklu
ZGV4Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSkKLSAgICAgICAgICAgIG1fY29uc3RhbnRSZWdp
c3RlcnNbcmVnaXN0ZXJJbmRleF0uc2V0KHZtLCB0aGlzLCBtX2dsb2JhbE9iamVjdC0+anNDZWxs
Rm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSk7Ci0gICAgfQotCiAgICAgLy8gV2UgYWxyZWFkeSBo
YXZlIHRoZSBjbG9uZWQgc3ltYm9sIHRhYmxlIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IHNp
bmNlIHdlIG5lZWQgdG8gaW5zdGFudGlhdGUKICAgICAvLyB0aGUgbW9kdWxlIGVudmlyb25tZW50
cyBiZWZvcmUgbGlua2luZyB0aGUgY29kZSBibG9jay4gV2UgcmVwbGFjZSB0aGUgc3RvcmVkIHN5
bWJvbCB0YWJsZSB3aXRoIHRoZSBhbHJlYWR5IGNsb25lZCBvbmUuCiAgICAgaWYgKFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrID0g
anNEeW5hbWljQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih2bSwgdW5saW5r
ZWRDb2RlQmxvY2spKSB7CkBAIC05MDUsMjkgKzg5OSwzNiBAQCB2b2lkIENvZGVCbG9jazo6c2V0
Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNv
bnN0YQogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAg
ICAgICAgSlNWYWx1ZSBjb25zdGFudCA9IGNvbnN0YW50c1tpXS5nZXQoKTsKLQotICAgICAgICBp
ZiAoIWNvbnN0YW50LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKGNvbnN0YW50LmlzQ2Vs
bCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gY29uc3RhbnQuYXNDZWxsKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGpzRHluYW1p
Y0Nhc3Q8U3ltYm9sVGFibGUqPih2bSwgY2VsbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG1fdW5saW5rZWRDb2RlLT53YXNDb21waWxlZFdpdGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUtPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJl
cGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2VyKTsKKyAgICAgICAgc3dpdGNoIChjb25zdGFudHNT
b3VyY2VDb2RlUmVwcmVzZW50YXRpb25baV0pIHsKKyAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQ6CisgICAgICAgICAgICBjb25zdGFudCA9IGds
b2JhbE9iamVjdC0+bGlua1RpbWVDb25zdGFudChzdGF0aWNfY2FzdDxMaW5rVGltZUNvbnN0YW50
Pihjb25zdGFudC5hc0ludDMyQXNBbnlJbnQoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcjoKKyAgICAgICAgY2FzZSBT
b3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkludGVnZXI6CisgICAgICAgIGNhc2UgU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uOjpEb3VibGU6CisgICAgICAgICAgICBpZiAoIWNvbnN0YW50LmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC5pc0NlbGwoKSkgeworICAgICAg
ICAgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBjb25zdGFudC5hc0NlbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGpzRHluYW1pY0Nhc3Q8
U3ltYm9sVGFibGUqPih2bSwgY2VsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X3VubGlua2VkQ29kZS0+d2FzQ29tcGlsZWRXaXRoVHlwZVByb2ZpbGVyT3Bjb2RlcygpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1i
b2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJs
ZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIGNsb25lID0gc3lt
Ym9sVGFibGUtPmNsb25lU2NvcGVQYXJ0KHZtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh3YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvbmUtPnNldFJhcmVEYXRhQ29kZUJsb2NrKHRoaXMpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25lOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGF1dG8qIGRlc2NyaXB0b3IgPSBqc0R5bmFtaWNDYXN0PEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yKj4odm0sIGNlbGwpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiB0
ZW1wbGF0ZU9iamVjdCA9IHRvcExldmVsRXhlY3V0YWJsZS0+Y3JlYXRlVGVtcGxhdGVPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdGFudCA9IHRlbXBsYXRlT2JqZWN0OwogICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgU3ltYm9sVGFibGUqIGNsb25lID0gc3ltYm9sVGFibGUtPmNsb25lU2Nv
cGVQYXJ0KHZtKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdhc0NvbXBpbGVkV2l0aERlYnVn
Z2luZ09wY29kZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLT5zZXRSYXJlRGF0
YUNvZGVCbG9jayh0aGlzKTsKLQotICAgICAgICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25l
OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogZGVzY3JpcHRvciA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPih2bSwgY2VsbCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSB0b3BMZXZlbEV4ZWN1dGFibGUtPmNy
ZWF0ZVRlbXBsYXRlT2JqZWN0KGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvcik7Ci0gICAgICAgICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQogICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzW2ldLnNldCh2bSwgdGhpcywgY29uc3RhbnQpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggZTI0NGZkNjI3MDliNDI1YTYy
OGUyMjQ1NjYzOGIwZTU2M2NkYWUwOS4uZWRhMjRiZTQ2OTU2NGIyZTUwYzY0ZmU2MDgxYmEyMWY5
Y2VkOWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQ
dXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCi0jaW5jbHVkZSAiU3BlY2lh
bFBvaW50ZXIuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1
ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxOWY5NzU2OGEzOTUyMjEwNmRkMTI3MGNiOWIxMWUxYWE4OTBkYjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0
YW50LmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworI2RlZmluZSBQUklO
VF9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgXAorICAgIGNhc2UgSlNDOjpMaW5rVGlt
ZUNvbnN0YW50OjpuYW1lOiBcCisgICAgICAgIG91dC5wcmludCgjbmFtZSk7IFwKKyAgICAgICAg
cmV0dXJuOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpMaW5r
VGltZUNvbnN0YW50IGNvbnN0YW50KQoreworICAgIHN3aXRjaCAoY29uc3RhbnQpIHsKKyAgICAg
ICAgSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhQUklOVF9MSU5LX1RJTUVfQ09OU1RB
TlQpCisgICAgfQorfQorCisjdW5kZWYgUFJJTlRfTElOS19USU1FX0NPTlNUQU5UCisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI2ZTcyNjI0MDljODU3NDMyZDRiMmZjZmFjZjE3
Yzc2MGQxN2I2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb2RlQmxvY2s7Citj
bGFzcyBKU0dsb2JhbE9iamVjdDsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9MSU5LX1RJTUVfQ09O
U1RBTlRTKHYpIFwKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BSSVZBVEVfR0xP
QkFMX05BTUUodikgXAorICAgIHYodGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwgbnVsbHB0cikgXAor
ICAgIHYoaW1wb3J0TW9kdWxlLCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRIZWFkLCBudWxs
cHRyKSBcCisgICAgdihtYXBCdWNrZXROZXh0LCBudWxscHRyKSBcCisgICAgdihtYXBCdWNrZXRL
ZXksIG51bGxwdHIpIFwKKyAgICB2KG1hcEJ1Y2tldFZhbHVlLCBudWxscHRyKSBcCisgICAgdihz
ZXRCdWNrZXRIZWFkLCBudWxscHRyKSBcCisgICAgdihzZXRCdWNrZXROZXh0LCBudWxscHRyKSBc
CisgICAgdihzZXRCdWNrZXRLZXksIG51bGxwdHIpIFwKKyAgICB2KHByb3BlcnR5SXNFbnVtZXJh
YmxlLCBudWxscHRyKSBcCisgICAgdihvd25LZXlzLCBudWxscHRyKSBcCisgICAgdihlbnF1ZXVl
Sm9iLCBudWxscHRyKSBcCisgICAgdihtYWtlVHlwZUVycm9yLCBudWxscHRyKSBcCisgICAgdih0
eXBlZEFycmF5TGVuZ3RoLCBudWxscHRyKSBcCisgICAgdih0eXBlZEFycmF5R2V0T3JpZ2luYWxD
b25zdHJ1Y3RvciwgbnVsbHB0cikgXAorICAgIHYodHlwZWRBcnJheVNvcnQsIG51bGxwdHIpIFwK
KyAgICB2KGlzVHlwZWRBcnJheVZpZXcsIG51bGxwdHIpIFwKKyAgICB2KHR5cGVkQXJyYXlTdWJh
cnJheUNyZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNCb3VuZEZ1bmN0aW9uLCBudWxscHRyKSBc
CisgICAgdihoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGluc3Rh
bmNlT2YsIG51bGxwdHIpIFwKKyAgICB2KEJ1aWx0aW5Mb2csIG51bGxwdHIpIFwKKyAgICB2KEJ1
aWx0aW5EZXNjcmliZSwgbnVsbHB0cikgXAorICAgIHYoUmVnRXhwLCBudWxscHRyKSBcCisgICAg
dih0cnVuYywgbnVsbHB0cikgXAorICAgIHYoUHJvbWlzZSwgbnVsbHB0cikgXAorICAgIHYoSW50
ZXJuYWxQcm9taXNlLCBudWxscHRyKSBcCisgICAgdihkZWZhdWx0UHJvbWlzZVRoZW4sIG51bGxw
dHIpIFwKKyAgICB2KHJlcGVhdENoYXJhY3RlciwgbnVsbHB0cikgXAorICAgIHYoYXJyYXlTcGVj
aWVzQ3JlYXRlLCBudWxscHRyKSBcCisgICAgdihpc0FycmF5LCBudWxscHRyKSBcCisgICAgdihp
c0FycmF5U2xvdywgbnVsbHB0cikgXAorICAgIHYoY29uY2F0TWVtY3B5LCBudWxscHRyKSBcCisg
ICAgdihhcHBlbmRNZW1jcHksIG51bGxwdHIpIFwKKyAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9u
VHJhY2tlciwgbnVsbHB0cikgXAorICAgIHYoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLCBudWxs
cHRyKSBcCisgICAgdihTZXQsIG51bGxwdHIpIFwKKyAgICB2KHRoaXNUaW1lVmFsdWUsIG51bGxw
dHIpIFwKKyAgICB2KGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3Rv
RmxhZ3NHZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLCBu
dWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIsIG51bGxwdHIpIFwK
KyAgICB2KHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCBudWxscHRyKSBcCisgICAgdihyZWdF
eHBQcm90b1NvdXJjZUdldHRlciwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwUHJvdG9TdGlja3lH
ZXR0ZXIsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciwgbnVsbHB0
cikgXAorICAgIHYocmVnRXhwQnVpbHRpbkV4ZWMsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4cENy
ZWF0ZSwgbnVsbHB0cikgXAorICAgIHYoaXNSZWdFeHAsIG51bGxwdHIpIFwKKyAgICB2KHJlZ0V4
cE1hdGNoRmFzdCwgbnVsbHB0cikgXAorICAgIHYocmVnRXhwU2VhcmNoRmFzdCwgbnVsbHB0cikg
XAorICAgIHYocmVnRXhwU3BsaXRGYXN0LCBudWxscHRyKSBcCisgICAgdihyZWdFeHBQcm90b3R5
cGVTeW1ib2xSZXBsYWNlLCBudWxscHRyKSBcCisgICAgdihyZWdFeHBUZXN0RmFzdCwgbnVsbHB0
cikgXAorICAgIHYoc3RyaW5nSW5jbHVkZXNJbnRlcm5hbCwgbnVsbHB0cikgXAorICAgIHYoc3Ry
aW5nU3BsaXRGYXN0LCBudWxscHRyKSBcCisgICAgdihzdHJpbmdTdWJzdHJJbnRlcm5hbCwgbnVs
bHB0cikgXAorICAgIHYobWFrZUJvdW5kRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGhhc093
bkxlbmd0aFByb3BlcnR5LCBudWxscHRyKSBcCisgICAgdihkYXRlVGltZUZvcm1hdCwgbnVsbHB0
cikgXAorICAgIHYod2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwsIG51bGxwdHIp
IFwKKyAgICB2KHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCwgbnVsbHB0
cikgXAorICAgIHYoT2JqZWN0LCBudWxscHRyKSBcCisgICAgdihBcnJheSwgbnVsbHB0cikgXAor
ICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoY2FsbEZ1bmN0aW9uLCBudWxs
cHRyKSBcCisKKworI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2Rl
KSBuYW1lLAorZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdCB7CisgICAgSlND
X0ZPUkVBQ0hfTElOS19USU1FX0NPTlNUQU5UUyhERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVCkK
K307CisjdW5kZWYgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQKKyNkZWZpbmUgQ09VTlRfTElO
S19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIDEgKworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzID0gSlNDX0ZPUkVBQ0hfTElOS19USU1FX0NPTlNU
QU5UUyhDT1VOVF9MSU5LX1RJTUVfQ09OU1RBTlQpIDA7CisjdW5kZWYgQ09VTlRfTElOS19USU1F
X0NPTlNUQU5UCisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xh
c3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
TGlua1RpbWVDb25zdGFudCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVhZDNmMjRjYTA0ODFkMTFhNjdlYmQxYmZiYWJlODY2ZmQzMWQ0OGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCi0K
LSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXZvaWQqIGFjdHVhbFBv
aW50ZXJGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3BlY2lhbDo6UG9pbnRlciBw
b2ludGVyKQotewotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmFjdHVhbFBvaW50ZXJGb3IocG9p
bnRlcik7Ci19Ci0KLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFNwZWNpYWw6OlBvaW50ZXIgcG9pbnRlcikKLXsKLSAgICByZXR1cm4gYWN0dWFsUG9pbnRlckZv
cihjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBwb2ludGVyKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpTcGVjaWFsOjpQb2ludGVyIHBvaW50ZXIpCi17Ci0gICAgc3dpdGNoIChw
b2ludGVyKSB7Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkNhbGxGdW5jdGlvbjoKLSAgICAgICAg
b3V0LnByaW50KCJDYWxsRnVuY3Rpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlND
OjpTcGVjaWFsOjpBcHBseUZ1bmN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkFwcGx5RnVuY3Rp
b24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgSlNDOjpTcGVjaWFsOjpPYmplY3RDb25z
dHJ1Y3RvcjoKLSAgICAgICAgb3V0LnByaW50KCJPYmplY3RDb25zdHJ1Y3RvciIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBKU0M6OlNwZWNpYWw6OkFycmF5Q29uc3RydWN0b3I6Ci0gICAg
ICAgIG91dC5wcmludCgiQXJyYXlDb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBKU0M6OlNwZWNpYWw6OlRhYmxlU2l6ZToKLSAgICAgICAgb3V0LnByaW50KCJUYWJsZVNp
emUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDkyYmFiNzZlYTJiZmY3ZTZlODgzNTM1ZWE0ZDc2
YzQxYjA0Njc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xh
c3MgQ29kZUJsb2NrOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0KLW5hbWVzcGFjZSBTcGVjaWFs
IHsKLWVudW0gUG9pbnRlciA6IHVuc2lnbmVkIHsKLSAgICBDYWxsRnVuY3Rpb24sCi0gICAgQXBw
bHlGdW5jdGlvbiwKLSAgICBPYmplY3RDb25zdHJ1Y3RvciwKLSAgICBBcnJheUNvbnN0cnVjdG9y
LAotICAgIFRhYmxlU2l6ZSAvLyBOb3QgYSByZWFsIHNwZWNpYWwgcG9pbnRlci4gVXNlIHRoaXMg
dG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcG9pbnRlcnMuCi19OwotfSAvLyBuYW1lc3BhY2Ug
U3BlY2lhbAotCi1lbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIFRocm93VHlwZUVy
cm9yRnVuY3Rpb24sCi19OwotY29uc3QgdW5zaWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0g
MTsKLQotaW5saW5lIGJvb2wgcG9pbnRlcklzRnVuY3Rpb24oU3BlY2lhbDo6UG9pbnRlciBwb2lu
dGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlciwgcG9pbnRlciA8IFNwZWNpYWw6OlRh
YmxlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIHBvaW50ZXJJc0Nl
bGwoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQotewotICAgIEFTU0VSVF9VTlVTRUQocG9pbnRl
ciwgcG9pbnRlciA8IFNwZWNpYWw6OlRhYmxlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoSlNHbG9iYWxPYmplY3QqLCBTcGVjaWFsOjpQb2ludGVy
KTsKLXZvaWQqIGFjdHVhbFBvaW50ZXJGb3IoQ29kZUJsb2NrKiwgU3BlY2lhbDo6UG9pbnRlcik7
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRT
dHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6U3BlY2lhbDo6
UG9pbnRlcik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjM0ZmE1NzdjNWFm
MGExMjE2YzdiNGQ2ZDA0NDdkMGJjZjhkNGM0OS4uZDVkZGVlOGQ1NjA3NzAzMjNiMWZkNWYxYWNj
Y2NjMDUwMmMxMjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC03Niw4ICs3Niw2IEBAIFVubGlua2VkQ29kZUJs
b2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2Rl
VHlwZSBjb2RlCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUp
CiAgICAgLCBtX21ldGFkYXRhKFVubGlua2VkTWV0YWRhdGFUYWJsZTo6Y3JlYXRlKCkpCiB7Ci0g
ICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVySW5kZXggOiBtX2xpbmtUaW1lQ29uc3RhbnRz
KQotICAgICAgICBjb25zdGFudFJlZ2lzdGVySW5kZXggPSAwOwogICAgIEFTU0VSVChtX2NvbnN0
cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5jb25zdHJ1Y3RvcktpbmQo
KSkpOwogICAgIEFTU0VSVChtX2NvZGVUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2Rl
VHlwZSkpOwogICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihNaXhlZFRyaVN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDQ3MzlkYTc4MzU2OGQzZWIyNjMxZWVmMWE3MjQy
OTI4Nzk3ZjU2NjkuLjZjMDUwYTJjNjQyYWYzNmI4ZGVmZGZiYzMzZGJjMmM5NGY2MDdhMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUGFy
c2VyTW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRl
ci5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
VW5saW5rZWRNZXRhZGF0YVRhYmxlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBA
IC02Myw2ICs2Miw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvOworZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJf
dDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGNsYXNzIENhY2hlZENvZGVC
bG9jazsKQEAgLTE4MCwyNyArMTgwLDE3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
LmFwcGVuZChzb3VyY2VDb2RlUmVwcmVzZW50YXRpb24pOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLSAgICB1bnNpZ25lZCBhZGRDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUp
CisgICAgdW5zaWduZWQgYWRkQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudCBsaW5rVGltZUNvbnN0
YW50KQogICAgIHsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZyh2bS5oZWFwLCBjZWxsTG9jaygpKTsKICAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7Ci0gICAgICAgIEFT
U0VSVChyZXN1bHQpOwotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0eXBlKTsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgTGlua1RpbWVDb25zdGFudENvdW50
KTsKLSAgICAgICAgbV9saW5rVGltZUNvbnN0YW50c1tpbmRleF0gPSByZXN1bHQ7CiAgICAgICAg
IG1fY29uc3RhbnRSZWdpc3RlcnMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKLSAg
ICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5kKFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbjo6T3RoZXIpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmxh
c3QoKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGxpbmtUaW1l
Q29uc3RhbnQpKSk7CisgICAgICAgIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
LmFwcGVuZChTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkxpbmtUaW1lQ29uc3RhbnQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXhG
b3JMaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQgdHlwZSkKLSAgICB7Ci0gICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOwotICAgICAgICBB
U1NFUlQoaW5kZXggPCBMaW5rVGltZUNvbnN0YW50Q291bnQpOwotICAgICAgICByZXR1cm4gbV9s
aW5rVGltZUNvbnN0YW50c1tpbmRleF07Ci0gICAgfQotCiAgICAgY29uc3QgVmVjdG9yPFdyaXRl
QmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFu
dFJlZ2lzdGVyczsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRS
ZWdpc3RlcihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5k
ZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRl
eCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQpAQCAtNDA2LDggKzM5Niw2IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIG1fdGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3Njb3BlUmVnaXN0ZXI7
CiAKLSAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlu
a1RpbWVDb25zdGFudHM7Ci0KICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNp
Z25lZCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0NvbnN0cnVjdG9yIDog
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggMmRiODE4ZjBiOWI1NGIyMTViYWYwNmNjYzZhZTMxYzNj
MjlhZGZhZS4uMjVkODIzMmM3YTk3ZTAwN2UyYjQzZTg4NWJiNTJlODhmMGQzOTZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRl
cmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJMaW5rVGltZUNvbnN0YW50Lmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgiCkBAIC0zMDIsMTUgKzMwMywx
MyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCiAgICAg
LCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQorICAgICwg
bV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVDb25zdGFudHMsIG51
bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCiAgICAgLCBtX3ZtKHZtKQogICAg
ICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVzZXNB
cnJvd0Z1bmN0aW9uKCkgfHwgcHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVz
LT5zaXplKCkpOwogCi0gICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGlt
ZUNvbnN0YW50UmVnaXN0ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsK
LQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFj
ZSBmb3IgInRoaXMiCiAKICAgICBlbWl0RW50ZXIoKTsKQEAgLTM0NSw2ICszNDQsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKFN0cm9uZzxV
bmxpbmtlZENvZGVCbG9jaz4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJh
dGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25O
b2RlKQorICAgICwgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVD
b25zdGFudHMsIG51bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKEZ1bmN0aW9uQ29kZSkKICAgICAs
IG1fdm0odm0pCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGlu
RnVuY3Rpb24oKSkKQEAgLTM2MCw5ICszNjAsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZnVuY3Rpb25Ob2RlLT51
c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1f
ZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7Ci0g
ICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0
ZXJzKQotICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKLQogICAgIFN5bWJvbFRh
YmxlKiBmdW5jdGlvblN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKICAg
ICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJp
Y3RFdmFsKTsKICAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gMDsKQEAgLTc4OCwx
MSArNzg1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgICAgICAvLyBAcmVqZWN0
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKEBwcm9taXNlLCB0aHJv
d25WYWx1ZSk7CiAgICAgICAgIC8vIHJldHVybiBAcHJvbWlzZTsKLSAgICAgICAgYXV0byB2YXJS
ZWplY3RQcm9taXNlID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJl
amVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVja1ByaXZhdGVOYW1l
KCkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBuZXdUZW1wb3JhcnkoKTsK
LSAgICAgICAgbW92ZShzY29wZS5nZXQoKSwgZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwg
dmFyUmVqZWN0UHJvbWlzZSkpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVqZWN0UHJv
bWlzZSA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXJS
ZWplY3RQcm9taXNlLCBUaHJvd0lmTm90Rm91bmQpOwotCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZWplY3RQcm9taXNlID0gbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6cmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENo
ZWNrKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsKICAg
ICAgICAgZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAg
ICAgIG1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCBwcm9taXNlUmVnaXN0ZXIoKSk7CkBA
IC04NDIsMTUgKzgzNSwxMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgICwgbV9jb2Rl
R2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZXZh
bE5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKQorICAgICwgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVD
b25zdGFudHMsIG51bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKEV2YWxDb2RlKQogICAgICwgbV92
bSh2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYm
ICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQoZXZhbE5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUt
PnVzZXNFdmFsKCkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2
ZWRDb250ZXh0VHlwZSgpKQogewotICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1f
bGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51
bGxwdHI7Ci0KICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKIAogICAgIHB1
c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXph
dGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKQEAgLTkwMyw2
ICs4OTQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBN
b2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICwgbV9jb2RlR2VuZXJhdGlv
bk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3Jh
bU5vZGUpCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKQorICAgICwgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKG51bWJlck9mTGlua1RpbWVD
b25zdGFudHMsIG51bGxwdHIpCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBt
X3ZtKHZtKQogICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKQEAgLTkxMCw5ICs5MDIs
NiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQ
cm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKIAot
ICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lz
dGVycykKLSAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7Ci0KICAgICBTeW1ib2xU
YWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUo
bV92bSk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmlj
dEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZS0+c2V0U2NvcGVUeXBlKFN5bWJvbFRhYmxlOjpTY29wZVR5cGU6OkxleGljYWxTY29wZSk7
CkBAIC0xNDQyLDEyICsxNDMxLDEyIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1w
SWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCYgdGFyZ2V0KQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExh
YmVsJiB0YXJnZXQpCiB7Ci0gICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6
OkNhbGxGdW5jdGlvbiwgdGFyZ2V0LmJpbmQodGhpcykpOworICAgIE9wSm5lcVB0cjo6ZW1pdCh0
aGlzLCBjb25kLCBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50
OjpjYWxsRnVuY3Rpb24pLCB0YXJnZXQuYmluZCh0aGlzKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQsIExh
YmVsJiB0YXJnZXQpCiB7Ci0gICAgT3BKbmVxUHRyOjplbWl0KHRoaXMsIGNvbmQsIFNwZWNpYWw6
OkFwcGx5RnVuY3Rpb24sIHRhcmdldC5iaW5kKHRoaXMpKTsKKyAgICBPcEpuZXFQdHI6OmVtaXQo
dGhpcywgY29uZCwgbW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFu
dDo6YXBwbHlGdW5jdGlvbiksIHRhcmdldC5iaW5kKHRoaXMpKTsKIH0KIAogYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6aGFzQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CkBA
IC0zMTAxLDcgKzMwOTAsNyBAQCBFeHBlY3RlZEZ1bmN0aW9uIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RXhwZWN0ZWRGdW5jdGlvblNuaXBwZXQoUmVnaXN0ZXJJRCogZHN0LAogICAgICAgICBpZiAo
Y2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID49IDIpCiAgICAgICAg
ICAgICByZXR1cm4gTm9FeHBlY3RlZEZ1bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgT3BKbmVx
UHRyOjplbWl0KHRoaXMsIGZ1bmMsIFNwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yLCByZWFsQ2Fs
bC0+YmluZCh0aGlzKSk7CisgICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpLCByZWFs
Q2FsbC0+YmluZCh0aGlzKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZHN0ICE9IGlnbm9yZWRS
ZXN1bHQoKSkKICAgICAgICAgICAgIGVtaXROZXdPYmplY3QoZHN0KTsKQEAgLTMxMTcsNyArMzEw
Niw3IEBAIEV4cGVjdGVkRnVuY3Rpb24gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHBlY3RlZEZ1
bmN0aW9uU25pcHBldChSZWdpc3RlcklEKiBkc3QsCiAgICAgICAgIGlmIChjYWxsQXJndW1lbnRz
LmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPiAyKQogICAgICAgICAgICAgcmV0dXJuIE5v
RXhwZWN0ZWRGdW5jdGlvbjsKICAgICAgICAgCi0gICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlz
LCBmdW5jLCBTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yLCByZWFsQ2FsbC0+YmluZCh0aGlzKSk7
CisgICAgICAgIE9wSm5lcVB0cjo6ZW1pdCh0aGlzLCBmdW5jLCBtb3ZlTGlua1RpbWVDb25zdGFu
dChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpBcnJheSksIHJlYWxDYWxsLT5iaW5kKHRoaXMp
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAg
ICAgICAgICBpZiAoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpID09
IDIpCkBAIC0zMjg1LDcgKzMyNzQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcAogICAgIGlm
IChhdHRyaWJ1dGVzLmhhc0dldCgpIHx8IGF0dHJpYnV0ZXMuaGFzU2V0KCkpIHsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgICAgIGlmICgh
YXR0cmlidXRlcy5oYXNHZXQoKSB8fCAhYXR0cmlidXRlcy5oYXNTZXQoKSkKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBM
aW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yRnVuY3Rpb24gPSBtb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5r
VGltZUNvbnN0YW50Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZ2V0dGVyOwogICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKQEAg
LTQ0NzQsMTAgKzQ0NjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEFzeW5jSXRlcmF0b3IoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YQogCiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IG5leHRNZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRl
cmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5uZXh0KTsKIAotICAgIGF1dG8gdmFyQ3JlYXRl
QXN5bmNGcm9tU3luY0l0ZXJhdG9yID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IG5ld1RlbXBvcmFyeSgpOwotICAgIG1vdmUoc2NvcGUu
Z2V0KCksIGVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhckNyZWF0ZUFzeW5jRnJvbVN5
bmNJdGVyYXRvcikpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVBc3luY0Zyb21TeW5j
SXRlcmF0b3IgPSBlbWl0R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwg
dmFyQ3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3IgPSBtb3ZlTGlua1Rp
bWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVBc3luY0Zyb21TeW5j
SXRlcmF0b3IpOwogCiAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAyKTsK
ICAgICBlbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCAyZDcyMWViNzc5MGIzNzMwMjM3OGZmYWNiOTEyMjcyZGZiOGU3YzRmLi4zNmFl
NjRjN2NmZjE2MWY4MDUxOGFiOGY4OWNlZDdkNDdjZTRlNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03
Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgZW51bSBjbGFzcyBEZWJ1Z2dhYmxl
Q2FsbCB7IFllcywgTm8gfTsKICAgICBlbnVtIGNsYXNzIFRoaXNSZXNvbHV0aW9uVHlwZSB7IExv
Y2FsLCBTY29wZWQgfTsKKyAgICBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90
OwogICAgIAogICAgIGNsYXNzIENhbGxBcmd1bWVudHMgewogICAgIHB1YmxpYzoKQEAgLTEyMTYs
NyArMTIxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBtX2VtcHR5
VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9uZXdUYXJn
ZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9pc0Rlcml2ZWRD
b25zdHVjdG9yIHsgbnVsbHB0ciB9OwotICAgICAgICBSZWdpc3RlcklEKiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnNbTGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICAgICAgVmVjdG9yPFJl
Z2lzdGVySUQqPiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnM7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51
bGxwdHIgfTsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9wcm9taXNlUmVnaXN0ZXIgeyBudWxscHRy
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAyZTAzYmUwYjdjNzVkZGIwMjdlYzRlNmY2NTYyMThkOGUwZmU1MWE2
Li41MjQ2OGUxZjJhYTExZTEyMDZhZTdmNDVhMTVmMjkwYjM5ZGFmNDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogSW1w
b3J0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRHbG9iYWxQcml2YXRlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRl
TmFtZSgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW1wb3J0TW9kdWxlID0gZ2VuZXJhdG9y
Lm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OmltcG9ydE1v
ZHVsZSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAx
KTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJndW1lbnRzLmFyZ3VtZW50UmVn
aXN0ZXIoMCksIG1fZXhwcik7CkBAIC05ODUsNyArOTg1LDExIEBAIFJlZ2lzdGVySUQqIEZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIHJl
dHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOworICAgIGlmIChtX2VudHJ5
LnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAg
ICAgICByZXR1cm4gKHRoaXMtPiptX2VudHJ5LmVtaXR0ZXIoKSkoZ2VuZXJhdG9yLCBkc3QpOwor
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChkc3Qs
IG1fZW50cnkubGlua1RpbWVDb25zdGFudCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRCeUlkRGlyZWN0KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTEwMTMsOSArMTAxNywxMCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEJ5SWRE
aXJlY3RQcml2YXRlKEJ5dGVjb2RlRwogCiBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNl
SW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKLSAgICBp
ZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX3Byb21pc2VGaWVsZEZsYWdzKQorICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9
PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9k
ZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfcHJvbWlzZUZpZWxkRmxhZ3MpCiAgICAgICAgIHJldHVybiBKU1Byb21pc2U6OkZpZWxk
OjpGbGFnczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3Byb21pc2VGaWVsZFJlYWN0aW9uc09yUmVzdWx0KQorICAgIGlm
IChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY19wcm9taXNlRmllbGRSZWFjdGlvbnNPclJlc3VsdCkKICAgICAgICAgcmV0dXJu
IEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0OwogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6RmllbGQ6OkZsYWdzOwpAQCAt
MTAyMywxMyArMTAyOCwxNCBAQCBzdGF0aWMgSlNQcm9taXNlOjpGaWVsZCBwcm9taXNlSW50ZXJu
YWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIAogc3RhdGljIEpTR2Vu
ZXJhdG9yOjpGaWVsZCBnZW5lcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkKKyAgICBBU1NF
UlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlw
ZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkU3RhdGUpCiAgICAg
ICAgIHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwotICAgIGlmIChub2RlLT5lbWl0
dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9y
RmllbGROZXh0KQorICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZE5leHQpCiAgICAgICAg
IHJldHVybiBKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVs
ZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhpcykKICAgICAgICAgcmV0
dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpczsKLSAgICBpZiAobm9kZS0+ZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJh
bWUpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkRnJhbWUpCiAgICAgICAgIHJldHVy
biBKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBAIC0xMDM3LDE5
ICsxMDQzLDIwIEBAIHN0YXRpYyBKU0dlbmVyYXRvcjo6RmllbGQgZ2VuZXJhdG9ySW50ZXJuYWxG
aWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kCiAKIHN0YXRpYyBKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUlu
dHJpbnNpY05vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZW5lcmF0b3JGaWVsZFN0YXRlKQorICAg
IEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRTdGF0ZSkK
ICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKLSAgICBpZiAo
bm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dlbmVyYXRvckZpZWxkTmV4dCkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0g
JkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGROZXh0
KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQ7Ci0gICAgaWYg
KG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19nZW5lcmF0b3JGaWVsZFRoaXMpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dlbmVyYXRvckZpZWxkVGhp
cykKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzOwotICAgIGlm
IChub2RlLT5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfZ2VuZXJhdG9yRmllbGRGcmFtZSkKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2VuZXJhdG9yRmllbGRG
cmFtZSkKICAgICAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZTsKLSAg
ICBpZiAobm9kZS0+ZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKQorICAgIGlmIChub2RlLT5l
bnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikKICAgICAgICAgcmV0dXJuIEpTQXN5
bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uOwotICAgIGlmIChub2RlLT5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXN5bmNHZW5lcmF0
b3JGaWVsZFF1ZXVlRmlyc3QpCisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FzeW5jR2VuZXJhdG9yRmllbGRR
dWV1ZUZpcnN0KQogICAgICAgICByZXR1cm4gSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVl
Rmlyc3Q7Ci0gICAgaWYgKG5vZGUtPmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQorICAgIGlmIChu
b2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19hc3luY0dlbmVyYXRvckZpZWxkUXVldWVMYXN0KQogICAgICAgICByZXR1cm4gSlNB
c3luY0dlbmVyYXRvcjo6RmllbGQ6OlF1ZXVlTGFzdDsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CkBA
IC00MDk2LDEwICs0MTAzLDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNl
dCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAgICAgLy8gbG9hZCBhbmQgY2FsbCBAYXN5
bmNGdW5jdGlvblJlc3VtZQotICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1
bWVQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IubW92ZShzY29wZS5nZXQo
KSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXN5bmNGdW5jdGlvblJlc3VtZSA9IGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFzeW5jRnVuY3Rp
b25SZXN1bWUgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1Rp
bWVDb25zdGFudDo6YXN5bmNGdW5jdGlvblJlc3VtZSk7CiAKICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgNCk7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50
Q291bnQgPSAwOwpAQCAtNDU3OCwxMSArNDU4Miw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMp
CiAgICAgSWRlbnRpZmllclNldCBleGNsdWRlZFNldDsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YWRkTWV0aG9kOwogICAgIGlmIChtX2NvbnRhaW5zUmVzdEVsZW1lbnQgJiYgbV9jb250YWluc0Nv
bXB1dGVkUHJvcGVydHkpIHsKLSAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUo
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5TZXRQcml2YXRlTmFtZSgp
KTsKLQotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzZXRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldENvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLm1v
dmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlNldCk7CiAKICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CiAgICAgICAg
IGV4Y2x1ZGVkTGlzdCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2V0Q29uc3RydWN0b3IuZ2V0KCksIHNldENvbnN0cnVjdG9yLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CkBAIC00NjMzLDExICs0NjMzLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXdPYmplY3QgPSBnZW5lcmF0b3IuZW1pdE5ld09iamVj
dChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBsb2FkIGFuZCBjYWxsIEBjb3B5RGF0YVByb3BlcnRpZXMKLSAgICAgICAgICAgIGF1dG8gdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuY29weURhdGFQcm9wZXJ0aWVzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKHNjb3BlLmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7Ci0gICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvcHlEYXRhUHJvcGVydGll
cyA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50Ojpjb3B5RGF0YVByb3BlcnRpZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAzKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTQ4
MTAsMTEgKzQ4MDYsNyBAQCBSZWdpc3RlcklEKiBPYmplY3RTcHJlYWRFeHByZXNzaW9uTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0bwogICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShzcmMuZ2V0KCksIG1fZXhwcmVzc2lvbik7CiAgICAgCiAgICAgLy8gbG9hZCBhbmQg
Y2FsbCBAY29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zCi0gICAgYXV0byB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5j
b3B5RGF0YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnNQcml2YXRlTmFtZSgpKTsKLSAgICAKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAg
Z2VuZXJhdG9yLm1vdmUoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNj
b3BlLmdldCgpLCB2YXIpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0
aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBjb3B5RGF0YVByb3BlcnRpZXMgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQo
bnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25z
KTsKICAgICAKICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAyKTsK
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGUwZWVmNDkxN2FhNjgxZmFjMjk0Yzk4ODQ5ODI1YjJkOTNmMDBmMWEuLjMzNzhhZDA5
MmY2YTI0MjAzM2NmNDA3NjgzZDkzODk1ZDNkM2NkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02MzQyLDExICs2MzQyLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFQdHI+KCk7Ci0gICAgICAgICAgICBT
cGVjaWFsOjpQb2ludGVyIHNwZWNpYWxQb2ludGVyID0gYnl0ZWNvZGUubV9zcGVjaWFsUG9pbnRl
cjsKLSAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNDZWxsKHNwZWNpYWxQb2ludGVyKSk7Ci0g
ICAgICAgICAgICBKU0NlbGwqIGFjdHVhbFBvaW50ZXIgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPigK
LSAgICAgICAgICAgICAgICBhY3R1YWxQb2ludGVyRm9yKG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLCBzcGVjaWFsUG9pbnRlcikpOwotICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3pl
blBvaW50ZXIgPSBtX2dyYXBoLmZyZWV6ZShhY3R1YWxQb2ludGVyKTsKKyAgICAgICAgICAgIEZy
b3plblZhbHVlKiBmcm96ZW5Qb2ludGVyID0gbV9ncmFwaC5mcmVlemVTdHJvbmcobV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50
ZXIub2Zmc2V0KCkpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0ganVt
cFRhcmdldChieXRlY29kZS5tX3RhcmdldExhYmVsKTsKICAgICAgICAgICAgIE5vZGUqIGNoaWxk
ID0gZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jaykubV9oYXNKdW1wZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAppbmRleCBjYTBmMTI2NzA5OGQzYTFiYWYxZDJiYWQ3YjE5ZGEyZDQ1
YTMzZDAyLi43N2UxNzhmNGJjMDNhNzBkYzRmMzQ2NGZmNTljNzNkYmNjN2E5YWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBAIC0xMzksOCArMTM5LDcg
QEAgY29uc3QgVmVjdG9yPHNpemVfdD4mIHNpemVDbGFzc2VzKCkKICAgICAgICAgICAgIC8vIE1h
bnVhbGx5IGluamVjdCBzaXplIGNsYXNzZXMgZm9yIG9iamVjdHMgd2Uga25vdyB3aWxsIGJlIGFs
bG9jYXRlZCBpbiBoaWdoIHZvbHVtZS4KICAgICAgICAgICAgIC8vIEZJWE1FOiBBbGwgb2YgdGhl
c2UgdGhpbmdzIHNob3VsZCBoYXZlIElzb1N1YnNwYWNlcy4KICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk4NzYKLSAgICAgICAgICAgIGFk
ZChzaXplb2YoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykpOwotICAgICAgICAgICAgYWRkKHNp
emVvZihKU1N0cmluZykpOworICAgICAgICAgICAgYWRkKDI1Nik7CiAKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAvLyBTb3J0IGFuZCBkZWR1cGxpY2F0ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDBkMDQ5OTQ1ODBkOWIzODgxYzkwMmIwMWFi
YTNlNjFkOTYwMzZlNTkuLjhlYmU0OWZlYmJmNTEzNWI1MzVlM2NkZDc2OTY1NjgxNTA1M2RhNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNDcxLDExICs0
NzEsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEpuZXFQdHI+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7
Ci0gICAgU3BlY2lhbDo6UG9pbnRlciBwdHIgPSBieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyOwor
ICAgIEpTVmFsdWUgc3BlY2lhbFBvaW50ZXIgPSBnZXRDb25zdGFudE9wZXJhbmQoYnl0ZWNvZGUu
bV9zcGVjaWFsUG9pbnRlci5vZmZzZXQoKSk7CisgICAgQVNTRVJUKHNwZWNpYWxQb2ludGVyLmlz
Q2VsbCgpKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihzcmMsIHJlZ1QwKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFu
Y2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKGFjdHVhbFBvaW50ZXJGb3IobV9jb2Rl
QmxvY2ssIHB0cikpKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXF1YWwgPSBicmFuY2hQdHIo
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHNwZWNpYWxQb2ludGVyLmFzQ2VsbCgpKSk7CiAg
ICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgJm1ldGFkYXRhLm1faGFzSnVtcGVkKTsKICAgICBh
ZGRKdW1wKGp1bXAoKSwgdGFyZ2V0KTsKICAgICBlcXVhbC5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDNlMGNlYjQ2OTNh
NTg5NWYzYWZlYmM5NjJhOWMxNDNmMDgyOGM1MzEuLjRlOTQyNDU0NzlmM2Y0NzY5N2E4YjY5M2M1
ZGYxZjAxMGViMjMyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKQEAgLTQ3OCwxMiArNDc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFf
cHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIGludCBzcmMgPSBi
eXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAgIFNwZWNpYWw6OlBvaW50ZXIgcHRyID0gYnl0
ZWNvZGUubV9zcGVjaWFsUG9pbnRlcjsKKyAgICBKU1ZhbHVlIHNwZWNpYWxQb2ludGVyID0gZ2V0
Q29uc3RhbnRPcGVyYW5kKGJ5dGVjb2RlLm1fc3BlY2lhbFBvaW50ZXIub2Zmc2V0KCkpOworICAg
IEFTU0VSVChzcGVjaWFsUG9pbnRlci5pc0NlbGwoKSk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0g
anVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwog
CiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbChyZWdUMSk7Ci0gICAgSnVtcCBlcXVhbCA9IGJyYW5jaFB0cihFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW1QdHIoYWN0dWFsUG9pbnRlckZvcihtX2NvZGVCbG9jaywgcHRyKSkp
OworICAgIEp1bXAgZXF1YWwgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRy
KHNwZWNpYWxQb2ludGVyLmFzQ2VsbCgpKSk7CiAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwogICAg
IHN0b3JlOChUcnVzdGVkSW1tMzIoMSksICZtZXRhZGF0YS5tX2hhc0p1bXBlZCk7CiAgICAgYWRk
SnVtcChqdW1wKCksIHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDMzN2VlMjJiNDkzZDBi
NWFlNGQzNzQyZGIxMjJmNTIzYmVhZjNmNmEuLjMxNTU0OGYxMGIxMjBlOWU2ZjUxYjIxMDI4ODE1
MjA2ZTI2NjU4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC00NjIsNiArNDYyLDE4IEBAIG1hY3Jv
IGxvYWRWYXJpYWJsZShnZXQsIGZpZWxkTmFtZSwgaW5kZXhSZWcsIHRhZ1JlZywgcGF5bG9hZFJl
ZykKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXhSZWcsIDhdLCBwYXlsb2FkUmVn
CiBlbmQKIAorIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdp
c3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50KHNpemUs
IGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgc2l6ZShGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eE5hcnJvdywgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhXaWRlMTYsIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4V2lkZTMyLCBtYWNybyAoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpCisg
ICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwg
cGF5bG9hZAorICAgICAgICBzdWJwIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBpbmRleAor
ICAgICAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICAgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBlbmQp
CitlbmQKKwogIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdp
c3RlcnMuIEluZGV4IGlzIG5vdAogIyBjaGFuZ2VkLgogbWFjcm8gbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCBpbmRleCwgdGFnLCBwYXlsb2FkKQpAQCAtMTcxMCwxMiArMTcyMiwxMCBAQCB1
bmRlZmluZWRPck51bGxKdW1wT3Aoam51bmRlZmluZWRfb3JfbnVsbCwgT3BKbnVuZGVmaW5lZE9y
TnVsbCwKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9qbmVxX3B0ciwgT3BKbmVxUHRyLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBnZXQobV92YWx1
ZSwgdDApCi0gICAgZ2V0dShzaXplLCBPcEpuZXFQdHIsIG1fc3BlY2lhbFBvaW50ZXIsIHQxKQot
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgotICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxPYmplY3RbdDJdLCB0MgorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnQoc2l6ZSwgdDEsIHQzLCB0MikKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKLSAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6
bV9zcGVjaWFsUG9pbnRlcnNbdDIsIHQxLCA0XSwgdDEKLSAgICBicGVxIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKyAgICBicGVxIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQyLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKIC5vcEpuZXFQdHJC
cmFuY2g6CiAgICAgbWV0YWRhdGEodDUsIHQyKQogICAgIHN0b3JlYiAxLCBPcEpuZXFQdHI6Ok1l
dGFkYXRhOjptX2hhc0p1bXBlZFt0NV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMDQ0M2YwY2ZlOGIzNzI3ZWM5
NGJkNGQ1ODk3MDk2MTBiNDI5Yzg2YS4uNTU4OGU1YjgzNDUwNjJiY2M3ZmFkMmRmZDM5NGI2ODU4
NjQ4OGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTQ2NSw2ICs0NjUsMzAgQEAgbWFjcm8gbG9hZFZhcmlh
YmxlKGdldCwgZmllbGROYW1lLCB2YWx1ZVJlZykKICAgICBsb2FkcSBbY2ZyLCB2YWx1ZVJlZywg
OF0sIHZhbHVlUmVnCiBlbmQKIAorIyBJbmRleCBhbmQgdmFsdWUgbXVzdCBiZSBkaWZmZXJlbnQg
cmVnaXN0ZXJzLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50KHNp
emUsIGluZGV4LCB2YWx1ZSkKKyAgICBtYWNybyBsb2FkTmFycm93KCkKKyAgICAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHZhbHVlCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFu
dFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt2YWx1ZV0sIHZhbHVlCisgICAgICAgIGxv
YWRxIC0oRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhOYXJyb3cgKiA4KVt2YWx1ZSwgaW5kZXgs
IDhdLCB2YWx1ZQorICAgIGVuZAorCisgICAgbWFjcm8gbG9hZFdpZGUxNigpCisgICAgICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB2YWx1ZQorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29u
c3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdmFsdWVdLCB2YWx1ZQorICAgICAg
ICBsb2FkcSAtKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4V2lkZTE2ICogOClbdmFsdWUsIGlu
ZGV4LCA4XSwgdmFsdWUKKyAgICBlbmQKKworICAgIG1hY3JvIGxvYWRXaWRlMzIoKQorICAgICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdmFsdWUKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3ZhbHVlXSwgdmFsdWUKKyAg
ICAgICAgc3VicCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleFdpZGUzMiwgaW5kZXgKKyAgICAg
ICAgbG9hZHEgW3ZhbHVlLCBpbmRleCwgOF0sIHZhbHVlCisgICAgZW5kCisKKyAgICBzaXplKGxv
YWROYXJyb3csIGxvYWRXaWRlMTYsIGxvYWRXaWRlMzIsIG1hY3JvIChsb2FkKSBsb2FkKCkgZW5k
KQorZW5kCisKICMgSW5kZXggYW5kIHZhbHVlIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4g
SW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgaW5kZXgsIHZhbHVlKQogICAgIG1hY3JvIGxvYWROYXJyb3coKQpAQCAtMTgxNiwxMSArMTg0
MCw5IEBAIHVuZGVmaW5lZE9yTnVsbEp1bXBPcChqbnVuZGVmaW5lZF9vcl9udWxsLCBPcEpudW5k
ZWZpbmVkT3JOdWxsLAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2puZXFfcHRyLCBPcEpuZXFQ
dHIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdl
dChtX3ZhbHVlLCB0MCkKLSAgICBnZXR1KHNpemUsIE9wSm5lcVB0ciwgbV9zcGVjaWFsUG9pbnRl
ciwgdDEpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCi0gICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0Ml0sIHQyCi0gICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fc3Bl
Y2lhbFBvaW50ZXJzW3QyLCB0MSwgUHRyU2l6ZV0sIHQxCi0gICAgYnBuZXEgdDEsIFtjZnIsIHQw
LCA4XSwgLm9wSm5lcVB0clRhcmdldAorICAgIGdldChtX3NwZWNpYWxQb2ludGVyLCB0MSkKKyAg
ICBsb2FkQ29uc3RhbnQoc2l6ZSwgdDEsIHQyKQorICAgIGJwbmVxIHQyLCBbY2ZyLCB0MCwgOF0s
IC5vcEpuZXFQdHJUYXJnZXQKICAgICBkaXNwYXRjaCgpCiAKIC5vcEpuZXFQdHJUYXJnZXQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGNhZjAzMDgyOTIx
ZDEyOTVhMDQyOGRiMGNiZTA0MTJjM2FjZjBjOTkuLmNjNTk3ZjViNDRiOWU3MTc5ZjVkZTU1YjBl
ZWQyYmY4NjkwNWVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCkBAIC0yMDAsOCArMjAwLDkgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgICAgICB1
c2VzQXJndW1lbnRzKCk7CiAKICAgICAgICAgaWYgKGlkZW50LmlzU3ltYm9sKCkpIHsKLSAgICAg
ICAgICAgIGlmIChCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIGVtaXR0ZXIgPSBt
X3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShC
eXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6OkNvbnN0YW50LCBsb2NhdGlvbiwgZW1pdHRlciwg
aWRlbnQsIG51bGxwdHIsIHN0YXJ0LCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGF1dG8gZW50
cnkgPSBtX3ZtLmJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoKS5sb29rdXAoaWRlbnQpOworICAg
ICAgICAgICAgaWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShCeXRlY29kZUludHJpbnNpY05vZGU6OlR5cGU6
OkNvbnN0YW50LCBsb2NhdGlvbiwgZW50cnkudmFsdWUoKSwgaWRlbnQsIG51bGxwdHIsIHN0YXJ0
LCBzdGFydCwgZW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgc3RhcnQpOwpAQCAtMTM4NCw4ICsx
Mzg1LDggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBpZiAoZnVuYy0+aXNCeXRlY29k
ZUludHJpbnNpY05vZGUoKSkgewogICAgICAgICBBU1NFUlQoIWlzT3B0aW9uYWxDYWxsKTsKICAg
ICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBpbnRyaW5zaWMgPSBzdGF0aWNfY2FzdDxCeXRl
Y29kZUludHJpbnNpY05vZGUqPihmdW5jKTsKLSAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgp
ID09IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQpCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCeXRlY29kZUludHJpbnNpY05vZGUoQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjpUeXBlOjpGdW5jdGlvbiwgbG9jYXRpb24sIGludHJpbnNpYy0+ZW1pdHRl
cigpLCBpbnRyaW5zaWMtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKKyAgICAgICAgaWYgKGludHJpbnNpYy0+dHlwZSgpID09IEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6VHlwZTo6Q29uc3RhbnQgJiYgaW50cmluc2ljLT5lbnRyeSgpLnR5cGUoKSA9PSBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKQorICAgICAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6VHlwZTo6RnVuY3Rpb24sIGxvY2F0aW9uLCBpbnRyaW5zaWMtPmVudHJ5KCks
IGludHJpbnNpYy0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpOwogICAgIH0KIAogICAgIGlmIChmdW5jLT5pc09wdGlvbmFsQ2hhaW4oKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA3NTg5
ZDdjOTFlODk1ZWIyZDk5NjMzZGJmNWI0YWE1ZDI2YWViODRlLi45YzdiOWEyODIwNzNjNTc2YTYz
NDllNGQ2OWMyMjBiYTVjY2RlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5
dGVjb2RlSW50cmluc2ljTm9kZShUeXBlIHR5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEVtaXR0ZXJUeXBlIGVtaXR0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisg
ICAgaW5saW5lIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5
cGUgdHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeTo6RW50cnkgZW50cnksIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fZW1pdHRl
cihlbWl0dGVyKQorICAgICAgICAsIG1fZW50cnkoZW50cnkpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICAgICAgLCBtX3R5cGUodHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBhYTQ0ODY2NGQxZDQ4MTQwZDEwYTQ1
OTBjMDY3ZDUwMWE4YjYyODdmLi5mYWQ1MzI4YTJiOTQ0MzdkYjJkYWU3ZjFjODZiMjg5YzFhMzQx
ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC05NDQsMTQgKzk0NCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEZ1bmN0aW9uCiAgICAgICAgIH07CiAK
LSAgICAgICAgdHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVt
aXR0ZXJUeXBlKShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKLQotICAgICAgICBC
eXRlY29kZUludHJpbnNpY05vZGUoVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRl
clR5cGUsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKFR5
cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVu
dHJ5LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2lj
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsgfQorICAgICAgICBCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5OjpFbnRyeSBlbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cnk7IH0KICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7
IH0KIAogI2RlZmluZSBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJT05TKG5h
bWUpIFJlZ2lzdGVySUQqIGVtaXRfaW50cmluc2ljXyMjbmFtZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKTsKQEAgLTk2NCw3ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OkZ1bmN0aW9uOyB9CiAKLSAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOwor
ICAgICAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeSBtX2VudHJ5OwogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2Fy
Z3M7CiAgICAgICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDYwMzVhNDkwOTI2YzRhZTVmYzMzMjdhZmZlZGY0Mjc2
YjkzZjA2NTcuLmViOWQ5OTNiMjUxNGM2NzI5ZTEwMmY2NWU3MjBhNzI4YWYyYzI0MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTE4MDEs
NyArMTgwMSw2IEBAIGNsYXNzIENhY2hlZENvZGVCbG9jayA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8
Q29kZUJsb2NrVHlwZT4gewogcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVn
aXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fc2NvcGVSZWdpc3RlcjsKLSAgICBzdGQ6OmFy
cmF5PHVuc2lnbmVkLCBMaW5rVGltZUNvbnN0YW50Q291bnQ+IG1fbGlua1RpbWVDb25zdGFudHM7
CiAKICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKICAgICB1bnNpZ25lZCBtX2lzU3RyaWN0
TW9kZSA6IDE7CkBAIC0yMDM5LDkgKzIwMzgsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkQ29k
ZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhEZWNvZGVyJiBkZWNvZGVyLCBTdHJ1Y3R1cmUqCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogQUxXQVlTX0lOTElORSB2b2lkIENhY2hl
ZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGlu
a2VkQ29kZUJsb2NrJiBjb2RlQmxvY2spIGNvbnN0CiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
TGlua1RpbWVDb25zdGFudENvdW50OyBpLS07KQotICAgICAgICBjb2RlQmxvY2subV9saW5rVGlt
ZUNvbnN0YW50c1tpXSA9IG1fbGlua1RpbWVDb25zdGFudHNbaV07Ci0KICAgICBtX2NvbnN0YW50
UmVnaXN0ZXJzLmRlY29kZShkZWNvZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywg
JmNvZGVCbG9jayk7CiAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVj
b2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bik7CiAgICAgbV9leHByZXNzaW9uSW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhw
cmVzc2lvbkluZm8pOwpAQCAtMjIwNyw5ICsyMjAzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENh
Y2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnMKICAgICBtX2NvZGVHZW5lcmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9u
TW9kZTsKICAgICBtX2NvZGVUeXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCi0gICAgICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbaV0gPSBjb2RlQmxvY2subV9saW5rVGltZUNvbnN0YW50c1tpXTsKLQog
ICAgIG1fbWV0YWRhdGEuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX21ldGFkYXRhLmdldCgp
KTsKICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBjb2RlQmxvY2subV9yYXJlRGF0YS5n
ZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRl
eCA0N2ZjZDMzOGI0MDU5ODM2Y2QzNjgxZTg0ZTAxZmFiNzQzMzk3Njc0Li4yNTk5ZTJjNTYyOTEw
Zjk4MTQ2YzkxOGI1MjI0OWM4NTViZDJhNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0xMjksNyArMTI5LDggQEAgYm9vbCBpc0ludDUyKGRvdWJs
ZSk7CiBlbnVtIGNsYXNzIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiA6IHVpbnQ4X3QgewogICAg
IE90aGVyLAogICAgIEludGVnZXIsCi0gICAgRG91YmxlCisgICAgRG91YmxlLAorICAgIExpbmtU
aW1lQ29uc3RhbnQsCiB9OwogCiBjbGFzcyBKU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjNjViMGIzNzBkMDI1NzVl
MDBiMWY1MDQ5MDk5MTA3ZTc3MGU3MjhkLi5iODYyYjRkOGNlODk3MDQwODJjMWY1MmY2YzY2MzUz
MmQ4YjNmY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIkxhenlDbGFzc1N0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJMYXp5
UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGlua1RpbWVDb25zdGFudC5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWFw
SXRlcmF0b3JQcm90b3R5cGUuaCIKQEAgLTQxMSw2ICs0MTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVlSm9iKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbAogSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgMCkKICAgICAsIG1fdm0oJnZt
KQorICAgICwgbV9saW5rVGltZUNvbnN0YW50cyhudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzKQog
ICAgICwgbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0
Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKICAgICAsIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50
KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogICAgICwgbV92YXJJbmpl
Y3Rpb25XYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQpA
QCAtNTIyLDggKzUyNCw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24gPSBudWxscHRyOwogICAgIEpTRnVuY3Rpb24qIGhh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBudWxscHRyOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5
cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyh2bSwgdGhpcywgJmNhbGxGdW5jdGlvbiwgJmFwcGx5
RnVuY3Rpb24sICZoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKLSAgICBtX2NhbGxGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIGNhbGxGdW5jdGlvbik7Ci0gICAgbV9hcHBseUZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgYXBwbHlGdW5jdGlvbik7CiAgICAgbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlv
bi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYg
aW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcuc3RyaW5nKCks
IGFycmF5UHJvdG9GdW5jVG9TdHJpbmcsIE5vSW50cmluc2ljKSk7CkBAIC03MjMsNyArNzIzLDgg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9nZW5lcmF0b3JQcm90
b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQ
cm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0s
IHRoaXMsIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fYXN5bmNJdGVyYXRv
clByb3RvdHlwZS5nZXQoKSkpKTsKIAotICAgIG1fcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uLnNl
dCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSk7CisgICAgSlNGdW5jdGlvbiogZGVmYXVsdFByb21pc2VU
aGVuID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNvZGVHZW5l
cmF0b3Iodm0pLCB0aGlzKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pXS5zZXQodm0sIHRo
aXMsIGRlZmF1bHRQcm9taXNlVGhlbik7CiAKICNkZWZpbmUgQ1JFQVRFX1BST1RPVFlQRV9GT1Jf
U0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VU
eXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZsYWcp
IHsgXAogICAgICAgICBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLnNldCh2bSwgdGhpcywg
Y2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fICMjIHByb3RvdHlwZUJhc2UgIyMg
UHJvdG90eXBlLmdldCgpKSkpOyBcCkBAIC03NTAsMTggKzc1MSwyMSBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKIAogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25z
dHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpPYmplY3QpXS5zZXQodm0s
IHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKIAogICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOwotICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOworICAgIG1fbGlua1RpbWVDb25z
dGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnRocm93VHlwZUVy
cm9yRnVuY3Rpb24pXS5zZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAg
ICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgZnVuY3Rp
b25Db25zdHJ1Y3Rvcik7CiAKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9y
ID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Fy
cmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1f
YXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OkFycmF5KV0uc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsKICAgICAKICAgICBSZWdF
eHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2ll
c0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIHJlZ0V4cENvbnN0cnVjdG9yKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpSZWdFeHApXS5zZXQodm0sIHRoaXMsIHJl
Z0V4cENvbnN0cnVjdG9yKTsKICAgICBtX3JlZ0V4cEdsb2JhbERhdGEuY2FjaGVkUmVzdWx0KCku
cmVjb3JkKHZtLCB0aGlzLCBudWxscHRyLCBqc0VtcHR5U3RyaW5nKHZtKSwgTWF0Y2hSZXN1bHQo
MCwgMCkpOwogICAgIAogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQpAQCAtNzgzLDYg
Kzc4Nyw4IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAKICAgICBtX3Byb21pc2VDb25zdHJ1
Y3Rvci5zZXQodm0sIHRoaXMsIHByb21pc2VDb25zdHJ1Y3Rvcik7CiAgICAgbV9pbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGlt
ZUNvbnN0YW50OjpQcm9taXNlKV0uc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OkludGVybmFsUHJvbWlzZSldLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IpOwogICAgIAogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRlcigKICAg
ICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKQEAgLTg0
Miw5ICs4NDgsNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENv
bnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5BcnJheSwgYXJyYXlDb25zdHJ1Y3Rv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWdF
eHAsIHJlZ0V4cENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuT2JqZWN0UHJpdmF0ZU5hbWUoKSwgb2Jq
ZWN0Q29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7Ci0KICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U2hh
cmVkQXJyYXlCdWZmZXIsIHNoYXJlZEFycmF5QnVmZmVyQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkF0b21pY3Mi
KSwgYXRvbWljc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwpAQCAtOTE3LDE4MCArOTIwLDIyNiBAQCBjYXBpdGFsTmFtZSAjIyBDb25z
dHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFs
TmFtZQogICAgIGlmIChPcHRpb25zOjpleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlcigpKQogICAg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TG9h
ZGVyLCBtb2R1bGVMb2FkZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiogYnVpbHRpbkxvZyA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVy
LnN0cmluZygpLCBnbG9iYWxGdW5jQnVpbHRpbkxvZyk7Ci0gICAgSlNGdW5jdGlvbiogYnVpbHRp
bkRlc2NyaWJlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluRGVzY3JpYmUp
OwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUcnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hdGhQcm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5z
aWMpOwotCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNQcm9w
ZXJ0eUlzRW51bWVyYWJsZSk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNPd25LZXlzID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY093bktl
eXMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYWtlVHlwZUVycm9yID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheUxlbmd0aCA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJheUdldE9yaWdpbmFs
Q29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcik7Ci0gICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKLSAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jSXNU
eXBlZEFycmF5VmlldywgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlv
biogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U3ViYXJyYXlDcmVhdGUgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJy
YXlDcmVhdGUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNCb3VuZEZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNCb3VuZEZ1bmN0aW9u
KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGhhc0luc3RhbmNlQm91
bmRGdW5jdGlvbik7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJbnN0YW5jZU9mID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0ZUZ1bmNJ
bnN0YW5jZU9mKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RoaXNUaW1lVmFsdWUgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0
VGltZSk7Ci0jaWYgRU5BQkxFKElOVEwpCi0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNEYXRl
VGltZUZvcm1hdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGds
b2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk7Ci0jZW5kaWYKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY0lzQXJyYXlTbG93ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3cpOwotICAgIEpTRnVuY3Rp
b24qIHByaXZhdGVGdW5jQ29uY2F0TWVtY3B5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KTsKLSAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY0FwcGVuZE1lbWNweSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweSk7
Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFkID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRIZWFk
LCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
TWFwQnVja2V0TmV4dCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCks
IG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBCdWNrZXROZXh0SW50cmluc2ljKTsK
LSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY01hcEJ1Y2tldEtleSA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0S2V5LCBK
U01hcEJ1Y2tldEtleUludHJpbnNpYyk7Ci0gICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYXBC
dWNrZXRWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG1h
cFByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIEpTTWFwQnVja2V0VmFsdWVJbnRyaW5zaWMpOwot
ICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0SGVhZCwg
SlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1Nl
dEJ1Y2tldE5leHQgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBz
ZXRQcml2YXRlRnVuY1NldEJ1Y2tldE5leHQsIEpTU2V0QnVja2V0TmV4dEludHJpbnNpYyk7Ci0g
ICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXkgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBzZXRQcml2YXRlRnVuY1NldEJ1Y2tldEtleSwgSlNT
ZXRCdWNrZXRLZXlJbnRyaW5zaWMpOwotCiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0Zs
YWdzR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwg
dm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0ZsYWdzR2V0dGVyKV0uc2V0KHZtLCB0aGlzLCByZWdF
eHBQcm90b0ZsYWdzR2V0dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFs
R2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0u
cHJvcGVydHlOYW1lcy0+Z2xvYmFsKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7Ci0gICAgbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5zZXQodm0sIHRoaXMsIHJlZ0V4cFBy
b3RvR2xvYmFsR2V0dGVyKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdldHRlcildLnNldCh2
bSwgdGhpcywgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpOwogICAgIEdldHRlclNldHRlciogcmVn
RXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2FzZSk7CiAgICAgY2F0Y2hT
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdl
dHRlcildLnNldCh2bSwgdGhpcywgcmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKTsKICAgICBH
ZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyID0gZ2V0R2V0dGVyQnlJZCh0
aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bXVsdGlsaW5l
KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJv
dG9NdWx0aWxpbmVHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyID0gZ2V0R2V0
dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+
c291cmNlKTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVn
RXhwUHJvdG9Tb3VyY2VHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvU291cmNlR2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyID0gZ2V0R2V0
dGVyQnlJZCh0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+
c3RpY2t5KTsKICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVn
RXhwUHJvdG9TdGlja3lHZXR0ZXIpXS5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvU3RpY2t5R2V0
dGVyKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciA9IGdldEdl
dHRlckJ5SWQodGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMt
PnVuaWNvZGUpOwogICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBtX3Jl
Z0V4cFByb3RvVW5pY29kZUdldHRlci5zZXQodm0sIHRoaXMsIHJlZ0V4cFByb3RvVW5pY29kZUdl
dHRlcik7Ci0gICAgSlNPYmplY3QqIGJ1aWx0aW5SZWdFeHBFeGVjID0gYXNPYmplY3QobV9yZWdF
eHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlYykuYXNDZWxs
KCkpOwotICAgIG1fcmVnRXhwUHJvdG9FeGVjLnNldCh2bSwgdGhpcywgYnVpbHRpblJlZ0V4cEV4
ZWMpOwotICAgIEpTT2JqZWN0KiByZWdFeHBTeW1ib2xSZXBsYWNlID0gYXNPYmplY3QobV9yZWdF
eHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5bWJv
bCkuYXNDZWxsKCkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRlcildLnNldCh2bSwg
dGhpcywgcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKTsKKyAgICBKU0Z1bmN0aW9uKiByZWdFeHBT
eW1ib2xSZXBsYWNlID0ganNDYXN0PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9sKSk7CiAgICAgbV9yZWdF
eHBQcm90b1N5bWJvbFJlcGxhY2Uuc2V0KHZtLCB0aGlzLCByZWdFeHBTeW1ib2xSZXBsYWNlKTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYyldLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rp
b24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
eGVjKSkpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2UpXS5zZXQodm0sIHRo
aXMsIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJl
cGxhY2VTeW1ib2wpLmFzQ2VsbCgpKTsKKworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLnNldCh2bSwgdGhpcywgc2V0
Q29uc3RydWN0b3IpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXkpXS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3Ry
dWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSkuYXNDZWxsKCkp
OworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmNhbGxGdW5jdGlvbildLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjphcHBseUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKKworI2Rl
ZmluZSBJTklUX1BSSVZBVEVfR0xPQkFMKGZ1bmNOYW1lLCBjb2RlKSBcCisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZnVuY05h
bWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsgXAor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpOyBcCisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBnbG9iYWxP
YmplY3QpKTsgXAorICAgICAgICB9KTsKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X1BSSVZBVEVfR0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkKKyN1bmRlZiBJTklUX1BS
SVZBVEVfR0xPQkFMCiAKLSNkZWZpbmUgQ1JFQVRFX1BSSVZBVEVfR0xPQkFMX0ZVTkNUSU9OKHZh
ck5hbWUsIGZ1bmNOYW1lLCBjb2RlKSBKU0Z1bmN0aW9uKiB2YXJOYW1lICMjIFByaXZhdGVGdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZSAjIyBDb2RlR2VuZXJhdG9yKHZtKSwg
dGhpcyk7Ci0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9QUklWQVRFX0dMT0JBTF9O
QU1FKENSRUFURV9QUklWQVRFX0dMT0JBTF9GVU5DVElPTikKLSN1bmRlZiBDUkVBVEVfUFJJVkFU
RV9HTE9CQUxfRlVOQ1RJT04KLQorICAgIC8vIEZJWE1FOiBJbml0aWFsaXppbmcgdGhlbSBsYXpp
bHkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzc5
NQogICAgIEpTT2JqZWN0KiBhcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gQXJyYXlJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBhcnJh
eUl0ZXJhdG9yQ29uc3RydWN0b3JQcml2YXRlRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBqc0Nh
c3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFycmF5SXRl
cmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFycmF5
SXRlcmF0b3JQcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIGFzeW5jRnJvbVN5bmNJdGVyYXRv
clByb3RvdHlwZSA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0
aGlzLCBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIGFzeW5jRnJvbVN5bmNJdGVy
YXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBq
c0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFzeW5j
RnJvbVN5bmNJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBt
YXBJdGVyYXRvclByb3RvdHlwZSA9IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRo
aXMsIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRl
cmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBtYXBJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0
ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbWFw
SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6TWFwSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKIAogICAgIEpTT2Jq
ZWN0KiByZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsK
LSAgICByZWdFeHBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlu
a1RpbWVDb25zdGFudDo6UmVnRXhwU3RyaW5nSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKTsK
IAogICAgIEpTT2JqZWN0KiBzZXRJdGVyYXRvclByb3RvdHlwZSA9IFNldEl0ZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGUodm0sIHRoaXMsIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBzZXRJdGVyYXRv
ckNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgc2V0SXRlcmF0b3JQcm90b3R5cGUpOworICAgIGpzQ2FzdDxKU09iamVj
dCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6U2V0SXRlcmF0b3IpKS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNldEl0ZXJhdG9yUHJvdG90
eXBlKTsKIAotICAgIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IG5ld1Byb21pc2VDYXBhYmlsaXR5UHJpdmF0ZUZ1bmN0aW9uKTsKLSAgICBtX3Jlc29sdmVQcm9t
aXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZXNvbHZlUHJvbWlzZVByaXZhdGVGdW5jdGlvbik7
Ci0gICAgbV9yZWplY3RQcm9taXNlRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCByZWplY3RQcm9taXNl
UHJpdmF0ZUZ1bmN0aW9uKTsKKyAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgorICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1h
cEJ1Y2tldEhlYWQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZh
dGVGdW5jTWFwQnVja2V0SGVhZCwgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljKSk7CisgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldE5leHQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0TmV4dCwgSlNNYXBCdWNrZXROZXh0SW50cmlu
c2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldEtleSldLmluaXRMYXRlcihbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXksIEpTTWFwQnVj
a2V0S2V5SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldFZhbHVlKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tl
dFZhbHVlLCBKU01hcEJ1Y2tldFZhbHVlSW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnNldEJ1Y2tldEhlYWQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIHNldFBy
aXZhdGVGdW5jU2V0QnVja2V0SGVhZCwgSlNTZXRCdWNrZXRIZWFkSW50cmluc2ljKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnNldEJ1Y2tldE5leHQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCwgSlNTZXRCdWNrZXROZXh0SW50
cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnNldEJ1Y2tldEtleSldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgc2V0UHJpdmF0ZUZ1bmNTZXRCdWNrZXRLZXksIEpTU2V0
QnVja2V0S2V5SW50cmluc2ljKSk7CisgICAgICAgIH0pOworCisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW1wb3J0TW9kdWxl
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xv
YmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jSW1wb3J0TW9k
dWxlKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnByb3BlcnR5SXNFbnVtZXJhYmxlKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFi
bGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6b3duS2V5cyldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY093bktleXMpKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
ZW5xdWV1ZUpvYildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5x
dWV1ZUpvYikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYWtlVHlwZUVycm9yKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jTWFrZVR5cGVFcnJvcikpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5TGVuZ3RoKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoKSk7CisgICAgICAg
IH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtU
aW1lQ29uc3RhbnQ6OnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3Jp
Z2luYWxDb25zdHJ1Y3RvcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp0eXBlZEFycmF5U29ydCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY1NvcnQpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNUeXBlZEFycmF5VmlldyldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAg
aW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lz
VHlwZWRBcnJheVZpZXcsIElzVHlwZWRBcnJheVZpZXdJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6dHlwZWRBcnJheVN1YmFycmF5Q3JlYXRlKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpKTsK
KyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6aXNCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBpc0JvdW5kRnVuY3Rpb24pKTsKKyAgICAgICAgfSk7CisgICAgbV9s
aW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6
aGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVh
dGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmlu
ZygpLCBoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24pKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW5z
dGFuY2VPZildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgb2JqZWN0UHJpdmF0
ZUZ1bmNJbnN0YW5jZU9mKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5Mb2cpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKSk7Cisg
ICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OkJ1aWx0aW5EZXNjcmliZSldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5j
dGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIp
LCAxLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSkpOworICAgICAgICB9KTsK
KyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50Ojp0cnVuYyldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWF0aFBy
b3RvRnVuY1RydW5jLCBUcnVuY0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZXBl
YXRDaGFyYWN0ZXIpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGlu
aXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIHN0cmluZ1By
b3RvRnVuY1JlcGVhdENoYXJhY3RlcikpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcnJheVNwZWNp
ZXNDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9G
dW5jU3BlY2llc0NyZWF0ZSkpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0FycmF5U2xvdyldLmlu
aXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAg
ICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVG
dW5jSXNBcnJheVNsb3cpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6Y29uY2F0TWVtY3B5KV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6YXBwZW5kTWVtY3B5KV0uaW5pdExhdGVy
KFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1j
cHkpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCBnbG9iYWxGdW5jSG9zdFByb21pc2VS
ZWplY3Rpb25UcmFja2VyKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
eworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgaW5pdC5zZXQoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OnRoaXNUaW1lVmFsdWUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGRhdGVQcm90b0Z1bmNHZXRUaW1lLCBEYXRlUHJvdG90eXBlR2V0VGltZUludHJp
bnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojppc0NvbnN0cnVjdG9yKV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYykp
OworICAgICAgICB9KTsKKworICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KKyAgICBt
X2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50
OjpyZWdFeHBDcmVhdGUpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4m
IGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZt
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGVzU3Bl
Y1JlZ0V4cENyZWF0ZSwgTm9JbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aXNSZWdF
eHApXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBO
b0ludHJpbnNpYykpOworICAgICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBNYXRjaEZhc3QpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdCwg
UmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljKSk7CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFNl
YXJjaEZhc3QpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQp
IHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3Rv
RnVuY1NlYXJjaEZhc3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwU3BsaXRGYXN0KV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDIsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTcGxpdEZh
c3QpKTsKKyAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6cmVnRXhwVGVzdEZhc3QpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0LCBSZWdFeHBUZXN0
RmFzdEludHJpbnNpYykpOworICAgICAgICB9KTsKKworICAgIC8vIFN0cmluZy5wcm90b3R5cGUg
aGVscGVycy4KKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpzdHJpbmdJbmNsdWRlc0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDEsIFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCkpOworICAg
ICAgICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpzdHJpbmdTcGxpdEZhc3QpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCkpOworICAgICAgICB9KTsKKyAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpzdHJpbmdTdWJzdHJJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3Jl
YXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAyLCBTdHJp
bmcoKSwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKSk7CisgICAgICAgIH0pOworCisgICAg
Ly8gRnVuY3Rpb24gcHJvdG90eXBlIGhlbHBlcnMuCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFrZUJvdW5kRnVuY3Rpb24p
XS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKSwgNSwgU3RyaW5nKCksIG1ha2VCb3VuZEZ1bmN0aW9uKSk7
CisgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Omhhc093bkxlbmd0aFByb3BlcnR5KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDEsIFN0cmluZygpLCBoYXNPd25MZW5ndGhQcm9wZXJ0eSkpOworICAgICAgICB9
KTsKIAotICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7Ci0jZGVmaW5l
IElOSVRfUFJJVkFURV9HTE9CQUwodmFyTmFtZSwgZnVuY05hbWUsIGNvZGUpIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5jTmFtZSAjIyBQcml2
YXRlTmFtZSgpLCB2YXJOYW1lICMjIFByaXZhdGVGdW5jdGlvbiwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX1BS
SVZBVEVfR0xPQkFMX05BTUUoSU5JVF9QUklWQVRFX0dMT0JBTCkKLSN1bmRlZiBJTklUX1BSSVZB
VEVfR0xPQkFMCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5O
YU4sIGpzTmFOKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9wZXJ0eUlzRW51bWVyYWJsZVByaXZhdGVOYW1lKCks
IHByaXZhdGVGdW5jUHJvcGVydHlJc0VudW1lcmFibGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLm93bktleXNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY093bktleXMs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmltcG9ydE1vZHVsZVByaXZh
dGVOYW1lKCksIHByaXZhdGVGdW5jSW1wb3J0TW9kdWxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1ZUpvYiksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY01ha2VUeXBlRXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJy
YXlMZW5ndGgsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJy
YXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFy
cmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudHlwZWRBcnJheVNvcnRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJy
YXlTb3J0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJc1R5cGVkQXJyYXlWaWV3LCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlZEFycmF5U3ViYXJyYXlDcmVhdGVQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTdWJhcnJheUNyZWF0ZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNCb3VuZEZ1bmN0aW9uUHJpdmF0ZU5h
bWUoKSwgcHJpdmF0ZUZ1bmNJc0JvdW5kRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmhhc0luc3RhbmNlQm91bmRGdW5jdGlvblByaXZhdGVOYW1lKCksIHBy
aXZhdGVGdW5jSGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pbnN0YW5jZU9mUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNJbnN0
YW5jZU9mLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5CdWlsdGluTG9n
UHJpdmF0ZU5hbWUoKSwgYnVpbHRpbkxvZywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuQnVpbHRpbkRlc2NyaWJlUHJpdmF0ZU5hbWUoKSwgYnVpbHRpbkRlc2NyaWJlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5SZWdFeHBQcml2YXRlTmFtZSgp
LCByZWdFeHBDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkudHJ1bmNQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1RydW5jLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0
cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnRlcm5hbFBy
b21pc2VQcml2YXRlTmFtZSgpLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZGVmYXVsdFByb21pc2VUaGVuUHJpdmF0ZU5h
bWUoKSwgcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKLQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVwZWF0Q2hhcmFjdGVyUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hh
cmFjdGVyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXJyYXlTcGVj
aWVzQ3JlYXRlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBT
dHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaXNBcnJheVByaXZhdGVOYW1lKCksIGFycmF5Q29uc3RydWN0
b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlTbG93UHJpdmF0ZU5hbWUoKSwgcHJp
dmF0ZUZ1bmNJc0FycmF5U2xvdywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuY29uY2F0TWVtY3B5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGVuZE1lbWNweVByaXZhdGVO
YW1lKCksIHByaXZhdGVGdW5jQXBwZW5kTWVtY3B5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlclByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0
UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlNldFByaXZh
dGVOYW1lKCksIHNldENvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS50aGlzVGltZVZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUaGlzVGltZVZh
bHVlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgRU5BQkxFKElOVEwp
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5kYXRlVGltZUZvcm1hdFByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jRGF0ZVRpbWVGb3Jt
YXQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpkYXRlVGltZUZv
cm1hdCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewor
ICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVU
aW1lRm9ybWF0KSk7CisgICAgICAgIH0pOwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQotCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5p
c0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAx
LCBTdHJpbmcoKSwgZXNTcGVjSXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXJQcml2
YXRlTmFtZSgpLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBQcm90b0dsb2JhbEdldHRlclByaXZhdGVOYW1lKCksIHJl
Z0V4cFByb3RvR2xvYmFsR2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5yZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXJQcml2YXRlTmFtZSgpLCByZWdFeHBQcm90
b0lnbm9yZUNhc2VHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9NdWx0
aWxpbmVHZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4
cFByb3RvU291cmNlR2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvU3RpY2t5
R2V0dGVyUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFByb3RvVW5pY29kZUdldHRlclByaXZh
dGVOYW1lKCksIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZ0V4cEJ1aWx0aW5FeGVjUHJpdmF0ZU5hbWUoKSwgYnVpbHRpblJlZ0V4cEV4ZWMsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cENyZWF0ZVByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGVzU3BlY1JlZ0V4
cENyZWF0ZSwgTm9JbnRyaW5zaWMpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pc1JlZ0V4cFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBOb0ludHJpbnNpYyksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cE1hdGNoRmFzdFByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY01h
dGNoRmFzdCwgUmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwU2VhcmNoRmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NlYXJjaEZh
c3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBTcGxpdEZh
c3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygp
LCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5yZWdFeHBQcm90b3R5cGVTeW1ib2xSZXBsYWNlUHJpdmF0ZU5hbWUoKSwgbV9y
ZWdFeHBQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZVN5
bWJvbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cFRlc3RG
YXN0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmco
KSwgcmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QsIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAgICAgIC8vIFN0cmluZy5wcm90
b3R5cGUgaGVscGVycy4KLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ0luY2x1ZGVzSW50ZXJuYWxQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5j
bHVkZXNJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0
cmluZ1NwbGl0RmFzdFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0cmluZ1N1YnN0ckludGVybmFsUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ1N1
YnN0ckludGVybmFsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotCi0gICAg
ICAgIC8vIEZ1bmN0aW9uIHByb3RvdHlwZSBoZWxwZXJzLgotICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFrZUJvdW5kRnVuY3Rpb25Q
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDUsIFN0cmluZygpLCBt
YWtlQm91bmRGdW5jdGlvbiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
Lmhhc093bkxlbmd0aFByb3BlcnR5UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAxLCBTdHJpbmcoKSwgaGFzT3duTGVuZ3RoUHJvcGVydHkpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCi0KLSAgICAgICAgLy8gTWFwIGFuZCBTZXQgaGVscGVycy4K
LSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm1hcEJ1Y2tldEhlYWRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldE5leHRQcml2
YXRlTmFtZSgpLCBwcml2YXRlRnVuY01hcEJ1Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5j
TWFwQnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBC
dWNrZXRWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jTWFwQnVja2V0VmFsdWUsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldEhlYWRQcml2YXRlTmFt
ZSgpLCBwcml2YXRlRnVuY1NldEJ1Y2tldEhlYWQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnNldEJ1Y2tldE5leHRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1NldEJ1
Y2tldE5leHQsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tl
dEtleVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jU2V0QnVja2V0S2V5LCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUo
V0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkKLSAgICAgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFt
aW5nIEFQSQotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkud2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWxQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCB3ZWJBc3NlbWJs
eUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbFByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIHdlYkFzc2Vt
Ymx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKKyAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6d2Vi
QXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rp
b246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwg
MSwgU3RyaW5nKCksIHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKSk7CisgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBTdHJpbmcoKSwgd2ViQXNzZW1ibHlJbnN0YW50aWF0
ZVN0cmVhbWluZ0ludGVybmFsKSk7CisgICAgICAgIH0pOwogI2VuZGlmCisKKyAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0geworICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5JbmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmlu
ZWQoKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmFzc2VydFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhp
cywgMSwgU3RyaW5nKCksIGFzc2VydENhbGwpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCiAjZW5kaWYKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFs
cywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCi0gICAgbV9zcGVjaWFs
UG9pbnRlcnNbU3BlY2lhbDo6Q2FsbEZ1bmN0aW9uXSA9IG1fY2FsbEZ1bmN0aW9uLmdldCgpOwot
ICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFwcGx5RnVuY3Rpb25dID0gbV9hcHBseUZ1
bmN0aW9uLmdldCgpOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0
cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwotICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNp
YWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKLQotICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93
VHlwZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKLQog
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VEb2xsYXJWTSgpKSkKICAgICAgICAgZXhwb3Nl
RG9sbGFyVk0odm0pOwogCkBAIC0xNzExLDIyICsxNzYwLDE2IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAog
ICAgIHRoaXNPYmplY3QtPm1fcGFyc2VJbnRGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3BhcnNlRmxvYXRGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3Rocm93VHlwZUVycm9yRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9ldmFsRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pdGVy
YXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9w
cm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7Ci0gICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9yZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlamVjdFByb21pc2VGdW5jdGlvbik7Ci0gICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24pOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24p
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9I
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVy
cm9yR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVy
U2V0dGVyKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlci52aXNpdCh2aXNpdG9yKTsK
IApAQCAtMTc5NCw2ICsxODM3LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1f
cHJveHlPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9j
YWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisKKyAgICBmb3IgKGF1
dG8mIHByb3BlcnR5IDogdGhpc09iamVjdC0+bV9saW5rVGltZUNvbnN0YW50cykKKyAgICAgICAg
cHJvcGVydHkudmlzaXQodmlzaXRvcik7CiAgICAgCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9C
VUZGRVIpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zaGFyZWRBcnJheUJ1ZmZl
clByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCA4OTI2YWFhZGZkNjhkMWFmMTI5MjgwNGUyZDAzNDIyZDdmZjQ0ZjY1Li5m
ZjFlMWIyMDExMzQ4Y2UwZTgwOTY1NTE5ZmZiYjEyZDNjZTBkMTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQyLDcgKzQyLDYgQEAK
ICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cEdsb2JhbERhdGEuaCIK
ICNpbmNsdWRlICJSdW50aW1lRmxhZ3MuaCIKLSNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgog
I2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlZNLmgiCkBAIC0xMTksNiArMTE4LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsKIHN0cnVjdCBB
Y3RpdmF0aW9uU3RhY2tOb2RlOwogc3RydWN0IEhhc2hUYWJsZTsKK2VudW0gY2xhc3MgTGlua1Rp
bWVDb25zdGFudCA6IGludDMyX3Q7CiAKICNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAogY2xh
c3MgV3JhcHBlck1hcDsKQEAgLTI5NywyNiArMjk3LDE2IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUludEZ1bmN0aW9uOwogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247
CiAKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbjsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5j
dGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbjsKLSAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9u
OwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Jlc29sdmVQcm9taXNlRnVuY3Rpb247
Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fcmVqZWN0UHJvbWlzZUZ1bmN0aW9uOwot
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Byb21pc2VQcm90b1RoZW5GdW5jdGlvbjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBH
ZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7Ci0gICAgV3JpdGVCYXJy
aWVyPEpTT2JqZWN0PiBtX3JlZ0V4cFByb3RvRXhlYzsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+IG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlOwotICAgIFdyaXRlQmFycmllcjxHZXR0ZXJT
ZXR0ZXI+IG1fcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXI7Ci0gICAgV3JpdGVCYXJyaWVyPEdldHRl
clNldHRlcj4gbV9yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXI7CiAgICAgV3JpdGVCYXJyaWVyPEdl
dHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRl
clNldHRlcjsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2Fk
ZXI+IG1fbW9kdWxlTG9hZGVyOwpAQCAtNDMwLDggKzQyMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEUoREVDTEFSRV9UWVBFRF9BUlJBWV9UWVBFX1NUUlVDVFVSRSkKICN1bmRl
ZiBERUNMQVJFX1RZUEVEX0FSUkFZX1RZUEVfU1RSVUNUVVJFCiAKLSAgICBKU0NlbGwqIG1fc3Bl
Y2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNl
ZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KLSAgICBKU0NlbGwqIG1fbGlua1RpbWVDb25zdGFudHNb
TGlua1RpbWVDb25zdGFudENvdW50XTsKKyAgICBWZWN0b3I8TGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0NlbGw+PiBtX2xpbmtUaW1lQ29uc3RhbnRzOwogCiAgICAgU3RyaW5nIG1fbmFt
ZTsKIApAQCAtNjE2LDI0ICs2MDUsMjIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogcGFyc2VGbG9hdEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZUZsb2F0RnVuY3Rpb24uZ2V0KHRoaXMpOyB9
CiAKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxG
dW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIGFwcGx5
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBK
U0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aHJv
d1R5cGVFcnJvckZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJy
b3JGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQo
dGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBK
U0Z1bmN0aW9uKiBpdGVyYXRvclByb3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2l0
ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5nZXQodGhpcyk7IH0KLSAgICBKU0Z1bmN0aW9uKiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2Fw
YWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFi
aWxpdHlGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9Ci0gICAgSlNGdW5jdGlvbiogcmVzb2x2ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb2x2ZVByb21pc2VGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIHJl
amVjdFByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVqZWN0UHJvbWlzZUZ1bmN0
aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBK
U0Z1bmN0aW9uKiByZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlv
biogcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgSlNGdW5jdGlvbiogcHJvbWlz
ZVByb3RvVGhlbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9W
YWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0
aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KCk7IH0K
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24u
Z2V0KCk7IH0KLSAgICBKU09iamVjdCogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cFByb3RvRXhlYy5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHJlZ0V4
cFByb3RvRXhlY0Z1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU3lt
Ym9sUmVwbGFjZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b1N5bWJvbFJl
cGxhY2UuZ2V0KCk7IH0KLSAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0dsb2JhbEdldHRlci5nZXQoKTsgfQotICAg
IEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIuZ2V0KCk7IH0KKyAgICBHZXR0ZXJTZXR0ZXIqIHJl
Z0V4cFByb3RvR2xvYmFsR2V0dGVyKCkgY29uc3Q7CisgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQ
cm90b1VuaWNvZGVHZXR0ZXIoKSBjb25zdDsKICAgICBHZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVy
cm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0
dGVyLmdldCgpOwpAQCAtOTExLDE2ICs4OTgsMTEgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBsYXp5VHlw
ZWRBcnJheVN0cnVjdHVyZSh0eXBlKS5jb25zdHJ1Y3Rvcih0aGlzKTsKICAgICB9CiAKLSAgICBK
U0NlbGwqIGFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKQorICAgIEpT
Q2VsbCogbGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHZhbHVlKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKHBvaW50ZXIgPCBTcGVjaWFsOjpUYWJsZVNpemUpOwotICAgICAg
ICByZXR1cm4gbV9zcGVjaWFsUG9pbnRlcnNbcG9pbnRlcl07Ci0gICAgfQotICAgIEpTQ2VsbCog
anNDZWxsRm9yTGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50IHR5cGUpCi0gICAgewot
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsKLSAg
ICAgICAgQVNTRVJUKGluZGV4IDwgTGlua1RpbWVDb25zdGFudENvdW50KTsKLSAgICAgICAgcmV0
dXJuIG1fbGlua1RpbWVDb25zdGFudHNbaW5kZXhdOworICAgICAgICBKU0NlbGwqIHJlc3VsdCA9
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKV0uZ2V0SW5p
dGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaAppbmRleCBlMDM2OWJlY2IwNmYzYjk4MmNm
ZDkwYTVkYjIwMzllNjMzYmQ0MTI1Li4zZjI2ZDVjYWZlMmJmNzU2MTRiZDIwNzY3Yjg0NDIwNDAy
ZDA1ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdElubGluZXMuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiTGlu
a1RpbWVDb25zdGFudC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTEwMiw2ICsxMDMsMTUgQEAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEpT
R2xvYmFsT2JqZWN0OjphcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG8KICAg
ICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmFycmF5Q29uc3RydWN0b3IoKSwgbmV3VGFyZ2V0LCBhcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSk7
CiB9CiAKK2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6dGhyb3dUeXBlRXJyb3JG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50Ojp0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSk7IH0K
K2lubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6bmV3UHJvbWlzZUNhcGFiaWxpdHlG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0aW9uKj4obGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpuZXdQcm9taXNlQ2FwYWJpbGl0eSkpOyB9Citp
bmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmplY3Q6OnJlc29sdmVQcm9taXNlRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3Rh
bnQoTGlua1RpbWVDb25zdGFudDo6cmVzb2x2ZVByb21pc2UpKTsgfQoraW5saW5lIEpTRnVuY3Rp
b24qIEpTR2xvYmFsT2JqZWN0OjpyZWplY3RQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25z
dGFudDo6cmVqZWN0UHJvbWlzZSkpOyB9CitpbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxPYmpl
Y3Q6OnByb21pc2VQcm90b1RoZW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxKU0Z1bmN0aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0
UHJvbWlzZVRoZW4pKTsgfQoraW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0OjpyZWdF
eHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Z1bmN0
aW9uKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhl
YykpOyB9CitpbmxpbmUgR2V0dGVyU2V0dGVyKiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9H
bG9iYWxHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8R2V0dGVyU2V0dGVyKj4o
bGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQcm90b0dsb2JhbEdldHRl
cikpOyB9CitpbmxpbmUgR2V0dGVyU2V0dGVyKiBKU0dsb2JhbE9iamVjdDo6cmVnRXhwUHJvdG9V
bmljb2RlR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEdldHRlclNldHRlcio+
KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9Vbmljb2RlR2V0
dGVyKSk7IH0KKwogQUxXQVlTX0lOTElORSBWTSYgZ2V0Vk0oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2ZWJj
OTM3ZjJmNTg1MjA5YTQ2NTE1ODNmYTBmNzRmNmNlMzk5YTYuLjM5ZmYyOTY1NjI2YzE5N2YzNGM1
NzdjMTU1NjUyNmI3OTE4YzA5MjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMS0wMyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEludHJv
ZHVjZSBMaW5rVGltZUNvbnN0YW50IG1lY2hhbmlzbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVk
LWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0OgorCiAy
MDE5LTExLTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJFR1JFU1NJT046IFsgTWFjIF0gaW5zcGVjdG9yL2RvbS9nZXRBY2Nlc3NpYmlsaXR5UHJv
cGVydGllc0Zvck5vZGUuaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0ZWQtZnJhbWVz
LXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3RhaWwtZGVsZXRlZC1mcmFtZXMvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLWV4cGVj
dGVkLnR4dAppbmRleCBlODJhNzk5NzZkYzZmM2ZmY2Y4YTVlZTgzN2M4N2FlMjgxMWEyYTg5Li4y
MTI1ZmI1Mjk3MWNlY2VhYjdjMDgwMzRmMmQ1MzZjN2EyYTRiNGU4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy90YWlsLWRlbGV0
ZWQtZnJhbWVzLXRoaXMtdmFsdWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhp
cy12YWx1ZS1leHBlY3RlZC50eHQKQEAgLTE0LDYgKzE0LDYgQEAgQ0FMTCBTVEFDSzoKIDM6IFtG
XSBzdGFydEFCQwogICB0aGlzOiB1bmRlZmluZWQKIDQ6IFtQXSBHbG9iYWwgQ29kZQotICB0aGlz
OiB0ZXN0IC0gCisgIHRoaXM6IGMgLSAKIFJFU1VNRUQKIAo=
</data>
<flag name="review"
          id="398459"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>