<?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>148172</bug_id>
          
          <creation_ts>2015-08-19 00:41:56 -0700</creation_ts>
          <short_desc>[ES6] Implement Module execution and Loader&apos;s ready / link phase</short_desc>
          <delta_ts>2015-08-27 23:22:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147340</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ggaren</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1118874</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-19 00:41:56 -0700</bug_when>
    <thetext>Implement Module execution and Loader&apos;s ready / link phase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120043</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-21 19:10:25 -0700</bug_when>
    <thetext>Now, I&apos;m now implementing the rapid prototype.
And later, I&apos;ll refactor/redesign/optimize it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120257</commentid>
    <comment_count>2</comment_count>
      <attachid>259754</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-24 02:16:52 -0700</bug_when>
    <thetext>Created attachment 259754
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120307</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-24 11:04:26 -0700</bug_when>
    <thetext>WIP, still a lot of weird things.

1. C++ recursion exists
2. Looking up the hash tables repeatedly. It may be combined.
3. Not implemented the execution part (environment, instance, namespace object are partially done)

I&apos;ll complete the implementation first, and later, I&apos;ll refactor them and submit the r? patch here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120470</commentid>
    <comment_count>4</comment_count>
      <attachid>259794</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-24 17:13:33 -0700</bug_when>
    <thetext>Created attachment 259794
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120642</commentid>
    <comment_count>5</comment_count>
      <attachid>259861</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-25 11:01:40 -0700</bug_when>
    <thetext>Created attachment 259861
Patch

WIP: part2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120675</commentid>
    <comment_count>6</comment_count>
      <attachid>259868</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-25 12:04:40 -0700</bug_when>
    <thetext>Created attachment 259868
Patch

WIP: part3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120846</commentid>
    <comment_count>7</comment_count>
      <attachid>259925</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-25 22:12:39 -0700</bug_when>
    <thetext>Created attachment 259925
Patch

WIP: part4, namespace object is correctly handled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121078</commentid>
    <comment_count>8</comment_count>
      <attachid>259984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-26 15:28:02 -0700</bug_when>
    <thetext>Created attachment 259984
Patch

WIP: part5, import / export bindings are correctly supported. making dynamic handling correct under the module enviornment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121130</commentid>
    <comment_count>9</comment_count>
      <attachid>260009</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-26 17:36:33 -0700</bug_when>
    <thetext>Created attachment 260009
Patch

WIP: part6, functionality is done. Let&apos;s refactor and break this into several patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121184</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-26 20:50:26 -0700</bug_when>
    <thetext>Here, I&apos;ll just submit the patch to add the template for the link/ready phase.
I&apos;ll upload the large (the big picture of the module implementation) patch to the original meta bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121187</commentid>
    <comment_count>11</comment_count>
      <attachid>260028</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-26 21:03:08 -0700</bug_when>
    <thetext>Created attachment 260028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121188</commentid>
    <comment_count>12</comment_count>
      <attachid>260028</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-26 21:07:15 -0700</bug_when>
    <thetext>Comment on attachment 260028
Patch

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

Add comments for the ease of the review.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:352
&gt; +            let pair = entry.dependencies[i];

This was the bug. Change var to let to construct the lexical variable for this `pair`.

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:-372
&gt; -                    // https://github.com/whatwg/loader/pull/66

This issue is fixed in the draft. (PR is merged.)

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:94
&gt; +{

The implementation will be implemented in the subsequent patch.

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:99
&gt; +    return jsUndefined();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121562</commentid>
    <comment_count>13</comment_count>
      <attachid>260028</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-27 21:14:44 -0700</bug_when>
    <thetext>Comment on attachment 260028
Patch

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

r=me

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:352
&gt;&gt; +            let pair = entry.dependencies[i];
&gt; 
&gt; This was the bug. Change var to let to construct the lexical variable for this `pair`.

There is a fixme in the parser that may need to be fixed for this to work.
We do some validation when parsing builtins and we probably don&apos;t validate
properly for &quot;let&quot; variables. Can you take a look at this maybe and make
sure it&apos;s okay?

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:451
&gt; +    entry.state = this.Ready;

Even though we know we will succeed, why not just setStateToMax to be consistent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121608</commentid>
    <comment_count>14</comment_count>
      <attachid>260028</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-27 23:08:23 -0700</bug_when>
    <thetext>Comment on attachment 260028
Patch

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

Thanks, helpful comments.

&gt;&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:352
&gt;&gt;&gt; +            let pair = entry.dependencies[i];
&gt;&gt; 
&gt;&gt; This was the bug. Change var to let to construct the lexical variable for this `pair`.
&gt; 
&gt; There is a fixme in the parser that may need to be fixed for this to work.
&gt; We do some validation when parsing builtins and we probably don&apos;t validate
&gt; properly for &quot;let&quot; variables. Can you take a look at this maybe and make
&gt; sure it&apos;s okay?

I&apos;ve ensured this code itself is ok.
In addition to that, I&apos;ve tested the top-level let variable that is captured by the closure function, and it does not raise the assertion.
This is because `capturedVariables` only collects the captured declared variables. lexical variables are ignored. `if (!m_declaredVariables.contains(*ptr))` purges the lexical variables.
Is it intentional?

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:451
&gt;&gt; +    entry.state = this.Ready;
&gt; 
&gt; Even though we know we will succeed, why not just setStateToMax to be consistent?

This is because we know `Ready` is the highest state value. So when performing `setStateToMax` with the `Ready` state, the result is always `Ready`.
But, for the consistency and the future extension that may have the higher value than `Ready`, I&apos;ll change here to `setStateToMax`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121610</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-27 23:22:23 -0700</bug_when>
    <thetext>Committed r189088: &lt;http://trac.webkit.org/changeset/189088&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259754</attachid>
            <date>2015-08-24 02:16:52 -0700</date>
            <delta_ts>2015-08-24 17:13:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150824021640.patch</filename>
            <type>text/plain</type>
            <size>100047</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Mzk4MTA2MmFjNDZhY2JlZGZmNTExNWY2MDM0YWE4OWM1MTA0N2YxLi5hYWYxY2RlZTk2MDFkNDE3
ZjcyZGE2ZGY4OTVkOTE5M2ZkOTdiNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNS0wOC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTW9kdWxlIGV4ZWN1dGlvbiBhbmQgTG9h
ZGVyJ3MgcmVhZHkgLyBsaW5rIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDgxNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXSVAKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0
LmpzOgorICAgICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2ZURlcGVuZGVu
Y2llc1Byb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAgICAgICAocmVx
dWVzdExpbmspOgorICAgICAgICAocmVxdWVzdFJlYWR5KToKKyAgICAgICAgKGxpbmspOgorICAg
ICAgICAobW9kdWxlRXZhbHVhdGlvbik6CisgICAgICAgIChsb2FkTW9kdWxlKToKKyAgICAgICAg
KiBqc2MuY3BwOgorICAgICAgICAoZHVtcEV4Y2VwdGlvbik6CisgICAgICAgIChydW5XaXRoU2Ny
aXB0cyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlTW9kdWxlKToK
KyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9k
dWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTSW50
ZXJuYWxQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcm5hbFByb21pc2U6OnRoZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVu
dmlyb25tZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUVudmlyb25tZW50OjpvZmZzZXRPZk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlRW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVF
bnZpcm9ubWVudDo6bW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVs
ZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmludGVybmFsVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6YWxsb2NhdGVNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6
OmlkZW50aWZpZXJUb0pTVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpn
ZXRFeHBvcnRlZE5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVs
ZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURl
Y2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxlS2V5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OmV4cG9ydEVudHJpZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVzb2x2
ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVz
b2x2ZVF1ZXJ5Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpSZXNvbHZlUXVlcnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OlJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxv
YWRlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6bG9hZE1v
ZHVsZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2ZSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6ZmV0Y2gpOgorICAgICAgICAoSlNDOjpNb2R1
bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9i
amVjdDo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJz
ZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVs
ZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbklu
c3RhbnRpYXRpb24pOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZSk6
CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVxdWVzdEluc3RhbnRpYXRlQWxs
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisKIDIwMTUtMDgtMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gcHJvdG90eXBpbmcgbW9kdWxlIGxv
YWRlciBpbiBKU0Mgc2hlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDA1MzFm
ZDZhNTc0N2RmN2E5ZjE0ZDYyM2U2ZTRkODA0Yjk3YjZjZi4uZjBiMjYyZmIyNTg5ZDAyYTBkNzlh
NzhjZjQyZTFmNGZjMjk3MzEzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2
OTQsNiArMTY5NCw4IEBACiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0
cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEy
NEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5
MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5jcHAgKi87IH07CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhD
MDBEOTBCMzQgLyogVk0uY3BwICovOyB9OworCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyog
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKKwkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
M0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNC
M0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1
dC5oICovOyB9OwpAQCAtMTcwNywxNSArMTcwOSwxNyBAQAogCQlFMzNGNTA4NTFCODQzN0EwMDA0
MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwODMxQjg0MzdBMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oICovOyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYg
LyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzVF
MDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVE
MUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICov
OyB9OwotCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM1NUYzNTIxQjdEQzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1RjM1MDFCN0RDODUz
MDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCAqLzsgfTsKIAkJRTM1NUYzNTMxQjdE
Qzg1MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTExQjdEQzg1MzAwQzUwREM1IC8qIE1v
ZHVsZUxvYWRlck9iamVjdC5oICovOyB9OworCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUUwMzVEMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwICovOyB9OworCQlFMzVFMDM2MDFCN0FCNDNF
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RTFCN0FCNDNFMDA3M0FE
MkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5j
cHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8q
IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9k
dWxlLmNwcCAqLzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUz
OURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9
OworCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgfTsKIAkJRTNFRjg4NzQx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0Yy
NkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VGODg3NTFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAg
Ki87IH07CkBAIC0zNTQxLDYgKzM1NDUsOCBAQAogCQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUg
LyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbml0aWFsaXplVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNw
cDsgfTsKIAkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2Rl
LmxhbmcuY3BwOyB9OworCQlFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8q
IFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzU1MiwxOSArMzU1OCwyMSBAQAogCQlFMzNGNTA3RjFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5h
bFByb21pc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODIxQjg0MzdB
MDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTMzRjUwODYxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IubHV0Lmg7IHBhdGggPSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNGNTA4NjFCODQ0OUVG
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2
IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1
Y3RBYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFi
aWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NUYzNTAxQjdEQzg1MzAw
QzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUxvYWRlck9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUUwMzVFMUI3QUI0M0UwMDczQUQyQSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVy
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1NUYzNTExQjdEQzg1
MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFu
YWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAw
MEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2MUI4
MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVu
dmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRG
MjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURD
MTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc0OSw2ICs0NzU3LDEwIEBACiAJCQkJQTcwMDg3
NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8sCiAJCQkJQTc0REVGOEYxODJEOTkxNDAw
NTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwICovLAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUy
MkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCisJCQkJRTMxOENCQkUxQjhBRUY1MTAw
QTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4Q0JCRjFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLywKIAkJCQlFMzlE
QTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUzOURB
NEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUE3MjcwMDc4
MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLywKQEAgLTYxMDAsNiArNjEx
Miw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dl
YWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjMyLDYg
KzYyNDUsNyBAQAogCQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQw
MjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NS
RW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzQzLDYg
KzczNTcsNyBAQAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRl
RmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMz
MDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2
MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1v
bklkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0
MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQyMSw2ICs3
NDM2LDcgQEAKIAkJCQkwRkQxMjAzMzFBOEM4NUJEMDAwRjUyODAgLyogRlRMSlNDYWxsVmFyYXJn
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5NjE3RkZDNEU2MDA3M0MyQkMgLyogREZH
Rmx1c2hlZEF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzM0Y1MDg0MUI4NDM3QTAwMDQxMzg1
NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjlEMzY5NDFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y3MTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdGbHVzaEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QjM5Rjc2RDFCNjJERTJFMDAz
NjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgwNjcsNiAr
ODA4Myw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0Mu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxF
UyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBA
IC04MDc0LDYgKzgwOTEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBM
TFZNRm9ySlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVf
RVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVh
c2U7CiAJCX07CkBAIC04MDgxLDYgKzgwOTksNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4Njkw
MDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJ
bmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKQEAgLTgwODgsNiArODEwNyw3IEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZD
RUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxF
UzsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgwOTUsNiArODExNSw3
IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAt
ODEwMiw2ICs4MTIzLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9v
bEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVs
ZWFzZTsKIAkJfTsKQEAgLTgxMDksNiArODEzMSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBD
MzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9
OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKQEAgLTgxMTYsNiArODEzOSw3IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVf
RVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTQ0
LDYgKzgxNjgsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2Ny
aXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VT
Nl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsK
IAkJfTsKQEAgLTgxNTEsNiArODE3Niw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFF
OUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJ
bmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC04MTU5LDYgKzgxODUsNyBAQAogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlw
dENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUJVSUxEX1ZBUklB
TlRTID0gbm9ybWFsOworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxF
UzsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgxNjYsNiArODE5Myw3
IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VT
Nl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxNzMsNiArODIw
MSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxF
X0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODE4MCw2
ICs4MjA5LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29u
ZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBF
TkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBA
IC04MzExLDYgKzgzNDEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBK
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5B
QkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxF
ID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9OwpAQCAtODMyMCw2ICs4MzUxLDcgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJM
RV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29w
eS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHki
OwogCQkJfTsKQEAgLTgzMjksNiArODM2MSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAw
ODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5G
T1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzM4LDYgKzgz
NzEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQg
U291cmNlcyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CiAJCQl9OwpAQCAtODM0Nyw2ICs4MzgxLDcgQEAKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0
MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxF
UzsKIAkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07
CiAJCQluYW1lID0gRGVidWc7CkBAIC04MzU1LDYgKzgzOTAsNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQz
MEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVT
OwogCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsK
IAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtODM2Myw2ICs4Mzk5LDcgQEAKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0
MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxF
UzsKIAkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07
CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKQEAgLTgzODYsNiArODQyMyw3IEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5
MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01P
RFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKQEAgLTgzOTMsNiArODQz
MSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3Jl
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVM
RVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKQEAgLTg0MTUsNiAr
ODQ1NCw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5B
QkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5q
cwppbmRleCAxYjU1ZDdmNmJkZjcwMjY4OWUxYzVhZDcyMmVlYjcwYTNlYjVhYjMxLi42N2RjZGIy
MmE0ZDhkNTZhZDMwYjU5YzU3NTM5ZmZjMTFiYjIwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKQEAgLTE5Miw3ICsx
OTIsNyBAQCBmdW5jdGlvbiBjb21taXRJbnN0YW50aWF0ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFu
Y2UsIHNvdXJjZSkKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxs
LzY3CiAKICAgICB2YXIgZGVwZW5kZW5jaWVzID0gW107Ci0gICAgdmFyIGRlcGVuZGVuY2llc01h
cCA9IG5ldyBATWFwKCk7CisgICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5k
ZXBlbmRlbmNpZXNNYXA7CiAgICAgbW9kdWxlUmVjb3JkLnJlZ2lzdHJ5RW50cnkgPSBlbnRyeTsK
ICAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhtb2R1bGVS
ZWNvcmQpOwogICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxl
bmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC0zNDksNyArMzQ5LDcgQEAgZnVuY3Rpb24gcmVx
dWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KQogICAgIHZhciByZXNvbHZlRGVwZW5kZW5jaWVz
UHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRpYXRlKGtleSkudGhlbihmdW5jdGlvbiAoZW50
cnkpIHsKICAgICAgICAgdmFyIGRlcExvYWRzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAw
LCBsZW5ndGggPSBlbnRyeS5kZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIHZhciBwYWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAg
ICAgbGV0IHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CiAKICAgICAgICAgICAgIC8vIEhv
b2sgcG9pbnQuCiAgICAgICAgICAgICAvLyAxLiBMb2FkZXIucmVzb2x2ZS4KQEAgLTM2MSwxNiAr
MzYxLDI1IEBAIGZ1bmN0aW9uIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKIAogICAg
ICAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2Yg
dGhpcyBlbnRyeSBpcyBiZWluZyByZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgogICAgICAg
ICAgICAgICAgIC8vIFN0b3AgdHJhY2luZyB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAg
ICAgICAgICAgICAgIC8vIEJ1dCB0byByZXRyaWV2ZSB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBy
ZWNvcmQgY29ycmVjdGx5LAorICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd2FpdCBmb3Ig
dGhlIGluc3RhbnRpYXRpb24gZm9yIHRoZSBkZXBlbmRlbnQgbW9kdWxlLgorICAgICAgICAgICAg
ICAgIC8vIEZvciBleGFtcGxlLCByZWFjaGluZyBoZXJlLCB0aGUgbW9kdWxlIGlzIHN0YXJ0aW5n
IHJlc29sdmluZyB0aGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIC8vIEJ1dCB0aGUg
bW9kdWxlIG1heSBvciBtYXkgbm90IHJlYWNoIHRoZSBpbnN0YW50aWF0aW9uIHBoYXNlIGluIHRo
ZSBsb2FkZXIncyBwaXBlbGluZS4KKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3YWl0IGZvciB0
aGUgUmVzb2x2ZURlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUg
Y2lyY3VsYXIgcHJvbWlzZSBjaGFpbiBhbmQKKyAgICAgICAgICAgICAgICAvLyByZWplY3RlZCBi
eSB0aGUgUHJvbWlzZXMgcnVudGltZS4gU2luY2Ugb25seSB3ZSBuZWVkIGlzIHRoZSBpbnN0YW50
aWF0ZWQgbW9kdWxlLCBpbnN0ZWFkIG9mIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAvLyB0aGUg
UmVzb2x2ZURlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUsIHdlIGp1c3Qgd2FpdCBJbnN0YW50
aWF0ZSBmb3IgdGhpcy4KICAgICAgICAgICAgICAgICBpZiAoZGVwRW50cnkucmVzb2x2ZURlcGVu
ZGVuY2llcykgewotICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZGVwRW50cnkubW9k
dWxlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVwRW50cnk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBkZXBFbnRyeS5pbnN0YW50aWF0ZS50aGVuKGZ1bmN0aW9uIChlbnRyeSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5y
ZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhkZXBLZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7
CisgICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgcmVzdWx0IHByb21pc2Ugb2YgdGhlIHJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGgKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhlIHJlZ2lzdHJ5IGVudHJ5LgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczov
L2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY2Ci0gICAgICAgICAgICAgICAgICAgIHBh
aXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRy
eTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwpAQCAtMzk2LDYgKzQwNSwx
MDEgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSkKICAgICByZXR1cm4gdGhp
cy5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkpOwogfQogCitmdW5jdGlvbiByZXF1ZXN0
TGluayhrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVx
dWVzdC1saW5rCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVu
c3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsK
KyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFBy
b21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIGVudHJ5
Lm1vZHVsZSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAg
ICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGVB
bGwoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICBsb2FkZXIubGluayhlbnRy
eSk7CisgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVxdWVz
dFJlYWR5KGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNy
ZXF1ZXN0LXJlYWR5CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbG9hZGVyID0gdGhp
czsKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0TGluayhrZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5
KSB7CisgICAgICAgIGxvYWRlci5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1vZHVsZSk7CisgICAg
fSk7Cit9CisKKy8vIExpbmtpbmcgc2VtYW50aWNzLgorCitmdW5jdGlvbiBsaW5rKGVudHJ5KQor
eworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2xpbmsKKworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIC8vIEZJWE1FOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMg
bm90IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKyAgICAvLyBTbyBMaW5rJ3Mgc3RlcCAzIGlz
IHNraXBwZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODE3MQorCisgICAgaWYgKGVudHJ5LnN0YXRlID09PSB0aGlzLlJlYWR5KQorICAgICAgICBy
ZXR1cm47CisgICAgZW50cnkuc3RhdGUgPSB0aGlzLlJlYWR5OworCisgICAgLy8gRklYTUU6IFNp
bmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgImRlcGVuZGVuY2llcyIgZmllbGQsCisgICAgLy8gd2Ug
Y2FuIGNhbGwgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIHdpdGggdGhlIGNvcnJlY3Qg
b3JkZXIKKyAgICAvLyB3aXRob3V0IGNvbnN0cnVjdGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBi
eSBjYWxsaW5nIGRlcGVuZGVuY3lHcmFwaC4KKyAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnku
ZGVwZW5kZW5jaWVzOworICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMu
bGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNp
ZXNbaV07CisgICAgICAgIHRoaXMubGluayhwYWlyLnZhbHVlLnJlZ2lzdHJ5RW50cnkpOworICAg
IH0KKworICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVs
ZSk7Cit9CisKKy8vIE1vZHVsZSBzZW1hbnRpY3MuCisKK2Z1bmN0aW9uIG1vZHVsZUV2YWx1YXRp
b24obW9kdWxlUmVjb3JkKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCisKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBpZiAobW9kdWxlUmVjb3JkLmV2YWx1YXRlZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1vZHVsZVJlY29yZC5ldmFsdWF0ZWQgPSB0cnVlOworCisgICAgdmFyIGVudHJ5ID0gbW9k
dWxlUmVjb3JkLnJlZ2lzdHJ5RW50cnk7CisKKyAgICAvLyBUaGUgY29udGVudHMgb2YgdGhlIFtb
UmVxdWVzdGVkTW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4KKyAg
ICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5jaWVzOworICAgIGZvciAodmFyIGkg
PSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNbaV07CisgICAgICAgIHZhciByZXF1aXJlZE1v
ZHVsZVJlY29yZCA9IHBhaXIudmFsdWU7CisgICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihy
ZXF1aXJlZE1vZHVsZVJlY29yZCk7CisgICAgfQorICAgIHRoaXMuZXZhbHVhdGUobW9kdWxlUmVj
b3JkKTsKK30KKworZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCByZWZlcnJlcikKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICAvLyBMb2Fk
ZXIucmVzb2x2ZSBob29rIHBvaW50LgorICAgIHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFt
ZSwgcmVmZXJyZXIpLnRoZW4oZnVuY3Rpb24gKGtleSkgeworICAgICAgICByZXR1cm4gbG9hZGVy
LnJlcXVlc3RSZWFkeShrZXkpOworICAgIH0pOworfQorCiBmdW5jdGlvbiBwcm92aWRlKGtleSwg
c3RhZ2UsIHZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggOTE4MzE2ZDM5MDRkNTA0YzljMmMwODY3NGQ1ODQ0MDkyNWY5NzZkMS4uMTA3ZjIwMGQ5MGMw
OWJhMjNlMjIwMGMwNzgwNTdkNDgyOWQ5YTM1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTEz
NDAsMTUgKzEzNDAsMTkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGpz
Y0V4aXQocmVzKTsKIH0KIAorc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBleGNlcHRpb24pCit7CisgICAgcHJpbnRmKCJFeGNlcHRp
b246ICVzXG4iLCBleGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkp
LT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CisgICAg
SWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7CisgICAgSlNWYWx1ZSBzdGFja1ZhbHVlID0gZXhjZXB0
aW9uLmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc3RhY2tJRCk7CisgICAgaWYgKCFz
dGFja1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHByaW50ZigiJXNcbiIsIHN0
YWNrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Cit9CisKIHN0YXRpYyB2b2lk
IGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbikKIHsKLSAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlv
bikgewotICAgICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRp
b24tPnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIElkZW50
aWZpZXIgc3RhY2tJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksICJzdGFjayIpOwotICAgICAgICBKU1ZhbHVlIHN0YWNrVmFsdWUgPSBldmFsdWF0
aW9uRXhjZXB0aW9uLT52YWx1ZSgpLmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc3Rh
Y2tJRCk7Ci0gICAgICAgIGlmICghc3RhY2tWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAg
ICAgICAgICAgcHJpbnRmKCIlc1xuIiwgc3RhY2tWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCku
ZGF0YSgpKTsKLSAgICB9CisgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCisgICAgICAgIGR1
bXBFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBldmFsdWF0aW9uRXhjZXB0aW9uLT52YWx1ZSgpKTsK
IH0KIAogc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29sIGR1bXAsIGJvb2wgbW9kdWxl
KQpAQCAtMTM2MSwxOCArMTM2NSwzNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgogICAgICAg
ICBKU0M6Ok9wdGlvbnM6OmR1bXBHZW5lcmF0ZWRCeXRlY29kZXMoKSA9IHRydWU7CiAKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKwor
I2lmIEVOQUJMRShFUzZfTU9EVUxFUykKKyAgICBKU0Z1bmN0aW9uKiBlcnJvckhhbmRsZXIgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCksIFsmXShFeGVj
U3RhdGUqIGV4ZWMpIHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICBkdW1wRXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0pOworI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0FNUExJTkdfRkxBR1MpCiAgICAgU2FtcGxpbmdGbGFnczo6c3RhcnQoKTsKICNlbmRp
ZgogCi0gICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNjcmlwdHMuc2l6ZSgpOyBpKyspIHsKKyNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCisgICAgICAg
IEpTSW50ZXJuYWxQcm9taXNlKiBwcm9taXNlID0gbnVsbHB0cjsKKyNlbmRpZgogICAgICAgICBp
ZiAoc2NyaXB0c1tpXS5pc0ZpbGUpIHsKICAgICAgICAgICAgIGZpbGVOYW1lID0gc2NyaXB0c1tp
XS5hcmd1bWVudDsKLSAgICAgICAgICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmls
ZShmaWxlTmFtZSwgc2NyaXB0QnVmZmVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIGZhaWwgZWFybHkgc28gd2UgY2FuIGNhdGNoIG1pc3NpbmcgZmlsZXMKLSAgICAgICAgICAg
IHNjcmlwdCA9IHNjcmlwdEJ1ZmZlci5kYXRhKCk7CisgICAgICAgICAgICBpZiAobW9kdWxlKSB7
CisjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgICAgICAgICAgICAgIHByb21pc2UgPSBldmFs
dWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghZmlsbEJ1ZmZlcldpdGhD
b250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0QnVmZmVyKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBmYWlsIGVhcmx5IHNvIHdlIGNhbiBjYXRjaCBtaXNzaW5nIGZp
bGVzCisgICAgICAgICAgICAgICAgc2NyaXB0ID0gc2NyaXB0QnVmZmVyLmRhdGEoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNjcmlwdCA9IHNjcmlwdHNb
aV0uYXJndW1lbnQ7CiAgICAgICAgICAgICBmaWxlTmFtZSA9IEFTQ0lJTGl0ZXJhbCgiW0NvbW1h
bmQgTGluZV0iKTsKQEAgLTEzODIsMTAgKzE0MDUsMTAgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNj
cmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBz
Y3IKIAogICAgICAgICBpZiAobW9kdWxlKSB7CiAjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQotICAg
ICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwotICAgICAg
ICAgICAgZXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJj
ZShzY3JpcHQsIGZpbGVOYW1lKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7Ci0gICAgICAgICAgICBk
dW1wRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAg
ICAgICBpZiAoIXByb21pc2UpCisgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGV2YWx1YXRlTW9k
dWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFt
ZSkpOwogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0
aW9uKCk7CisgICAgICAgICAgICBwcm9taXNlLT50aGVuKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBudWxscHRyLCBlcnJvckhhbmRsZXIpOwogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT52
bSgpLmRyYWluTWljcm90YXNrcygpOwogI2Vsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCAxNjNiMTE2MTA0MWNjZGIzNWFkNTI5NzZjYWZlNmJkMTFk
ZmM4Yjc3Li40ZmRiZDkzMTQzMDhmYjk5NTE0NTM2ODMzODNlMWJhNGUyYzgyZjc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTI4Myw2ICsyODMsNyBAQAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oU3RyaW5nKSBc
CiAgICAgbWFjcm8oTWFwKSBcCisgICAgbWFjcm8oU2V0KSBcCiAgICAgbWFjcm8oUHJvbWlzZSkg
XAogICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3JvKGFicykgXApAQCAtMzA3
LDYgKzMwOCw3IEBACiAgICAgbWFjcm8oSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCiAgICAg
bWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oc2V0KSBcCisgICAgbWFjcm8oYWRkKSBcCiAKIAogbmFt
ZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCmluZGV4IDJlZGU0MWNjMWZhNzY1MThkNWUzMjFkYmY3MjBiNDNjMTc2NGMyNjQuLjI3MTE3
OGMyYjVmNjQzN2U2OGRlNTkyZDYxNGI4MTJmYTUxZWYyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNs
dWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCkBAIC0x
MTEsNDMgKzExMyw2MyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgZXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQor
c3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xk
ZXImLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlcikKK3sKKyAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5tb2R1bGVMb2FkZXIoKS0+bG9hZE1vZHVsZShleGVjLCBtb2R1bGVOYW1lLCByZWZlcnJl
cik7Cit9CisKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogZXZhbHVhdGVNb2R1bGUoY29uc3Qg
SlNMb2NrSG9sZGVyJiBsb2NrLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgSlNWYWx1ZSBt
b2R1bGVOYW1lVmFsdWU7CisgICAgaWYgKG1vZHVsZU5hbWUuaXNTeW1ib2woKSkKKyAgICAgICAg
bW9kdWxlTmFtZVZhbHVlID0gU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RhdGljX2Nhc3Q8
U3ltYm9sSW1wbCY+KCptb2R1bGVOYW1lLmltcGwoKSkpOworICAgIGVsc2UKKyAgICAgICAgbW9k
dWxlTmFtZVZhbHVlID0ganNTdHJpbmcoJmV4ZWMtPnZtKCksIG1vZHVsZU5hbWUuaW1wbCgpKTsK
KworICAgIHJldHVybiBldmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBnbG9iYWxPYmplY3QsIG1v
ZHVsZU5hbWVWYWx1ZSwganNVbmRlZmluZWQoKSk7Cit9CisKK0pTSW50ZXJuYWxQcm9taXNlKiBl
dmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVj
LT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVz
eSgpKTsKIAotICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwotCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAog
ICAgIC8vIEdlbmVyYXRlIHRoZSB1bmlxdWUga2V5IGZvciB0aGUgc291cmNlLXByb3ZpZGVkIG1v
ZHVsZS4KICAgICBQcml2YXRlTmFtZSBwcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRp
b24sICJFbnRyeVBvaW50TW9kdWxlIik7CiAgICAgU3ltYm9sKiBrZXkgPSBTeW1ib2w6OmNyZWF0
ZShleGVjLT52bSgpLCAqcHJpdmF0ZU5hbWUudWlkKCkpOwogCi0gICAgTW9kdWxlTG9hZGVyT2Jq
ZWN0KiBtb2R1bGVMb2FkZXIgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpOwotCiAgICAg
Ly8gSW5zZXJ0IHRoZSBnaXZlbiBzb3VyY2UgY29kZSB0byB0aGUgTW9kdWxlTG9hZGVyIHJlZ2lz
dHJ5IGFzIHRoZSBmZXRjaGVkIHJlZ2lzdHJ5IGVudHJ5LgotICAgIG1vZHVsZUxvYWRlci0+cHJv
dmlkZShleGVjLCBrZXksIE1vZHVsZUxvYWRlck9iamVjdDo6U3RhdHVzOjpGZXRjaCwgc291cmNl
LnRvU3RyaW5nKCkpOworICAgIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByb3ZpZGUo
ZXhlYywga2V5LCBNb2R1bGVMb2FkZXJPYmplY3Q6OlN0YXR1czo6RmV0Y2gsIHNvdXJjZS50b1N0
cmluZygpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgcmV0dXJu
ZWRFeGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b24gPSBleGVjLT5leGNlcHRpb24oKS0+dmFsdWUoKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNl
cHRpb24oKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QpOworICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7
CisgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOwogICAgIH0KIAotICAgIC8vIEZJ
WE1FOiBOb3csIHdlIGRvbid0IGltcGxlbWVudCB0aGUgbGlua2luZyBwaGFzZSB5ZXQuCi0gICAg
Ly8gU28gaGVyZSwgd2UganVzdCBjYWxsIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCB0byBvbmx5IHBl
cmZvcm0gdGhlIG1vZHVsZSBsb2FkaW5nLgotICAgIC8vIEF0IGxhc3QsIGl0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIHJlcXVlc3RSZWFkeS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCi0gICAgbW9kdWxlTG9hZGVyLT5yZXF1ZXN0SW5zdGFu
dGlhdGVBbGwoZXhlYywga2V5KTsKKyAgICByZXR1cm4gZXZhbHVhdGVNb2R1bGUobG9jaywgZXhl
YywgZ2xvYmFsT2JqZWN0LCBrZXksIGpzVW5kZWZpbmVkKCkpOworfQogCi0gICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhbHNvIGhhbmRsZSB0aGUgYXN5bmNocm9ub3VzIFN5bnRheCBFcnJvcnMgdGhh
dCB3aWxsIGJlIGRlbGl2ZXJlZCBieSB0aGUgcmVqZWN0ZWQgcHJvbWlzZS4KLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTczCi0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gZXhlYy0+ZXhj
ZXB0aW9uKCk7Ci0gICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CitKU0ludGVybmFsUHJvbWlzZSogZXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworCisgICAgcmV0dXJuIGV2
YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgbW9k
dWxlTmFtZSk7Cit9CisKK0pTSW50ZXJuYWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSkKK3sKKyAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKworICAgIHJldHVybiBl
dmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAppbmRl
eCBkZTMyZDYzZTYzYWM3Y2VkNDlkODE3ZTIzYzBiODc4ODY3YTA1YTY5Li5jYjA5MWZmMTY0YjIy
OGRjMDJjMjIzZGQxZWQ4Y2Q2NDgyOTE1YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIEpTU2NvcGU7CiBjbGFz
cyBQYXJzZXJFcnJvcjsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBWTTsKK2NsYXNzIEpTSW50
ZXJuYWxQcm9taXNlOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29s
IGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNl
cHRpb24gPSAwKTsKQEAgLTQ0LDcgKzQ1LDkgQEAgaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHQKICAg
ICBOYWtlZFB0cjxFeGNlcHRpb24+IHVudXNlZDsKICAgICByZXR1cm4gZXZhbHVhdGUoZXhlYywg
c291cmNlQ29kZSwgdGhpc1ZhbHVlLCB1bnVzZWQpOwogfQotSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgTmFrZWRQdHI8
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOworSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRl
cm5hbFByb21pc2UqIGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUm
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKK0pTX0VYUE9SVF9QUklW
QVRFIEpTSW50ZXJuYWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIG1vZHVsZU5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkzZWUxZmQ3
NGI5OTI1OTA0MWNhMWU4NjJmNjMxMWY2NTA5ODM4OWEuLmJhZjRlMTAwYmNjMTYzYzE4YTc1ZDkw
NDBlM2NhNDhhZTE0ZDY3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTT05PYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKQEAgLTMxMCw2ICszMTIsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlw
ZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0ucHJv
dG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzKSk7CisgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
TW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1fc3Ry
aWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZh
dGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRlU3Ry
dWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBA
IC0zNDYsNiArMzQ5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAg
bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sICp0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tb2R1bGVOYW1lc3BhY2VP
YmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01N
b2R1bGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtNTIwLDYgKzUyNCw3IEBAIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBs
b3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25z
UHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1l
bnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3Jl
YXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5TZXRQcml2YXRlTmFtZSwgc2V0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xv
YmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC03ODksNiAr
Nzk0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3dpdGhTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1
Y3R1cmUpOwpAQCAtODE2LDYgKzgyMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDI2MTMxNmU4NWQyYmFmYmRlZDc4NDMwYjZmOGY4ZWJhNWFkODc3NmUuLmNkYmFjNGEyNmZi
MDk5MTgxYTBjY2IyMWMxMDUyNjAzNGZmYzkzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjMwLDYgKzIzMCw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsK
QEAgLTI2Miw2ICsyNjMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJh
dG9yUmVzdWx0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmU7CiAjZW5kaWYKQEAg
LTQ0Niw2ICs0NDgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0
RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjdGl2YXRp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVy
ZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBkaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Rp
cmVjdEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2NvcGVkQXJn
dW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CkBA
IC00OTksNiArNTAyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0
cnVjdHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwg
bV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVj
dHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcAppbmRleCA0MjI0
ZDJmNGVkODYzMjRhMGRkMmVkYzhmZDVkMGEwNmNlYjA3MmMzLi4wOTM1OTZiYWRhYTdjNzc5NWI1
NDQwMDVhMjQ5YzYxYWNkNjkwNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKIAorI2luY2x1ZGUg
IkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKQEAgLTUx
LDQgKzUyLDE4IEBAIEpTSW50ZXJuYWxQcm9taXNlOjpKU0ludGVybmFsUHJvbWlzZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCitKU0ludGVybmFsUHJvbWlzZSogSlNJbnRl
cm5hbFByb21pc2U6OnRoZW4oRXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBvbkZ1bGZpbGxl
ZCwgSlNGdW5jdGlvbiogb25SZWplY3RlZCkKK3sKKyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLnRoZW5QdWJsaWNOYW1lKCkpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsK
KyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKG9uRnVsZmlsbGVkID8g
b25GdWxmaWxsZWQgOiBqc1VuZGVmaW5lZCgpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKG9uUmVq
ZWN0ZWQgPyBvblJlamVjdGVkIDoganNVbmRlZmluZWQoKSk7CisKKyAgICByZXR1cm4ganNDYXN0
PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaAppbmRleCAx
OTM2YWVlZTRmMDA3MjIyNTA3NzQxNGRhZjRhNDVjNjYwMDkyMGQ2Li45N2NmMDJlOGI0MjVhODg4
N2NkZjVmZWM2ZDE0ZjJhZjhkNDVhNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmgKQEAgLTMwLDYgKzMwLDE2IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCitjbGFzcyBKU0Z1bmN0aW9uOworCisvLyBKU0ludGVybmFsUHJvbWlzZSBp
cyBjb21wbGV0ZWx5IHNlcGFyYXRlZCBpbnN0YW5jZSBmcm9tIHRoZSBKU1Byb21pc2UuCisvLyBT
aW5jZSBpdHMgcHJvdG90eXBlIGFuZCBjb25zdHJ1Y3RvciBhcmUgZGlmZmVyZW50IGZyb20gdGhl
IGV4cG9zZWQgUHJvbWlzZXMnIG9uZXMsCisvLyBhbGwgdGhlIHVzZXIgbW9kaWZpY2F0aW9uIG9u
dG8gdGhlIGV4cG9zZWQgUHJvbWlzZSBkb2VzIG5vdCBoYXZlIGVmZmVjdCBvbiBKU0ludGVybmFs
UHJvbWlzZS4KKy8vCisvLyBlLmcuCisvLyAgICAgUmVwbGFjaW5nIFByb21pc2UucHJvdG90eXBl
LnRoZW4gd2l0aCB0aGUgdXNlci1jdXN0b21pemVkIG9uZSBkb2VzIG5vdCBlZmZlY3Qgb24gSlNJ
bnRlcm5hbFByb21pc2UuCisvLworLy8gQ0FVVElPTjogTXVzdCBub3QgbGVhayB0aGUgSlNJbnRl
cm5hbFByb21pc2UgdG8gdGhlIHVzZXIgc3BhY2UgdG8ga2VlcCBpdHMgaW50ZWdyaXR5LgogY2xh
c3MgSlNJbnRlcm5hbFByb21pc2UgOiBwdWJsaWMgSlNQcm9taXNlIHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEpTUHJvbWlzZSBCYXNlOwpAQCAtMzksNiArNDksOCBAQCBjbGFzcyBKU0ludGVybmFs
UHJvbWlzZSA6IHB1YmxpYyBKU1Byb21pc2UgewogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
IAorICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiB0aGVuKEV4ZWNTdGF0
ZSosIEpTRnVuY3Rpb24qID0gbnVsbHB0ciwgSlNGdW5jdGlvbiogPSBudWxscHRyKTsKKwogcHJp
dmF0ZToKICAgICBKU0ludGVybmFsUHJvbWlzZShWTSYsIFN0cnVjdHVyZSopOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
CmluZGV4IDk1MTYzMThkNzAxNjllM2RkOGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMx
YjdiN2M5ODI2MmQ0MTBiZjAxZjg0OTM3MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhp
Y2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgor
cHJvdGVjdGVkOgogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNT
Y29wZSosIFN5bWJvbFRhYmxlKik7CiAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJiZTA0M2ExYjg1MjVhNzY1NzAyNzhkN2QxY2I4ZmM2ODA2NDJiY2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNw
cApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25t
ZW50LmgiCisKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVFbnZpcm9ubWVudDo6c19p
bmZvID0geyAiSlNNb2R1bGVFbnZpcm9ubWVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNNb2R1bGVFbnZpcm9ubWVudCkgfTsKKworSlNNb2R1bGVFbnZpcm9ubWVu
dCogSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
LCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sK
KyAgICAvLyBKU0xleGljYWxFbnZpcm9ubWVudCAocHJlY2lzZWx5LCBKU0Vudmlyb25tZW50UmVj
b3JkKSBoYXMgdGhlIHN0b3JhZ2UgdG8gc3RvcmUgdGhlIHZhcmlhYmxlIHNsb3RzIGFmdGVyIHRo
ZSBpdHMgY2xhc3Mgc3RvcmFnZS4KKyAgICAvLyBCZWNhdXNlIHRoZSBvZmZzZXQgb2YgdGhlIHZh
cmlhYmxlIHNsb3RzIGFyZSBmaXhlZCBpbiB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCwgaW5oZXJp
dHRpbmcgdGhlc2UgY2xhc3MgYW5kIGFkZGluZyBuZXcgbWVtYmVyIGZpZWxkIGlzIG5vdCBhbGxv
d2VkLAorICAgIC8vIHRoZSBuZXcgbWVtYmVyIHdpbGwgb3ZlcmxhcCB0aGUgdmFyaWFibGUgc2xv
dHMuCisgICAgLy8gVG8ga2VlcCB0aGUgSlNNb2R1bGVFbnZpcm9ubWVudCBjb21wYXRpYmxlIHRv
IHRoZSBKU0xleGljYWxFbnZpcm9ubWVudCBidXQgYWRkIHRoZSBuZXcgbWVtYmVyIHRvIHN0b3Jl
IHRoZSBKU01vZHVsZVJlY29yZCwgd2UgYWRkaXRpb25hbGx5IGFsbG9jYXRlCisgICAgLy8gdGhl
IHN0b3JhZ2UgYWZ0ZXIgdGhlIHZhcmlhYmxlIHNsb3RzLgorICAgIC8vCisgICAgLy8gSlNMZXhp
Y2FsRW52aXJvbm1lbnQ6CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFy
aWFibGUgc2xvdHMgXQorICAgIC8vCisgICAgLy8gSlNNb2R1bGVFbnZpcm9ubWVudDoKKyAgICAv
LyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBdWyBhZGRpdGlv
bmFsIHNsb3RzIGZvciBKU01vZHVsZUVudmlyb25tZW50IF0KKyAgICBKU01vZHVsZUVudmlyb25t
ZW50KiByZXN1bHQgPQorICAgICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAg
ICAgICAgIGFsbG9jYXRlQ2VsbDxKU01vZHVsZUVudmlyb25tZW50Pih2bS5oZWFwLCBKU01vZHVs
ZUVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQorICAgICAgICBKU01v
ZHVsZUVudmlyb25tZW50KHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUp
OworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVj
b3JkKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGluaXRp
YWxWYWx1ZSk7CisgICAgdGhpcy0+bW9kdWxlUmVjb3JkKCkuc2V0KHZtLCB0aGlzLCBtb2R1bGVS
ZWNvcmQpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmlyb25t
ZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1ib2xU
YWJsZSgpLT5zY29wZVNpemUoKSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1v
ZHVsZVJlY29yZCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjZkMjc1MzIwNzRmNmViZDYxYmYxNTZmMmU5ODljZGMxZjFjY2VhYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApA
QCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisjZGVmaW5lIEpTTW9kdWxlRW52
aXJvbm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVnaXN0ZXI7
CisKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhpY2FsRW52aXJvbm1l
bnQgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNMZXhpY2FsRW52aXJvbm1lbnQgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNN
b2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2Nv
cGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9k
dWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCisgICAgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxl
LCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZNb2R1bGVSZWNvcmQoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpT
TW9kdWxlUmVjb3JkPik+KEJhc2U6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSk7CisgICAg
fQorCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSogc3ltYm9s
VGFibGUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9s
VGFibGUpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29w
ZSosIFN5bWJvbFRhYmxlKik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1
ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNl
PEpTTW9kdWxlUmVjb3JkPiYgbW9kdWxlUmVjb3JkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAq
Yml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+Kj4oYml0d2lzZV9j
YXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKCkpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7Cit9OworCitpbmxpbmUgSlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9u
bWVudChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUs
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY3Vy
cmVudFNjb3BlLCBzeW1ib2xUYWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBKU01vZHVsZUVudmlyb25tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMzhhNjU0MGQ3ZWU5NTIxNDVlZjBlYTJmYzY3MThkZWZjODdiNDJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqKTsKKwor
Y29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpzX2luZm8gPSB7ICJNb2R1
bGVOYW1lc3BhY2VPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KSB9OworCisKK0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIDogSlNXcmFwcGVyT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4cG9ydHMoZXhwb3J0cykKK3sKK30KKwordm9pZCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
CisgICAgc2V0SW50ZXJuYWxWYWx1ZSh2bSwgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTeW1ib2xJdGVyYXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0cDovL3d3
dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3Bh
Y2UtZXhvdGljLW9iamVjdHMtZ2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90
aWMtb2JqZWN0cy1zZXRwcm90b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtaXNleHRlbnNpYmxlCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtcHJl
dmVudGV4dGVuc2lvbnMKKyAgICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0Kj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
On5KU01vZHVsZU5hbWVzcGFjZU9iamVjdCgpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAg
IC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1t
b2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldG93bnByb3BlcnR5LXAKKworICAgIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Kj4oY2VsbCk7CisKKyAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCisg
ICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisKKyAgICBpZiAoIXRoaXNPYmplY3QtPm1fZXhwb3J0
cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gdGhpc09iamVjdC0+aW50ZXJuYWxW
YWx1ZSgpOworCisgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAg
ICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgY29uc3QgYXV0byByZXNvbHV0aW9u
ID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQo
ZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7Cisg
ICAgQVNTRVJUKHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6
VHlwZTo6Tm90Rm91bmQgJiYgcmVzb2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNv
bHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXMpOworICAgIEpTTW9kdWxlUmVjb3JkKiB0YXJnZXRNb2R1
bGUgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZDsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0
YXJnZXRFbnZpcm9ubWVudCA9IHRhcmdldE1vZHVsZS0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKyAg
ICBQcm9wZXJ0eVNsb3QgdHJhbXBvbGluZVNsb3QodGFyZ2V0RW52aXJvbm1lbnQpOworICAgIGlm
ICghdGFyZ2V0RW52aXJvbm1lbnQtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QodGFyZ2V0RW52aXJvbm1lbnQsIGV4ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lLCB0
cmFtcG9saW5lU2xvdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTVmFsdWUgdmFs
dWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIEFT
U0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgRG9udERlbGV0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3Rp
Yy1vYmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKKyAgICByZXR1cm47Cit9CisKK2Jvb2wgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90
aWMtb2JqZWN0cy1kZWxldGUtcAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgcmV0dXJu
ICF0aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKK30K
Kwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGlj
LW9iamVjdHMtb3ducHJvcGVydHlrZXlzCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIG5hbWUgOiB0aGlzT2JqZWN0LT5tX2V4cG9ydHMpCisgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKG5hbWUuZ2V0KCkpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30K
KworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0
eShKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4
b3RpYy1vYmplY3RzLWRlZmluZW93bnByb3BlcnR5LXAtZGVzYworICAgIGlmIChzaG91bGRUaHJv
dykKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGFuIG9iamVjdCIpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVyYXRv
clN0cnVjdHVyZSgpLCBhc09iamVjdCh0aGlzVmFsdWUpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgzNTBlNzk2ZWEzYjAyNDllNjFjZWEwMWY5
ZWYwYWFmODU2MzA2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3RfaAorI2RlZmluZSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisKKyNp
bmNsdWRlICJKU1dyYXBwZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpT
TW9kdWxlUmVjb3JkOworCitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCA6IHB1YmxpYyBK
U1dyYXBwZXJPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgY29uc3QgSWRlbnRp
ZmllclNldCYgZXhwb3J0cykKKyAgICB7CisgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZU5hbWVzcGFjZU9i
amVjdD4oZXhlYy0+dm0oKS5oZWFwKSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoZXhlYy0+dm0o
KSwgc3RydWN0dXJlLCBleHBvcnRzKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihl
eGVjLT52bSgpLCBnbG9iYWxPYmplY3QsIG1vZHVsZVJlY29yZCk7CisgICAgICAgIHJldHVybiBv
YmplY3Q7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGludGVy
bmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihKU1dyYXBw
ZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNv
cmQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYs
IFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpOworCitwcml2YXRlOgor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBJZGVudGlmaWVyU2V0IG1f
ZXhwb3J0czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCmluZGV4IGU3MDJmYWZhNDRlNTA2ZjlkNDdmZWRlNjMzNjY0YTczOGMx
OWI0MGIuLjkyNTdiYjhiYTY3ZjhkNTIzNGY5Nzk1ODgyYzQ1MDJhNzY4ZmNjZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTIw
LDE1ICsyMCwyMCBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKIAorI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5j
bHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1
ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMiArNDYsMjQgQEAgdm9p
ZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+
SlNNb2R1bGVSZWNvcmQ6On5KU01vZHVsZVJlY29yZCgpOwogfQogCi0KIHZvaWQgSlNNb2R1bGVS
ZWNvcmQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgicmVnaXN0cnlFbnRyeSIp
KSwganNVbmRlZmluZWQoKSk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJldmFsdWF0ZWQiKSksIGpzQm9vbGVhbihmYWxzZSkpOwor
CisgICAgbV9kZXBlbmRlbmNpZXNNYXAuc2V0KHZtLCB0aGlzLCBKU01hcDo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QoKS0+bWFwU3RydWN0dXJlKCkpKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImRlcGVuZGVuY2llc01hcCIpKSwg
bV9kZXBlbmRlbmNpZXNNYXAuZ2V0KCkpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNN
b2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50KTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7CiB9CiAKIGF1dG8gSlNN
b2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBl
eHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5CkBAIC02NCw2ICs4MSwyMTAg
QEAgYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0
IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGMKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBl
OjpJbmRpcmVjdCwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwgSWRlbnRpZmll
cigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwogfQogCit2b2lkIEpTTW9kdWxlUmVj
b3JkOjphbGxvY2F0ZU1vZHVsZUVudmlyb25tZW50KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBB
U1NFUlQoIW1fbW9kdWxlRW52aXJvbm1lbnQpOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRh
YmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZShleGVjLT52bSgpKTsKKyAgICB7CisgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgICAgIGNv
bnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAo
ZXhwb3J0RW50cnkudHlwZSkgeworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNl
OgorICAgICAgICAgICAgICAgIC8vIFRoZSBoZWFwIHZhcmlhYmxlIGZvciB0aGUgbmFtZXNwYWNl
IG9iamVjdCBpcyBpbnRyb2R1Y2VkIHdoZW4gaW1wb3J0aW5nIGFsbCB0aGUgbmFtZXNwYWNlIGJp
bmRpbmcgaW50byB0aGUgY3VycmVudCBtb2R1bGUgc2NvcGUuCisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBl
OjpMb2NhbDoKKyAgICAgICAgICAgICAgICBWYXJPZmZzZXQgdmFyT2Zmc2V0KHN5bWJvbFRhYmxl
LT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikpOworICAgICAgICAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBleHBvcnRFbnRyeS52YXJpYWJsZS5pc0NvbnN0
KCkgPyBSZWFkT25seSA6IDApOworICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQobG9j
a2VyLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1
dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmIChpbXBvcnRFbnRy
eS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkgeworICAgICAgICAgICAgICAgIFZhck9mZnNldCB2
YXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKSk7CisgICAg
ICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIFJlYWRPbmx5
KTsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkKGxvY2tlciwgaW1wb3J0RW50cnku
bG9jYWxOYW1lLmltcGwoKSwgbmV3RW50cnkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNN
b2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpW
YWx1ZSgpLCB0aGlzKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGlm
IChpZGVudGlmaWVyLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZShl
eGVjLT52bSgpLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSk7
CisgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLT52bSgpLCBpZGVudGlmaWVyLmltcGwoKSk7Cit9
CisKK0pTTW9kdWxlUmVjb3JkKiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1v
ZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7Cisg
ICAgSlNWYWx1ZSBtb2R1bGVOYW1lVmFsdWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMsIG1v
ZHVsZU5hbWUpOworICAgIEpTVmFsdWUgcGFpciA9IG1fZGVwZW5kZW5jaWVzTWFwLT5KU01hcDo6
Z2V0KGV4ZWMsIG1vZHVsZU5hbWVWYWx1ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVsZVJl
Y29yZCo+KHBhaXIuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVl
IikpKTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIFJlc29sdmVTZXQmIHJlc29sdmVT
ZXQsIElkZW50aWZpZXJTZXQmIHN0YXJTZXQpIC0+IFJlc29sdXRpb24KK3sKKyAgICBpZiAoIXJl
c29sdmVTZXQuYWRkKFJlc29sdmVRdWVyeShtb2R1bGVLZXkoKSwgZXhwb3J0TmFtZSkpLmlzTmV3
RW50cnkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQsIG1vZHVsZUtleSgpLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKworICAgIGNvbnN0IGF1
dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lLmltcGwoKSk7Cisg
ICAgaWYgKGl0ZXJhdG9yICE9IG1fZXhwb3J0RW50cmllcy5lbmQoKSkgeworICAgICAgICBjb25z
dCBhdXRvJiBleHBvcnRFbnRyeSA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChl
eHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50
cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQsIG1vZHVsZUtleSgpLCB0aGlzLCBleHBvcnRFbnRyeS5s
b2NhbE5hbWUgfTsKKworICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6
VHlwZTo6SW5kaXJlY3Q6IHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1v
ZHVsZVJlY29yZCA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhwb3J0RW50cnku
bW9kdWxlTmFtZSk7CisgICAgICAgICAgICBjb25zdCBhdXRvIGluZGlyZWN0UmVzb2x1dGlvbiA9
IGltcG9ydGVkTW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydE5hbWUsIHJl
c29sdmVTZXQsIHN0YXJTZXQpOworICAgICAgICAgICAgaWYgKGluZGlyZWN0UmVzb2x1dGlvbi50
eXBlICE9IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVy
biBpbmRpcmVjdFJlc29sdXRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGV4cG9ydE5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmRlZmF1bHRLZXl3b3JkKQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRp
b246OlR5cGU6OkVycm9yLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAg
ICBpZiAoIXN0YXJTZXQuYWRkKG1vZHVsZUtleSgpLmltcGwoKSkuaXNOZXdFbnRyeSkKKyAgICAg
ICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxl
S2V5KCksIHRoaXMsIElkZW50aWZpZXIoKSB9OworCisgICAgYXV0byBzdGFyUmVzb2x1dGlvbiA9
IFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRo
aXMsIElkZW50aWZpZXIoKSB9OworICAgIGZvciAoY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUg
OiBtX3N0YXJFeHBvcnRFbnRyaWVzKSB7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRl
ZE1vZHVsZVJlY29yZCA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICBjb25zdCBh
dXRvIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVj
LCBleHBvcnROYW1lLCByZXNvbHZlU2V0LCBzdGFyU2V0KTsKKyAgICAgICAgaWYgKHJlc29sdXRp
b24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXMpCisgICAgICAgICAgICByZXR1
cm4gcmVzb2x1dGlvbjsKKyAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSAhPSBSZXNvbHV0aW9u
OjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgaWYgKHN0YXJSZXNvbHV0aW9uLnR5cGUg
PT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpCisgICAgICAgICAgICAgICAgc3RhclJlc29s
dXRpb24gPSByZXNvbHV0aW9uOworICAgICAgICAgICAgZWxzZSBpZiAoc3RhclJlc29sdXRpb24u
bW9kdWxlS2V5ICE9IHJlc29sdXRpb24ubW9kdWxlS2V5IHx8IHN0YXJSZXNvbHV0aW9uLmxvY2Fs
TmFtZSAhPSByZXNvbHV0aW9uLmxvY2FsTmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVz
b2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cywgSWRlbnRpZmllcigpLCBudWxs
cHRyLCBJZGVudGlmaWVyKCkgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGFy
UmVzb2x1dGlvbjsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6Z2V0RXhwb3J0ZWROYW1lcyhF
eGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJTZXQmIGV4cG9ydFN0YXJTZXQsIElkZW50aWZpZXJT
ZXQmIGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVEZWZhdWx0TW9kZSBtb2RlKQoreworICAgIGlmIChl
eHBvcnRTdGFyU2V0LmNvbnRhaW5zKG1vZHVsZUtleSgpLmltcGwoKSkpCisgICAgICAgIHJldHVy
bjsKKyAgICBleHBvcnRTdGFyU2V0LmFkZChtb2R1bGVLZXkoKS5pbXBsKCkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRv
JiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnku
dHlwZSkgeworICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6
TG9jYWw6CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJ
bmRpcmVjdDoKKyAgICAgICAgICAgIGlmIChtb2RlID09IEluY2x1ZGVEZWZhdWx0TW9kZTo6SW5j
bHVkZSB8fCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQgIT0gZXhwb3J0RW50
cnkuZXhwb3J0TmFtZSkKKyAgICAgICAgICAgICAgICBleHBvcnRlZE5hbWVzLmFkZChleHBvcnRF
bnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0
YXJNb2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykgeworICAgICAgICBKU01vZHVsZVJl
Y29yZCogcmVxdWVzdGVkTW9kdWxlUmVjb3JkID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShl
eGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7Cisg
ICAgICAgIHJlcXVlc3RlZE1vZHVsZVJlY29yZC0+Z2V0RXhwb3J0ZWROYW1lcyhleGVjLCBleHBv
cnRTdGFyU2V0LCBleHBvcnRlZE5hbWVzLCBJbmNsdWRlRGVmYXVsdE1vZGU6OkV4Y2x1ZGUpOwor
ICAgIH0KK30KKworSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3JkOjpnZXRN
b2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChtX21vZHVsZU5hbWVz
cGFjZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgp
OworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICBJZGVudGlmaWVyU2V0IGV4cG9ydGVkTmFtZXM7CisgICAgeworICAg
ICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgICAgIGdldEV4cG9ydGVkTmFt
ZXMoZXhlYywgZXhwb3J0U3RhclNldCwgZXhwb3J0ZWROYW1lcywgSW5jbHVkZURlZmF1bHRNb2Rl
OjpJbmNsdWRlKTsKKyAgICB9CisKKyAgICBJZGVudGlmaWVyU2V0IHVuYW1iaWd1b3VzTmFtZXM7
CisgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZXhwb3J0ZWROYW1lcykgeworICAgICAgICBS
ZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNl
dDsKKyAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUuZ2V0KCkpLCByZXNvbHZlU2V0LCBleHBvcnRT
dGFyU2V0KTsKKyAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBl
OjpOb3RGb3VuZCkgeworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmIChyZXNvbHV0aW9u
LnR5cGUgIT0gUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzKQorICAgICAgICAgICAgdW5hbWJp
Z3VvdXNOYW1lcy5hZGQobmFtZSk7CisgICAgfQorCisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3Quc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0
cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91c05hbWVzKSk7CisgICAgcmV0dXJuIG1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmdldCgpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQVNTRVJUKG1fbW9kdWxl
RW52aXJvbm1lbnQpOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9tb2R1bGVF
bnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IHBh
aXIudmFsdWU7CisgICAgICAgIGlmIChleHBvcnRFbnRyeS50eXBlID09IEpTTW9kdWxlUmVjb3Jk
OjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3QpIHsKKyAgICAgICAgICAgIFJlc29sdmVTZXQg
cmVzb2x2ZVNldDsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAg
ICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhw
b3J0RW50cnkuZXhwb3J0TmFtZSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgICAg
ICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7
CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBl
ID09IFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cykgeworICAgICAgICAgICAgICAgIHRocm93
U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBv
cnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1
ZTsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJ
bXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAg
aWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKSB7CisgICAgICAgICAgICBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCogbmFtZXNwYWNlT2JqZWN0ID0gaW1wb3J0ZWRNb2R1bGUt
PmdldE1vZHVsZU5hbWVzcGFjZShleGVjKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5pbmxpbmVHZXQobG9ja2VyLCBpbXBv
cnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNl
dCA9IGVudHJ5LnNjb3BlT2Zmc2V0KCk7CisgICAgICAgICAgICBBU1NFUlQobV9tb2R1bGVFbnZp
cm9ubWVudC0+aXNWYWxpZChvZmZzZXQpKTsKKyAgICAgICAgICAgIG1fbW9kdWxlRW52aXJvbm1l
bnQtPnZhcmlhYmxlQXQob2Zmc2V0KS5zZXQoZXhlYy0+dm0oKSwgbV9tb2R1bGVFbnZpcm9ubWVu
dC5nZXQoKSwgbmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IFJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0
U3RhclNldDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IGltcG9ydGVkTW9k
dWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUsIHJlc29sdmVT
ZXQsIGV4cG9ydFN0YXJTZXQpOworICAgICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBS
ZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgICAgIHRocm93U3ludGF4
RXJyb3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3Vv
dXMpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogc3Rh
dGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IHVpZCkKIHsKICAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQpAQCAtNzYsNyArMjk3LDYgQEAgc3Rh
dGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHJl
dHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7CiB9CiAKLQogdm9pZCBKU01vZHVsZVJl
Y29yZDo6ZHVtcCgpCiB7CiAgICAgZGF0YUxvZygiXG5BbmFseXppbmcgTW9kdWxlUmVjb3JkIGtl
eSgiLCBwcmludGFibGVOYW1lKG1fbW9kdWxlS2V5KSwgIilcbiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggMDVkNjk0ZDNlM2ZlNTVh
NTIxYWYzNWRlODI2MTU5ODBmMDgwZTJlMC4uNGEwMzhmM2NhNTJiOGEyMTNhNGIzNGE4YWZlMWE5
ODVkZDU0MTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5oCkBAIC0zNCw2ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OworY2xh
c3MgSlNNYXA7CisKIC8vIEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCiAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291
cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IHsKQEAgLTk4LDEyICsxMDIsNzggQEAgY2xhc3MgSlNNb2R1bGVS
ZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHZvaWQgYWRkSW1wb3J0
RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0
IEV4cG9ydEVudHJ5Jik7CiAKKyAgICBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBjb25z
dCB7IHJldHVybiBtX21vZHVsZUtleTsgfQorCiAgICAgY29uc3QgSW1wb3J0RW50cnkmIGxvb2tV
cEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSk7
CiAKICAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVxdWVzdGVkTW9kdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQogCisgICAgY29uc3QgRXhwb3J0TWFw
JiBleHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9CisKICAg
ICB2b2lkIGR1bXAoKTsKIAorICAgIHZvaWQgYWxsb2NhdGVNb2R1bGVFbnZpcm9ubWVudChFeGVj
U3RhdGUqKTsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIHsg
cmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7IH0KKworICAgIHZvaWQgaW5zdGFudGlh
dGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKik7CisKKyAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5IHsK
KyAgICAgICAgUmVzb2x2ZVF1ZXJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBtb2R1bGVLZXksIFVuaXF1
ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAgICAgICAgICAgOiBtb2R1bGVLZXkobW9kdWxl
S2V5KQorICAgICAgICAgICAgLCBleHBvcnROYW1lKGV4cG9ydE5hbWUpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIFJlc29sdmVRdWVyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVL
ZXksIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgICAgICA6IFJlc29sdmVR
dWVyeShtb2R1bGVLZXkuaW1wbCgpLCBleHBvcnROYW1lLmltcGwoKSkKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAg
ICAgICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKyAgICAgICAg
UmVzb2x2ZVF1ZXJ5KERlbGV0ZWRWYWx1ZVRhZykKKyAgICAgICAgICAgIDogbW9kdWxlS2V5KFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICAgICAgLCBleHBvcnROYW1lKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBi
b29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAh
bW9kdWxlS2V5OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtb2R1bGVLZXkuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4gbW9kdWxlS2V5OworICAgICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9y
dE5hbWU7CisgICAgfTsKKworICAgIHN0cnVjdCBSZXNvbHZlUXVlcnlIYXNoIHsKKyAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYsIGNvbnN0IFJlc29sdmVRdWVyeSYpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IHRydWU7CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlc29sdmVRdWVyeSwg
UmVzb2x2ZVF1ZXJ5SGFzaCwgV1RGOjpDdXN0b21IYXNoVHJhaXRzPFJlc29sdmVRdWVyeT4+IFJl
c29sdmVTZXQ7CisKKyAgICBzdHJ1Y3QgUmVzb2x1dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3Mg
VHlwZSB7IFJlc29sdmVkLCBOb3RGb3VuZCwgQW1iaWd1b3VzLCBFcnJvciB9OworCisgICAgICAg
IFR5cGUgdHlwZTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVLZXk7CisgICAgICAgIEpTTW9k
dWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQ7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOwor
ICAgIH07CisKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgZXhwb3J0TmFtZSwgUmVzb2x2ZVNldCYsIElkZW50aWZpZXJTZXQmIGV4cG9y
dFN0YXJTZXQpOworCiBwcml2YXRlOgogICAgIEpTTW9kdWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSkKICAgICAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCkBAIC0xMTMsOCArMTgzLDE1IEBAIGNsYXNzIEpTTW9kdWxlUmVj
b3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKIAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1l
c3BhY2UoRXhlY1N0YXRlKik7CisgICAgZW51bSBjbGFzcyBJbmNsdWRlRGVmYXVsdE1vZGUgeyBJ
bmNsdWRlLCBFeGNsdWRlIH07CisgICAgdm9pZCBnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSos
IElkZW50aWZpZXJTZXQmIGV4cG9ydFN0YXJTZXQsIElkZW50aWZpZXJTZXQmIGV4cG9ydGVkTmFt
ZXMsIEluY2x1ZGVEZWZhdWx0TW9kZSk7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKIAorICAgIEpTTW9kdWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworCiAgICAgLy8gVGhlIGxvYWRl
ciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRoZSBt
b2R1bGUga2V5IGlzIHRoZSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9kdWxlLgog
ICAgIElkZW50aWZpZXIgbV9tb2R1bGVLZXk7CiAKQEAgLTEyOSw2ICsyMDYsMTAgQEAgY2xhc3Mg
SlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIC8vIFNh
dmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMgYW5k
IHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KICAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgogICAg
IE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKKworICAgIFdyaXRlQmFy
cmllcjxKU01vZHVsZUVudmlyb25tZW50PiBtX21vZHVsZUVudmlyb25tZW50OworICAgIFdyaXRl
QmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Q7
CisgICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX2RlcGVuZGVuY2llc01hcDsKIH07CiAKIGlubGlu
ZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlTmFtZSkKQEAgLTE1Niw2ICsyMzcsMTYgQEAgaW5saW5lIGF1dG8gSlNNb2R1
bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGwKICAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1
ZTsKIH0KIAoraW5saW5lIHVuc2lnbmVkIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNo
OjpoYXNoKGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnkmIHF1ZXJ5KQoreworICAg
IHJldHVybiBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChxdWVyeS5tb2R1bGVLZXkpICsgSWRlbnRp
ZmllclJlcEhhc2g6Omhhc2gocXVlcnkuZXhwb3J0TmFtZSk7Cit9CisKK2lubGluZSBib29sIEpT
TW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkm
IGxocywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVL
ZXkgPT0gcmhzLm1vZHVsZUtleSAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU01vZHVsZVJlY29yZF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcAppbmRleCA1MTJhOGZhN2Q2MDVhY2Y5ZjFmYTA3NzBjYTc4ZDQyMzEyMjFjNTI5Li40M2Y4
OThkOTFmZTZiOTExYTJjNzdiMzA3ZjQ1OGE3ZTVlY2M2MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJNb2R1bGVMb2FkZXJPYmplY3QuaCIKIAogI2luY2x1ZGUgIkJ1
aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkNvZGVQcm9maWxpbmcuaCIKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAg
LTQ0LDYgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVx
dWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFy
YXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEZldGNoKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSopOwpAQCAtNjEsMjcgKzY0LDM0IEBAIGNvbnN0
IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJPYmplY3Q6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIs
ICZCYXNlOjpzX2luZm8sICZtCiAKIC8qIFNvdXJjZSBmb3IgTW9kdWxlTG9hZGVyT2JqZWN0Lmx1
dC5oCiBAYmVnaW4gbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUKLSAgICBzZXRTdGF0ZVRvTWF4ICAg
ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCi0gICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgbW9kdWxl
TG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQotICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEVuc3Vy
ZVJlZ2lzdGVyZWQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBmb3JjZUZ1bGZp
bGxQcm9taXNlICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGb3JjZUZ1bGZpbGxQcm9taXNlICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbEZldGNoICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgotICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBmdWxm
aWxsSW5zdGFudGlhdGUgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsSW5zdGFudGlh
dGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgY29tbWl0SW5zdGFudGlhdGVkICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMwotICAgIGluc3RhbnRpYXRpb24gICAgICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdEluc3RhbnRpYXRpb24gICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKLSAg
ICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0RmV0
Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdFRyYW5zbGF0
ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKLSAgICByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBtb2R1bGVMb2FkZXJPYmplY3RSZXF1
ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdElu
c3RhbnRpYXRlQWxsICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxs
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHByb3ZpZGUgICAgICAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdFByb3ZpZGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDMKLSAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RQYXJzZU1vZHVsZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcmVx
dWVzdGVkTW9kdWxlcyAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxl
cyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlc29sdmUgICAgICAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKLSAgICBmZXRjaCAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RGZXRjaCAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0g
ICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRl
ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGluc3RhbnRpYXRlICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBzZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0U2V0U3RhdGVUb01heCAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKKyAgICBuZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgICBlbnN1cmVSZWdpc3RlcmVkICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBm
b3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Rm9yY2VGdWxm
aWxsUHJvbWlzZSAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsRmV0
Y2ggICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsVHJhbnNsYXRlICAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDIKKyAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICAgICAgbW9kdWxl
TG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDMKKyAgICBpbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0SW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAg
ICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVz
dEZldGNoICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0
VHJhbnNsYXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRyYW5zbGF0
ZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlh
dGUgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2ll
cyAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgICByZXF1ZXN0TGluayAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0UmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICByZXF1ZXN0UmVhZHkgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVx
dWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBsaW5r
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TGluayAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBtb2R1bGVEZWNsYXJh
dGlvbkluc3RhbnRpYXRpb24gbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0
YW50aWF0aW9uIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBtb2R1bGVFdmFsdWF0aW9uICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBldmFsdWF0ZSAgICAgICAgICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKKyAgICBsb2FkTW9kdWxlICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0TG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKKyAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
UHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICBw
YXJzZU1vZHVsZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1
bGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICByZXF1ZXN0ZWRN
b2R1bGVzICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXNvbHZlICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBmZXRjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAgICAgICAgICAgbW9kdWxl
TG9hZGVyT2JqZWN0VHJhbnNsYXRlICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgICBpbnN0YW50aWF0ZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0SW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKIEBl
bmQKICovCiAKQEAgLTEzNSwyMCArMTQ1LDIxIEBAIEpTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0
Ojpwcm92aWRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0YXR1cyBzdGF0dXMsCiAg
ICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywg
YXJndW1lbnRzKTsKIH0KIAotSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJbnN0
YW50aWF0ZUFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQorSlNJbnRlcm5hbFByb21p
c2UqIE1vZHVsZUxvYWRlck9iamVjdDo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlcikKIHsKLSAgICBKU09iamVjdCogZnVuY3Rp
b24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLnJlcXVlc3RJbnN0YW50aWF0ZUFsbFB1YmxpY05hbWUoKSkpOworICAgIEpT
T2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkubG9hZE1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxs
RGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlw
ZU5vbmUpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoa2V5KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKG1vZHVsZU5hbWUpOworICAg
IGFyZ3VtZW50cy5hcHBlbmQocmVmZXJyZXIpOwogCi0gICAgcmV0dXJuIGNhbGwoZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICByZXR1cm4g
anNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKIH0KIAotSlNWYWx1ZSBNb2R1bGVMb2FkZXJP
YmplY3Q6OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVm
ZXJyZXIpCitKU0ludGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXNvbHZlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQogewogICAgIGlm
IChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCiAgICAgICAgIGRhdGFMb2coIkxv
YWRlciBbcmVzb2x2ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIG5hbWUpLCAiXG4iKTsK
QEAgLTE2MSw3ICsxNzIsNyBAQCBKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcgogICAgIHJldHVybiBk
ZWZlcnJlZC0+cHJvbWlzZSgpOwogfQogCi1KU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6ZmV0
Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKK0pTSW50ZXJuYWxQcm9taXNlKiBNb2R1
bGVMb2FkZXJPYmplY3Q6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCiB7CiAg
ICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxv
ZygiTG9hZGVyIFtmZXRjaF0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIp
OwpAQCAtMTgxLDcgKzE5Miw3IEBAIEpTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpmZXRjaChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQogICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlz
ZSgpOwogfQogCi1KU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6dHJhbnNsYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCkKK0pTSW50ZXJuYWxQcm9taXNl
KiBNb2R1bGVMb2FkZXJPYmplY3Q6OnRyYW5zbGF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
a2V5LCBKU1ZhbHVlIHBheWxvYWQpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2Fk
aW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFt0cmFuc2xhdGVdICIsIHByaW50
YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKQEAgLTE5NCw3ICsyMDUsNyBAQCBKU1Zh
bHVlIE1vZHVsZUxvYWRlck9iamVjdDo6dHJhbnNsYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBrZXksIEpTVmFsdWUgcGF5bAogICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOwogfQog
Ci1KU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2UpCitKU0ludGVybmFsUHJvbWlzZSogTW9kdWxl
TG9hZGVyT2JqZWN0OjppbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBK
U1ZhbHVlIHNvdXJjZSkKIHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0
ZSgpKQogICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2luc3RhbnRpYXRlXSAiLCBwcmludGFibGVN
b2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CkBAIC0yMjAsNiArMjMxLDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHNvdXJj
ZSwgbW9kdWxlS2V5LmltcGwoKSk7CiAKKyAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNl
Q29kZSk7CisKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9k
dWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5v
ZGU+KAogICAgICAgICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwKQEAgLTIzMywxMiArMjQ2LDE1IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5
LCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2Rl
LT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQg
PSBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CisKKyAgICBtb2R1
bGVSZWNvcmQtPmFsbG9jYXRlTW9kdWxlRW52aXJvbm1lbnQoZXhlYyk7CisKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZVJlY29yZCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxKU01vZHVs
ZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKICAgICBpZiAoIW1vZHVsZVJlY29yZCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpKTsKIApAQCAtMjUwLDYgKzI2Niwz
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVl
c3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJP
YmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxl
UmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKE9w
dGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVy
IFtsaW5rXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKKworICAgIG1vZHVs
ZVJlY29yZC0+aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZShF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpz
RHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYg
KCFtb2R1bGVSZWNvcmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAg
ICAgICBkYXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtl
eSgpLCAiXG4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
fQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCmluZGV4IGZkNmM2
MDEwODg0YTRmNDM0OWYwOWZmZjc5M2Y0MmE1Y2UyMDg0MDcuLjEyY2ZlNTZlZWJiNmM0MjdjMGVm
NzkwMjFmOTk3YzZiMGQzODRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsKKwogY2xhc3MgTW9kdWxlTG9hZGVy
T2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHJpdmF0ZToKICAgICBNb2R1bGVM
b2FkZXJPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKQEAgLTYyLDEzICs2NCwxMyBAQCBjbGFzcyBN
b2R1bGVMb2FkZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICAvLyBB
UElzIHRvIGNvbnRyb2wgdGhlIG1vZHVsZSBsb2FkZXIuCiAgICAgSlNWYWx1ZSBwcm92aWRlKEV4
ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBTdGF0dXMsIGNvbnN0IFN0cmluZyYpOwotICAgIEpTVmFs
dWUgcmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5KTsKKyAgICBK
U0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZU5h
bWUsIEpTVmFsdWUgcmVmZXJyZXIpOwogCiAgICAgLy8gUGxhdGZvcm0gZGVwZW5kZW50IGhvb2tl
ZCBBUElzLgotICAgIEpTVmFsdWUgcmVzb2x2ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG5hbWUsIEpT
VmFsdWUgcmVmZXJyZXIpOwotICAgIEpTVmFsdWUgZmV0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSBr
ZXkpOwotICAgIEpTVmFsdWUgdHJhbnNsYXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1Zh
bHVlIHBheWxvYWQpOwotICAgIEpTVmFsdWUgaW5zdGFudGlhdGUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBrZXksIEpTVmFsdWUgc291cmNlKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogcmVzb2x2ZShF
eGVjU3RhdGUqLCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpOworICAgIEpTSW50ZXJu
YWxQcm9taXNlKiBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CisgICAgSlNJbnRlcm5h
bFByb21pc2UqIHRyYW5zbGF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXls
b2FkKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogaW5zdGFudGlhdGUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgc291cmNlKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3Bw
CmluZGV4IGU4M2UzODMyNThmOTliYjA1YmJlMTFlMGM2NWRlMDRiOGUwNDllMGEuLjRjNDNjNmFm
ZjJmNjdmZjM1NzU3M2FlY2EyZGY0M2JkMzcxMTNiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQnVp
bHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNjUsNiArNjYsMTAgQEAgdm9pZCBT
ZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhcywg
c2V0UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwg
MCk7CiAKKyAgICAvLyBQcml2YXRlIGFkZCAvIGhhcyBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YWRkUHJpdmF0ZU5hbWUsIHNldFByb3RvRnVu
Y0FkZCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFzLCBE
b250RW51bSwgMSk7CisKICAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygp
LCBzZXRQcm90b0Z1bmNWYWx1ZXMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHZhbHVlcywgRG9udEVudW0pOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCB2YWx1ZXMs
IERvbnRFbnVtKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259794</attachid>
            <date>2015-08-24 17:13:33 -0700</date>
            <delta_ts>2015-08-25 11:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150824171324.patch</filename>
            <type>text/plain</type>
            <size>111279</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAwZDNiMWIzMjNjYzA4Mjk0NmVmNjJhYjFjMmI3YTE2OGVmMmQ2Li41OGVmYWM2ODBkOTM2ZDc0
ZTk3Y2VjMTg2MTdjZGVjMTk4OGE0YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMzEgQEAKIDIwMTUtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExv
YWRlcidzIHJlYWR5IC8gbGluayBwaGFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAg
KHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzLnJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlLnRo
aXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAgICAgICAgKHJlcXVlc3RMaW5rKToKKyAg
ICAgICAgKHJlcXVlc3RSZWFkeSk6CisgICAgICAgIChsaW5rKToKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAo
SlNDOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1Db2RlQmxvY2s6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFdmFs
Q29kZUJsb2NrOjpFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxv
Y2s6OkZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlVHlwZS5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpkZXN0cm95KToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VV
UkwpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9uTmFtZSk6Cisg
ICAgICAgIChKU0M6OmdldFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6
OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxp
bnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVBy
b2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5cG9pbnQpOgor
ICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1v
ZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRo
dW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZSk6
CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAg
ICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAo
SlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxl
Lmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwpOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjp1bmxpbmtDYWxscyk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25t
ZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVFbnZpcm9ubWVudDo6b2Zmc2V0T2ZNb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZUVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlRW52aXJvbm1lbnQ6Om1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52
aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpt
b2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjppbnRlcm5hbFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29y
ZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFsbG9jYXRlTW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAo
SlNDOjppZGVudGlmaWVyVG9KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6Z2V0RXhwb3J0ZWROYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpnZXRN
b2R1bGVOYW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW5zdGFudGlh
dGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUtleSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpleHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OlJl
c29sdmVRdWVyeTo6UmVzb2x2ZVF1ZXJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OlJlc29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNoOjplcXVhbCk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6Om1vZHVsZUxv
YWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAgICAgIChKU0M6
Om1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVy
T2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKworMjAx
NS0wOC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAg
ICBbRVM2XSBSZXR1cm4gSlNJbnRlcm5hbFByb21pc2UgYXMgcmVzdWx0IG9mIGV2YWx1YXRlTW9k
dWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgx
NzMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OGRjMGI2MWI2ZmE4MmI4MWE2
MTNjMDYxOGRmYWExYTlmMWI3MmY0Li5mMmExZWY2MzllMmQ1MDhjMjZhY2IyNTRiYTM5MDE2YmFh
ZTc1NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Nyw2ICsxNjk3LDkg
QEAKIAkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNTBFNTU1Nzc1
MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVl
SlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLzsgfTsK
IAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBW
TS5jcHAgKi87IH07CisJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJP
YmplY3QuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi87IH07
CisJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JC
RTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9Owor
CQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0
LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0xNzE5LDYgKzE3
MjIsOCBAQAogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYz
Q0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9OwogCQlF
MzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0Qy
MzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CisJCUUzRDIzOUM5MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oICovOyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3
NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1NDcsNiAr
MzU1Miw5IEBACiAJCUUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFk
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXRpYWxpemVU
aHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMThFM0E1NjBERjky
NzhDMDBEOTBCMzQgLyogVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5n
ID0gMDsgcGF0aCA9IFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVj
aWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQlFMThFM0E1NzBE
RjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBs
aW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNM
YW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CisJCUUz
MDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBMzFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWZsZWN0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNTcxLDYgKzM1NzksOCBAQAogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUg
LyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJl
Y29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNjFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYy
NjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NTgsNiArNDc2OCwxMCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4
RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAv
KiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5oICovLAorCQkJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmNwcCAqLywKKwkJCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oICovLAorCQkJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAv
KiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8sCisJCQkJRTMxOENCQkYxQjhBRUY1MTAw
QTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi8sCiAJCQkJRTM5REE0QTQxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlFMzlEQTRBNTFCN0U4
QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQlBNzI3MDA3ODBEQUM2MDU2
MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCkBAIC01Nzc2LDYgKzU3OTAsNyBAQAog
CQkJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuanMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVCMUI2NUQ5QTMwMDlEQjFFRiAvKiBJ
dGVyYXRvci5wcm90b3R5cGUuanMgKi8sCisJCQkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8q
IE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLywKIAkJCQk3Q0Y5QkM1QzFCNjVEOUIxMDA5REIxRUYg
LyogT2JqZWN0Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUQxQjY1RDlCMTAwOURCMUVG
IC8qIE9wZXJhdGlvbnMuUHJvbWlzZS5qcyAqLywKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1MDBEMDA3
NTAgLyogUHJvbWlzZS5wcm90b3R5cGUuanMgKi8sCkBAIC02MTEwLDYgKzYxMjUsNyBAQAogCQkJ
CTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZHTElD
TVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3QTBCOENDMDA3NzNBRDggLyog
REZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0QyMzlDOTFC
ODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhl
YWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNjI0Miw2ICs2MjU4LDcgQEAK
IAkJCQk3QjAyNDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdU
b0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBG
VExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzE4Q0JDMTFCOEFFRjUx
MDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMjM1QkRFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsYXRp
b25JbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTcwMTksNiArNzAzNiw3IEBACiAJCQlpc2EgPSBQ
QlhSZXNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAorCQkJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2Fk
ZXJPYmplY3QuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYwMDcyRUI2
RCAvKiBmcmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtNzM1Myw2ICs3MzcxLDcgQEAKIAkJCQkw
RjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNEMjM5QzgxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZS
ZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0MzEsNiArNzQ1MCw3IEBACiAJCQkJMEZE
MTIwMzMxQThDODVCRDAwMEY1MjgwIC8qIEZUTEpTQ2FsbFZhcmFyZ3MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY5RDMzOTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMzNGNTA4NDFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE4Q0JDMDFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQkQxQjcxQjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2Vy
dGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgwNzksNiArODA5OSw3IEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
MEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9E
VUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MDg2LDYgKzgxMDcsNyBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmln
ICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFC
TEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC04MDkz
LDYgKzgxMTUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9y
SlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01P
RFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsK
IAkJfTsKQEAgLTgxMDAsNiArODEyMyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcy
Q0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1l
ID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgxMDcsNiArODEzMSw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFC
RjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODExNCw2ICs4MTM5LDcgQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25m
aWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVO
QUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTgx
MjEsNiArODE0Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xF
eGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVf
RVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2Zp
bGluZzsKIAkJfTsKQEAgLTgxMjgsNiArODE1NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBD
MzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9
OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTU2LDYgKzgxODQsNyBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxF
X0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxNjMsNiAr
ODE5Miw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRD
b3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01P
RFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJ
CX07CkBAIC04MTcxLDYgKzgyMDEsNyBAQAogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUJVSUxEX1ZBUklBTlRTID0gbm9ybWFsOworCQkJ
CUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1l
ID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgxNzgsNiArODIwOSw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2
Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsK
IAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxODUsNiArODIxNyw3IEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURB
RkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJ
fTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODE5Miw2ICs4MjI1LDcgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MzIzLDYgKzgzNTcsNyBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0g
RU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNl
cyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CiAJCQl9OwpAQCAtODMzMiw2ICs4MzY3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlF
OEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJ
CQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNDEs
NiArODM3Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3Jp
cHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2
X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVy
aXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2
ZWQgU291cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzUwLDYgKzgzODcsNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFD
OTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9N
T0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8u
cGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9
OwpAQCAtODM1OSw2ICs4Mzk3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwog
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAg
LyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9EVUNUX05B
TUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7
CkBAIC04MzY3LDYgKzg0MDYsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAv
KiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
RU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1RfTkFN
RSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNl
OwpAQCAtODM3NSw2ICs4NDE1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwog
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAg
LyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9EVUNUX05B
TUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVj
dGlvbjsKQEAgLTgzOTgsNiArODQzOSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFF
OUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJ
bmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKQEAgLTg0MDUsNiArODQ0Nyw3IEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5
MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01P
RFVMRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJ
CQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKQEAgLTg0MjcsNiArODQ3MCw3IEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
NURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwog
CQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwppbmRleCA2NWEwNTM5NjRk
ZjQ4NzczNWU2NzVmNGI5MTc4MzY4MTBjZGQ5YTMyLi44MzkwODZlMGMyNzhiYzIxYTVjMjg5YzA1
ZjJkYjVjNzY5ZmFlMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKQEAgLTE5Miw3ICsxOTIsNyBAQCBmdW5jdGlvbiBj
b21taXRJbnN0YW50aWF0ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSkKICAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CiAKICAgICB2YXIgZGVw
ZW5kZW5jaWVzID0gW107Ci0gICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG5ldyBATWFwKCk7Cisg
ICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7CiAg
ICAgbW9kdWxlUmVjb3JkLnJlZ2lzdHJ5RW50cnkgPSBlbnRyeTsKICAgICB2YXIgcmVxdWVzdGVk
TW9kdWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhtb2R1bGVSZWNvcmQpOwogICAgIGZvciAo
dmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsg
KytpKSB7CkBAIC0zNDksNyArMzQ5LDcgQEAgZnVuY3Rpb24gcmVxdWVzdFJlc29sdmVEZXBlbmRl
bmNpZXMoa2V5KQogICAgIHZhciByZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZSA9IHRoaXMucmVx
dWVzdEluc3RhbnRpYXRlKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKICAgICAgICAgdmFy
IGRlcExvYWRzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbnRyeS5k
ZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBw
YWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAgICAgbGV0IHBhaXIgPSBlbnRy
eS5kZXBlbmRlbmNpZXNbaV07CiAKICAgICAgICAgICAgIC8vIEhvb2sgcG9pbnQuCiAgICAgICAg
ICAgICAvLyAxLiBMb2FkZXIucmVzb2x2ZS4KQEAgLTM2MSwxNiArMzYxLDI1IEBAIGZ1bmN0aW9u
IHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKIAogICAgICAgICAgICAgICAgIC8vIFJl
Y3Vyc2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBpcyBiZWlu
ZyByZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgogICAgICAgICAgICAgICAgIC8vIFN0b3Ag
dHJhY2luZyB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIC8vIEJ1
dCB0byByZXRyaWV2ZSB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSByZWNvcmQgY29ycmVjdGx5LAor
ICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGluc3RhbnRpYXRpb24g
Zm9yIHRoZSBkZXBlbmRlbnQgbW9kdWxlLgorICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxl
LCByZWFjaGluZyBoZXJlLCB0aGUgbW9kdWxlIGlzIHN0YXJ0aW5nIHJlc29sdmluZyB0aGUgZGVw
ZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIC8vIEJ1dCB0aGUgbW9kdWxlIG1heSBvciBtYXkg
bm90IHJlYWNoIHRoZSBpbnN0YW50aWF0aW9uIHBoYXNlIGluIHRoZSBsb2FkZXIncyBwaXBlbGlu
ZS4KKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3YWl0IGZvciB0aGUgUmVzb2x2ZURlcGVuZGVu
Y2llcyBmb3IgdGhpcyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUgY2lyY3VsYXIgcHJvbWlzZSBj
aGFpbiBhbmQKKyAgICAgICAgICAgICAgICAvLyByZWplY3RlZCBieSB0aGUgUHJvbWlzZXMgcnVu
dGltZS4gU2luY2Ugb25seSB3ZSBuZWVkIGlzIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlLCBpbnN0
ZWFkIG9mIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAvLyB0aGUgUmVzb2x2ZURlcGVuZGVuY2ll
cyBmb3IgdGhpcyBtb2R1bGUsIHdlIGp1c3Qgd2FpdCBJbnN0YW50aWF0ZSBmb3IgdGhpcy4KICAg
ICAgICAgICAgICAgICBpZiAoZGVwRW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykgewotICAgICAg
ICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZGVwRW50cnkubW9kdWxlOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGVwRW50cnk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBF
bnRyeS5pbnN0YW50aWF0ZS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVzb2x2ZURlcGVu
ZGVuY2llcyhkZXBLZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgICAgICAgICAg
ICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgcmVzdWx0IHByb21pc2Ugb2YgdGhlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCBzaG91
bGQgYmUgZnVsZmlsbGVkIHdpdGgKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdHJ5
IGVudHJ5LgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L2xvYWRlci9wdWxsLzY2Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5t
b2R1bGU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0pOwpAQCAtMzk2LDYgKzQwNSw5MCBAQCBmdW5jdGlvbiByZXF1
ZXN0SW5zdGFudGlhdGVBbGwoa2V5KQogICAgIHJldHVybiB0aGlzLnJlcXVlc3RSZXNvbHZlRGVw
ZW5kZW5jaWVzKGtleSk7CiB9CiAKK2Z1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSkKK3sKKyAgICAv
LyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWxpbmsKKworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkp
OworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJy
ZWQgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAgICAgIGRl
ZmVycmVkLkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgZW50cnkubW9kdWxlKTsKKyAgICAgICAg
cmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIHZhciBsb2FkZXIgPSB0aGlz
OworICAgIHJldHVybiB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpLnRoZW4oZnVuY3Rp
b24gKGVudHJ5KSB7CisgICAgICAgIGxvYWRlci5saW5rKGVudHJ5KTsKKyAgICAgICAgcmV0dXJu
IGVudHJ5OworICAgIH0pOworfQorCitmdW5jdGlvbiByZXF1ZXN0UmVhZHkoa2V5KQoreworICAg
IC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtcmVhZHkKKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHJldHVybiB0aGlz
LnJlcXVlc3RMaW5rKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgbG9hZGVy
Lm1vZHVsZUV2YWx1YXRpb24oZW50cnkubW9kdWxlKTsKKyAgICB9KTsKK30KKworLy8gTGlua2lu
ZyBzZW1hbnRpY3MuCisKK2Z1bmN0aW9uIGxpbmsoZW50cnkpCit7CisgICAgLy8gaHR0cHM6Ly93
aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jbGluaworCisgICAgInVzZSBzdHJpY3QiOworCisgICAg
Ly8gRklYTUU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBvcHRpb25h
bEluc3RhbmNlLgorICAgIC8vIFNvIExpbmsncyBzdGVwIDMgaXMgc2tpcHBlZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcxCisKKyAgICBpZiAo
ZW50cnkuc3RhdGUgPT09IHRoaXMuUmVhZHkpCisgICAgICAgIHJldHVybjsKKyAgICBlbnRyeS5z
dGF0ZSA9IHRoaXMuUmVhZHk7CisKKyAgICAvLyBGSVhNRTogU2luY2Ugd2UgYWxyZWFkeSBoYXZl
IHRoZSAiZGVwZW5kZW5jaWVzIiBmaWVsZCwKKyAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24gd2l0aCB0aGUgY29ycmVjdCBvcmRlcgorICAgIC8vIHdpdGhv
dXQgY29uc3RydWN0aW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGJ5IGNhbGxpbmcgZGVwZW5kZW5j
eUdyYXBoLgorICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7CisgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICB2YXIgcGFpciA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgdGhp
cy5saW5rKHBhaXIudmFsdWUucmVnaXN0cnlFbnRyeSk7CisgICAgfQorCisgICAgdGhpcy5tb2R1
bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlKTsKK30KKworLy8gTW9kdWxl
IHNlbWFudGljcy4KKworZnVuY3Rpb24gbW9kdWxlRXZhbHVhdGlvbihtb2R1bGVSZWNvcmQpCit7
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZWV2YWx1YXRpb24KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChtb2R1
bGVSZWNvcmQuZXZhbHVhdGVkKQorICAgICAgICByZXR1cm47CisgICAgbW9kdWxlUmVjb3JkLmV2
YWx1YXRlZCA9IHRydWU7CisKKyAgICB2YXIgZW50cnkgPSBtb2R1bGVSZWNvcmQucmVnaXN0cnlF
bnRyeTsKKworICAgIC8vIFRoZSBjb250ZW50cyBvZiB0aGUgW1tSZXF1ZXN0ZWRNb2R1bGVzXV0g
aXMgY2xvbmVkIGludG8gZW50cnkuZGVwZW5kZW5jaWVzLgorICAgIHZhciBkZXBlbmRlbmNpZXMg
PSBlbnRyeS5kZXBlbmRlbmNpZXM7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVu
ZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcGFpciA9IGRl
cGVuZGVuY2llc1tpXTsKKyAgICAgICAgdmFyIHJlcXVpcmVkTW9kdWxlUmVjb3JkID0gcGFpci52
YWx1ZTsKKyAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKHJlcXVpcmVkTW9kdWxlUmVjb3Jk
KTsKKyAgICB9CisgICAgdGhpcy5ldmFsdWF0ZShtb2R1bGVSZWNvcmQpOworfQorCiBmdW5jdGlv
biBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsK
QEAgLTQwNiwxMSArNDk5LDcgQEAgZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCByZWZl
cnJlcikKICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUg
aWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgogICAgIC8vIEZvciBleGFtcGxl
LCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4K
ICAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1vZHVsZU5hbWUsIHJlZmVycmVyKS50aGVuKGZ1bmN0
aW9uIChrZXkpIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdywgd2UgZG9uJ3QgaW1wbGVtZW50IHRo
ZSBsaW5raW5nIHBoYXNlIHlldC4KLSAgICAgICAgLy8gU28gaGVyZSwgd2UganVzdCBjYWxsIHJl
cXVlc3RJbnN0YW50aWF0ZUFsbCB0byBvbmx5IHBlcmZvcm0gdGhlIG1vZHVsZSBsb2FkaW5nLgot
ICAgICAgICAvLyBBdCBsYXN0LCBpdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1ZXN0UmVh
ZHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDgxNzIKLSAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KTsK
KyAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVhZHkoa2V5KTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmlu
ZGV4IDRlNWE5NmMzOGVkODYyNzc0NDJjYTI2MTljNWM4Y2FjMjljZTgyYWEuLjAyMGVjMjQ4OWVm
ZTNhMzMyOTg1YjcwOTEwZGVjY2Y3OGQ0OWE5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE1Nyw2ICsxNTcsNyBAQAogICAg
ICAgICAiYnl0ZWNvZGVzIiA6IFsKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X3Byb2dy
YW1fcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9ldmFsX3Byb2xv
Z3VlIiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJv
bG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZDAzMWVhOTEyZmNlN2U1NDE2Zjc2ZDRjNjY2
M2IzMmUxMjc4NjRhMy4uMGIzMDlmNGRjMmE1ZmM5NzU1OGVlNTA2YjM5NDk2YWE1MDE2Y2NjZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMw
NDQsNiArMzA0NCwxMSBAQCBDb2RlQmxvY2sqIFByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KCkKICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5jb2RlQmxvY2soKTsKIH0KIAorQ29kZUJsb2NrKiBNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OjpyZXBsYWNlbWVudCgpCit7CisgICAgcmV0dXJuIGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7Cit9CisKIENvZGVCbG9jayog
RXZhbENvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewogICAgIHJldHVybiBqc0Nhc3Q8RXZhbEV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9jaygpOwpAQCAtMzA1OSw2ICsz
MDY0LDExIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIFByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxp
dHlMZXZlbEludGVybmFsKCkKICAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVs
KHRoaXMpOwogfQogCitERkc6OkNhcGFiaWxpdHlMZXZlbCBNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCit7CisgICAgcmV0dXJuIERGRzo6cHJvZ3JhbUNh
cGFiaWxpdHlMZXZlbCh0aGlzKTsKK30KKwogREZHOjpDYXBhYmlsaXR5TGV2ZWwgRXZhbENvZGVC
bG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogewogICAgIHJldHVybiBERkc6OmV2YWxD
YXBhYmlsaXR5TGV2ZWwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggMzgxODgwZDYzZWRhMjY1NzBhNTdiM2ExMzZjNWE4Yjg1OGY4NjMzMy4u
NThhNjMwMmM4NTg5NzQ4MTM5Y2JmZjMzOTFmNzRiMzg2Y2UwZjFhZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTA5MiwxMCArMTA5MiwyOSBAQCBj
bGFzcyBQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAjZW5kaWYK
IH07CiAKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJs
b2NrIHsKK3B1YmxpYzoKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9j
a1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29k
ZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgeworICAgIH0KKworICAgIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2soTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNT
Y29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1
bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2Nr
KG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRl
ciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyNpZiBFTkFCTEUo
SklUKQorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
SW50ZXJuYWwoKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwogY2xhc3MgRXZhbENvZGVCbG9jayA6
IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogcHVibGljOgogICAgIEV2YWxDb2RlQmxvY2soQ29w
eVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikKLSAgICA6IEdsb2JhbENvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhD
b3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAgICB9CiAgICAgICAgIApAQCAtMTEyMCw3
ICsxMTM5LDcgQEAgY2xhc3MgRXZhbENvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sg
ewogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgOiBwdWJsaWMgQ29kZUJsb2NrIHsKIHB1YmxpYzoK
ICAgICBGdW5jdGlvbkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0aW9uQ29kZUJs
b2NrJiBvdGhlcikKLSAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAg
ICAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKaW5kZXggYjhlMTA3ZGNm
NmI2NzBjZDgyODNlYmZhNTM1MWY3YzYzNDJmMDIzYy4uOTk0MWQ1MTRjZGQwYzVmZmUzMGYxYTg4
NGYzYmE1NGM2ZjAwZjg5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVU
eXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gQ29kZVR5
cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlIH07CitlbnVtIENvZGVUeXBl
IHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSwgTW9kdWxlQ29kZSB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTc0YjFlNDgyMzg5OGIzODAxNGQ1MTgy
OWVhYjdmNzEzMDlkYmIwYS4uNTIxYThlMDhiNzNkOGM1N2RmMDgyYTc5YzM3ZmRlNDk4NzY1Njc4
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xh
c3NJbmZvIFVubGlua2VkQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZENvZGVCbG9jayIs
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRDb2RlQmxvY2spIH07CiBjb25zdCBD
bGFzc0luZm8gVW5saW5rZWRHbG9iYWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkR2xv
YmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxp
bmtlZEdsb2JhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKSB9
OworY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZv
ID0geyAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sp
IH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJV
bmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKSB9OwogCkBAIC0yOTIsNiArMjkzLDEzIEBAIHZvaWQgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0KIAordm9p
ZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit9
CisKIFVubGlua2VkQ29kZUJsb2NrOjp+VW5saW5rZWRDb2RlQmxvY2soKQogewogfQpAQCAtMzAx
LDYgKzMwOSwxMSBAQCB2b2lkIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCiAgICAganNDYXN0PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8VW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2soKTsKK30KKwogdm9pZCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQogewogICAgIGpzQ2FzdDxVbmxpbmtlZEV2YWxDb2RlQmxvY2sqPihjZWxsKS0+
flVubGlua2VkRXZhbENvZGVCbG9jaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAzMjJkMjYxOTlmNzk3YzEwMzgxZGQ0
NTg5M2JkNTM1M2ZmMWI2YjQ2Li41ZjI1YjUwNTMzMzY0ODNjNDVmZGJhMmNjNzcxMTQ2N2MzZWVl
MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaApAQCAtNTE0LDYgKzUxNCw0NCBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogICAgIERFQ0xB
UkVfSU5GTzsKIH07CiAKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5h
bCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7Citwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBDb2RlQ2FjaGU7CisgICAgc3RhdGljIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY3JlYXRlKFZNKiB2bSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisgICAgewor
ICAgICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+
aGVhcCkpIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPnVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgaW5mbyk7CisgICAgICAgIGluc3RhbmNlLT5m
aW5pc2hDcmVhdGlvbigqdm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCitw
dWJsaWM6CisgICAgdHlwZWRlZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisKKyAgICB2b2lkIHNldFZhcmlhYmxlRGVjbGFyYXRpb25zKGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGVudmlyb25tZW50KSB7IG1fdmFyRGVjbGFyYXRpb25zID0gZW52aXJvbm1lbnQ7
IH0KKyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJpYWJsZURlY2xhcmF0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fdmFyRGVjbGFyYXRpb25zOyB9CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6CisgICAgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSwgR2xvYmFsQ29kZSwgaW5mbykKKyAgICB7CisgICAgfQorCisgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBtX3ZhckRlY2xhcmF0aW9uczsKKworcHVibGljOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87Cit9OworCiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMg
VW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29k
ZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggY2MzNGE2NjViZTMwZGIyOWUwZGFkZTNjN2Q4YTUzYTQ3YTBmNWY3Mi4u
NTA1YTM5OTgxOTMzMjgzOWNlYTllMmI0YmZkZTIzMDNmOWFlYjU2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC05Nyw2ICs5
Nyw3IEBAIFN0cmluZyBTdGFja0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCgpIGNvbnN0CiAgICAg
CiAgICAgc3dpdGNoIChjb2RlVHlwZSkgewogICAgIGNhc2UgU3RhY2tGcmFtZUV2YWxDb2RlOgor
ICAgIGNhc2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rp
b25Db2RlOgogICAgIGNhc2UgU3RhY2tGcmFtZUdsb2JhbENvZGU6CiAgICAgICAgIGlmICghc291
cmNlVVJMLmlzRW1wdHkoKSkKQEAgLTExOCw2ICsxMTksOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6
ZnJpZW5kbHlGdW5jdGlvbk5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIGNvbnN0CiAgICAgY2Fz
ZSBTdGFja0ZyYW1lRXZhbENvZGU6CiAgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNvZGUiOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgorICAgICAgICB0
cmFjZUxpbmUgPSAibW9kdWxlIGNvZGUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YWNr
RnJhbWVOYXRpdmVDb2RlOgogICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VM
aW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSwgc3RhY2tGcmFtZUNhbGxl
ZSkuaW1wbCgpOwpAQCAtNDUxLDYgKzQ1NSw4IEBAIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUg
Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKICAgICBzd2l0Y2gg
KHZpc2l0b3ItPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkV2
YWw6CiAgICAgICAgIHJldHVybiBTdGFja0ZyYW1lRXZhbENvZGU7CisgICAgY2FzZSBTdGFja1Zp
c2l0b3I6OkZyYW1lOjpNb2R1bGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lTW9kdWxlQ29k
ZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkZ1bmN0aW9uOgogICAgICAgICByZXR1
cm4gU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6
Okdsb2JhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKaW5kZXggMTMyYzk1ZDE3ZjRlMTA5YmEzN2JiY2IwMTg3MjczMmIyZjk1MTE2Zi4uZmZi
NzU1NjZhYTdmYTcxNzRhZTJmOWMwNmU5ODFiOTczNzQ3YjI2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTc2LDYgKzc2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgewogICAgICAgICBT
dGFja0ZyYW1lR2xvYmFsQ29kZSwKICAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAorICAgICAg
ICBTdGFja0ZyYW1lTW9kdWxlQ29kZSwKICAgICAgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwK
ICAgICAgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBhMWU5ZjEyYjMx
NjEwOWNkMGM1MDgxNWIxNWUxMDdjZGY1NDQ2ODM2Li44N2JlY2Q1MmU0YjFiMjgxNjQ5YzI3ZTNm
YmVhODI0ZjMwZTRhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMTgxLDYgKzE4MSw4IEBAIFN0YWNrVmlzaXRvcjo6
RnJhbWU6OkNvZGVUeXBlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNvZGVUeXBlKCkgY29uc3QKICAg
ICBzd2l0Y2ggKGNvZGVCbG9jaygpLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsQ29kZToK
ICAgICAgICAgcmV0dXJuIENvZGVUeXBlOjpFdmFsOworICAgIGNhc2UgTW9kdWxlQ29kZToKKyAg
ICAgICAgcmV0dXJuIENvZGVUeXBlOjpNb2R1bGU7CiAgICAgY2FzZSBGdW5jdGlvbkNvZGU6CiAg
ICAgICAgIHJldHVybiBDb2RlVHlwZTo6RnVuY3Rpb247CiAgICAgY2FzZSBHbG9iYWxDb2RlOgpA
QCAtMTk5LDYgKzIwMSw5IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5h
bWUoKQogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6CiAgICAgICAgIHRyYWNlTGluZSA9IEFTQ0lJ
TGl0ZXJhbCgiZXZhbCBjb2RlIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29kZVR5cGU6
Ok1vZHVsZToKKyAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJtb2R1bGUgY29kZSIp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVUeXBlOjpOYXRpdmU6CiAgICAgICAgIGlm
IChjYWxsZWUpCiAgICAgICAgICAgICB0cmFjZUxpbmUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5h
bWUoY2FsbEZyYW1lKCksIGNhbGxlZSkuaW1wbCgpOwpAQCAtMjE5LDYgKzIyNCw3IEBAIFN0cmlu
ZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwoKQogCiAgICAgc3dpdGNoIChjb2RlVHlw
ZSgpKSB7CiAgICAgY2FzZSBDb2RlVHlwZTo6RXZhbDoKKyAgICBjYXNlIENvZGVUeXBlOjpNb2R1
bGU6CiAgICAgY2FzZSBDb2RlVHlwZTo6RnVuY3Rpb246CiAgICAgY2FzZSBDb2RlVHlwZTo6R2xv
YmFsOiB7CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBjb2RlQmxvY2soKS0+b3duZXJFeGVj
dXRhYmxlKCktPnNvdXJjZVVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5oCmluZGV4IDAwMzZhNzg5YzU4ZTE5YWUxM2IwZDRhYmZiNzU1
ODNlOWJiNDY3MzQuLjQxYmZjNzA4ODIwZWNjZmNhYzczNWIzOWI0MjI0NzEzZWJlNTJkNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgK
QEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsKICAgICAgICAgICAgIEdsb2Jh
bCwKICAgICAgICAgICAgIEV2YWwsCiAgICAgICAgICAgICBGdW5jdGlvbiwKKyAgICAgICAgICAg
IE1vZHVsZSwKICAgICAgICAgICAgIE5hdGl2ZQogICAgICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggYmJjODUyM2Y1YmIyM2EzOTMwYzA5NGVkNDg2MjE3NDY0ZDg2YzU1
MS4uODRmMzZkNTQwZjNjYmFhMWFlY2M1NTNhZGY4YzQ2MTRiN2JkZTg3MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcApAQCAtNDg2LDYgKzQ4Niw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIAogICAg
IHN3aXRjaCAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6
CisgICAgY2FzZSBNb2R1bGVDb2RlOgogICAgIGNhc2UgRXZhbENvZGU6CiAgICAgICAgIG1fY29k
ZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggZTkyNmY1MmRj
NzZkOWVkZTJmMGUzYTViM2RjMjZiMzM2YTkyZjg1ZC4uMmE1ODQzNzAwYzIxNTY1YTFjMDJlYmNi
MDkwNGU0YzM2ZWY5YThlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKQEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZN
JiB2bSkKICAgICBBU1NFUlQobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPT0gNjQpOwog
I2VuZGlmCiAgICAgQVNTRVJUKFN0cmluZ1R5cGUgPT0gNik7Ci0gICAgQVNTRVJUKE9iamVjdFR5
cGUgPT0gMTgpOwotICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMTkpOworICAgIEFTU0VS
VChPYmplY3RUeXBlID09IDIwKTsKKyAgICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDIxKTsK
ICAgICBBU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAxKTsKICAgICBBU1NFUlQoSW1w
bGVtZW50c0hhc0luc3RhbmNlID09IDIpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlID09IDgpOwpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChHbG9iYWxDb2RlID09IDApOwogICAgIEFTU0VS
VChFdmFsQ29kZSA9PSAxKTsKICAgICBBU1NFUlQoRnVuY3Rpb25Db2RlID09IDIpOworICAgIEFT
U0VSVChNb2R1bGVDb2RlID09IDMpOwogCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0
eSA9PSAwLCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9wZXJ0eSBSZXN1bHRUeXBlIGlzID09IDAi
KTsKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhciA9PSAxLCAiTExJbnQgYXNzdW1lcyBHbG9i
YWxWYXIgUmVzdWx0VHlwZSBpcyA9PSAxIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnQuY3BwCmluZGV4IDlkMDAxMDZiOWE4Mjc2ZjQ4NDIwZjZiNTQ2
YzMyZDU5MzBhMzZiNjguLmE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2ZlMmE1NWFiNzgwYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3Bw
CkBAIC05NywxMiArOTcsMzAgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJ
VENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJv
Z3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSkpOwogfQogCitzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2lu
dChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQoreworI2lmIEVOQUJMRShKSVQpCisgICAg
aWYgKHZtLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAg
ICAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxl
UHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoCisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3By
b2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspKSk7Cit9CisKIHZvaWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrKQogewogICAgIHN3aXRjaCAoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBH
bG9iYWxDb2RlOgogICAgICAgICBzZXRQcm9ncmFtRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTW9kdWxlQ29kZToKKyAgICAgICAgc2V0TW9kdWxl
UHJvZ3JhbUVudHJ5cG9pbnQodm0sIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEV2YWxDb2RlOgogICAgICAgICBzZXRFdmFsRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAKaW5kZXggOGFiOTZiMzA0NzVmZDU1NGRlZjhiMzI2NjI0OTY2MzJlYWY5NmQ5YS4uYWY2
ODg0ZTVlZGU3YmViZTA0ZjM3YjNmMDAwOTFlZTE2Zjk1MTE3MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgInByb2dyYW0iKTsKIH0KIAorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHIobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCAibW9kdWxlX3Byb2dyYW0iKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgTExJbnQKIAogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKaW5kZXggMGQxYmU2YmRhZWFkZjc5
NDg3Y2U5MDY2ODI2NDY4NTE4OGE4YmQxMi4uOTViMGY0NDg0OGJjYzUyOWQxNTAzZTI4OWI5M2Vm
ZTM3MDVjODMxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgK
QEAgLTQ2LDYgKzQ2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNWFkODM0NjVjZDFhNGU4ZjRlOTY0YTY3
ZWQwOGExNTdlN2ZhMzc1YS4uZTFjMDBmOWQyMDI3MjBiYTI4ZmNmYWI0NTMxNTA5NDU1ZTUwMzU1
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMTYxLDggKzE2MSw4IEBAIGNvbnN0IFNsb3dQdXRBcnJheVN0b3JhZ2VT
aGFwZSA9IDMwCiAKICMgVHlwZSBjb25zdGFudHMuCiBjb25zdCBTdHJpbmdUeXBlID0gNgotY29u
c3QgT2JqZWN0VHlwZSA9IDE4Ci1jb25zdCBGaW5hbE9iamVjdFR5cGUgPSAxOQorY29uc3QgT2Jq
ZWN0VHlwZSA9IDIwCitjb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyMQogCiAjIFR5cGUgZmxhZ3Mg
Y29uc3RhbnRzLgogY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKQEAgLTE3Niw2ICsx
NzYsNyBAQCBjb25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKIGNv
bnN0IEdsb2JhbENvZGUgPSAwCiBjb25zdCBFdmFsQ29kZSA9IDEKIGNvbnN0IEZ1bmN0aW9uQ29k
ZSA9IDIKK2NvbnN0IE1vZHVsZUNvZGUgPSAzCiAKICMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0
aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgogY29uc3QgTExJbnRSZXR1cm5QQyA9
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKQEAgLTg4NCw2ICs4ODUsMTEgQEAgX2xsaW50X3By
b2dyYW1fcHJvbG9ndWU6CiAgICAgZGlzcGF0Y2goMCkKIAogCitfbGxpbnRfbW9kdWxlX3Byb2dy
YW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5v
dEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2Vf
cHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCiBfbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAg
ICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBk
aXNwYXRjaCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggMTYzYjExNjEwNDFjY2RiMzVhZDUyOTc2Y2FmZTZiZDExZGZjOGI3
Ny4uNGZkYmQ5MzE0MzA4ZmI5OTUxNDUzNjgzMzgzZTFiYTRlMmM4MmY3OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yODMs
NiArMjgzLDcgQEAKICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKFN0cmluZykgXAogICAg
IG1hY3JvKE1hcCkgXAorICAgIG1hY3JvKFNldCkgXAogICAgIG1hY3JvKFByb21pc2UpIFwKICAg
ICBtYWNybyhJbnRlcm5hbFByb21pc2UpIFwKICAgICBtYWNybyhhYnMpIFwKQEAgLTMwNyw2ICsz
MDgsNyBAQAogICAgIG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAogICAgIG1hY3Jv
KGdldCkgXAogICAgIG1hY3JvKHNldCkgXAorICAgIG1hY3JvKGFkZCkgXAogCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApp
bmRleCA1ZmZiOGRiN2YwNTA1YjRkMTYyNmEzNjg0N2EyODgxZmI0YTE3NTIzLi5mYjIxYjU1Mzdm
NDg3ZjQ1OWFlZTg5NDkzYWYyNDA4NzA5NjNhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMTU5LDcgKzE1OSwxOCBAQCB2b2lkIFNjcmlw
dEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaykKICAg
ICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBNb2R1bGVDb2RlOiB7CisgICAg
ICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihnZW5lcmlj
Q29kZUJsb2NrKTsKKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisKKyAg
ICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OworICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBjb2RlQmxv
Y2s7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRXZhbENvZGU6IHsKICAgICAg
ICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0
aGlzKTsKICAgICAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8RXZh
bENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwpAQCAtMjI2LDcgKzIzNywxNyBAQCBSZWZQ
dHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgICAg
ICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5n
ZXQoKSwgc2NvcGUsCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigp
LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVtbigpKSk7CiAgICAgfQotICAgIAorCisg
ICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsK
KyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5t
X21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rp
b24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
CisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCisgICAgICAgICAgICBleGVjdXRhYmxlLT5zb3Vy
Y2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVtbigpKSk7Cisg
ICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRh
YmxlOjppbmZvKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhp
cyk7CkBAIC0yODMsNiArMzA0LDE3IEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVj
dXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcigKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKKyAgICBpZiAoY2xhc3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmluZm8oKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDYWxs
KTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4o
CisgICAgICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPmJhc2Vs
aW5lVmVyc2lvbigpKTsKKyAgICAgICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IHJl
c3VsdCA9IGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAg
Q29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNlbGluZSkpOworICAgICAgICByZXN1bHQt
PnNldEFsdGVybmF0aXZlKGJhc2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6
OmluZm8oKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBiYXNlbGlu
ZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oCkBAIC0zODMsNiArNDE1LDIyIEBA
IHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRp
Y19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCktPlByb2dyYW1FeGVjdXRhYmxlOjp+UHJv
Z3JhbUV4ZWN1dGFibGUoKTsKIH0KIAorY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVj
dXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUpIH07CisKK01vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICA6IFNj
cmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSkKK3sKKyAgICBtX3R5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0
aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKSB8fCBleGVjLT52bSgp
LmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgZXhlYy0+dm0oKS5mdW5jdGlvbkhhc0V4
ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJjZUlEKCksIG1fdHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQpOworfQorCit2b2lk
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBz
dGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpLT5Nb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6fk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCk7Cit9CisKIGNvbnN0IENsYXNz
SW5mbyBGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIs
ICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rp
b25FeGVjdXRhYmxlKSB9OwogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCkBAIC01MzUsNiArNTgzLDQ2IEBA
IHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2Rl
KCk7CiB9CiAKK0pTT2JqZWN0KiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQ
cm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4o
CisgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNl
UGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgIGlmIChtb2R1bGVQcm9n
cmFtTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGVycm9yLmlzVmFs
aWQoKSk7CisgICAgcmV0dXJuIGVycm9yLnRvRXJyb3JPYmplY3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgbV9zb3VyY2UpOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtD
YWxscygpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoIW1faml0Q29kZUZvckNhbGwpCisg
ICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX21vZHVsZVByb2dyYW1Db2RlQmxv
Y2spOworICAgIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+dW5saW5rQ2FsbHMoKTsKKyNlbmRp
ZgorfQordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAg
IFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQor
ICAgICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVn
YXRlKHZpc2l0b3IpOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNv
ZGUoKQoreworICAgIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IG51bGxwdHI7CisgICAgbV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICBCYXNlOjpjbGVhckNv
ZGUoKTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxp
bmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0
aW9uQ29kZUJsb2NrKiByZXN1bHQ7CkBAIC02MjMsNiArNzExLDE1IEBAIHZvaWQgRXhlY3V0YWJs
ZUJhc2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgICAgIG91dC5wcmlu
dCgiUHJvZ3JhbUV4ZWN1dGFibGUgdy9vIENvZGVCbG9jayIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpp
bmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV2YWwgPSBqc0Nhc3Q8
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihyZWFsVGhpcyk7CisgICAgICAgIGlmIChDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV2YWwtPmNvZGVCbG9jaygpKQorICAgICAgICAgICAgb3V0LnByaW50
KCpjb2RlQmxvY2spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQoIk1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0ganNDYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KHJlYWxUaGlzKTsKICAgICBpZiAoIWZ1bmN0aW9uLT5laXRoZXJDb2Rl
QmxvY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRl
eCAwNDA1Mzc3M2MxMDc2NDBlYjY2ZjJhZGEzMjE4NjkxOTUwODEyNzVjLi45ZjI0ZDIwZmY1ODUz
YjFkZjAzZDY0NWU0YjFlMzExZDNiNjAzZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIEV2YWxDb2RlQmxvY2s7
CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwog
Y2xhc3MgSlNTY29wZTsKICAgICAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxh
dGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CkBAIC0xMDQsNiArMTA1LDExIEBAIGNsYXNz
IEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4g
dHlwZSgpID09IFByb2dyYW1FeGVjdXRhYmxlVHlwZTsKICAgICB9CisgICAgYm9vbCBpc01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0gTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOworICAgIH0KKwogCiAgICAgYm9vbCBpc0hvc3RGdW5j
dGlvbigpIGNvbnN0CiAgICAgewpAQCAtNTQzLDYgKzU0OSw1NyBAQCBjbGFzcyBQcm9ncmFtRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBSZWZQdHI8UHJv
Z3JhbUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogfTsKIAorY2xhc3MgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFNj
cmlwdEV4ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAg
ICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICB7CisgICAgICAgIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZShleGVjLCBzb3VyY2UpOworICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVj
LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNv
ZGVCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
LmdldCgpOworICAgIH0KKworICAgIEpTT2JqZWN0KiBjaGVja1N5bnRheChFeGVjU3RhdGUqKTsK
KworICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICB2b2lkIHVubGlua0NhbGxzKCk7CisKKyAgICB2b2lkIGNsZWFy
Q29kZSgpOworCisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKKworICAgIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKwor
ICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7Cit9OworCiBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNjg5LDYg
Kzc0Niw4IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogICAgICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1F
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGNhc2UgRnVuY3Rpb25F
eGVjdXRhYmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZVR5cGU6CisgICAgICAgIHJldHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IGpzQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAg
IH0KQEAgLTcwMyw2ICs3NjIsOCBAQCBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjp1bmxp
bmtDYWxscygpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlz
KS0+dW5saW5rQ2FsbHMoKTsKICAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU6CiAgICAg
ICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxz
KCk7CisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CisgICAgICAgIHJldHVy
biBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKS0+dW5saW5rQ2FsbHMoKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA5M2VlMWZkNzRiOTkyNTkwNDFjYTFlODYyZjYzMTFmNjUwOTgzODlhLi5iYWY0ZTEw
MGJjYzE2M2MxOGE3NWQ5MDQwZTNjYTQ4YWUxNGQ2Nzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw4IEBACiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkBAIC0zMTAsNiAr
MzEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV90eXBlZEFy
cmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRGF0
YVZpZXc6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5
cGVEYXRhVmlldyldLnByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fbGV4aWNhbEVudmly
b25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMpKTsKICAgICBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
U3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkp
KTsKICAgICBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuc2V0KG1fdm0sIHRoaXMsIERlYnVnZ2Vy
U2NvcGU6OmNyZWF0ZVN0cnVjdHVyZShtX3ZtLCB0aGlzKSk7CiAgICAgbV93aXRoU2NvcGVTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBqc051bGwoKSkpOwpAQCAtMzQ2LDYgKzM0OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhp
cywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOwogCiAgICAg
bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1f
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICAK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgbV93YXNtTW9kdWxlU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNXQVNNTW9kdWxlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKQEAgLTUy
MCw2ICs1MjQsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVU
aGVuYWJsZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bih2bSwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVy
YXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3Rvciwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+U2V0UHJpdmF0ZU5hbWUsIHNldENvbnN0cnVjdG9yLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNH
bG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwog
ICAgIApAQCAtNzg5LDYgKzc5NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3Vt
ZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZC
YW5kQXJndW1lbnRzU3RydWN0dXJlKTsKQEAgLTgxNiw2ICs4MjIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25z
b2xlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJW
TVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxG
dW5jdGlvblN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCAyNjEzMTZlODVkMmJhZmJkZWQ3ODQzMGI2ZjhmOGViYTVhZDg3
NzZlLi5jZGJhYzRhMjZmYjA5OTE4MWEwY2NiMjFjMTA1MjYwMzRmZmM5MzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMCw2ICsy
MzAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVudmlyb25tZW50
U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlRW52aXJvbm1l
bnRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kaXJlY3RBcmd1bWVu
dHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zY29wZWRBcmd1bWVu
dHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vdXRPZkJhbmRBcmd1
bWVudHNTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjYzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0
dXJlOwogI2VuZGlmCkBAIC00NDYsNiArNDQ4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiB3aXRoU2Nv
cGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBhY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52
aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25t
ZW50U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVk
QXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvdXRPZkJhbmRBcmd1
bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVj
dHVyZS5nZXQoKTsgfQpAQCAtNDk5LDYgKzUwMiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNHbG9iYWxPYmplY3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlUmVj
b3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0
KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogd2FzbU1vZHVsZVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuaAppbmRleCA5NTE2MzE4ZDcwMTY5ZTNkZDhjMmJlZjc4MzMxMjU2NzVjNWUyMThiLi40
NDhlYTQzMWI3YjdjOTgyNjJkNDEwYmYwMWY4NDkzNzFkOGFiNTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNz
IEpTTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJp
dmF0ZToKK3Byb3RlY3RlZDoKICAgICBKU0xleGljYWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVy
ZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOwogICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYmUwNDNhMWI4NTI1YTc2NTcwMjc4ZDdkMWNiOGZjNjgwNjQyYmNkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVF
bnZpcm9ubWVudC5oIgorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3Rk
OworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OnNfaW5mbyA9IHsgIkpTTW9kdWxlRW52aXJvbm1lbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlRW52aXJvbm1lbnQpIH07CisKK0pTTW9kdWxlRW52
aXJvbm1lbnQqIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNv
cmQpCit7CisgICAgLy8gSlNMZXhpY2FsRW52aXJvbm1lbnQgKHByZWNpc2VseSwgSlNFbnZpcm9u
bWVudFJlY29yZCkgaGFzIHRoZSBzdG9yYWdlIHRvIHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBh
ZnRlciB0aGUgaXRzIGNsYXNzIHN0b3JhZ2UuCisgICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9m
IHRoZSB2YXJpYWJsZSBzbG90cyBhcmUgZml4ZWQgaW4gdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQs
IGluaGVyaXR0aW5nIHRoZXNlIGNsYXNzIGFuZCBhZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBpcyBu
b3QgYWxsb3dlZCwKKyAgICAvLyB0aGUgbmV3IG1lbWJlciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlh
YmxlIHNsb3RzLgorICAgIC8vIFRvIGtlZXAgdGhlIEpTTW9kdWxlRW52aXJvbm1lbnQgY29tcGF0
aWJsZSB0byB0aGUgSlNMZXhpY2FsRW52aXJvbm1lbnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0
byBzdG9yZSB0aGUgSlNNb2R1bGVSZWNvcmQsIHdlIGFkZGl0aW9uYWxseSBhbGxvY2F0ZQorICAg
IC8vIHRoZSBzdG9yYWdlIGFmdGVyIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLworICAgIC8v
IEpTTGV4aWNhbEVudmlyb25tZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50
IF1bIHZhcmlhYmxlIHNsb3RzIF0KKyAgICAvLworICAgIC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6
CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXVsg
YWRkaXRpb25hbCBzbG90cyBmb3IgSlNNb2R1bGVFbnZpcm9ubWVudCBdCisgICAgSlNNb2R1bGVF
bnZpcm9ubWVudCogcmVzdWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGws
CisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0uaGVhcCwg
SlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUpKSkKKyAgICAg
ICAgSlNNb2R1bGVFbnZpcm9ubWVudCh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJv
bFRhYmxlKTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1v
ZHVsZVJlY29yZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU01vZHVsZUVudmly
b25tZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01v
ZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCBpbml0aWFsVmFsdWUpOworICAgIHRoaXMtPm1vZHVsZVJlY29yZCgpLnNldCh2bSwgdGhpcywg
bW9kdWxlUmVjb3JkKTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVF
bnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2Vs
bCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+
c3ltYm9sVGFibGUoKS0+c2NvcGVTaXplKCkpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tb2R1bGVSZWNvcmQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY2ZDI3NTMyMDc0ZjZlYmQ2MWJmMTU2ZjJlOTg5Y2RjMWYxY2NlYWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25t
ZW50LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorI2RlZmluZSBKU01v
ZHVsZUVudmlyb25tZW50X2gKKworI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisj
aW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFJl
Z2lzdGVyOworCitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50IDogcHVibGljIEpTTGV4aWNhbEVu
dmlyb25tZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTGV4aWNhbEVudmlyb25tZW50IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgSlNWYWx1ZSBpbml0aWFsVmFs
dWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3Vy
cmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVl
LCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCk7
CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1i
b2xUYWJsZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIH0KKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCksIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFy
cmllcjxKU01vZHVsZVJlY29yZD4pPihCYXNlOjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkp
OworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTW9kdWxlUmVjb3Jk
KHN5bWJvbFRhYmxlKSArIHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSos
IEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgV3JpdGVCYXJy
aWVyQmFzZTxKU01vZHVsZVJlY29yZD4mIG1vZHVsZVJlY29yZCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gKmJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPio+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJs
ZSgpKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworfTsKKworaW5saW5lIEpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxl
RW52aXJvbm1lbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVu
dFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gSlNNb2R1bGVFbnZpcm9ubWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTM4YTY1NDBkN2VlOTUyMTQ1ZWYwZWEyZmM2NzE4ZGVmYzg3YjQyZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRl
Kik7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6c19pbmZvID0g
eyAiTW9kdWxlTmFtZXNwYWNlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU01vZHVsZU5hbWVzcGFjZU9iamVjdCkgfTsKKworCitKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cykKKyAgICA6IEpTV3JhcHBl
ck9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgICwgbV9leHBvcnRzKGV4cG9ydHMpCit7Cit9CisK
K3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGlu
Zm8oKSkpOworICAgIHNldEludGVybmFsVmFsdWUodm0sIG1vZHVsZVJlY29yZCk7CisgICAgSlND
X05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbW9kdWxl
TmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKworICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUt
bmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldHByb3RvdHlwZW9mCisgICAgLy8gaHR0cDovL3d3
dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3Bh
Y2UtZXhvdGljLW9iamVjdHMtc2V0cHJvdG90eXBlb2YtdgorICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4
b3RpYy1vYmplY3RzLWlzZXh0ZW5zaWJsZQorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmpl
Y3RzLXByZXZlbnRleHRlbnNpb25zCisgICAgcHJldmVudEV4dGVuc2lvbnModm0pOworfQorCit2
b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0Ojp+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoKTsKK30KKworYm9vbCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRvd25wcm9wZXJ0eS1wCisK
KyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworCisgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJv
bCgpKQorICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworCisgICAgaWYgKCF0aGlzT2JqZWN0LT5t
X2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHRoaXNPYmplY3QtPmlu
dGVybmFsVmFsdWUoKTsKKworICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlU2V0IHJlc29sdmVT
ZXQ7CisgICAgSWRlbnRpZmllclNldCBleHBvcnRTdGFyU2V0OworICAgIGNvbnN0IGF1dG8gcmVz
b2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpm
cm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSksIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJT
ZXQpOworICAgIEFTU0VSVChyZXNvbHV0aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kICYmIHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29y
ZDo6UmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzKTsKKyAgICBKU01vZHVsZVJlY29yZCogdGFy
Z2V0TW9kdWxlID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCogdGFyZ2V0RW52aXJvbm1lbnQgPSB0YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50
KCk7CisgICAgUHJvcGVydHlTbG90IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50KTsK
KyAgICBpZiAoIXRhcmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2Fs
TmFtZSwgdHJhbXBvbGluZVNsb3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU1Zh
bHVlIHZhbHVlID0gdHJhbXBvbGluZVNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsK
KyAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIERvbnREZWxldGUsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKK3sKKyAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFj
ZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCisgICAgcmV0dXJuOworfQorCitib29s
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgLy8gaHR0cDovL3d3
dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3Bh
Y2UtZXhvdGljLW9iamVjdHMtZGVsZXRlLXAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAg
IHJldHVybiAhdGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQo
KSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNl
LWV4b3RpYy1vYmplY3RzLW93bnByb3BlcnR5a2V5cworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7
CisgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogdGhpc09iamVjdC0+bV9leHBvcnRzKQorICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChuYW1lLmdldCgpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4
UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVz
cGFjZS1leG90aWMtb2JqZWN0cy1kZWZpbmVvd25wcm9wZXJ0eS1wLWRlc2MKKyAgICBpZiAoc2hv
dWxkVGhyb3cpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2li
bGUuIikpOworICAgIHJldHVybiBmYWxzZTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBpZiAo
IXRoaXNWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhbiBvYmpl
Y3QiKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1l
SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXNPYmplY3QodGhpc1ZhbHVlKSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MzUwZTc5NmVhM2IwMjQ5ZTYx
Y2VhMDFmOWVmMGFhZjg1NjMwNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKKyNkZWZpbmUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Rf
aAorCisjaW5jbHVkZSAiSlNXcmFwcGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU01vZHVsZVJlY29yZDsKKworY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgOiBw
dWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTV3JhcHBlck9i
amVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lczsKKworICAgIHN0YXRpYyBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0
IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgeworICAgICAgICBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q+KGV4ZWMtPnZtKCkuaGVhcCkpIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KGV4
ZWMtPnZtKCksIHN0cnVjdHVyZSwgZXhwb3J0cyk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVSZWNvcmQpOworICAgICAgICBy
ZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIEpTTW9kdWxlUmVjb3Jk
KiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4o
SlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTTW9k
dWxlUmVjb3JkKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKTsKKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgSWRlbnRpZmll
clNldCBtX2V4cG9ydHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCBlNzAyZmFmYTQ0ZTUwNmY5ZDQ3ZmVkZTYzMzY2
NGE3MzhjMTliNDBiLi44OTczZmM4YTFmNWU3MGEzOWFlYmRjYjI2OGExNjRmM2ZjYTdiNDAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
CkBAIC0yMCwxNSArMjAsMjAgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAKKyNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNYXAuaCIK
KyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsMTIgKzQ2LDI0
IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHRoaXNP
YmplY3QtPkpTTW9kdWxlUmVjb3JkOjp+SlNNb2R1bGVSZWNvcmQoKTsKIH0KIAotCiB2b2lkIEpT
TW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICBwdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoInJlZ2lzdHJ5
RW50cnkiKSksIGpzVW5kZWZpbmVkKCkpOworICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgiZXZhbHVhdGVkIikpLCBqc0Jvb2xlYW4oZmFs
c2UpKTsKKworICAgIG1fZGVwZW5kZW5jaWVzTWFwLnNldCh2bSwgdGhpcywgSlNNYXA6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0KCktPm1hcFN0cnVjdHVyZSgpKSk7CisgICAgcHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJkZXBlbmRlbmNpZXNN
YXAiKSksIG1fZGVwZW5kZW5jaWVzTWFwLmdldCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29y
ZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4o
Y2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudCk7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBlbmRlbmNpZXNNYXApOwogfQogCiBh
dXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRp
ZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQpAQCAtNjQsNiAr
ODEsMjIxIEBAIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVj
dChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjCiAgICAgcmV0dXJuIEV4cG9ydEVudHJ5
IHsgVHlwZTo6SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElk
ZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKIH0KIAordm9pZCBKU01v
ZHVsZVJlY29yZDo6YWxsb2NhdGVNb2R1bGVFbnZpcm9ubWVudChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgQVNTRVJUKCFtX21vZHVsZUVudmlyb25tZW50KTsKKworICAgIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoZXhlYy0+dm0oKSk7CisgICAgeworICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAg
ICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBz
d2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNv
cmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5h
bWVzcGFjZToKKyAgICAgICAgICAgICAgICAvLyBUaGUgaGVhcCB2YXJpYWJsZSBmb3IgdGhlIG5h
bWVzcGFjZSBvYmplY3QgaXMgaW50cm9kdWNlZCB3aGVuIGltcG9ydGluZyBhbGwgdGhlIG5hbWVz
cGFjZSBiaW5kaW5nIGludG8gdGhlIGN1cnJlbnQgbW9kdWxlIHNjb3BlLgorICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICAgICAgVmFyT2Zmc2V0IHZhck9mZnNldChzeW1i
b2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2NrZXIpKTsKKyAgICAgICAgICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgZXhwb3J0RW50cnkudmFyaWFibGUu
aXNDb25zdCgpID8gUmVhZE9ubHkgOiAwKTsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+
YWRkKGxvY2tlciwgZXhwb3J0RW50cnkubG9jYWxOYW1lLmltcGwoKSwgbmV3RW50cnkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAgICAgICAgICBj
b25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBpZiAoaW1w
b3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpIHsKKyAgICAgICAgICAgICAgICBWYXJP
ZmZzZXQgdmFyT2Zmc2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikp
OworICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBS
ZWFkT25seSk7CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZChsb2NrZXIsIGltcG9y
dEVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIG5ld0VudHJ5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KGV4ZWMtPnZtKCksIHRo
aXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUs
IGpzVERaVmFsdWUoKSwgdGhpcykpOworfQorCitzdGF0aWMgSlNWYWx1ZSBpZGVudGlmaWVyVG9K
U1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sK
KyAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gU3ltYm9sOjpj
cmVhdGUoZXhlYy0+dm0oKSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmlt
cGwoKSkpOworICAgIHJldHVybiBqc1N0cmluZygmZXhlYy0+dm0oKSwgaWRlbnRpZmllci5pbXBs
KCkpOworfQorCitKU01vZHVsZVJlY29yZCogSlNNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1w
b3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1l
KQoreworICAgIEpTVmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1ZShl
eGVjLCBtb2R1bGVOYW1lKTsKKyAgICBKU1ZhbHVlIHBhaXIgPSBtX2RlcGVuZGVuY2llc01hcC0+
SlNNYXA6OmdldChleGVjLCBtb2R1bGVOYW1lVmFsdWUpOworICAgIHJldHVybiBqc0Nhc3Q8SlNN
b2R1bGVSZWNvcmQqPihwYWlyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJ2YWx1ZSIpKSk7Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnQoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBSZXNvbHZlU2V0JiBy
ZXNvbHZlU2V0LCBJZGVudGlmaWVyU2V0JiBzdGFyU2V0KSAtPiBSZXNvbHV0aW9uCit7CisgICAg
aWYgKCFyZXNvbHZlU2V0LmFkZChSZXNvbHZlUXVlcnkobW9kdWxlS2V5KCksIGV4cG9ydE5hbWUp
KS5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5
cGU6Ok5vdEZvdW5kLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBj
b25zdCBhdXRvIGl0ZXJhdG9yID0gbV9leHBvcnRFbnRyaWVzLmZpbmQoZXhwb3J0TmFtZS5pbXBs
KCkpOworICAgIGlmIChpdGVyYXRvciAhPSBtX2V4cG9ydEVudHJpZXMuZW5kKCkpIHsKKyAgICAg
ICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHN3
aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpF
eHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4
cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlv
biB7IFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkLCBtb2R1bGVLZXkoKSwgdGhpcywgZXhwb3J0
RW50cnkubG9jYWxOYW1lIH07CisKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0
RW50cnk6OlR5cGU6OkluZGlyZWN0OiB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1w
b3J0ZWRNb2R1bGVSZWNvcmQgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGV4cG9y
dEVudHJ5Lm1vZHVsZU5hbWUpOworICAgICAgICAgICAgY29uc3QgYXV0byBpbmRpcmVjdFJlc29s
dXRpb24gPSBpbXBvcnRlZE1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBleHBvcnRO
YW1lLCByZXNvbHZlU2V0LCBzdGFyU2V0KTsKKyAgICAgICAgICAgIGlmIChpbmRpcmVjdFJlc29s
dXRpb24udHlwZSAhPSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaW5kaXJlY3RSZXNvbHV0aW9uOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChleHBvcnROYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZCkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBS
ZXNvbHV0aW9uOjpUeXBlOjpFcnJvciwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50aWZpZXIoKSB9
OworCisgICAgaWYgKCFzdGFyU2V0LmFkZChtb2R1bGVLZXkoKS5pbXBsKCkpLmlzTmV3RW50cnkp
CisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQs
IG1vZHVsZUtleSgpLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKworICAgIGF1dG8gc3RhclJlc29s
dXRpb24gPSBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVsZUtl
eSgpLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1
bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykgeworICAgICAgICBKU01vZHVsZVJlY29yZCog
aW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1vZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAg
Y29uc3QgYXV0byByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGVSZWNvcmQtPnJlc29sdmVFeHBv
cnQoZXhlYywgZXhwb3J0TmFtZSwgcmVzb2x2ZVNldCwgc3RhclNldCk7CisgICAgICAgIGlmIChy
ZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzIHx8IHJlc29sdXRp
b24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBy
ZXNvbHV0aW9uOworICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlICE9IFJlc29sdXRpb246OlR5
cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAoc3RhclJlc29sdXRpb24udHlwZSA9PSBS
ZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICBzdGFyUmVzb2x1dGlv
biA9IHJlc29sdXRpb247CisgICAgICAgICAgICBlbHNlIGlmIChzdGFyUmVzb2x1dGlvbi5tb2R1
bGVLZXkgIT0gcmVzb2x1dGlvbi5tb2R1bGVLZXkgfHwgc3RhclJlc29sdXRpb24ubG9jYWxOYW1l
ICE9IHJlc29sdXRpb24ubG9jYWxOYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0
aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzLCBJZGVudGlmaWVyKCksIG51bGxwdHIs
IElkZW50aWZpZXIoKSB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0YXJSZXNv
bHV0aW9uOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpnZXRFeHBvcnRlZE5hbWVzKEV4ZWNT
dGF0ZSogZXhlYywgSWRlbnRpZmllclNldCYgZXhwb3J0U3RhclNldCwgSWRlbnRpZmllclNldCYg
ZXhwb3J0ZWROYW1lcywgSW5jbHVkZURlZmF1bHRNb2RlIG1vZGUpCit7CisgICAgaWYgKGV4cG9y
dFN0YXJTZXQuY29udGFpbnMobW9kdWxlS2V5KCkuaW1wbCgpKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGV4cG9ydFN0YXJTZXQuYWRkKG1vZHVsZUtleSgpLmltcGwoKSk7CisgICAgZm9yIChjb25z
dCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4
cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBl
KSB7CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2Nh
bDoKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGly
ZWN0OgorICAgICAgICAgICAgaWYgKG1vZGUgPT0gSW5jbHVkZURlZmF1bHRNb2RlOjpJbmNsdWRl
IHx8IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZCAhPSBleHBvcnRFbnRyeS5l
eHBvcnROYW1lKQorICAgICAgICAgICAgICAgIGV4cG9ydGVkTmFtZXMuYWRkKGV4cG9ydEVudHJ5
LmV4cG9ydE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoY29uc3QgYXV0byYgc3Rhck1v
ZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRyaWVzKSB7CisgICAgICAgIEpTTW9kdWxlUmVjb3Jk
KiByZXF1ZXN0ZWRNb2R1bGVSZWNvcmQgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMs
IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1vZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAg
ICAgcmVxdWVzdGVkTW9kdWxlUmVjb3JkLT5nZXRFeHBvcnRlZE5hbWVzKGV4ZWMsIGV4cG9ydFN0
YXJTZXQsIGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVEZWZhdWx0TW9kZTo6RXhjbHVkZSk7CisgICAg
fQorfQorCitKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVs
ZU5hbWVzcGFjZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0KQorICAgICAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7CisK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOworICAgIElkZW50aWZpZXJTZXQgZXhwb3J0ZWROYW1lczsKKyAgICB7CisgICAgICAg
IElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAgICAgICAgZ2V0RXhwb3J0ZWROYW1lcyhl
eGVjLCBleHBvcnRTdGFyU2V0LCBleHBvcnRlZE5hbWVzLCBJbmNsdWRlRGVmYXVsdE1vZGU6Oklu
Y2x1ZGUpOworICAgIH0KKworICAgIElkZW50aWZpZXJTZXQgdW5hbWJpZ3VvdXNOYW1lczsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUgOiBleHBvcnRlZE5hbWVzKSB7CisgICAgICAgIFJlc29s
dmVTZXQgcmVzb2x2ZVNldDsKKyAgICAgICAgSWRlbnRpZmllclNldCBleHBvcnRTdGFyU2V0Owor
ICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50
aWZpZXI6OmZyb21VaWQoZXhlYywgbmFtZS5nZXQoKSksIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJT
ZXQpOworICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6
OkVycm9yOgorICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1
b3VzOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBl
OjpSZXNvbHZlZDoKKyAgICAgICAgICAgIHVuYW1iaWd1b3VzTmFtZXMuYWRkKG5hbWUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX21vZHVsZU5hbWVzcGFj
ZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNy
ZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKKyAgICByZXR1cm4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6Omlu
c3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQobV9t
b2R1bGVFbnZpcm9ubWVudCk7CisKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX21v
ZHVsZUVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBw
YWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5
ID0gcGFpci52YWx1ZTsKKyAgICAgICAgaWYgKGV4cG9ydEVudHJ5LnR5cGUgPT0gSlNNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdCkgeworICAgICAgICAgICAgUmVzb2x2
ZVNldCByZXNvbHZlU2V0OworICAgICAgICAgICAgSWRlbnRpZmllclNldCBleHBvcnRTdGFyU2V0
OworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVj
LCBleHBvcnRFbnRyeS5leHBvcnROYW1lLCByZXNvbHZlU2V0LCBleHBvcnRTdGFyU2V0KTsKKyAg
ICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpU
eXBlOjpFcnJvcjoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3Vz
OgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVk
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAg
ICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgSlNNb2R1
bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVj
LCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAgaWYgKGltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKGV4ZWMtPnZtKCkpKSB7CisgICAgICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCogbmFtZXNwYWNlT2JqZWN0ID0gaW1wb3J0ZWRNb2R1bGUtPmdldE1vZHVsZU5hbWVzcGFj
ZShleGVjKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlLT5pbmxpbmVHZXQobG9ja2VyLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUu
aW1wbCgpKTsKKyAgICAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnNjb3BlT2Zm
c2V0KCk7CisgICAgICAgICAgICBBU1NFUlQobV9tb2R1bGVFbnZpcm9ubWVudC0+aXNWYWxpZChv
ZmZzZXQpKTsKKyAgICAgICAgICAgIG1fbW9kdWxlRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQob2Zm
c2V0KS5zZXQoZXhlYy0+dm0oKSwgbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKSwgbmFtZXNwYWNl
T2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJlc29sdmVTZXQgcmVzb2x2
ZVNldDsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAgICAgICAg
ICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0
KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUsIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQp
OworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRp
b246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiB1aWQpCiB7CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKQEAgLTc2
LDcgKzMwOCw2IEBAIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKICAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkpOwogfQogCi0K
IHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQogewogICAgIGRhdGFMb2coIlxuQW5hbHl6aW5n
IE1vZHVsZVJlY29yZCBrZXkoIiwgcHJpbnRhYmxlTmFtZShtX21vZHVsZUtleSksICIpXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4
IDA1ZDY5NGQzZTNmZTU1YTUyMWFmMzVkZTgyNjE1OTgwZjA4MGUyZTAuLjRhMDM4ZjNjYTUyYjhh
MjEzYTRiMzRhOGFmZTFhOTg1ZGQ1NDE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMzQsNiArMzQsMTAgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK2NsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OworY2xhc3MgSlNNb2R1bGVF
bnZpcm9ubWVudDsKK2NsYXNzIEpTTWFwOworCiAvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQg
TW9kdWxlIFJlY29yZAogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRzCiBjbGFzcyBKU01vZHVsZVJl
Y29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CkBAIC05OCwxMiArMTAyLDc4IEBA
IGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CiAgICAgdm9pZCBhZGRF
eHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwogCisgICAgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVLZXk7IH0KKwogICAgIGNvbnN0IElt
cG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBsb2NhbE5hbWUpOwogCiAgICAgY29uc3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHJlcXVl
c3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZE1vZHVsZXM7IH0KIAorICAg
IGNvbnN0IEV4cG9ydE1hcCYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0
RW50cmllczsgfQorCiAgICAgdm9pZCBkdW1wKCk7CiAKKyAgICB2b2lkIGFsbG9jYXRlTW9kdWxl
RW52aXJvbm1lbnQoRXhlY1N0YXRlKik7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxl
RW52aXJvbm1lbnQoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOyB9CisKKyAg
ICB2b2lkIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSopOworCisgICAgc3RydWN0
IFJlc29sdmVRdWVyeSB7CisgICAgICAgIFJlc29sdmVRdWVyeShVbmlxdWVkU3RyaW5nSW1wbCog
bW9kdWxlS2V5LCBVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgICAgIDog
bW9kdWxlS2V5KG1vZHVsZUtleSkKKyAgICAgICAgICAgICwgZXhwb3J0TmFtZShleHBvcnROYW1l
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvbHZlUXVlcnkoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKQorICAgICAg
ICAgICAgOiBSZXNvbHZlUXVlcnkobW9kdWxlS2V5LmltcGwoKSwgZXhwb3J0TmFtZS5pbXBsKCkp
CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVt
cHR5VmFsdWUgfTsKKyAgICAgICAgUmVzb2x2ZVF1ZXJ5KEVtcHR5VmFsdWVUYWcpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZh
bHVlIH07CisgICAgICAgIFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVUYWcpCisgICAgICAgICAg
ICA6IG1vZHVsZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgICAgICwg
ZXhwb3J0TmFtZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gIW1vZHVsZUtleTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaXNE
ZWxldGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbW9kdWxl
S2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1vZHVsZUtleTsKKyAgICAgICAgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiBleHBvcnROYW1lOworICAgIH07CisKKyAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5
SGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYp
OworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmLCBjb25zdCBS
ZXNvbHZlUXVlcnkmKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SGFzaFNl
dDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxS
ZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworCisgICAgc3RydWN0IFJlc29sdXRpb24geworICAg
ICAgICBlbnVtIGNsYXNzIFR5cGUgeyBSZXNvbHZlZCwgTm90Rm91bmQsIEFtYmlndW91cywgRXJy
b3IgfTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlS2V5
OworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgICAgICBJZGVudGlm
aWVyIGxvY2FsTmFtZTsKKyAgICB9OworCisgICAgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIFJlc29sdmVTZXQmLCBJZGVu
dGlmaWVyU2V0JiBleHBvcnRTdGFyU2V0KTsKKwogcHJpdmF0ZToKICAgICBKU01vZHVsZVJlY29y
ZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVL
ZXkpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpAQCAtMTEzLDggKzE4MywxNSBAQCBj
bGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCogZ2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSopOworICAgIGVudW0gY2xhc3MgSW5jbHVk
ZURlZmF1bHRNb2RlIHsgSW5jbHVkZSwgRXhjbHVkZSB9OworICAgIHZvaWQgZ2V0RXhwb3J0ZWRO
YW1lcyhFeGVjU3RhdGUqLCBJZGVudGlmaWVyU2V0JiBleHBvcnRTdGFyU2V0LCBJZGVudGlmaWVy
U2V0JiBleHBvcnRlZE5hbWVzLCBJbmNsdWRlRGVmYXVsdE1vZGUpOworCisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKKyAgICBKU01vZHVsZVJlY29yZCogaG9zdFJlc29sdmVJbXBv
cnRlZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKwog
ICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBt
b2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJlc2Vu
dCB0aGlzIG1vZHVsZS4KICAgICBJZGVudGlmaWVyIG1fbW9kdWxlS2V5OwogCkBAIC0xMjksNiAr
MjA2LDEwIEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKICAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUg
bG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIuCiAgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZWV2YWx1YXRpb24KICAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3RlZE1vZHVsZXM7
CisKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4gbV9tb2R1bGVFbnZpcm9u
bWVudDsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0OworICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNN
YXA7CiB9OwogCiBpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9k
dWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCkBAIC0xNTYsNiArMjM3LDE2IEBAIGlu
bGluZSBhdXRvIEpTTW9kdWxlUmVjb3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBsCiAgICAgcmV0dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQo
bG9jYWxOYW1lKSkudmFsdWU7CiB9CiAKK2lubGluZSB1bnNpZ25lZCBKU01vZHVsZVJlY29yZDo6
UmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaChjb25zdCBKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5
JiBxdWVyeSkKK3sKKyAgICByZXR1cm4gSWRlbnRpZmllclJlcEhhc2g6Omhhc2gocXVlcnkubW9k
dWxlS2V5KSArIElkZW50aWZpZXJSZXBIYXNoOjpoYXNoKHF1ZXJ5LmV4cG9ydE5hbWUpOworfQor
CitpbmxpbmUgYm9vbCBKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwoY29u
c3QgUmVzb2x2ZVF1ZXJ5JiBsaHMsIGNvbnN0IFJlc29sdmVRdWVyeSYgcmhzKQoreworICAgIHJl
dHVybiBsaHMubW9kdWxlS2V5ID09IHJocy5tb2R1bGVLZXkgJiYgbGhzLmV4cG9ydE5hbWUgPT0g
cmhzLmV4cG9ydE5hbWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNN
b2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA0
MDMyNmNlMGYzMjlmYTdjN2JiYzk5ZjQ0NjQyOGZlOTZjOTEyNGIzLi5mY2UwNjFkMWY4ZDYxZGFi
MDYzNjBhZThkN2FhNDQ4ZjJmMThjNzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaApAQCAtNDEsMTAgKzQxLDEyIEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAKICAg
ICBFdmFsRXhlY3V0YWJsZVR5cGUsCiAgICAgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLAorICAgIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwKICAgICBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLAog
CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLAogICAgIFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9ja1R5cGUsCisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrVHlwZSwK
ICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2tUeXBlLAogICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2tUeXBlLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9k
dWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCAxZDY3YTRjYWRlOGI0N2NjMThjZjU4NjQyZDY0NDZk
MDMyZjVlNzkzLi40M2Y4OThkOTFmZTZiOTExYTJjNzdiMzA3ZjQ1OGE3ZTVlY2M2MDc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVj
dC5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlKEV4ZWNTdGF0ZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0TW9k
dWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVj
dEZldGNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSopOwpAQCAtNjIsMjggKzY0LDM0
IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJPYmplY3Q6OnNfaW5mbyA9IHsgIk1vZHVs
ZUxvYWRlciIsICZCYXNlOjpzX2luZm8sICZtCiAKIC8qIFNvdXJjZSBmb3IgTW9kdWxlTG9hZGVy
T2JqZWN0Lmx1dC5oCiBAYmVnaW4gbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUKLSAgICBzZXRTdGF0
ZVRvTWF4ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRvTWF4ICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQotICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdEVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBm
b3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGb3JjZUZ1bGZpbGxQ
cm9taXNlICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbEZldGNoICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
LSAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxs
SW5zdGFudGlhdGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgY29tbWl0SW5zdGFu
dGlhdGVkICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMwotICAgIGluc3RhbnRpYXRpb24gICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRpb24gICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDMKLSAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RS
ZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVz
dFRyYW5zbGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRyYW5zbGF0ZSAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBEb250RW51bXxGdW5jdGlvbiAxCi0gICAg
cmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3Rh
bnRpYXRlQWxsICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIGxvYWRNb2R1bGUgICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdExvYWRNb2R1bGUgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RQcm92aWRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAz
Ci0gICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VN
b2R1bGUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHJlcXVlc3RlZE1v
ZHVsZXMgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXNvbHZlICAgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCi0gICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
RmV0Y2ggICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHRyYW5z
bGF0ZSAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZSAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBpbnN0YW50aWF0ZSAgICAgICAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZSAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgc2V0U3RhdGVUb01heCAgICAgICAgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCisgICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dE5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
ZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEVuc3VyZVJl
Z2lzdGVyZWQgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZm9yY2VGdWxm
aWxsUHJvbWlzZSAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZvcmNlRnVsZmlsbFByb21p
c2UgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEZldGNoICAgICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxGZXRjaCAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdENvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisg
ICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3Rh
bnRpYXRpb24gICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgcmVxdWVz
dEZldGNoICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RGZXRjaCAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFRyYW5zbGF0
ZSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RUcmFuc2xhdGUgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgICAgcmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RMaW5rICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVx
dWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZWFk
eSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgbGluayAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdExpbmsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0
YW50aWF0aW9uIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlv
biBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZUV2YWx1YXRpb24gICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgZXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdEV2YWx1YXRlICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCisgICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dExvYWRNb2R1bGUgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAg
cHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFByb3ZpZGUg
ICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgcGFyc2VNb2R1
bGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdGVkTW9kdWxlcyAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdFRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisg
ICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3Rh
bnRpYXRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiBAZW5kCiAqLwog
CkBAIC0xMzcsMTkgKzE0NSw2IEBAIEpTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0Ojpwcm92aWRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0YXR1cyBzdGF0dXMsCiAgICAgcmV0dXJu
IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRz
KTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6cmVxdWVzdElu
c3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCi17Ci0gICAgSlNPYmpl
Y3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5yZXF1ZXN0SW5zdGFudGlhdGVBbGxQdWJsaWNOYW1lKCkp
KTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6
Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0g
Q2FsbFR5cGVOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAg
ICBhcmd1bWVudHMuYXBwZW5kKGtleSk7Ci0KLSAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQ
cm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBh
cmd1bWVudHMpKTsKLX0KLQogSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6
bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBy
ZWZlcnJlcikKIHsKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihn
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmxvYWRNb2R1bGVQ
dWJsaWNOYW1lKCkpKTsKQEAgLTI1MSwxMiArMjQ2LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5LCBtb2R1
bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhp
Y2FsVmFyaWFibGVzKCkpOwogICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1
bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CisKKyAgICBtb2R1bGVSZWNv
cmQtPmFsbG9jYXRlTW9kdWxlRW52aXJvbm1lbnQoZXhlYyk7CisKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG1vZHVsZVJlY29yZCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxKU01vZHVsZVJlY29y
ZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIW1vZHVsZVJlY29yZCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpKTsKIApAQCAtMjY4LDYgKzI2NiwzMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1v
ZHVsZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RN
b2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3Jk
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKE9wdGlvbnM6
OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5r
XSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKKworICAgIG1vZHVsZVJlY29y
ZC0+aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1p
Y0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1
bGVSZWNvcmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBk
YXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAi
XG4iKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxl
TG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCmluZGV4IDQ1YjkzMmFjNTgw
YWY2MGFiNTJmZDE1MDE5MzkwOTU5YWJlMDUxMDMuLjEyY2ZlNTZlZWJiNmM0MjdjMGVmNzkwMjFm
OTk3YzZiMGQzODRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5oCkBAIC02NCw3ICs2NCw2IEBAIGNsYXNzIE1vZHVsZUxvYWRl
ck9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIC8vIEFQSXMgdG8gY29u
dHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KICAgICBKU1ZhbHVlIHByb3ZpZGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBrZXksIFN0YXR1cywgY29uc3QgU3RyaW5nJik7Ci0gICAgSlNJbnRlcm5hbFByb21p
c2UqIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CiAgICAg
SlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVO
YW1lLCBKU1ZhbHVlIHJlZmVycmVyKTsKIAogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29r
ZWQgQVBJcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCmluZGV4IGU4M2UzODMyNThmOTliYjA1YmJlMTFlMGM2NWRlMDRiOGUwNDllMGEuLjRjNDNj
NmFmZjJmNjdmZjM1NzU3M2FlY2EyZGY0M2JkMzcxMTNiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgogI2luY2x1ZGUgIkVycm9y
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNjUsNiArNjYsMTAgQEAgdm9p
ZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhh
cywgc2V0UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51
bSwgMCk7CiAKKyAgICAvLyBQcml2YXRlIGFkZCAvIGhhcyBvcGVyYXRpb25zLgorICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YWRkUHJpdmF0ZU5hbWUsIHNldFByb3Rv
RnVuY0FkZCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFz
LCBEb250RW51bSwgMSk7CisKICAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmlu
ZygpLCBzZXRQcm90b0Z1bmNWYWx1ZXMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHZhbHVlcywgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCB2YWx1
ZXMsIERvbnRFbnVtKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259861</attachid>
            <date>2015-08-25 11:01:40 -0700</date>
            <delta_ts>2015-08-25 12:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150825110132.patch</filename>
            <type>text/plain</type>
            <size>135734</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAwZDNiMWIzMjNjYzA4Mjk0NmVmNjJhYjFjMmI3YTE2OGVmMmQ2Li5kMmE5YjM3NTFiYTdhMjhl
ZDIyYWQ0MGU4N2U3YjA3MzdjMzdiMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTUtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExv
YWRlcidzIHJlYWR5IC8gbGluayBwaGFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAg
KHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzLnJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlLnRo
aXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAgICAgICAgKHJlcXVlc3RMaW5rKToKKyAg
ICAgICAgKHJlcXVlc3RSZWFkeSk6CisgICAgICAgIChsaW5rKToKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAo
SlNDOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1Db2RlQmxvY2s6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFdmFs
Q29kZUJsb2NrOjpFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxv
Y2s6OkZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlVHlwZS5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpkZXN0cm95KToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCk6CisgICAgICAgIChKU0M6OlN0YWNr
RnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEpTQzo6Z2V0U3RhY2tGcmFt
ZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5
cGUpOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUpOgor
ICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwpOgorICAgICAgICAq
IGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBsbGludC9MTEludERh
dGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgor
ICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRF
bnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChK
U0M6OkxMSW50Ojptb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
bGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgorICAgICAgICAqIHBhcnNlci9Nb2R1
bGVBbmFseXplci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2Rl
Q2FjaGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ29k
ZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3lu
dGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpT
Y3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1
dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
Om5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6
Y2xlYXJDb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmR1bXApOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6
aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNl
OjpjbGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6dW5s
aW5rQ2FsbHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUVudmlyb25tZW50U3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZU5hbWVzcGFjZU9i
amVjdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6b2Zmc2V0T2ZNb2R1
bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjphbGxvY2F0aW9u
U2l6ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om1vZHVsZVJlY29yZCk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1lbnQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjptb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVy
YXRvcik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjppbnRlcm5hbFZhbHVlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFsbG9jYXRlTW9k
dWxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjppZGVudGlmaWVyVG9KU1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Z2V0RXhwb3J0ZWROYW1lcyk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVOYW1lc3BhY2UpOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpzb3VyY2VDb2RlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUtleSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpleHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OlJlc29s
dmVRdWVyeTo6UmVzb2x2ZVF1ZXJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OlJl
c29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OlJlc29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6SlNNb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVz
b2x2ZVF1ZXJ5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpSZXNv
bHZlUXVlcnlIYXNoOjplcXVhbCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om1vZHVs
ZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2Jq
ZWN0UmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdE1v
ZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRl
ck9iamVjdEV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1
ZXN0SW5zdGFudGlhdGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisKIDIwMTUtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0VTNl0gUmV0dXJuIEpTSW50ZXJuYWxQcm9taXNlIGFzIHJlc3VsdCBvZiBldmFs
dWF0ZU1vZHVsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OGRjMGI2MWI2ZmE4
MmI4MWE2MTNjMDYxOGRmYWExYTlmMWI3MmY0Li5mMmExZWY2MzllMmQ1MDhjMjZhY2IyNTRiYTM5
MDE2YmFhZTc1NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Nyw2ICsx
Njk3LDkgQEAKIAkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNTBF
NTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyog
T3BhcXVlSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAq
LzsgfTsKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIz
NCAvKiBWTS5jcHAgKi87IH07CisJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVM
b2FkZXJPYmplY3QuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMg
Ki87IH07CisJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICov
OyB9OworCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThD
QkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIy
MDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0
T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIy
RSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0xNzE5
LDYgKzE3MjIsOCBAQAogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXpl
TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9
OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CisJCUUzRDIzOUM5
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAv
KiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1
MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1
NDcsNiArMzU1Miw5IEBACiAJCUUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXpl
VGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXRp
YWxpemVUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMThFM0E1
NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5l
RW5kaW5nID0gMDsgcGF0aCA9IFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQlFMThF
M0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07
CisJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3Qu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5
RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBMzFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWZsZWN0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNTcxLDYgKzM1NzksOCBAQAogCQlFMzk2M0NFQzFCNzNGNzUwMDBF
QjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01v
ZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNjFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZp
cm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIz
MDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0
OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NTgsNiArNDc2OCwxMCBAQAogCQkJCUE3MDA4NzQw
MTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUy
MkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJD
MjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAv
KiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLywKKwkJCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVG
NjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovLAorCQkJCUUzMThDQkJFMUI4QUVGNTEwMEEy
OTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8sCisJCQkJRTMxOENCQkYxQjhB
RUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi8sCiAJCQkJRTM5REE0
QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlFMzlEQTRB
NTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQlBNzI3MDA3ODBE
QUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCkBAIC01Nzc2LDYgKzU3OTAs
NyBAQAogCQkJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QuanMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVCMUI2NUQ5QTMwMDlEQjFF
RiAvKiBJdGVyYXRvci5wcm90b3R5cGUuanMgKi8sCisJCQkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4
N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLywKIAkJCQk3Q0Y5QkM1QzFCNjVEOUIxMDA5
REIxRUYgLyogT2JqZWN0Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUQxQjY1RDlCMTAw
OURCMUVGIC8qIE9wZXJhdGlvbnMuUHJvbWlzZS5qcyAqLywKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1
MDBEMDA3NTAgLyogUHJvbWlzZS5wcm90b3R5cGUuanMgKi8sCkBAIC02MTEwLDYgKzYxMjUsNyBA
QAogCQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyog
REZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3QTBCOENDMDA3NzNB
RDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0Qy
MzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNjI0Miw2ICs2MjU4
LDcgQEAKIAkJCQk3QjAyNDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93
ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FE
OCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzE4Q0JDMTFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjM1QkRFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29t
cGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTcwMTksNiArNzAzNiw3IEBACiAJCQlp
c2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1
bGVMb2FkZXJPYmplY3QuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYw
MDcyRUI2RCAvKiBmcmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtNzM1Myw2ICs3MzcxLDcgQEAK
IAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQ
cm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcx
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNEMjM5
QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVy
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRM
RFdBUkZSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0MzEsNiArNzQ1MCw3IEBACiAJ
CQkJMEZEMTIwMzMxQThDODVCRDAwMEY1MjgwIC8qIEZUTEpTQ2FsbFZhcmFyZ3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY5RDMzOTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzNGNTA4NDFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE4Q0JDMDFCOEFF
RjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3Jt
YXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQkQxQjcxQjg5NkEwNzAwNTk4QUE2IC8qIERG
R0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgwNzksNiArODA5OSw3IEBACiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MDg2LDYgKzgx
MDcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBA
IC04MDkzLDYgKzgxMTUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBM
TFZNRm9ySlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVf
RVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2Zp
bGluZzsKIAkJfTsKQEAgLTgxMDAsNiArODEyMyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2
OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJ
CQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgxMDcsNiArODEzMSw3IEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
QkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2
X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODExNCw2ICs4MTM5
LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxF
UyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsK
QEAgLTgxMjEsNiArODE0Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8q
IFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlF
TkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9
IFByb2ZpbGluZzsKIAkJfTsKQEAgLTgxMjgsNiArODE1NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIx
MzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTU2LDYgKzgxODQsNyBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0g
RU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgx
NjMsNiArODE5Miw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFT
Y3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVf
RVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVh
c2U7CiAJCX07CkBAIC04MTcxLDYgKzgyMDEsNyBAQAogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25m
aWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUJVSUxEX1ZBUklBTlRTID0gbm9ybWFs
OworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJ
CQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgxNzgsNiArODIwOSw3IEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
NURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwog
CQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxODUsNiArODIxNyw3IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVT
OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODE5Miw2ICs4MjI1LDcgQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01P
RFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MzIzLDYgKzgz
NTcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQg
U291cmNlcyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CiAJCQl9OwpAQCAtODMzMiw2ICs4MzY3LDcgQEAKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0
MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxF
UzsKIAkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0
IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAg
LTgzNDEsNiArODM3Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEph
dmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFC
TEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUg
PSAiRGVyaXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0g
IkRlcml2ZWQgU291cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzUwLDYgKzgzODcsNyBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxF
X0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7
CiAJCQl9OwpAQCAtODM1OSw2ICs4Mzk3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4
MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9E
VUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0g
RGVidWc7CkBAIC04MzY3LDYgKzg0MDYsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgx
RTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RV
Q1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBS
ZWxlYXNlOwpAQCAtODM3NSw2ICs4NDE1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4
MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9E
VUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0g
UHJvZHVjdGlvbjsKQEAgLTgzOTgsNiArODQzOSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThB
NzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9
OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKQEAgLTg0MDUsNiArODQ0Nyw3IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVf
RVM2X01PRFVMRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNl
cyI7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKQEAgLTg0MjcsNiArODQ3MCw3IEBACiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RV
TEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwppbmRleCA2NWEw
NTM5NjRkZjQ4NzczNWU2NzVmNGI5MTc4MzY4MTBjZGQ5YTMyLi44MzkwODZlMGMyNzhiYzIxYTVj
Mjg5YzA1ZjJkYjVjNzY5ZmFlMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKQEAgLTE5Miw3ICsxOTIsNyBAQCBmdW5j
dGlvbiBjb21taXRJbnN0YW50aWF0ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSkK
ICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CiAKICAgICB2
YXIgZGVwZW5kZW5jaWVzID0gW107Ci0gICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG5ldyBATWFw
KCk7CisgICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNN
YXA7CiAgICAgbW9kdWxlUmVjb3JkLnJlZ2lzdHJ5RW50cnkgPSBlbnRyeTsKICAgICB2YXIgcmVx
dWVzdGVkTW9kdWxlcyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhtb2R1bGVSZWNvcmQpOwogICAg
IGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsgaSA8IGxl
bmd0aDsgKytpKSB7CkBAIC0zNDksNyArMzQ5LDcgQEAgZnVuY3Rpb24gcmVxdWVzdFJlc29sdmVE
ZXBlbmRlbmNpZXMoa2V5KQogICAgIHZhciByZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZSA9IHRo
aXMucmVxdWVzdEluc3RhbnRpYXRlKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKICAgICAg
ICAgdmFyIGRlcExvYWRzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBl
bnRyeS5kZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IHZhciBwYWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAgICAgbGV0IHBhaXIg
PSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CiAKICAgICAgICAgICAgIC8vIEhvb2sgcG9pbnQuCiAg
ICAgICAgICAgICAvLyAxLiBMb2FkZXIucmVzb2x2ZS4KQEAgLTM2MSwxNiArMzYxLDI1IEBAIGZ1
bmN0aW9uIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKIAogICAgICAgICAgICAgICAg
IC8vIFJlY3Vyc2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBp
cyBiZWluZyByZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgogICAgICAgICAgICAgICAgIC8v
IFN0b3AgdHJhY2luZyB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAg
IC8vIEJ1dCB0byByZXRyaWV2ZSB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSByZWNvcmQgY29ycmVj
dGx5LAorICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGluc3RhbnRp
YXRpb24gZm9yIHRoZSBkZXBlbmRlbnQgbW9kdWxlLgorICAgICAgICAgICAgICAgIC8vIEZvciBl
eGFtcGxlLCByZWFjaGluZyBoZXJlLCB0aGUgbW9kdWxlIGlzIHN0YXJ0aW5nIHJlc29sdmluZyB0
aGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIC8vIEJ1dCB0aGUgbW9kdWxlIG1heSBv
ciBtYXkgbm90IHJlYWNoIHRoZSBpbnN0YW50aWF0aW9uIHBoYXNlIGluIHRoZSBsb2FkZXIncyBw
aXBlbGluZS4KKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3YWl0IGZvciB0aGUgUmVzb2x2ZURl
cGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUgY2lyY3VsYXIgcHJv
bWlzZSBjaGFpbiBhbmQKKyAgICAgICAgICAgICAgICAvLyByZWplY3RlZCBieSB0aGUgUHJvbWlz
ZXMgcnVudGltZS4gU2luY2Ugb25seSB3ZSBuZWVkIGlzIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxl
LCBpbnN0ZWFkIG9mIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAvLyB0aGUgUmVzb2x2ZURlcGVu
ZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUsIHdlIGp1c3Qgd2FpdCBJbnN0YW50aWF0ZSBmb3IgdGhp
cy4KICAgICAgICAgICAgICAgICBpZiAoZGVwRW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykgewot
ICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZGVwRW50cnkubW9kdWxlOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZGVwRW50cnk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBkZXBFbnRyeS5pbnN0YW50aWF0ZS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVzb2x2
ZURlcGVuZGVuY2llcyhkZXBLZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgICAg
ICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7CiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGUgcmVzdWx0IHByb21pc2Ugb2YgdGhlIHJlcXVlc3RJbnN0YW50aWF0ZUFs
bCBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGgKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJl
Z2lzdHJ5IGVudHJ5LgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
d2hhdHdnL2xvYWRlci9wdWxsLzY2Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBl
bnRyeS5tb2R1bGU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwpAQCAtMzk2LDYgKzQwNSw5MCBAQCBmdW5jdGlv
biByZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KQogICAgIHJldHVybiB0aGlzLnJlcXVlc3RSZXNv
bHZlRGVwZW5kZW5jaWVzKGtleSk7CiB9CiAKK2Z1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSkKK3sK
KyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWxpbmsKKwor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJl
ZChrZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIg
ZGVmZXJyZWQgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAg
ICAgIGRlZmVycmVkLkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgZW50cnkubW9kdWxlKTsKKyAg
ICAgICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIHZhciBsb2FkZXIg
PSB0aGlzOworICAgIHJldHVybiB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpLnRoZW4o
ZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIGxvYWRlci5saW5rKGVudHJ5KTsKKyAgICAgICAg
cmV0dXJuIGVudHJ5OworICAgIH0pOworfQorCitmdW5jdGlvbiByZXF1ZXN0UmVhZHkoa2V5KQor
eworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtcmVhZHkK
KworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHJldHVy
biB0aGlzLnJlcXVlc3RMaW5rKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAg
bG9hZGVyLm1vZHVsZUV2YWx1YXRpb24oZW50cnkubW9kdWxlKTsKKyAgICB9KTsKK30KKworLy8g
TGlua2luZyBzZW1hbnRpY3MuCisKK2Z1bmN0aW9uIGxpbmsoZW50cnkpCit7CisgICAgLy8gaHR0
cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jbGluaworCisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgLy8gRklYTUU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBv
cHRpb25hbEluc3RhbmNlLgorICAgIC8vIFNvIExpbmsncyBzdGVwIDMgaXMgc2tpcHBlZC4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcxCisKKyAg
ICBpZiAoZW50cnkuc3RhdGUgPT09IHRoaXMuUmVhZHkpCisgICAgICAgIHJldHVybjsKKyAgICBl
bnRyeS5zdGF0ZSA9IHRoaXMuUmVhZHk7CisKKyAgICAvLyBGSVhNRTogU2luY2Ugd2UgYWxyZWFk
eSBoYXZlIHRoZSAiZGVwZW5kZW5jaWVzIiBmaWVsZCwKKyAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1
bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gd2l0aCB0aGUgY29ycmVjdCBvcmRlcgorICAgIC8v
IHdpdGhvdXQgY29uc3RydWN0aW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGJ5IGNhbGxpbmcgZGVw
ZW5kZW5jeUdyYXBoLgorICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7
CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcGFpciA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAg
ICAgdGhpcy5saW5rKHBhaXIudmFsdWUucmVnaXN0cnlFbnRyeSk7CisgICAgfQorCisgICAgdGhp
cy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlKTsKK30KKworLy8g
TW9kdWxlIHNlbWFudGljcy4KKworZnVuY3Rpb24gbW9kdWxlRXZhbHVhdGlvbihtb2R1bGVSZWNv
cmQpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
IChtb2R1bGVSZWNvcmQuZXZhbHVhdGVkKQorICAgICAgICByZXR1cm47CisgICAgbW9kdWxlUmVj
b3JkLmV2YWx1YXRlZCA9IHRydWU7CisKKyAgICB2YXIgZW50cnkgPSBtb2R1bGVSZWNvcmQucmVn
aXN0cnlFbnRyeTsKKworICAgIC8vIFRoZSBjb250ZW50cyBvZiB0aGUgW1tSZXF1ZXN0ZWRNb2R1
bGVzXV0gaXMgY2xvbmVkIGludG8gZW50cnkuZGVwZW5kZW5jaWVzLgorICAgIHZhciBkZXBlbmRl
bmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9
IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcGFp
ciA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgdmFyIHJlcXVpcmVkTW9kdWxlUmVjb3JkID0g
cGFpci52YWx1ZTsKKyAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKHJlcXVpcmVkTW9kdWxl
UmVjb3JkKTsKKyAgICB9CisgICAgdGhpcy5ldmFsdWF0ZShtb2R1bGVSZWNvcmQpOworfQorCiBm
dW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVyKQogewogICAgICJ1c2Ugc3Ry
aWN0IjsKQEAgLTQwNiwxMSArNDk5LDcgQEAgZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1l
LCByZWZlcnJlcikKICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1
bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgogICAgIC8vIEZvciBl
eGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNv
dXJjZS4KICAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1vZHVsZU5hbWUsIHJlZmVycmVyKS50aGVu
KGZ1bmN0aW9uIChrZXkpIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdywgd2UgZG9uJ3QgaW1wbGVt
ZW50IHRoZSBsaW5raW5nIHBoYXNlIHlldC4KLSAgICAgICAgLy8gU28gaGVyZSwgd2UganVzdCBj
YWxsIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCB0byBvbmx5IHBlcmZvcm0gdGhlIG1vZHVsZSBsb2Fk
aW5nLgotICAgICAgICAvLyBBdCBsYXN0LCBpdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1
ZXN0UmVhZHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDgxNzIKLSAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0SW5zdGFudGlhdGVBbGwo
a2V5KTsKKyAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVhZHkoa2V5KTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCmluZGV4IDRlNWE5NmMzOGVkODYyNzc0NDJjYTI2MTljNWM4Y2FjMjljZTgyYWEuLjAyMGVj
MjQ4OWVmZTNhMzMyOTg1YjcwOTEwZGVjY2Y3OGQ0OWE5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE1Nyw2ICsxNTcsNyBA
QAogICAgICAgICAiYnl0ZWNvZGVzIiA6IFsKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50
X3Byb2dyYW1fcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9ldmFs
X3Byb2xvZ3VlIiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfbW9kdWxlX3Byb2dy
YW1fcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayIgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZDAzMWVhOTEyZmNlN2U1NDE2Zjc2
ZDRjNjY2M2IzMmUxMjc4NjRhMy4uMGIzMDlmNGRjMmE1ZmM5NzU1OGVlNTA2YjM5NDk2YWE1MDE2
Y2NjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
QEAgLTMwNDQsNiArMzA0NCwxMSBAQCBDb2RlQmxvY2sqIFByb2dyYW1Db2RlQmxvY2s6OnJlcGxh
Y2VtZW50KCkKICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKIH0KIAorQ29kZUJsb2NrKiBNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrOjpyZXBsYWNlbWVudCgpCit7CisgICAgcmV0dXJuIGpzQ2FzdDxNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7Cit9CisKIENvZGVC
bG9jayogRXZhbENvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewogICAgIHJldHVybiBqc0Nhc3Q8
RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9jaygpOwpAQCAtMzA1
OSw2ICszMDY0LDExIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIFByb2dyYW1Db2RlQmxvY2s6OmNh
cGFiaWxpdHlMZXZlbEludGVybmFsKCkKICAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0
eUxldmVsKHRoaXMpOwogfQogCitERkc6OkNhcGFiaWxpdHlMZXZlbCBNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCit7CisgICAgcmV0dXJuIERGRzo6cHJv
Z3JhbUNhcGFiaWxpdHlMZXZlbCh0aGlzKTsKK30KKwogREZHOjpDYXBhYmlsaXR5TGV2ZWwgRXZh
bENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogewogICAgIHJldHVybiBERkc6
OmV2YWxDYXBhYmlsaXR5TGV2ZWwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKaW5kZXggMzgxODgwZDYzZWRhMjY1NzBhNTdiM2ExMzZjNWE4Yjg1OGY4
NjMzMy4uNThhNjMwMmM4NTg5NzQ4MTM5Y2JmZjMzOTFmNzRiMzg2Y2UwZjFhZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTA5MiwxMCArMTA5Miwy
OSBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAj
ZW5kaWYKIH07CiAKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFs
Q29kZUJsb2NrIHsKK3B1YmxpYzoKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENvcHlQYXJz
ZWRCbG9ja1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCisgICAgICAgIDogR2xv
YmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgeworICAgIH0KKworICAg
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2soTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3Zp
ZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIDogR2xvYmFsQ29k
ZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQ
cm92aWRlciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyNpZiBF
TkFCTEUoSklUKQorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVu
dCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsSW50ZXJuYWwoKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwogY2xhc3MgRXZhbENvZGVC
bG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogcHVibGljOgogICAgIEV2YWxDb2RlQmxv
Y2soQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikKLSAgICA6IEdsb2Jh
bENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAgICAgICA6IEdsb2JhbENvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAgICB9CiAgICAgICAgIApAQCAt
MTEyMCw3ICsxMTM5LDcgQEAgY2xhc3MgRXZhbENvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2Rl
QmxvY2sgewogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgOiBwdWJsaWMgQ29kZUJsb2NrIHsKIHB1
YmxpYzoKICAgICBGdW5jdGlvbkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0aW9u
Q29kZUJsb2NrJiBvdGhlcikKLSAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVy
KQorICAgICAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKaW5kZXggYjhl
MTA3ZGNmNmI2NzBjZDgyODNlYmZhNTM1MWY3YzYzNDJmMDIzYy4uOTk0MWQ1MTRjZGQwYzVmZmUz
MGYxYTg4NGYzYmE1NGM2ZjAwZjg5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVUeXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0g
Q29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlIH07CitlbnVtIENv
ZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSwgTW9kdWxlQ29kZSB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTc0YjFlNDgyMzg5OGIzODAx
NGQ1MTgyOWVhYjdmNzEzMDlkYmIwYS4uNTIxYThlMDhiNzNkOGM1N2RmMDgyYTc5YzM3ZmRlNDk4
NzY1Njc4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY29u
c3QgQ2xhc3NJbmZvIFVubGlua2VkQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZENvZGVC
bG9jayIsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRDb2RlQmxvY2spIH07CiBj
b25zdCBDbGFzc0luZm8gVW5saW5rZWRHbG9iYWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkR2xvYmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShVbmxpbmtlZEdsb2JhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKSB9OworY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6
c19pbmZvID0geyAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8g
PSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKSB9OwogCkBAIC0yOTIsNiArMjkzLDEzIEBAIHZvaWQgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0K
IAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Cit9CisKIFVubGlua2VkQ29kZUJsb2NrOjp+VW5saW5rZWRDb2RlQmxvY2soKQogewogfQpA
QCAtMzAxLDYgKzMwOSwxMSBAQCB2b2lkIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCiAgICAganNDYXN0PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayo+KGNl
bGwpLT5+VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2soKTsKK30KKwogdm9pZCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQogewogICAgIGpzQ2FzdDxVbmxpbmtlZEV2YWxDb2RlQmxvY2sqPihj
ZWxsKS0+flVubGlua2VkRXZhbENvZGVCbG9jaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAzMjJkMjYxOTlmNzk3YzEw
MzgxZGQ0NTg5M2JkNTM1M2ZmMWI2YjQ2Li45NDY5ZmIzNWU1YmViOWMzZmMxMzNhOWRmNzg1ODI3
NzNmODk5Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtNTE0LDYgKzUxNCw0NCBAQCBjbGFzcyBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogICAg
IERFQ0xBUkVfSU5GTzsKIH07CiAKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7Citwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7CisgICAgc3RhdGljIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisg
ICAgeworICAgICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
Pih2bS0+aGVhcCkpIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPnVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgaW5mbyk7CisgICAgICAg
IGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7
CisgICAgfQorCitwdWJsaWM6CisgICAgdHlwZWRlZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKworICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisKKyAgICB2b2lkIHNldFZhcmlhYmxlRGVjbGFyYXRpb25zKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50KSB7IG1fdmFyRGVjbGFyYXRpb25zID0g
ZW52aXJvbm1lbnQ7IH0KKyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJpYWJsZURl
Y2xhcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyRGVjbGFyYXRpb25zOyB9CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZh
dGU6CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSwgR2xvYmFsQ29kZSwgaW5mbykKKyAgICB7CisgICAgfQorCisgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsKKworcHVibGljOgorICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87Cit9OworCiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2sgZmlu
YWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAxMmI5Nzk4OGFmMjVkOGUy
MjI4NWE4NTI1OTM1Y2M2MzMwMjU0YTk2Li5iOTc4YTVlOTQ0N2JkZTE5YWYyODk4OWQxMGEzOTUz
NTBkNDE4MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNTM0LDYgKzUzNCw4OCBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUs
IFVubGlua2VkRXZhbENvZAogICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCpw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKIH0KIAorQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dy
YW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgRGVidWdn
ZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpCisgICAgOiBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24o
KSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJPbikKKyAgICAsIG1fc2hvdWxkRW1pdFByb2Zp
bGVIb29rcyhPcHRpb25zOjpmb3JjZVByb2ZpbGVyQnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgcHJv
ZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCisgICAgLCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFt
Tm9kZSkKKyAgICAsIG1fY29kZUJsb2NrKHZtLCBjb2RlQmxvY2spCisgICAgLCBtX3RoaXNSZWdp
c3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQorICAgICwgbV9jb2RlVHlwZShN
b2R1bGVDb2RlKQorICAgICwgbV92bSgmdm0pCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZh
bHNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJl
bnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgY29uc3RhbnRS
ZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKKyAgICAgICAgY29uc3RhbnRS
ZWdpc3RlciA9IG51bGxwdHI7CisKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAg
ICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworCisgICAgU3ltYm9sVGFibGUqIGZ1
bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKCptX3ZtKTsKKyAgICBmdW5j
dGlvblN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RFdmFs
KTsKKyAgICBpbnQgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gYWRkQ29uc3RhbnRWYWx1ZShm
dW5jdGlvblN5bWJvbFRhYmxlKS0+aW5kZXgoKTsKKworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZVNv
bWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgbV9jb2RlQmxvY2stPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5n
cyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOworICAg
IGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCisgICAgICAgIG1vZHVsZVByb2dyYW1O
b2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOworCisg
ICAgYXV0byBjYXB0dXJlcyA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gYm9vbCB7
CisgICAgICAgIGlmICghc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncykKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVByb2dyYW1Ob2RlLT5jYXB0dXJl
cyh1aWQpOworICAgIH07CisgICAgYXV0byB2YXJLaW5kID0gWyZdIChVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKSAtPiBWYXJLaW5kIHsKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJL
aW5kOjpTY29wZSA6IFZhcktpbmQ6OlN0YWNrOworICAgIH07CisKKyAgICBlbWl0T3Bjb2RlKG9w
X2VudGVyKTsKKworICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKKyAgICBtX2NhbGxlZVJl
Z2lzdGVyLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKKyAgICBpZiAoc2hvdWxkQ2FwdHVy
ZVNvbWVPZlRoZVRoaW5ncykgeworICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
ID0gYWRkVmFyKCk7CisgICAgICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUgInZhciIgZW52aXJv
bm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucy4gSWYg
d2UgaGF2ZQorICAgICAgICAvLyBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9ucywgd2UgaGF2
ZSB0byBob2xkIG9mZiBvbiBhbGxvY2F0aW5nIHRoZSAidmFyIiBlbnZpcm9ubWVudCBiZWNhdXNl
CisgICAgICAgIC8vIHRoZSBwYXJlbnQgc2NvcGUgb2YgdGhlICJ2YXIiIGVudmlyb25tZW50IGlz
IHRoZSBwYXJhbWV0ZXIgZW52aXJvbm1lbnQuCisgICAgICAgIGluaXRpYWxpemVWYXJMZXhpY2Fs
RW52aXJvbm1lbnQoc3ltYm9sVGFibGVDb25zdGFudEluZGV4KTsKKyAgICB9CisKKyAgICBtX2Nv
ZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlz
IgorCisgICAgLy8gTmVlZCB0byBrbm93IHdoYXQgb3VyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBQ
YXJhbWV0ZXJzIGhhdmUgc29tZSBnb29meSBiZWhhdmlvcnMgd2hlbiBpdAorICAgIC8vIGNvbWVz
IHRvIGZ1bmN0aW9ucyBvZiB0aGUgc2FtZSBuYW1lLgorICAgIGZvciAoRnVuY3Rpb25NZXRhZGF0
YU5vZGUqIGZ1bmN0aW9uIDogbW9kdWxlUHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKSkKKyAg
ICAgICAgbV9mdW5jdGlvbnMuYWRkKGZ1bmN0aW9uLT5pZGVudCgpLmltcGwoKSk7CisKKyAgICAv
LyBOb3cgZGVjbGFyZSBhbGwgdmFyaWFibGVzLgorICAgIGZvciAoRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIGZ1bmN0aW9uIDogbW9kdWxlUHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKSkgeworICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGZ1bmN0aW9uLT5pZGVudCgpOworICAgICAg
ICBjcmVhdGVWYXJpYWJsZShpZGVudCwgdmFyS2luZChpZGVudC5pbXBsKCkpLCBmdW5jdGlvblN5
bWJvbFRhYmxlKTsKKyAgICAgICAgbV9mdW5jdGlvbnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGZ1bmN0aW9uLCBOb3JtYWxGdW5jdGlvblZhcmlhYmxlKSk7CisgICAgfQorICAg
IGZvciAoYXV0byYgZW50cnkgOiBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkp
IHsKKyAgICAgICAgQVNTRVJUKCFlbnRyeS52YWx1ZS5pc0xldCgpICYmICFlbnRyeS52YWx1ZS5p
c0NvbnN0KCkpOworICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLmlzVmFyKCkpIC8vIFRoaXMgaXMg
ZWl0aGVyIGEgcGFyYW1ldGVyIG9yIGNhbGxlZS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoZW50cnkudmFsdWUuaXNFeHBvcnRlZCgpIHx8IGVudHJ5LnZhbHVlLmlzSW1wb3J0
ZWQoKSkgLy8gVGhlc2UgYXJlIG1hbmFnZWQgaW4gdGhlIE1vZHVsZUVudmlyb25tZW50LgorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIFZhcmlhYmxlcyBuYW1lZCAiYXJndW1lbnRz
IiBhcmUgbmV2ZXIgY29uc3QuCisgICAgICAgIGNyZWF0ZVZhcmlhYmxlKElkZW50aWZpZXI6OmZy
b21VaWQobV92bSwgZW50cnkua2V5LmdldCgpKSwgdmFyS2luZChlbnRyeS5rZXkuZ2V0KCkpLCBm
dW5jdGlvblN5bWJvbFRhYmxlLCBJZ25vcmVFeGlzdGluZyk7CisgICAgfQorCisgICAgLy8gQWxs
ICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFy
YW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCisgICAg
Ly8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVsdCBwYXJhbWV0ZXIgRXhwcmVzc2lvbk5vZGVz
IHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgbV9URFpTdGFjay5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBmYWxzZSkpOworCisgICAgaWYg
KG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpCisgICAgICAgIHB1c2hTY29wZWRDb250cm9s
Rmxvd0NvbnRleHQoKTsKKyAgICBtX3N5bWJvbFRhYmxlU3RhY2suYXBwZW5kKFN5bWJvbFRhYmxl
U3RhY2tFbnRyeSB7IFN0cm9uZzxTeW1ib2xUYWJsZT4oKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFi
bGUpLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBmYWxzZSwgc3ltYm9sVGFibGVDb25z
dGFudEluZGV4IH0pOworfQorCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5dGVjb2RlR2VuZXJhdG9y
KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkN2YxYjFmNzU0MzEwZWQ5N2MwMmM5ZjMzNGJhMTc2
MzA0ZjhjYmEyLi5mM2Q0YmUzOGUzNzhkZGNhYzMyY2NhMjFiOWMxMjVkYjljZGFiZjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC0yNjgsNiArMjY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2
YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggY2Mz
NGE2NjViZTMwZGIyOWUwZGFkZTNjN2Q4YTUzYTQ3YTBmNWY3Mi4uN2RmOTBjMzg2ZTY4OTI3M2Zh
NWU4OGM2ODU0YTUyMGQ1NDk2OWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC05Nyw2ICs5Nyw3IEBAIFN0cmluZyBTdGFj
a0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCgpIGNvbnN0CiAgICAgCiAgICAgc3dpdGNoIChjb2Rl
VHlwZSkgewogICAgIGNhc2UgU3RhY2tGcmFtZUV2YWxDb2RlOgorICAgIGNhc2UgU3RhY2tGcmFt
ZU1vZHVsZUNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlOgogICAgIGNhc2Ug
U3RhY2tGcmFtZUdsb2JhbENvZGU6CiAgICAgICAgIGlmICghc291cmNlVVJMLmlzRW1wdHkoKSkK
QEAgLTExOCw2ICsxMTksOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnJpZW5kbHlGdW5jdGlvbk5h
bWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIGNvbnN0CiAgICAgY2FzZSBTdGFja0ZyYW1lRXZhbENv
ZGU6CiAgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNvZGUiOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgorICAgICAgICB0cmFjZUxpbmUgPSAibW9kdWxl
IGNvZGUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YWNrRnJhbWVOYXRpdmVDb2RlOgog
ICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRl
ZERpc3BsYXlOYW1lKGNhbGxGcmFtZSwgc3RhY2tGcmFtZUNhbGxlZSkuaW1wbCgpOwpAQCAtNDUx
LDYgKzQ1NSw4IEBAIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFtZUNvZGVU
eXBlKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKICAgICBzd2l0Y2ggKHZpc2l0b3ItPmNvZGVUeXBl
KCkpIHsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkV2YWw6CiAgICAgICAgIHJldHVy
biBTdGFja0ZyYW1lRXZhbENvZGU7CisgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpNb2R1
bGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lTW9kdWxlQ29kZTsKICAgICBjYXNlIFN0YWNr
VmlzaXRvcjo6RnJhbWU6OkZ1bmN0aW9uOgogICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUZ1bmN0
aW9uQ29kZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6Okdsb2JhbDoKQEAgLTExNzYs
NiArMTE4Miw1NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxl
KiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1Nj
b3BlKiBzY29wZSkKK3sKKyAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgU2FtcGxpbmdT
Y29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOworCisgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZj
YWxsRnJhbWUtPnZtKCkpOworICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkK
KyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUo
dm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCF2bS5pc1NhZmVUb1JlY3Vyc2Uo
KSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lKSk7CisKKyAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2Fs
bCk7CisgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29t
cGlsZUVycm9yKSk7CisgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Y3V0YWJsZS0+Y29kZUJsb2NrKCk7CisKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYg
dm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkpCisgICAgICAgIHJldHVybiB0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4K
KworICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAu
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1l
bnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgUHJvdG9DYWxsRnJhbWUgcHJv
dG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVl
OjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgp
LCAxKTsKKworICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJv
ZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0
YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5z
dGFydENvbHVtbigpKTsKKworICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CisgICAgSlNWYWx1ZSBy
ZXN1bHQ7CisgICAgeworICAgICAgICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29y
ZChtX3NhbXBsZXIuZ2V0KCkpOworICAgICAgICByZXN1bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAgIH0KKworICAg
IGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAg
ICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VV
UkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkp
OworCisgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKK30KKwogTkVWRVJfSU5MSU5F
IHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJ
RCBkZWJ1Z0hvb2tJRCkKIHsKICAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZt
RW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggMTMyYzk1ZDE3ZjRlMTA5YmEzN2Ji
Y2IwMTg3MjczMmIyZjk1MTE2Zi4uODM2NmExMWQxM2M1ODJlMTllODJlM2RhZjAwYTgzOGIzNWYx
YTI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFBy
b2dyYW1FeGVjdXRhYmxlOworICAgIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAg
IGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU2FtcGxpbmdU
b29sOwpAQCAtNzYsNiArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIFN0YWNrRnJh
bWVDb2RlVHlwZSB7CiAgICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAogICAgICAgICBTdGFj
a0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAogICAgICAgICBT
dGFja0ZyYW1lRnVuY3Rpb25Db2RlLAogICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQogICAg
IH07CkBAIC0yMTIsNiArMjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUg
ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29u
c3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAg
ICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rp
b24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jiwg
SlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFi
bGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworICAgICAgICBK
U1ZhbHVlIGV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1Nj
b3BlKik7CiAKICAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVu
Y3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3Ys
IGludCYgYXJnYyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBhMWU5ZjEyYjMxNjEwOWNkMGM1MDgxNWIx
NWUxMDdjZGY1NDQ2ODM2Li44N2JlY2Q1MmU0YjFiMjgxNjQ5YzI3ZTNmYmVhODI0ZjMwZTRhNDZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcApAQCAtMTgxLDYgKzE4MSw4IEBAIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBl
IFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNvZGVUeXBlKCkgY29uc3QKICAgICBzd2l0Y2ggKGNvZGVC
bG9jaygpLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgcmV0dXJu
IENvZGVUeXBlOjpFdmFsOworICAgIGNhc2UgTW9kdWxlQ29kZToKKyAgICAgICAgcmV0dXJuIENv
ZGVUeXBlOjpNb2R1bGU7CiAgICAgY2FzZSBGdW5jdGlvbkNvZGU6CiAgICAgICAgIHJldHVybiBD
b2RlVHlwZTo6RnVuY3Rpb247CiAgICAgY2FzZSBHbG9iYWxDb2RlOgpAQCAtMTk5LDYgKzIwMSw5
IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUoKQogICAgIGNhc2Ug
Q29kZVR5cGU6OkV2YWw6CiAgICAgICAgIHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgiZXZhbCBj
b2RlIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKKyAgICAg
ICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJtb2R1bGUgY29kZSIpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIENvZGVUeXBlOjpOYXRpdmU6CiAgICAgICAgIGlmIChjYWxsZWUpCiAgICAg
ICAgICAgICB0cmFjZUxpbmUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKCks
IGNhbGxlZSkuaW1wbCgpOwpAQCAtMjE5LDYgKzIyNCw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6
OkZyYW1lOjpzb3VyY2VVUkwoKQogCiAgICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7CiAgICAgY2Fz
ZSBDb2RlVHlwZTo6RXZhbDoKKyAgICBjYXNlIENvZGVUeXBlOjpNb2R1bGU6CiAgICAgY2FzZSBD
b2RlVHlwZTo6RnVuY3Rpb246CiAgICAgY2FzZSBDb2RlVHlwZTo6R2xvYmFsOiB7CiAgICAgICAg
IFN0cmluZyBzb3VyY2VVUkwgPSBjb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZVVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlz
aXRvci5oCmluZGV4IDAwMzZhNzg5YzU4ZTE5YWUxM2IwZDRhYmZiNzU1ODNlOWJiNDY3MzQuLjQx
YmZjNzA4ODIwZWNjZmNhYzczNWIzOWI0MjI0NzEzZWJlNTJkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKQEAgLTUyLDYgKzUyLDcg
QEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsKICAgICAgICAgICAgIEdsb2JhbCwKICAgICAgICAgICAg
IEV2YWwsCiAgICAgICAgICAgICBGdW5jdGlvbiwKKyAgICAgICAgICAgIE1vZHVsZSwKICAgICAg
ICAgICAgIE5hdGl2ZQogICAgICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggYmJjODUyM2Y1YmIyM2EzOTMwYzA5NGVkNDg2MjE3NDY0ZDg2YzU1MS4uODRmMzZkNTQwZjNj
YmFhMWFlY2M1NTNhZGY4YzQ2MTRiN2JkZTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtNDg2LDYgKzQ4Niw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBp
bGUoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIAogICAgIHN3aXRjaCAobV9jb2Rl
QmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6CisgICAgY2FzZSBNb2R1
bGVDb2RlOgogICAgIGNhc2UgRXZhbENvZGU6CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX3Nob3Vs
ZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggZTkyNmY1MmRjNzZkOWVkZTJmMGUzYTVi
M2RjMjZiMzM2YTkyZjg1ZC4uMmE1ODQzNzAwYzIxNTY1YTFjMDJlYmNiMDkwNGU0YzM2ZWY5YThl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTEzMiw4
ICsxMzIsOCBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NF
UlQobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPT0gNjQpOwogI2VuZGlmCiAgICAgQVNT
RVJUKFN0cmluZ1R5cGUgPT0gNik7Ci0gICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMTgpOwotICAg
IEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMTkpOworICAgIEFTU0VSVChPYmplY3RUeXBlID09
IDIwKTsKKyAgICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDIxKTsKICAgICBBU1NFUlQoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAxKTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0hhc0luc3Rh
bmNlID09IDIpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDgp
OwpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZt
KQogICAgIEFTU0VSVChHbG9iYWxDb2RlID09IDApOwogICAgIEFTU0VSVChFdmFsQ29kZSA9PSAx
KTsKICAgICBBU1NFUlQoRnVuY3Rpb25Db2RlID09IDIpOworICAgIEFTU0VSVChNb2R1bGVDb2Rl
ID09IDMpOwogCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eSA9PSAwLCAiTExJbnQg
YXNzdW1lcyBHbG9iYWxQcm9wZXJ0eSBSZXN1bHRUeXBlIGlzID09IDAiKTsKICAgICBzdGF0aWNf
YXNzZXJ0KEdsb2JhbFZhciA9PSAxLCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXIgUmVzdWx0VHlw
ZSBpcyA9PSAxIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwCmluZGV4IDlkMDAxMDZiOWE4Mjc2ZjQ4NDIwZjZiNTQ2YzMyZDU5MzBhMzZiNjgu
LmE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2ZlMmE1NWFiNzgwYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC05NywxMiArOTcs
MzAgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaykKICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSks
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwog
fQogCitzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKHZtLmNhblVzZUpJ
VCgpKSB7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQorCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCisg
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7Cit9CisKIHZv
aWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIHN3
aXRjaCAoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBHbG9iYWxDb2RlOgogICAg
ICAgICBzZXRQcm9ncmFtRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgTW9kdWxlQ29kZToKKyAgICAgICAgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9p
bnQodm0sIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEV2YWxDb2RlOgog
ICAgICAgICBzZXRFdmFsRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggOGFi
OTZiMzA0NzVmZDU1NGRlZjhiMzI2NjI0OTY2MzJlYWY5NmQ5YS4uYWY2ODg0ZTVlZGU3YmViZTA0
ZjM3YjNmMDAwOTFlZTE2Zjk1MTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9wcm9ncmFt
X3Byb2xvZ3VlKSwgInByb2dyYW0iKTsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1vZHVs
ZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWUpLCAibW9kdWxlX3Byb2dyYW0iKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgTExJbnQKIAogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmgKaW5kZXggMGQxYmU2YmRhZWFkZjc5NDg3Y2U5MDY2ODI2NDY4
NTE4OGE4YmQxMi4uOTViMGY0NDg0OGJjYzUyOWQxNTAzZTI4OWI5M2VmZTM3MDVjODMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKQEAgLTQ2LDYgKzQ2LDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZh
bEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1vZHVsZVBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KaW5kZXggNWFkODM0NjVjZDFhNGU4ZjRlOTY0YTY3ZWQwOGExNTdlN2ZhMzc1
YS4uZTFjMDBmOWQyMDI3MjBiYTI4ZmNmYWI0NTMxNTA5NDU1ZTUwMzU1MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTYxLDggKzE2MSw4IEBAIGNvbnN0IFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSA9IDMwCiAKICMg
VHlwZSBjb25zdGFudHMuCiBjb25zdCBTdHJpbmdUeXBlID0gNgotY29uc3QgT2JqZWN0VHlwZSA9
IDE4Ci1jb25zdCBGaW5hbE9iamVjdFR5cGUgPSAxOQorY29uc3QgT2JqZWN0VHlwZSA9IDIwCitj
b25zdCBGaW5hbE9iamVjdFR5cGUgPSAyMQogCiAjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgogY29u
c3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKQEAgLTE3Niw2ICsxNzYsNyBAQCBjb25zdCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKIGNvbnN0IEdsb2JhbENvZGUg
PSAwCiBjb25zdCBFdmFsQ29kZSA9IDEKIGNvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKK2NvbnN0IE1v
ZHVsZUNvZGUgPSAzCiAKICMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2Yg
dGhlIGFyZ3VtZW50IGNvdW50LgogY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXQKQEAgLTg4NCw2ICs4ODUsMTEgQEAgX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6
CiAgICAgZGlzcGF0Y2goMCkKIAogCitfbGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWU6Cisg
ICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAg
ZGlzcGF0Y2goMCkKKworCiBfbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBwcm9sb2d1ZShub3RG
dW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGlu
dF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCAz
ZDE3N2NhNzdiOGI4ZDg4ZDg3YjRmNGU4NWNlM2Q0NjgzOGM0NDFkLi4yYzZkNmQ4ZTBmNGI0YmE1
YjYwYWU3YTAwMjg0ZGRiZDI4YzEwNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApAQCAtMzYsOSArMzYsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIAotTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBk
ZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlh
YmxlcykKK01vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAgOiBtX3ZtKCZleGVjLT52bSgp
KQotICAgICwgbV9tb2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0
ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0
cnVjdHVyZSgpLCBtb2R1bGVLZXkpKQorICAgICwgbV9tb2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwg
SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVyZSgpLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUpKQog
ICAgICwgbV9kZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcykKICAgICAsIG1fbGV4
aWNhbFZhcmlhYmxlcyhsZXhpY2FsVmFyaWFibGVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCmluZGV4IDIyOGE2OWZlZTc0NzM2NjIwZDdmNmRh
NTcxYmI2YWNhZDg0NmI3MDYuLjIwZWM1YTJlMWViMzQwY2QxYjZhYzBmMWM1YjUxZjI1ZTBjZjdj
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgK
QEAgLTMxLDExICszMSwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9kdWxlUmVj
b3JkOworY2xhc3MgU291cmNlQ29kZTsKIAogY2xhc3MgTW9kdWxlQW5hbHl6ZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE1vZHVsZUFuYWx5emVyKTsKIHB1YmxpYzoKLSAgICBNb2R1bGVB
bmFseXplcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50JiBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICBNb2R1bGVBbmFseXplcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CiAKICAgICBKU01vZHVsZVJlY29yZCogYW5hbHl6
ZShNb2R1bGVQcm9ncmFtTm9kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcAppbmRleCBhYjcwZWFiYjllM2EyYTA0NTBjNjI5ZTcwNTY2NmY0ZGNjYTAx
ZTI4Li5kMmVmZWNkODI5YjJjNDQ4NWRmMTA0YjdmZTQxYzJjNzY5YmQ4YTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTY3LDExICs2NywxOSBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IENhY2hlVHlwZXMgeyB9OwogdGVtcGxhdGUg
PD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPiB7CiAgICAgdHlw
ZWRlZiBKU0M6OlByb2dyYW1Ob2RlIFJvb3ROb2RlOwogICAgIHN0YXRpYyBjb25zdCBTb3VyY2VD
b2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNvZGVLZXk6OlByb2dyYW1UeXBlOwor
ICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZTsKIH07CiAKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVu
bGlua2VkRXZhbENvZGVCbG9jaz4gewogICAgIHR5cGVkZWYgSlNDOjpFdmFsTm9kZSBSb290Tm9k
ZTsKICAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUgPSBT
b3VyY2VDb2RlS2V5OjpFdmFsVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7Cit9OworCit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IHsK
KyAgICB0eXBlZGVmIEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGUgUm9vdE5vZGU7CisgICAgc3RhdGlj
IGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtleTo6
UHJvZ3JhbVR5cGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUg
PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZTsKIH07CiAKIHRlbXBsYXRlIDxj
bGFzcyBVbmxpbmtlZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlPgpAQCAtOTUs
NyArMTAzLDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKICAgICB0eXBlZGVmIHR5cGVuYW1l
IENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigK
ICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1v
ZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yLCBudWxscHRy
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVUeXBl
czxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTMyLDYgKzE0MCwxMiBAQCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0RXZhbENvZGVCbG9jayhWTSYgdm0sIEV2YWxFeGVjdXRh
YmxlKiBleGVjdQogICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29k
ZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
dGhpc1REWk1vZGUsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgdmFyaWFibGVz
VW5kZXJURFopOwogfQogCitVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIENvZGVDYWNo
ZTo6Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYgdm0sIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRp
bk1vZGUgYnVpbHRpbk1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3sKKyAgICBWYXJpYWJsZUVudmly
b25tZW50IGVtcHR5UGFyZW50VERaVmFyaWFibGVzOworICAgIHJldHVybiBnZXRHbG9iYWxDb2Rl
QmxvY2s8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291
cmNlLCBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFRoaXNURFpNb2Rl
OjpDaGVja0lmTmVlZGVkLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsICZlbXB0
eVBhcmVudFREWlZhcmlhYmxlcyk7Cit9CisKIC8vIEZJWE1FOiBUaGVyZSdzIG5vIG5lZWQgdG8g
YWRkIHRoZSBmdW5jdGlvbidzIG5hbWUgdG8gdGhlIGtleSBoZXJlLiBJdCdzIGFscmVhZHkgaW4g
dGhlIHNvdXJjZSBjb2RlLgogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6
Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHZtLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggYWY3ZGFj
N2U0ODcwNDEzMTljNjNmZWM5NzU1ZTIzOTMxODgzNGNiNi4uNzE3NWZlMzk1MTJjOTM2NmU2MTYz
OTgxM2NiNmM0ZjgyMjU5OGRlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmgKQEAgLTQ1LDggKzQ1LDEwIEBAIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBKU1Nj
b3BlOwogY2xhc3MgUGFyc2VyRXJyb3I7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKK2NsYXNz
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFz
cyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CkBAIC01
Niw3ICs1OCw3IEBAIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogCiBjbGFzcyBTb3VyY2VDb2RlS2V5
IHsKIHB1YmxpYzoKLSAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBlLCBG
dW5jdGlvblR5cGUgfTsKKyAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBl
LCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKIAogICAgIFNvdXJjZUNvZGVLZXkoKQogICAg
IHsKQEAgLTI1Nyw2ICsyNTksNyBAQCBjbGFzcyBDb2RlQ2FjaGUgewogCiAgICAgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrKiBnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiwgUHJvZ3JhbUV4ZWN1dGFi
bGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJp
Y3RNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKICAgICBV
bmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdldEV2YWxDb2RlQmxvY2soVk0mLCBFdmFsRXhlY3V0YWJs
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmlj
dE1vZGUsIFRoaXNURFpNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJy
b3ImLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiwgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgRGVi
dWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogCiAg
ICAgdm9pZCBjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCAxNjNiMTE2MTA0MWNjZGIzNWFkNTI5NzZjYWZlNmJkMTFk
ZmM4Yjc3Li40ZmRiZDkzMTQzMDhmYjk5NTE0NTM2ODMzODNlMWJhNGUyYzgyZjc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTI4Myw2ICsyODMsNyBAQAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oU3RyaW5nKSBc
CiAgICAgbWFjcm8oTWFwKSBcCisgICAgbWFjcm8oU2V0KSBcCiAgICAgbWFjcm8oUHJvbWlzZSkg
XAogICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3JvKGFicykgXApAQCAtMzA3
LDYgKzMwOCw3IEBACiAgICAgbWFjcm8oSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCiAgICAg
bWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oc2V0KSBcCisgICAgbWFjcm8oYWRkKSBcCiAKIAogbmFt
ZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCmluZGV4IDI3MTE3OGMyYjVmNjQzN2U2OGRlNTkyZDYxNGI4MTJmYTUxZWYyNWQuLmI1ZjYy
M2FjZGE1MjMwNTExODdkMGRiNTY4ODUyMTI2MmQ4NjI0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgY2hl
Y2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFBhcnNlckVycm9yJiBlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFByaXZhdGVOYW1l
IHByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIkVudHJ5UG9pbnRNb2R1bGUi
KTsKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHByaXZhdGVOYW1lKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygp
LCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICBNb2R1bGVBbmFs
eXplciBtb2R1bGVBbmFseXplcihleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByaXZhdGVOYW1l
KSwgc291cmNlLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVBy
b2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAgIG1vZHVsZUFuYWx5emVyLmFuYWx5
emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggNWZmYjhkYjdmMDUwNWI0
ZDE2MjZhMzY4NDdhMjg4MWZiNGExNzUyMy4uM2UxNzE2NjQxMDhkNjNiNTBmMDQyZjczZjIyZjE1
MTJiNjNkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNv
cmQuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCkBAIC0xNTksNyArMTYwLDE4IEBAIHZvaWQg
U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2Nr
KQogICAgICAgICBleGVjdXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCisKKyAgICBjYXNlIE1vZHVsZUNvZGU6IHsK
KyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGdl
bmVyaWNDb2RlQmxvY2spOworCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsK
KworICAgICAgICBvbGRDb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2Rl
QmxvY2s7CisgICAgICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IGNv
ZGVCbG9jazsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBFdmFsQ29kZTogewog
ICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxFdmFsRXhlY3V0YWJs
ZSo+KHRoaXMpOwogICAgICAgICBFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2Fz
dDxFdmFsQ29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CkBAIC0yMjYsNyArMjM4LDE3IEBA
IFJlZlB0cjxDb2RlQmxvY2s+IFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKICAg
ICAgICAgICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrLmdldCgpLCBzY29wZSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3Zp
ZGVyKCksIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0Q29sdW1uKCkpKTsKICAgICB9Ci0gICAg
CisKKyAgICBpZiAoY2xhc3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8o
KSkgeworICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2Fz
dDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChraW5kID09IENvZGVGb3JDYWxsKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWN1dGFi
bGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFm
dW5jdGlvbik7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaygKKyAgICAgICAgICAgIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpLCBzY29wZSwKKyAgICAgICAgICAgIGV4ZWN1dGFibGUt
PnNvdXJjZSgpLnByb3ZpZGVyKCksIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0Q29sdW1uKCkp
KTsKKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4
ZWN1dGFibGU6OmluZm8oKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb24pOwogICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pih0aGlzKTsKQEAgLTI4Myw2ICszMDUsMTcgQEAgUGFzc1JlZlB0cjxDb2RlQmxvY2s+IFNjcmlw
dEV4ZWN1dGFibGU6Om5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKAogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAorICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNhbGwpOworICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpz
Q2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOworICAgICAgICBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBiYXNlbGluZSA9IHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqPigKKyAgICAgICAgICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+
YmFzZWxpbmVWZXJzaW9uKCkpOworICAgICAgICBSZWZQdHI8TW9kdWxlUHJvZ3JhbUNvZGVCbG9j
az4gcmVzdWx0ID0gYWRvcHRSZWYobmV3IE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAg
ICAgICBDb2RlQmxvY2s6OkNvcHlQYXJzZWRCbG9jaywgKmJhc2VsaW5lKSk7CisgICAgICAgIHJl
c3VsdC0+c2V0QWx0ZXJuYXRpdmUoYmFzZWxpbmUpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKwogICAgIFJFTEVBU0VfQVNTRVJUKGNsYXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0
YWJsZTo6aW5mbygpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGJh
c2VsaW5lID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPigKQEAgLTM4Myw2ICs0MTYs
NDIgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAg
c3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKS0+UHJvZ3JhbUV4ZWN1dGFibGU6
On5Qcm9ncmFtRXhlY3V0YWJsZSgpOwogfQogCitjb25zdCBDbGFzc0luZm8gTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlw
dEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSkgfTsKKworTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAg
IDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlKQoreworICAgIG1fdHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0ID0gMDsKKyAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2Uu
bGVuZ3RoKCkgLSAxOworICAgIGlmIChleGVjLT52bSgpLnR5cGVQcm9maWxlcigpIHx8IGV4ZWMt
PnZtKCkuY29udHJvbEZsb3dQcm9maWxlcigpKQorICAgICAgICBleGVjLT52bSgpLmZ1bmN0aW9u
SGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2Uoc291cmNlSUQoKSwgbV90
eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCk7Cit9CisK
K01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKGV4ZWMsIHNv
dXJjZSk7CisgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgbW9kdWxl
UmVjb3JkKTsKKworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayhleGVjLCBleGVjdXRhYmxlKTsKKyAgICBpZiAoIXVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLnNldChleGVjLT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlKTsKKworICAgIHJldHVybiBleGVjdXRhYmxlOworfQorCit2b2lk
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIG1fbW9kdWxlUmVjb3JkLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKK30KKwordm9p
ZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAg
c3RhdGljX2Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKS0+TW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6On5Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpOworfQorCiBjb25zdCBDbGFz
c0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1dGFibGUi
LCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0
aW9uRXhlY3V0YWJsZSkgfTsKIAogRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFi
bGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIApAQCAtNTM1LDYgKzYwNCw0NyBA
QCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQogICAgIEJhc2U6OmNsZWFyQ29k
ZSgpOwogfQogCitKU09iamVjdCogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxl
UHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+
KAorICAgICAgICB2bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFNvdXJj
ZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIGVycm9yKTsKKyAgICBpZiAobW9kdWxlUHJv
Z3JhbU5vZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChlcnJvci5pc1Zh
bGlkKCkpOworICAgIHJldHVybiBlcnJvci50b0Vycm9yT2JqZWN0KGxleGljYWxHbG9iYWxPYmpl
Y3QsIG1fc291cmNlKTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5r
Q2FsbHMoKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKCFtX2ppdENvZGVGb3JDYWxsKQor
ICAgICAgICByZXR1cm47CisgICAgUkVMRUFTRV9BU1NFUlQobV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKTsKKyAgICBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPnVubGlua0NhbGxzKCk7CisjZW5k
aWYKK30KK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAg
ICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3Jk
KTsKKyAgICBpZiAodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorICAgICAg
ICB0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZp
c2l0b3IpOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQor
eworICAgIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IG51bGxwdHI7CisgICAgbV91bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICBCYXNlOjpjbGVhckNvZGUoKTsK
K30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2Rl
QmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQ7CkBAIC02MjMsNiArNzMzLDE1IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgICAgIG91dC5wcmludCgiUHJv
Z3JhbUV4ZWN1dGFibGUgdy9vIENvZGVCbG9jayIpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
CisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkp
IHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihyZWFsVGhpcyk7CisgICAgICAgIGlmIChDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpKQorICAgICAgICAgICAgb3V0
LnByaW50KCpjb2RlQmxvY2spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQo
Ik1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0ganNDYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHJlYWxUaGlzKTsKICAgICBpZiAoIWZ1bmN0aW9uLT5laXRo
ZXJDb2RlQmxvY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aAppbmRleCAwNDA1Mzc3M2MxMDc2NDBlYjY2ZjJhZGEzMjE4NjkxOTUwODEyNzVjLi4wZWJkOTlj
MDliNDA2ZjhhMGQ5ZmFlYzM2MjNmNGYyMDVmYjQ1OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC01Miw2ICs1Miw4IEBAIGNsYXNzIEV2YWxDb2Rl
QmxvY2s7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiBjbGFzcyBKU1Njb3BlOwogICAgIAogZW51bSBD
b21waWxhdGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24g
fTsKQEAgLTEwNCw2ICsxMDYsMTEgQEAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICB7CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGVU
eXBlOwogICAgIH0KKyAgICBib29sIGlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU7Cisg
ICAgfQorCiAKICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKICAgICB7CkBAIC01NDMs
NiArNTUwLDU1IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlw
dEV4ZWN1dGFibGUgewogICAgIFJlZlB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2Rl
QmxvY2s7CiB9OwogCitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworcHVibGljOgorICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKworICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU01vZHVsZVJlY29y
ZCopOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gbV9tb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOworICAgIH0KKworICAgIEpTT2JqZWN0KiBjaGVja1N5
bnRheChFeGVjU3RhdGUqKTsKKworICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklU
Q29kZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBl
SW5mbyhNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIHVubGlua0NhbGxzKCk7
CisKKyAgICB2b2lkIGNsZWFyQ29kZSgpOworCisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBmYWxzZSk7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKKworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0
IFNvdXJjZUNvZGUmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU01vZHVsZVJl
Y29yZCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
az4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CisgICAgV3JpdGVCYXJyaWVyPEpT
TW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKKyAgICBSZWZQdHI8TW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaz4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworfTsKKwogY2xhc3MgRnVuY3Rpb25F
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTY4
OSw2ICs3NDUsOCBAQCBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVh
bChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICBjYXNlIEZ1bmN0
aW9uRXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOworICAgIGNhc2UgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGVUeXBlOgorICAgICAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBqc0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsK
ICAgICB9CkBAIC03MDMsNiArNzYxLDggQEAgaW5saW5lIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6
dW5saW5rQ2FsbHMoKQogICAgICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4o
dGhpcyktPnVubGlua0NhbGxzKCk7CiAgICAgY2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOgog
ICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpLT51bmxpbmtD
YWxscygpOworICAgIGNhc2UgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgorICAgICAgICBy
ZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxz
KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggOTNlZTFmZDc0Yjk5MjU5MDQxY2ExZTg2MmY2MzExZjY1MDk4Mzg5YS4uMmQy
MjliZTY5NDQ5ZDZlODJiNTI4ZmVlZGZhZTAzYjUyZDk3ZjMwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODQsNiArODQsOCBA
QAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNN
YXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRl
ICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgi
CiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgpAQCAtMzEw
LDYgKzMxMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fdHlw
ZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5zdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U0RhdGFWaWV3OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fdHlwZWRBcnJheXNbdG9JbmRl
eChUeXBlRGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKICAgICBtX2xleGljYWxF
bnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTGV4aWNhbEVudmlyb25tZW50Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX21vZHVsZUVudmlyb25tZW50U3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzKSk7CiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVs
bCgpKSk7CiAgICAgbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnNldChtX3ZtLCB0aGlzLCBEZWJ1
Z2dlclNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUobV92bSwgdGhpcykpOwogICAgIG1fd2l0aFNjb3Bl
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXaXRoU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywganNOdWxsKCkpKTsKQEAgLTM0Niw2ICszNDksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKIAog
ICAgIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAg
ICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAg
ICAgCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CkBA
IC01MjAsNiArNTI0LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNv
bHZlVGhlbmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVH
ZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0
b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlNldFByaXZhdGVOYW1lLCBzZXRDb25zdHJ1Y3Rv
ciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3Rh
dGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMp
KTsKICAgICAKQEAgLTc4OSw2ICs3OTQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGlyZWN0QXJndW1l
bnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZWRB
cmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX291
dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSk7CkBAIC04MTYsNiArODIyLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRT
dHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVz
cGFjZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Y29uc29sZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZG9s
bGFyVk1TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVy
bmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwpAQCAtOTMwLDYgKzkzNywyNSBAQCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSog
Y2FsbEZyYW1lLAogICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0KIAorVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUpCit7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSA9IGhhc0RlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7
CisgICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGhhc1Byb2ZpbGVyKCkgPyBQcm9maWxl
ck9uIDogUHJvZmlsZXJPZmY7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2soCisgICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgZXJyb3IpOworCisgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCisgICAgICAgIGRlYnVnZ2VyKCkt
PnNvdXJjZVBhcnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCks
IGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKKworICAgIGlmIChlcnJvci5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgZXJyb3IudG9FcnJvck9iamVj
dCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7Cit9CisKIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjYxMzE2ZTg1ZDJiYWZiZGVkNzg0MzBiNmY4Zjhl
YmE1YWQ4Nzc2ZS4uOGMyZTNjYTRlZTRjZjJiZTFmMjliMTJlMDdmYjQ1NTMwMDcxZWIyNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC03
OCw2ICs3OCw3IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3Q7CitjbGFzcyBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiBjbGFz
cyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CkBAIC04NSw2ICs4
Niw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7
CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgTnVsbEdldHRlckZ1bmN0aW9uOwogY2xh
c3MgTnVsbFNldHRlckZ1bmN0aW9uOwogZW51bSBjbGFzcyBUaGlzVERaTW9kZTsKQEAgLTIzMCw2
ICsyMzIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVudmlyb25t
ZW50U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlRW52aXJv
bm1lbnRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kaXJlY3RBcmd1
bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zY29wZWRBcmd1
bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vdXRPZkJhbmRB
cmd1bWVudHNTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3Ry
dWN0dXJlOwogI2VuZGlmCkBAIC00NDYsNiArNDUwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiB3aXRo
U2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiBhY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2Fs
RW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmly
b25tZW50U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIHNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nv
cGVkQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvdXRPZkJhbmRB
cmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX291dE9mQmFuZEFyZ3VtZW50c1N0
cnVjdHVyZS5nZXQoKTsgfQpAQCAtNDk5LDYgKzUwNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0YXRpYyBwdHJkaWZm
X3QgaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNHbG9iYWxPYmplY3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3Ry
dWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Jl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxl
UmVjb3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogd2FzbU1vZHVsZVN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5nZXQoKTsgfQogI2Vu
ZGlmCkBAIC02NDEsNiArNjQ3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sq
IGNyZWF0ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJvZ3JhbUV4ZWN1dGFibGUqLCBK
U09iamVjdCoqIGV4Y2VwdGlvbik7CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjcmVhdGVF
dmFsQ29kZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwgVGhpc1REWk1vZGUsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIGNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqKTsKIAogcHJvdGVjdGVkOgogICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0
eUluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKaW5kZXggOTUxNjMxOGQ3MDE2OWUzZGQ4YzJiZWY3ODMzMTI1Njc1YzVl
MjE4Yi4uNDQ4ZWE0MzFiN2I3Yzk4MjYyZDQxMGJmMDFmODQ5MzcxZDhhYjU3NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUmVnaXN0ZXI7CiAgICAg
CiBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVjb3Jk
IHsKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQoVk0mLCBT
dHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKICAgICAKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmJlMDQzYTFiODUyNWE3NjU3MDI3OGQ3ZDFjYjhmYzY4MDY0MmJjZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlRW52aXJvbm1lbnQuaCIKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNw
YWNlIHN0ZDsKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVu
dmlyb25tZW50OjpzX2luZm8gPSB7ICJKU01vZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01v
ZHVsZUVudmlyb25tZW50KiBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkKQoreworICAgIC8vIEpTTGV4aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpT
RW52aXJvbm1lbnRSZWNvcmQpIGhhcyB0aGUgc3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUg
c2xvdHMgYWZ0ZXIgdGhlIGl0cyBjbGFzcyBzdG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9m
ZnNldCBvZiB0aGUgdmFyaWFibGUgc2xvdHMgYXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50
UmVjb3JkLCBpbmhlcml0dGluZyB0aGVzZSBjbGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmll
bGQgaXMgbm90IGFsbG93ZWQsCisgICAgLy8gdGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRo
ZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLyBUbyBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50
IGNvbXBhdGlibGUgdG8gdGhlIEpTTGV4aWNhbEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBt
ZW1iZXIgdG8gc3RvcmUgdGhlIEpTTW9kdWxlUmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2Nh
dGUKKyAgICAvLyB0aGUgc3RvcmFnZSBhZnRlciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8K
KyAgICAvLyBKU0xleGljYWxFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZp
cm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBdCisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmly
b25tZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNs
b3RzIF1bIGFkZGl0aW9uYWwgc2xvdHMgZm9yIEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpT
TW9kdWxlRW52aXJvbm1lbnQqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBO
b3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZt
LmhlYXAsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkp
CisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3Bl
LCBzeW1ib2xUYWJsZSk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZh
bHVlLCBtb2R1bGVSZWNvcmQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1
bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1
ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgaW5pdGlhbFZhbHVlKTsKKyAgICB0aGlzLT5tb2R1bGVSZWNvcmQoKS5zZXQodm0s
IHRoaXMsIG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
TW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVu
dCo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPnNjb3BlU2l6ZSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NmQyNzUzMjA3NGY2ZWJkNjFiZjE1NmYyZTk4OWNkYzFmMWNjZWFhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZp
bmUgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBSZWdpc3RlcjsKKworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xl
eGljYWxFbnZpcm9ubWVudCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0xleGljYWxFbnZpcm9u
bWVudCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEpTVmFsdWUgaW5p
dGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJv
bm1lbnQqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2Nv
cGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRp
YWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAgICB7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVFbnZpcm9ubWVudFN0cnVj
dHVyZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29w
ZSwgc3ltYm9sVGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICB9CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3Rh
dGljIHNpemVfdCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUp
CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihX
cml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KT4oQmFzZTo6YWxsb2NhdGlvblNpemUoc3ltYm9s
VGFibGUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZk1vZHVs
ZVJlY29yZChzeW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3Jk
Pik7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1
Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIFdy
aXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+JiBtb2R1bGVSZWNvcmQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29y
ZD4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3lt
Ym9sVGFibGUoKSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKK307CisKK2lubGluZSBKU01vZHVsZUVudmlyb25tZW50OjpK
U01vZHVsZUVudmlyb25tZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUq
IGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmEzOGE2NTQwZDdlZTk1MjE0NWVmMGVhMmZjNjcxOGRlZmM4N2I0MmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKKworI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJv
bm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKEV4
ZWNTdGF0ZSopOworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnNf
aW5mbyA9IHsgIk1vZHVsZU5hbWVzcGFjZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpIH07CisKKworSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgOiBK
U1dyYXBwZXJPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhwb3J0cyhleHBvcnRzKQor
eworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVlKHZtLCBtb2R1bGVSZWNvcmQpOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2ws
IG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yLCBEb250RW51bSwgMCk7CisKKyAg
ICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
bW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRwcm90b3R5cGVvZgorICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUt
bmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldHByb3RvdHlwZW9mLXYKKyAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVz
cGFjZS1leG90aWMtb2JqZWN0cy1pc2V4dGVuc2libGUKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90
aWMtb2JqZWN0cy1wcmV2ZW50ZXh0ZW5zaW9ucworICAgIHByZXZlbnRFeHRlbnNpb25zKHZtKTsK
K30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
Cit7CisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6fkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KCk7Cit9CisKK2Jvb2wgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0b3ducHJvcGVy
dHktcAorCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKworICAgIGlmIChwcm9wZXJ0eU5hbWUu
aXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKworICAgIGlmICghdGhpc09i
amVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSB0aGlzT2Jq
ZWN0LT5pbnRlcm5hbFZhbHVlKCk7CisKKyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVNldCBy
ZXNvbHZlU2V0OworICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAgICBjb25zdCBh
dXRvIHJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCByZXNvbHZlU2V0LCBleHBv
cnRTdGFyU2V0KTsKKyAgICBBU1NFUlQocmVzb2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3Jk
OjpSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCAmJiByZXNvbHV0aW9uLnR5cGUgIT0gSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cyk7CisgICAgSlNNb2R1bGVSZWNv
cmQqIHRhcmdldE1vZHVsZSA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkOworICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZp
cm9ubWVudCgpOworICAgIFByb3BlcnR5U2xvdCB0cmFtcG9saW5lU2xvdCh0YXJnZXRFbnZpcm9u
bWVudCk7CisgICAgaWYgKCF0YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlv
bi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5
TmFtZSk7CisgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCit7CisgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1u
YW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZlcgorICAgIHJldHVybjsKK30K
KworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUt
bmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlbGV0ZS1wCisgICAgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxs
KTsKKyAgICByZXR1cm4gIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5h
bWUudWlkKCkpOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFy
cmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5h
bWVzcGFjZS1leG90aWMtb2JqZWN0cy1vd25wcm9wZXJ0eWtleXMKKyAgICBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+
KGNlbGwpOworICAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6IHRoaXNPYmplY3QtPm1fZXhwb3J0
cykKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQobmFtZS5nZXQoKSk7CisgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIG1vZGUpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25O
b25JbmRleFByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCisgICAg
aWYgKHNob3VsZFRocm93KQorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBl
eHRlbnNpYmxlLiIpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Cisg
ICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInx0aGlzfCBzaG91bGQgYmUg
YW4gb2JqZWN0IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3Bl
cnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCksIGFzT2JqZWN0KHRoaXNWYWx1ZSkpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODM1MGU3OTZlYTNi
MDI0OWU2MWNlYTAxZjllZjBhYWY4NTYzMDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisjZGVmaW5lIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0X2gKKworI2luY2x1ZGUgIkpTV3JhcHBlck9iamVjdC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKK2NsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU1dy
YXBwZXJPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
LCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0PihleGVjLT52bSgpLmhlYXApKSBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGV4cG9ydHMpOworICAgICAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgbW9kdWxlUmVjb3JkKTsKKyAg
ICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBKU01vZHVs
ZVJlY29yZCogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU01vZHVsZVJl
Y29yZCo+KEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTt9CisKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU01vZHVsZVJlY29yZCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cyk7
CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIElk
ZW50aWZpZXJTZXQgbV9leHBvcnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggZTcwMmZhZmE0NGU1MDZmOWQ0N2Zl
ZGU2MzM2NjRhNzM4YzE5YjQwYi4uODk3M2ZjOGExZjVlNzBhMzlhZWJkY2IyNjhhMTY0ZjNmY2E3
YjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcApAQCAtMjAsMTUgKzIwLDIwIEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogCisjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
TWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQxLDEy
ICs0NiwyNCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAg
ICB0aGlzT2JqZWN0LT5KU01vZHVsZVJlY29yZDo6fkpTTW9kdWxlUmVjb3JkKCk7CiB9CiAKLQog
dm9pZCBKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAg
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJy
ZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImV2YWx1YXRlZCIpKSwganNCb29s
ZWFuKGZhbHNlKSk7CisKKyAgICBtX2RlcGVuZGVuY2llc01hcC5zZXQodm0sIHRoaXMsIEpTTWFw
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKSkpOworICAgIHB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgiZGVwZW5k
ZW5jaWVzTWFwIikpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7Cit9CisKK3ZvaWQgSlNNb2R1
bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBKU01vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJl
Y29yZCo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnQp
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVj
dCk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsK
IH0KIAogYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0
IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKQEAg
LTY0LDYgKzgxLDIyMSBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRl
SW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJldHVybiBFeHBv
cnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnRO
YW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07CiB9CiAKK3Zv
aWQgSlNNb2R1bGVSZWNvcmQ6OmFsbG9jYXRlTW9kdWxlRW52aXJvbm1lbnQoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIEFTU0VSVCghbV9tb2R1bGVFbnZpcm9ubWVudCk7CisKKyAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKGV4ZWMtPnZtKCkpOworICAg
IHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9j
ayk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgewor
ICAgICAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAg
ICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpU
eXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgLy8gVGhlIGhlYXAgdmFyaWFibGUgZm9y
IHRoZSBuYW1lc3BhY2Ugb2JqZWN0IGlzIGludHJvZHVjZWQgd2hlbiBpbXBvcnRpbmcgYWxsIHRo
ZSBuYW1lc3BhY2UgYmluZGluZyBpbnRvIHRoZSBjdXJyZW50IG1vZHVsZSBzY29wZS4KKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZz
ZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKSk7CisgICAgICAgICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIGV4cG9ydEVudHJ5LnZh
cmlhYmxlLmlzQ29uc3QoKSA/IFJlYWRPbmx5IDogMCk7CisgICAgICAgICAgICAgICAgc3ltYm9s
VGFibGUtPmFkZChsb2NrZXIsIGV4cG9ydEVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIG5ld0VudHJ5
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykgeworICAgICAg
ICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAg
aWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKSB7CisgICAgICAgICAgICAg
ICAgVmFyT2Zmc2V0IHZhck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChs
b2NrZXIpKTsKKyAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9m
ZnNldCwgUmVhZE9ubHkpOworICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQobG9ja2Vy
LCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX21vZHVsZUVudmlyb25tZW50LnNldChleGVjLT52
bSgpLCB0aGlzLCBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN5bWJv
bFRhYmxlLCBqc1REWlZhbHVlKCksIHRoaXMpKTsKK30KKworc3RhdGljIEpTVmFsdWUgaWRlbnRp
ZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIFN5
bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRp
Zmllci5pbXBsKCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoJmV4ZWMtPnZtKCksIGlkZW50aWZp
ZXIuaW1wbCgpKTsKK30KKworSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0UmVz
b2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlTmFtZSkKK3sKKyAgICBKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSA9IGlkZW50aWZpZXJUb0pT
VmFsdWUoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgSlNWYWx1ZSBwYWlyID0gbV9kZXBlbmRlbmNp
ZXNNYXAtPkpTTWFwOjpnZXQoZXhlYywgbW9kdWxlTmFtZVZhbHVlKTsKKyAgICByZXR1cm4ganND
YXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAidmFsdWUiKSkpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhw
b3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgUmVzb2x2
ZVNldCYgcmVzb2x2ZVNldCwgSWRlbnRpZmllclNldCYgc3RhclNldCkgLT4gUmVzb2x1dGlvbgor
eworICAgIGlmICghcmVzb2x2ZVNldC5hZGQoUmVzb2x2ZVF1ZXJ5KG1vZHVsZUtleSgpLCBleHBv
cnROYW1lKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0
aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50aWZpZXIoKSB9Owor
CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5kKGV4cG9ydE5h
bWUuaW1wbCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9leHBvcnRFbnRyaWVzLmVuZCgpKSB7
CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgY2FzZSBKU01vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICBjYXNlIEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgcmV0dXJuIFJl
c29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCwgbW9kdWxlS2V5KCksIHRoaXMs
IGV4cG9ydEVudHJ5LmxvY2FsTmFtZSB9OworCisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6
OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDogeworICAgICAgICAgICAgSlNNb2R1bGVSZWNv
cmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVj
LCBleHBvcnRFbnRyeS5tb2R1bGVOYW1lKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gaW5kaXJl
Y3RSZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGVSZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywg
ZXhwb3J0TmFtZSwgcmVzb2x2ZVNldCwgc3RhclNldCk7CisgICAgICAgICAgICBpZiAoaW5kaXJl
Y3RSZXNvbHV0aW9uLnR5cGUgIT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGluZGlyZWN0UmVzb2x1dGlvbjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZXhwb3J0TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQpCisgICAgICAgIHJldHVybiBSZXNvbHV0
aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3IsIG1vZHVsZUtleSgpLCB0aGlzLCBJZGVudGlm
aWVyKCkgfTsKKworICAgIGlmICghc3RhclNldC5hZGQobW9kdWxlS2V5KCkuaW1wbCgpKS5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6Ok5v
dEZvdW5kLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBhdXRvIHN0
YXJSZXNvbHV0aW9uID0gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kLCBt
b2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisgICAgZm9yIChjb25zdCBhdXRvJiBz
dGFyTW9kdWxlTmFtZSA6IG1fc3RhckV4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgSlNNb2R1bGVS
ZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShl
eGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlUmVjb3JkLT5yZXNv
bHZlRXhwb3J0KGV4ZWMsIGV4cG9ydE5hbWUsIHJlc29sdmVTZXQsIHN0YXJTZXQpOworICAgICAg
ICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cyB8fCBy
ZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzb2x1dGlvbjsKKyAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSAhPSBSZXNvbHV0
aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgaWYgKHN0YXJSZXNvbHV0aW9uLnR5
cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpCisgICAgICAgICAgICAgICAgc3RhclJl
c29sdXRpb24gPSByZXNvbHV0aW9uOworICAgICAgICAgICAgZWxzZSBpZiAoc3RhclJlc29sdXRp
b24ubW9kdWxlS2V5ICE9IHJlc29sdXRpb24ubW9kdWxlS2V5IHx8IHN0YXJSZXNvbHV0aW9uLmxv
Y2FsTmFtZSAhPSByZXNvbHV0aW9uLmxvY2FsTmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
UmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cywgSWRlbnRpZmllcigpLCBu
dWxscHRyLCBJZGVudGlmaWVyKCkgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBz
dGFyUmVzb2x1dGlvbjsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6Z2V0RXhwb3J0ZWROYW1l
cyhFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJTZXQmIGV4cG9ydFN0YXJTZXQsIElkZW50aWZp
ZXJTZXQmIGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVEZWZhdWx0TW9kZSBtb2RlKQoreworICAgIGlm
IChleHBvcnRTdGFyU2V0LmNvbnRhaW5zKG1vZHVsZUtleSgpLmltcGwoKSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBleHBvcnRTdGFyU2V0LmFkZChtb2R1bGVLZXkoKS5pbXBsKCkpOworICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBh
dXRvJiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50
cnkudHlwZSkgeworICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlw
ZTo6TG9jYWw6CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBl
OjpJbmRpcmVjdDoKKyAgICAgICAgICAgIGlmIChtb2RlID09IEluY2x1ZGVEZWZhdWx0TW9kZTo6
SW5jbHVkZSB8fCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQgIT0gZXhwb3J0
RW50cnkuZXhwb3J0TmFtZSkKKyAgICAgICAgICAgICAgICBleHBvcnRlZE5hbWVzLmFkZChleHBv
cnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHN0YXJNb2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykgeworICAgICAgICBKU01vZHVs
ZVJlY29yZCogcmVxdWVzdGVkTW9kdWxlUmVjb3JkID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVs
ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7
CisgICAgICAgIHJlcXVlc3RlZE1vZHVsZVJlY29yZC0+Z2V0RXhwb3J0ZWROYW1lcyhleGVjLCBl
eHBvcnRTdGFyU2V0LCBleHBvcnRlZE5hbWVzLCBJbmNsdWRlRGVmYXVsdE1vZGU6OkV4Y2x1ZGUp
OworICAgIH0KK30KKworSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3JkOjpn
ZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChtX21vZHVsZU5h
bWVzcGFjZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmdl
dCgpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICBJZGVudGlmaWVyU2V0IGV4cG9ydGVkTmFtZXM7CisgICAgewor
ICAgICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgICAgIGdldEV4cG9ydGVk
TmFtZXMoZXhlYywgZXhwb3J0U3RhclNldCwgZXhwb3J0ZWROYW1lcywgSW5jbHVkZURlZmF1bHRN
b2RlOjpJbmNsdWRlKTsKKyAgICB9CisKKyAgICBJZGVudGlmaWVyU2V0IHVuYW1iaWd1b3VzTmFt
ZXM7CisgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZXhwb3J0ZWROYW1lcykgeworICAgICAg
ICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3Rh
clNldDsKKyAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVj
LCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUuZ2V0KCkpLCByZXNvbHZlU2V0LCBleHBv
cnRTdGFyU2V0KTsKKyAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAg
Y2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6
OkFtYmlndW91czoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUmVzb2x1dGlv
bjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICB1bmFtYmlndW91c05hbWVzLmFkZChuYW1l
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbV9tb2R1bGVO
YW1lc3BhY2VPYmplY3Quc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm1vZHVsZU5hbWVz
cGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91c05hbWVzKSk7CisgICAgcmV0
dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworfQorCit2b2lkIEpTTW9kdWxlUmVj
b3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQVNT
RVJUKG1fbW9kdWxlRW52aXJvbm1lbnQpOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
ID0gbV9tb2R1bGVFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKKworICAgIGZvciAoY29uc3Qg
YXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBleHBv
cnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIGlmIChleHBvcnRFbnRyeS50eXBlID09IEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3QpIHsKKyAgICAgICAgICAg
IFJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0
U3RhclNldDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBv
cnQoZXhlYywgZXhwb3J0RW50cnkuZXhwb3J0TmFtZSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNl
dCk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICAgICAg
Y2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1
dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFt
YmlndW91czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpS
ZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykg
eworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAg
IEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1
bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgICAgIGlmIChpbXBvcnRF
bnRyeS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkgeworICAgICAgICAgICAgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVO
YW1lc3BhY2UoZXhlYyk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+aW5saW5lR2V0KGxvY2tlciwgaW1wb3J0RW50cnkubG9j
YWxOYW1lLmltcGwoKSk7CisgICAgICAgICAgICBTY29wZU9mZnNldCBvZmZzZXQgPSBlbnRyeS5z
Y29wZU9mZnNldCgpOworICAgICAgICAgICAgQVNTRVJUKG1fbW9kdWxlRW52aXJvbm1lbnQtPmlz
VmFsaWQob2Zmc2V0KSk7CisgICAgICAgICAgICBtX21vZHVsZUVudmlyb25tZW50LT52YXJpYWJs
ZUF0KG9mZnNldCkuc2V0KGV4ZWMtPnZtKCksIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCksIG5h
bWVzcGFjZU9iamVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZXNvbHZlU2V0
IHJlc29sdmVTZXQ7CisgICAgICAgICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7Cisg
ICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2
ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCByZXNvbHZlU2V0LCBleHBvcnRT
dGFyU2V0KTsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgY2FzZSBS
ZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246
OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5
cGU6OlJlc29sdmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQogewogICAgIGlmICh1aWQtPmlzU3ltYm9sKCkp
CkBAIC03Niw3ICszMDgsNiBAQCBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCiAgICAgcmV0dXJuIHByaW50YWJsZU5hbWUoaWRlbnQuaW1wbCgpKTsK
IH0KIAotCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpkdW1wKCkKIHsKICAgICBkYXRhTG9nKCJcbkFu
YWx5emluZyBNb2R1bGVSZWNvcmQga2V5KCIsIHByaW50YWJsZU5hbWUobV9tb2R1bGVLZXkpLCAi
KVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
aAppbmRleCAwNWQ2OTRkM2UzZmU1NWE1MjFhZjM1ZGU4MjYxNTk4MGYwODBlMmUwLi5iMzMxYjY2
ZTc2MmEzZGZkMjRjYTZmMDRjNTE4MDM1OGFmYzQwMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTI4LDEyICsyOCwxNyBAQAogCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmgi
CisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7Citj
bGFzcyBKU01vZHVsZUVudmlyb25tZW50OworY2xhc3MgSlNNYXA7CisKIC8vIEJhc2VkIG9uIHRo
ZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCiAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKIGNs
YXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKQEAgLTgx
LDE2ICs4NiwxNiBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAg
c3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlKQogICAgIHsKLSAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01vZHVsZVJlY29y
ZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXkpOworICAgICAgICBKU01vZHVsZVJlY29yZCogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVh
cCkpIEpTTW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSwgc291cmNlQ29kZSk7
CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXkpCisgICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShl
eGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSk7CisgICAgICAgIHJldHVybiBjcmVhdGUo
ZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUpOwogICAgIH0KIAog
ICAgIHZvaWQgYXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKQEAgLTk4
LDI2ICsxMDMsMTA0IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKICAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7
CiAgICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwogCisgICAgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZTsg
fQorCisgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGVLZXk7IH0KKwogICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOwogCiAgICAgY29uc3Qg
T3JkZXJlZElkZW50aWZpZXJTZXQmIHJlcXVlc3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBt
X3JlcXVlc3RlZE1vZHVsZXM7IH0KIAorICAgIGNvbnN0IEV4cG9ydE1hcCYgZXhwb3J0RW50cmll
cygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmllczsgfQorCiAgICAgdm9pZCBkdW1wKCk7
CiAKKyAgICB2b2lkIGFsbG9jYXRlTW9kdWxlRW52aXJvbm1lbnQoRXhlY1N0YXRlKik7CisgICAg
SlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSB7IHJldHVybiBtX21vZHVs
ZUVudmlyb25tZW50LmdldCgpOyB9CisKKyAgICB2b2lkIGluc3RhbnRpYXRlRGVjbGFyYXRpb25z
KEV4ZWNTdGF0ZSopOworCisgICAgc3RydWN0IFJlc29sdmVRdWVyeSB7CisgICAgICAgIFJlc29s
dmVRdWVyeShVbmlxdWVkU3RyaW5nSW1wbCogbW9kdWxlS2V5LCBVbmlxdWVkU3RyaW5nSW1wbCog
ZXhwb3J0TmFtZSkKKyAgICAgICAgICAgIDogbW9kdWxlS2V5KG1vZHVsZUtleSkKKyAgICAgICAg
ICAgICwgZXhwb3J0TmFtZShleHBvcnROYW1lKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBSZXNvbHZlUXVlcnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnROYW1lKQorICAgICAgICAgICAgOiBSZXNvbHZlUXVlcnkobW9kdWxlS2V5
LmltcGwoKSwgZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICAgICAgUmVzb2x2ZVF1
ZXJ5KEVtcHR5VmFsdWVUYWcpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGVudW0g
RGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07CisgICAgICAgIFJlc29sdmVRdWVyeShE
ZWxldGVkVmFsdWVUYWcpCisgICAgICAgICAgICA6IG1vZHVsZUtleShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICAgICAgICAgICwgZXhwb3J0TmFtZShXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0VtcHR5VmFs
dWUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1vZHVsZUtleTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbW9kdWxlS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1vZHVsZUtl
eTsKKyAgICAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBleHBvcnROYW1lOworICAgIH07
CisKKyAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYpOworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBSZXNvbHZlUXVlcnkmLCBjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07
CisKKyAgICB0eXBlZGVmIFdURjo6SGFzaFNldDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhh
c2gsIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxSZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworCisg
ICAgc3RydWN0IFJlc29sdXRpb24geworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBSZXNvbHZl
ZCwgTm90Rm91bmQsIEFtYmlndW91cywgRXJyb3IgfTsKKworICAgICAgICBUeXBlIHR5cGU7Cisg
ICAgICAgIElkZW50aWZpZXIgbW9kdWxlS2V5OworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICB9OworCisgICAg
UmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUsIFJlc29sdmVTZXQmLCBJZGVudGlmaWVyU2V0JiBleHBvcnRTdGFyU2V0KTsKKwog
cHJpdmF0ZToKLSAgICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
ICAgICAgICAgLCBtX21vZHVsZUtleShtb2R1bGVLZXkpCisgICAgICAgICwgbV9zb3VyY2VDb2Rl
KHNvdXJjZUNvZGUpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKIAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2UoRXhl
Y1N0YXRlKik7CisgICAgZW51bSBjbGFzcyBJbmNsdWRlRGVmYXVsdE1vZGUgeyBJbmNsdWRlLCBF
eGNsdWRlIH07CisgICAgdm9pZCBnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSosIElkZW50aWZp
ZXJTZXQmIGV4cG9ydFN0YXJTZXQsIElkZW50aWZpZXJTZXQmIGV4cG9ydGVkTmFtZXMsIEluY2x1
ZGVEZWZhdWx0TW9kZSk7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAorICAg
IEpTTW9kdWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworCiAgICAgLy8gVGhlIGxvYWRlciByZXNvbHZl
cyB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRoZSBtb2R1bGUga2V5
IGlzIHRoZSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9kdWxlLgogICAgIElkZW50
aWZpZXIgbV9tb2R1bGVLZXk7CiAKKyAgICBTb3VyY2VDb2RlIG1fc291cmNlQ29kZTsKKwogICAg
IC8vIE1hcCBsb2NhbE5hbWUgLT4gSW1wb3J0RW50cnkuCiAgICAgSW1wb3J0TWFwIG1faW1wb3J0
RW50cmllczsKIApAQCAtMTI5LDYgKzIxMiwxMCBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1
YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBv
cmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBp
biB0aGlzIG9yZGVyLgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJT
ZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOworCisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52aXJv
bm1lbnQ+IG1fbW9kdWxlRW52aXJvbm1lbnQ7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKKyAgICBXcml0ZUJhcnJpZXI8
SlNNYXA+IG1fZGVwZW5kZW5jaWVzTWFwOwogfTsKIAogaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQpA
QCAtMTU2LDYgKzI0MywxNiBAQCBpbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1w
b3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbAogICAgIHJldHVybiAo
Km1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOwogfQogCitpbmxpbmUgdW5z
aWduZWQgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29uc3QgSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdmVRdWVyeSYgcXVlcnkpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXJS
ZXBIYXNoOjpoYXNoKHF1ZXJ5Lm1vZHVsZUtleSkgKyBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChx
dWVyeS5leHBvcnROYW1lKTsKK30KKworaW5saW5lIGJvb2wgSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dmVRdWVyeUhhc2g6OmVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjb25zdCBSZXNvbHZl
UXVlcnkmIHJocykKK3sKKyAgICByZXR1cm4gbGhzLm1vZHVsZUtleSA9PSByaHMubW9kdWxlS2V5
ICYmIGxocy5leHBvcnROYW1lID09IHJocy5leHBvcnROYW1lOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmgKaW5kZXggNDAzMjZjZTBmMzI5ZmE3YzdiYmM5OWY0NDY0MjhmZTk2Yzkx
MjRiMy4uZmNlMDYxZDFmOGQ2MWRhYjA2MzYwYWU4ZDdhYTQ0OGYyZjE4Yzc5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTQxLDEwICs0MSwxMiBAQCBlbnVtIEpT
VHlwZSA6IHVpbnQ4X3QgewogCiAgICAgRXZhbEV4ZWN1dGFibGVUeXBlLAogICAgIFByb2dyYW1F
eGVjdXRhYmxlVHlwZSwKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGUsCiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlVHlwZSwKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlVHlw
ZSwKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2tUeXBlLAorICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrVHlwZSwKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrVHlwZSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMWQ2N2E0Y2Fk
ZThiNDdjYzE4Y2Y1ODY0MmQ2NDQ2ZDAzMmY1ZTc5My4uYmNkOGRlZmYwYjc5NzRiOTNjOTczZWYz
ZjY2Njk0M2I2OGIwMTAxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
SlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC00NSw2ICs0Niw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQ
YXJzZU1vZHVsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0
ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJl
c29sdmUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
b2R1bGVMb2FkZXJPYmplY3RGZXRjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqKTsK
QEAgLTYyLDI4ICs2NSwzNCBAQCBjb25zdCBDbGFzc0luZm8gTW9kdWxlTG9hZGVyT2JqZWN0Ojpz
X2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAmQmFzZTo6c19pbmZvLCAmbQogCiAvKiBTb3VyY2Ug
Zm9yIE1vZHVsZUxvYWRlck9iamVjdC5sdXQuaAogQGJlZ2luIG1vZHVsZUxvYWRlck9iamVjdFRh
YmxlCi0gICAgc2V0U3RhdGVUb01heCAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0U2V0
U3RhdGVUb01heCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIG5ld1JlZ2lz
dHJ5RW50cnkgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdE5ld1JlZ2lzdHJ5RW50cnkgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBlbnN1cmVSZWdpc3RlcmVkICAgICAgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RFbnN1cmVSZWdpc3RlcmVkICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCi0gICAgZm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0Rm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGZ1
bGZpbGxGZXRjaCAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxGZXRjaCAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBmdWxmaWxsVHJhbnNsYXRlICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsVHJhbnNsYXRlICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0RnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgot
ICAgIGNvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdENvbW1pdElu
c3RhbnRpYXRlZCAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKLSAgICBpbnN0YW50aWF0aW9u
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0aW9uICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAzCi0gICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdEZldGNoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQotICAgIHJlcXVlc3RUcmFuc2xhdGUgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RUcmFuc2xhdGUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0
SW5zdGFudGlhdGUgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGUg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNp
ZXMgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMgRG9udEVudW18
RnVuY3Rpb24gMQotICAgIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgIG1vZHVsZUxvYWRlck9i
amVjdFJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBs
b2FkTW9kdWxlICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RMb2FkTW9kdWxlICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcHJvdmlkZSAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMwotICAgIHBhcnNlTW9kdWxlICAgICAgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdFBhcnNlTW9kdWxlICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
LSAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0
ZWRNb2R1bGVzICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVzb2x2ZSAgICAg
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIGZldGNoICAgICAgICAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKLSAgICB0cmFuc2xhdGUgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RU
cmFuc2xhdGUgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgaW5zdGFu
dGlhdGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIHNldFN0YXRlVG9NYXggICAgICAgICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgorICAgIG5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3ROZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQorICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RFbnN1cmVSZWdpc3RlcmVkICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICAgIGZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RG
b3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1
bGZpbGxGZXRjaCAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsRmV0
Y2ggICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxUcmFu
c2xhdGUgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsVHJhbnNsYXRlICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAg
ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGNvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RDb21taXRJbnN0YW50aWF0ZWQgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMworICAgIGluc3RhbnRpYXRpb24gICAgICAgICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RJbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMworICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RSZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAg
IHJlcXVlc3RUcmFuc2xhdGUgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0
VHJhbnNsYXRlICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJ
bnN0YW50aWF0ZSAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlh
dGUgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RSZXNvbHZlRGVw
ZW5kZW5jaWVzICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2ll
cyAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RMaW5rICAgICAgICAgICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RSZXF1ZXN0TGluayAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICAgIHJlcXVlc3RSZWFkeSAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0UmVhZHkgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIGxpbmsgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RMaW5r
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIG1vZHVs
ZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJh
dGlvbkluc3RhbnRpYXRpb24gRG9udEVudW18RnVuY3Rpb24gMgorICAgIG1vZHVsZUV2YWx1YXRp
b24gICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVFdmFsdWF0aW9uICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGV2YWx1YXRlICAgICAgICAgICAgICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZSAgICAgICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgorICAgIGxvYWRNb2R1bGUgICAgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RMb2FkTW9kdWxlICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgorICAgIHByb3ZpZGUgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RQcm92aWRlICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MworICAgIHBhcnNlTW9kdWxlICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQ
YXJzZU1vZHVsZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIHJl
cXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRN
b2R1bGVzICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlc29sdmUgICAg
ICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZldGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUgICAgICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMgorICAgIGluc3RhbnRpYXRlICAgICAgICAgICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RJbnN0YW50aWF0ZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgogQGVuZAogKi8KIApAQCAtMTM3LDE5ICsxNDYsNiBAQCBKU1ZhbHVlIE1vZHVsZUxvYWRl
ck9iamVjdDo6cHJvdmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBTdGF0dXMgc3Rh
dHVzLAogICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IHRoaXMsIGFyZ3VtZW50cyk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBNb2R1bGVMb2FkZXJP
YmplY3Q6OnJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5
KQotewotICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucmVxdWVzdEluc3RhbnRpYXRl
QWxsUHVibGljTmFtZSgpKSk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNT
RVJUKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOwotCi0gICAgcmV0dXJuIGpz
Q2FzdDxKU0ludGVybmFsUHJvbWlzZSo+KGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKSk7Ci19Ci0KIEpTSW50ZXJuYWxQcm9taXNlKiBNb2R1
bGVMb2FkZXJPYmplY3Q6OmxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVs
ZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpCiB7CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganND
YXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5sb2FkTW9kdWxlUHVibGljTmFtZSgpKSk7CkBAIC0yNDksMTQgKzI0NSwxNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICB9CiAgICAgQVNTRVJUKG1vZHVsZVByb2dyYW1Ob2RlKTsKIAot
ICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZUtleSwgbW9kdWxl
UHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNh
bFZhcmlhYmxlcygpKTsKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBt
b2R1bGVLZXksIHNvdXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMo
KSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAgSlNNb2R1bGVS
ZWNvcmQqIG1vZHVsZVJlY29yZCA9IG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dy
YW1Ob2RlKTsKKworICAgIG1vZHVsZVJlY29yZC0+YWxsb2NhdGVNb2R1bGVFbnZpcm9ubWVudChl
eGVjKTsKKwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobW9kdWxlUmVjb3JkKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRN
b2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVj
b3JkID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3Jk
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlUmVjb3JkKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikp
OwogCkBAIC0yNjgsNiArMjY3LDQwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpz
RHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYg
KCFtb2R1bGVSZWNvcmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAg
ICAgICBkYXRhTG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCks
ICJcbiIpOworCisgICAgbW9kdWxlUmVjb3JkLT5pbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVj
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdEV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFy
Z3VtZW50KDApKTsKKyAgICBpZiAoIW1vZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxl
TG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbZXZhbHVhdGVdICIsIG1v
ZHVsZVJlY29yZC0+bW9kdWxlS2V5KCksICJcbiIpOworCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMs
IG1vZHVsZVJlY29yZC0+c291cmNlQ29kZSgpLCBtb2R1bGVSZWNvcmQpOworICAgIGlmICghZXhl
Y3V0YWJsZSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShleGVj
dXRhYmxlLCBleGVjLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCkpOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2
ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5oCmluZGV4IDQ1YjkzMmFjNTgwYWY2MGFiNTJmZDE1MDE5Mzkw
OTU5YWJlMDUxMDMuLjEyY2ZlNTZlZWJiNmM0MjdjMGVmNzkwMjFmOTk3YzZiMGQzODRhMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVj
dC5oCkBAIC02NCw3ICs2NCw2IEBAIGNsYXNzIE1vZHVsZUxvYWRlck9iamVjdCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIAogICAgIC8vIEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxv
YWRlci4KICAgICBKU1ZhbHVlIHByb3ZpZGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIFN0YXR1
cywgY29uc3QgU3RyaW5nJik7Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIHJlcXVlc3RJbnN0YW50
aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CiAgICAgSlNJbnRlcm5hbFByb21pc2Uq
IGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVy
cmVyKTsKIAogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29rZWQgQVBJcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IGU4M2UzODMy
NThmOTliYjA1YmJlMTFlMGM2NWRlMDRiOGUwNDllMGEuLjRjNDNjNmFmZjJmNjdmZjM1NzU3M2Fl
Y2EyZGY0M2JkMzcxMTNiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgpAQCAtNjUsNiArNjYsMTAgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhcywgc2V0UHJvdG9GdW5jSGFz
LCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CiAKKyAgICAvLyBQ
cml2YXRlIGFkZCAvIGhhcyBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+YWRkUHJpdmF0ZU5hbWUsIHNldFByb3RvRnVuY0FkZCwgRG9udEVudW0s
IDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CisK
ICAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBzZXRQcm90b0Z1bmNW
YWx1ZXMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZXMsIHZhbHVlcywgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCB2YWx1ZXMsIERvbnRFbnVtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5M2M5NmZiZWMwNDRmN2Y3NGU5Nzg0
NzNiNmJmOThjMDcyMWI4ZWQzLi4yMDA5ZTkyZjA1OTZlNjBmODE4YTFhYTY3MjVlZmVmZTllMGI3
NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yMzIsNiArMjMyLDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2Vk
RXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
cHJvcGVydHlUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB3ZWFrTWFwRGF0YVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIFdlYWtNYXBEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRWYWx1ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVmFsdWU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IDlhZmU5YTVhMmZmNDFkOWMxZmM2NTFmZGMwNmJiNmE1MGY3NDlmNjEu
LmEyZjIyNjExNzljMWM0MWRiNmQyZDJkNTg1NTdhMGU2ODY3OWQ5YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMTAzLDYgKzEwMyw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CiBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFz
cyBWTUVudHJ5U2NvcGU7CiBjbGFzcyBXYXRjaGRvZzsKQEAgLTI5MCw2ICsyOTEsNyBAQCBjbGFz
cyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3Ry
dWN0dXJlPiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiB3ZWFrTWFwRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJl
ZFZhbHVlU3RydWN0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259868</attachid>
            <date>2015-08-25 12:04:40 -0700</date>
            <delta_ts>2015-08-25 22:12:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150825120431.patch</filename>
            <type>text/plain</type>
            <size>139207</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAwZDNiMWIzMjNjYzA4Mjk0NmVmNjJhYjFjMmI3YTE2OGVmMmQ2Li45MjU0MjEwYTNmNWYyYmNl
MjA5N2EyZjA0MDZkYTJiYmIyYjljODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTYgQEAKKzIwMTUtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExv
YWRlcidzIHJlYWR5IC8gbGluayBwaGFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAg
KHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzLnJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlLnRo
aXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAgICAgICAgKHJlcXVlc3RMaW5rKToKKyAg
ICAgICAgKHJlcXVlc3RSZWFkeSk6CisgICAgICAgIChsaW5rKToKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppbmZlcnJlZE5hbWUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6TW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OkV2YWxD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6RnVuY3Rpb25Db2Rl
QmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6
cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5cGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveSk6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpN
b2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZyaWVuZGx5U291cmNl
VVJMKToKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5kbHlGdW5jdGlvbk5hbWUpOgor
ICAgICAgICAoSlNDOjpnZXRTdGFja0ZyYW1lQ29kZVR5cGUpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoK
KyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpT
dGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRv
cjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJh
bWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmg6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUp
OgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVB
bmFseXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXpl
cik6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmg6CisgICAgICAgICogcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKToK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3IpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3kpOgorICAgICAg
ICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAo
SlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwpOgorICAgICAgICAo
SlNDOjpTY3JpcHRFeGVjdXRhYmxlOjp1bmxpbmtDYWxscyk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVu
dmlyb25tZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUVudmlyb25tZW50OjpvZmZzZXRPZk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlRW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVF
bnZpcm9ubWVudDo6bW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVs
ZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmludGVybmFsVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6YWxsb2NhdGVNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6
OmlkZW50aWZpZXJUb0pTVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpn
ZXRFeHBvcnRlZE5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVs
ZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURl
Y2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxl
S2V5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4cG9ydEVudHJpZXMpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAo
SlNDOjpKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5Ojppc0VtcHR5VmFsdWUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpKU01vZHVsZVJlY29yZCk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNoOjpoYXNoKToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKToKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUpOgorICAg
ICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAg
KEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKToK
KyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUpOgorICAgICAgICAoSlND
OjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJbnN0YW50aWF0ZUFsbCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNS0wOC0yNCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBSZXR1cm4gSlNJbnRlcm5h
bFByb21pc2UgYXMgcmVzdWx0IG9mIGV2YWx1YXRlTW9kdWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDc4ZGMwYjYxYjZmYTgyYjgxYTYxM2MwNjE4ZGZhYTFhOWYxYjcyZjQuLmQw
MzIzZTVhZjNhMmY3YWM4YTRmNzlhYzg2NGM5ZTE4MTRhNTI5YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNjk3LDYgKzE2OTcsOSBAQAogCQlFMTI0QThGNzBFNTU1Nzc1MDAz
MDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUx
MjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNjBFNTU1Nzc1MDAzMDkx
RjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9OwogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBC
MzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKKwkJRTMwNjc3OTgx
QjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0Yw
IC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLzsgfTsKKwkJRTMxOENCQzAxQjhBRUY1MTAwQTI5
MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87IH07CisJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5
RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMx
QjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5sdXQuaCAqLzsgfTsKQEAgLTE3MTksNiArMTcyMiw4IEBACiAJCUUzOTYzQ0VFMUI3M0Y3
NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5v
ZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
ICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmNwcCAqLzsgfTsKKwkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2
REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNC
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VGODg3NTFCNjZERjIz
MDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87
IH07CkBAIC0zNTQ3LDYgKzM1NTIsOSBAQAogCQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyog
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbml0aWFsaXplVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsg
fTsKIAkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxh
bmcuY3BwOyB9OworCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2Jq
ZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gTW9kdWxlTG9h
ZGVyT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzE4Q0JCRTFCOEFF
RjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2Jq
ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU3MSw2ICszNTc5LDggQEAKIAkJRTM5NjNDRUMx
QjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVS
ZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNE
MjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4
NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAv
KiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzU4LDYgKzQ3NjgsMTAgQEAKIAkJ
CQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCAqLywKIAkJCQlBNzRERUY4RjE4
MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc0REVGOTAxODJE
OTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLywKKwkJCQlFM0QyMzlDNjFCODI5QzFD
MDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJRTNEMjM5QzcxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLywKKwkJCQlFMzE4Q0JCRTFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovLAorCQkJCUUz
MThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovLAog
CQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCiAJ
CQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJ
QTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovLApAQCAtNTc3
Niw2ICs1NzkwLDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1
NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVE
OUEzMDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBlLmpzICovLAorCQkJCUUzMDY3Nzk3MUI4
QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8sCiAJCQkJN0NGOUJDNUMx
QjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVE
MUI2NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlByb21pc2UuanMgKi8sCiAJCQkJN0NGQkFD
MUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJvdG90eXBlLmpzICovLApAQCAtNjExMCw2
ICs2MTI1LDcgQEAKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTgxN0EwQkM3NDAw
RUUyNjE4IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkMxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2
ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5RkI4NjgxQUUzMzVDNjAwMzlEMDY5IC8q
IEpTV2Vha1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTYy
NDIsNiArNjI1OCw3IEBACiAJCQkJN0IwMjQ3NTcxQjg2ODJFNDAwNTQyNDQwIC8qIFdBU01GdW5j
dGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBC
OTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JF
eGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
T1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC03MDE5LDYgKzcwMzYs
NyBAQAogCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3
RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlBNTNGMUFD
MDE4QzkwRjhGMDA3MkVCNkQgLyogZnJhbWV3b3JrLnNiIGluIFJlc291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTczNTMsNiAr
NzM3MSw3IEBACiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QjU4MjY5MTREMjc5NzAwMEE5QzMw
NiAvKiBDb2RlUHJvZmlsaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDNDMTY2NzYz
MTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMTEwN0VDMzc2MDA0MjdBNDggLyogQ29tbW9u
SWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5QzVFNUUxOEUzNUY1RTAwRDQz
MUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NDMxLDYgKzc0
NTAsNyBAQAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdG
bHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRjUwODQxQjg0MzdBMDAwNDEzODU2
IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMx
OENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0ZsdXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0JEMUI3MUI4OTZBMDcwMDU5
OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04MDc5LDYgKzgw
OTksNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAt
ODA4Niw2ICs4MTA3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0NzJDRTQgLyogTExW
TUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VT
Nl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNl
OwogCQl9OwpAQCAtODA5Myw2ICs4MTE1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0
NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5h
bWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTAwLDYgKzgxMjMsNyBAQAogCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VG
QUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTA3LDYgKzgxMzEsNyBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0g
RU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgx
MTQsNiArODEzOSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xF
eGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVf
RVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVh
c2U7CiAJCX07CkBAIC04MTIxLDYgKzgxNDcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMw
MEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsK
IAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTI4LDYgKzgxNTUsNyBAQAogCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VT
Nl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODE1Niw2
ICs4MTg0LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlw
dENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZf
TU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJ
CX07CkBAIC04MTYzLDYgKzgxOTIsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlE
MCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5h
bWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODE3MSw2ICs4MjAxLDcgQEAKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRD
b3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlCVUlMRF9WQVJJQU5U
UyA9IG5vcm1hbDsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTc4LDYgKzgyMDksNyBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87CiAJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZf
TU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MTg1LDYgKzgyMTcs
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTgxOTIsNiAr
ODIyNSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5B
QkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAt
ODMyMyw2ICs4MzU3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2
YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAi
RGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzMzIsNiArODM2Nyw3IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVf
RVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkt
SW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
IAkJCX07CkBAIC04MzQxLDYgKzgzNzcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgx
RTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlORk9Q
TElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBST0RV
Q1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9OwpAQCAtODM1MCw2ICs4Mzg3
LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxF
UyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNTksNiArODM5Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMw
QkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9Owog
CQkJbmFtZSA9IERlYnVnOwpAQCAtODM2Nyw2ICs4NDA2LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBC
QTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsK
IAkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKQEAgLTgzNzUsNiArODQxNSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMw
QkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9Owog
CQkJbmFtZSA9IFByb2R1Y3Rpb247CkBAIC04Mzk4LDYgKzg0MzksNyBAQAogCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1
MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RV
TEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04NDA1LDYgKzg0NDcs
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVT
ID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJp
dmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CkBAIC04NDI3LDYgKzg0
NzAsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJM
RV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMK
aW5kZXggNjVhMDUzOTY0ZGY0ODc3MzVlNjc1ZjRiOTE3ODM2ODEwY2RkOWEzMi4uODM5MDg2ZTBj
Mjc4YmMyMWE1YzI4OWMwNWYyZGI1Yzc2OWZhZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCkBAIC0xOTIsNyArMTky
LDcgQEAgZnVuY3Rpb24gY29tbWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3RhbmNl
LCBzb3VyY2UpCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82
NwogCiAgICAgdmFyIGRlcGVuZGVuY2llcyA9IFtdOwotICAgIHZhciBkZXBlbmRlbmNpZXNNYXAg
PSBuZXcgQE1hcCgpOworICAgIHZhciBkZXBlbmRlbmNpZXNNYXAgPSBtb2R1bGVSZWNvcmQuZGVw
ZW5kZW5jaWVzTWFwOwogICAgIG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5ID0gZW50cnk7CiAg
ICAgdmFyIHJlcXVlc3RlZE1vZHVsZXMgPSB0aGlzLnJlcXVlc3RlZE1vZHVsZXMobW9kdWxlUmVj
b3JkKTsKICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcmVxdWVzdGVkTW9kdWxlcy5sZW5n
dGg7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMzQ5LDcgKzM0OSw3IEBAIGZ1bmN0aW9uIHJlcXVl
c3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKICAgICB2YXIgcmVzb2x2ZURlcGVuZGVuY2llc1By
b21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZShrZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5
KSB7CiAgICAgICAgIHZhciBkZXBMb2FkcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMCwg
bGVuZ3RoID0gZW50cnkuZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICB2YXIgcGFpciA9IGVudHJ5LmRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAg
IGxldCBwYWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ldOwogCiAgICAgICAgICAgICAvLyBIb29r
IHBvaW50LgogICAgICAgICAgICAgLy8gMS4gTG9hZGVyLnJlc29sdmUuCkBAIC0zNjEsMTYgKzM2
MSwyNSBAQCBmdW5jdGlvbiByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkpCiAKICAgICAg
ICAgICAgICAgICAvLyBSZWN1cnNpdmUgcmVzb2x2aW5nLiBUaGUgZGVwZW5kZW5jaWVzIG9mIHRo
aXMgZW50cnkgaXMgYmVpbmcgcmVzb2x2ZWQgb3IgYWxyZWFkeSByZXNvbHZlZC4KICAgICAgICAg
ICAgICAgICAvLyBTdG9wIHRyYWNpbmcgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICAg
ICAgICAgICAgICAvLyBCdXQgdG8gcmV0cmlldmUgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUgcmVj
b3JkIGNvcnJlY3RseSwKKyAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRo
ZSBpbnN0YW50aWF0aW9uIGZvciB0aGUgZGVwZW5kZW50IG1vZHVsZS4KKyAgICAgICAgICAgICAg
ICAvLyBGb3IgZXhhbXBsZSwgcmVhY2hpbmcgaGVyZSwgdGhlIG1vZHVsZSBpcyBzdGFydGluZyBy
ZXNvbHZpbmcgdGhlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAvLyBCdXQgdGhlIG1v
ZHVsZSBtYXkgb3IgbWF5IG5vdCByZWFjaCB0aGUgaW5zdGFudGlhdGlvbiBwaGFzZSBpbiB0aGUg
bG9hZGVyJ3MgcGlwZWxpbmUuCisgICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2FpdCBmb3IgdGhl
IFJlc29sdmVEZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLCBpdCBjb25zdHJ1Y3QgdGhlIGNp
cmN1bGFyIHByb21pc2UgY2hhaW4gYW5kCisgICAgICAgICAgICAgICAgLy8gcmVqZWN0ZWQgYnkg
dGhlIFByb21pc2VzIHJ1bnRpbWUuIFNpbmNlIG9ubHkgd2UgbmVlZCBpcyB0aGUgaW5zdGFudGlh
dGVkIG1vZHVsZSwgaW5zdGVhZCBvZiB3YWl0aW5nCisgICAgICAgICAgICAgICAgLy8gdGhlIFJl
c29sdmVEZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLCB3ZSBqdXN0IHdhaXQgSW5zdGFudGlh
dGUgZm9yIHRoaXMuCiAgICAgICAgICAgICAgICAgaWYgKGRlcEVudHJ5LnJlc29sdmVEZXBlbmRl
bmNpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGRlcEVudHJ5Lm1vZHVs
ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcEVudHJ5OworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZGVwRW50cnkuaW5zdGFudGlhdGUudGhlbihmdW5jdGlvbiAoZW50cnkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIucmVx
dWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoZGVwS2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgewor
ICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOwogICAgICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhlIHJlc3VsdCBwcm9taXNlIG9mIHRoZSByZXF1ZXN0SW5z
dGFudGlhdGVBbGwgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoCiAgICAgICAgICAgICAgICAgICAg
IC8vIHRoZSByZWdpc3RyeSBlbnRyeS4KICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NgotICAgICAgICAgICAgICAgICAgICBwYWly
LnZhbHVlID0gZW50cnkubW9kdWxlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKQEAgLTM5Niw2ICs0MDUsOTAg
QEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSkKICAgICByZXR1cm4gdGhpcy5y
ZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkpOwogfQogCitmdW5jdGlvbiByZXF1ZXN0TGlu
ayhrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVz
dC1saW5rCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3Vy
ZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsKKyAg
ICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21p
c2UpOworICAgICAgICBkZWZlcnJlZC5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIGVudHJ5Lm1v
ZHVsZSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAgICB2
YXIgbG9hZGVyID0gdGhpczsKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGVBbGwo
a2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICBsb2FkZXIubGluayhlbnRyeSk7
CisgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVxdWVzdFJl
YWR5KGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1
ZXN0LXJlYWR5CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsK
KyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0TGluayhrZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7
CisgICAgICAgIGxvYWRlci5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1vZHVsZSk7CisgICAgfSk7
Cit9CisKKy8vIExpbmtpbmcgc2VtYW50aWNzLgorCitmdW5jdGlvbiBsaW5rKGVudHJ5KQorewor
ICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2xpbmsKKworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIC8vIEZJWE1FOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90
IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKyAgICAvLyBTbyBMaW5rJ3Mgc3RlcCAzIGlzIHNr
aXBwZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
ODE3MQorCisgICAgaWYgKGVudHJ5LnN0YXRlID09PSB0aGlzLlJlYWR5KQorICAgICAgICByZXR1
cm47CisgICAgZW50cnkuc3RhdGUgPSB0aGlzLlJlYWR5OworCisgICAgLy8gRklYTUU6IFNpbmNl
IHdlIGFscmVhZHkgaGF2ZSB0aGUgImRlcGVuZGVuY2llcyIgZmllbGQsCisgICAgLy8gd2UgY2Fu
IGNhbGwgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIHdpdGggdGhlIGNvcnJlY3Qgb3Jk
ZXIKKyAgICAvLyB3aXRob3V0IGNvbnN0cnVjdGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBieSBj
YWxsaW5nIGRlcGVuZGVuY3lHcmFwaC4KKyAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVw
ZW5kZW5jaWVzOworICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVu
Z3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNb
aV07CisgICAgICAgIHRoaXMubGluayhwYWlyLnZhbHVlLnJlZ2lzdHJ5RW50cnkpOworICAgIH0K
KworICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVsZSk7
Cit9CisKKy8vIE1vZHVsZSBzZW1hbnRpY3MuCisKK2Z1bmN0aW9uIG1vZHVsZUV2YWx1YXRpb24o
bW9kdWxlUmVjb3JkKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9y
Zy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCisKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBpZiAobW9kdWxlUmVjb3JkLmV2YWx1YXRlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1vZHVsZVJlY29yZC5ldmFsdWF0ZWQgPSB0cnVlOworCisgICAgdmFyIGVudHJ5ID0gbW9kdWxl
UmVjb3JkLnJlZ2lzdHJ5RW50cnk7CisKKyAgICAvLyBUaGUgY29udGVudHMgb2YgdGhlIFtbUmVx
dWVzdGVkTW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4KKyAgICB2
YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5jaWVzOworICAgIGZvciAodmFyIGkgPSAw
LCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNbaV07CisgICAgICAgIHZhciByZXF1aXJlZE1vZHVs
ZVJlY29yZCA9IHBhaXIudmFsdWU7CisgICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihyZXF1
aXJlZE1vZHVsZVJlY29yZCk7CisgICAgfQorICAgIHRoaXMuZXZhbHVhdGUobW9kdWxlUmVjb3Jk
KTsKK30KKwogZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCByZWZlcnJlcikKIHsKICAg
ICAidXNlIHN0cmljdCI7CkBAIC00MDYsMTEgKzQ5OSw3IEBAIGZ1bmN0aW9uIGxvYWRNb2R1bGUo
bW9kdWxlTmFtZSwgcmVmZXJyZXIpCiAgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBp
dCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KICAg
ICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZv
ciB0aGUgcmVzb3VyY2UuCiAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShtb2R1bGVOYW1lLCByZWZl
cnJlcikudGhlbihmdW5jdGlvbiAoa2V5KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3csIHdlIGRv
bid0IGltcGxlbWVudCB0aGUgbGlua2luZyBwaGFzZSB5ZXQuCi0gICAgICAgIC8vIFNvIGhlcmUs
IHdlIGp1c3QgY2FsbCByZXF1ZXN0SW5zdGFudGlhdGVBbGwgdG8gb25seSBwZXJmb3JtIHRoZSBt
b2R1bGUgbG9hZGluZy4KLSAgICAgICAgLy8gQXQgbGFzdCwgaXQgc2hvdWxkIGJlIHJlcGxhY2Vk
IHdpdGggcmVxdWVzdFJlYWR5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCi0gICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdEluc3Rh
bnRpYXRlQWxsKGtleSk7CisgICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdFJlYWR5KGtleSk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgppbmRleCA0ZTVhOTZjMzhlZDg2Mjc3NDQyY2EyNjE5YzVjOGNhYzI5Y2U4
MmFhLi4wMjBlYzI0ODllZmUzYTMzMjk4NWI3MDkxMGRlY2NmNzhkNDlhOTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNTcs
NiArMTU3LDcgQEAKICAgICAgICAgImJ5dGVjb2RlcyIgOiBbCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJsbGludF9wcm9ncmFtX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
bGxpbnRfZXZhbF9wcm9sb2d1ZSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAibGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2siIH0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGQwMzFlYTkxMmZj
ZTdlNTQxNmY3NmQ0YzY2NjNiMzJlMTI3ODY0YTMuLmEyNjVlMWQ4ZjIzM2FkNWY2M2M5MDQ3MTVl
NWY3NDg3Zjg4N2YxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC04Nyw2ICs4Nyw4IEBAIENTdHJpbmcgQ29kZUJsb2NrOjppbmZlcnJlZE5h
bWUoKSBjb25zdAogICAgICAgICByZXR1cm4gIjxldmFsPiI7CiAgICAgY2FzZSBGdW5jdGlvbkNv
ZGU6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5pbmZlcnJlZE5hbWUoKS51dGY4KCk7CisgICAgY2FzZSBNb2R1bGVDb2RlOgor
ICAgICAgICByZXR1cm4gIjxtb2R1bGU+IjsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgp
OwogICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CkBAIC0zMDQ0LDYgKzMwNDYsMTEgQEAg
Q29kZUJsb2NrKiBQcm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIGpz
Q2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7
CiB9CiAKK0NvZGVCbG9jayogTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQor
eworICAgIHJldHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmNvZGVCbG9jaygpOworfQorCiBDb2RlQmxvY2sqIEV2YWxDb2RlQmxvY2s6OnJl
cGxhY2VtZW50KCkKIHsKICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKQEAgLTMwNTksNiArMzA2NiwxMSBAQCBERkc6OkNh
cGFiaWxpdHlMZXZlbCBQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgp
CiAgICAgcmV0dXJuIERGRzo6cHJvZ3JhbUNhcGFiaWxpdHlMZXZlbCh0aGlzKTsKIH0KIAorREZH
OjpDYXBhYmlsaXR5TGV2ZWwgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVs
SW50ZXJuYWwoKQoreworICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhp
cyk7Cit9CisKIERGRzo6Q2FwYWJpbGl0eUxldmVsIEV2YWxDb2RlQmxvY2s6OmNhcGFiaWxpdHlM
ZXZlbEludGVybmFsKCkKIHsKICAgICByZXR1cm4gREZHOjpldmFsQ2FwYWJpbGl0eUxldmVsKHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDM4
MTg4MGQ2M2VkYTI2NTcwYTU3YjNhMTM2YzVhOGI4NThmODYzMzMuLjU4YTYzMDJjODU4OTc0ODEz
OWNiZmYzMzkxZjc0YjM4NmNlMGYxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTEwOTIsMTAgKzEwOTIsMjkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVC
bG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogI2VuZGlmCiB9OwogCitjbGFzcyBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CitwdWJsaWM6Cisg
ICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dy
YW1Db2RlQmxvY2smIG90aGVyKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2Vk
QmxvY2ssIG90aGVyKQorICAgIHsKKyAgICB9CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNz
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5l
Q29sdW1uT2Zmc2V0KQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUs
IHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSwgc291cmNlUHJvdmlkZXIsIDAsIGZpcnN0TGluZUNv
bHVtbk9mZnNldCkKKyAgICB7CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkgb3ZlcnJp
ZGU7CisjZW5kaWYKK307CisKIGNsYXNzIEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29k
ZUJsb2NrIHsKIHB1YmxpYzoKICAgICBFdmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywg
RXZhbENvZGVCbG9jayYgb3RoZXIpCi0gICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJs
b2NrLCBvdGhlcikKKyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBv
dGhlcikKICAgICB7CiAgICAgfQogICAgICAgICAKQEAgLTExMjAsNyArMTEzOSw3IEBAIGNsYXNz
IEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKIGNsYXNzIEZ1bmN0aW9u
Q29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRnVuY3Rpb25Db2Rl
QmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCi0gICAg
OiBDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikKKyAgICAgICAgOiBDb2RlQmxvY2so
Q29weVBhcnNlZEJsb2NrLCBvdGhlcikKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcAppbmRleCA4YjJjYWQ1NmFiNjhhZjEyYjMyYmYy
OWNkODQwYWMwYWE3MTgzZDQ4Li4wYzcwNDNkZmEzZWFmZmU5Zjk0NmFkZDkxNzkzZmU2MjU3YWFl
NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKQEAg
LTQyLDYgKzQyLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
Q29kZVR5cGUgY29kZVR5cGUpCiAgICAgY2FzZSBKU0M6OkZ1bmN0aW9uQ29kZToKICAgICAgICAg
b3V0LnByaW50KCJGdW5jdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6Ok1v
ZHVsZUNvZGU6CisgICAgICAgIG91dC5wcmludCgiTW9kdWxlIik7CisgICAgICAgIHJldHVybjsK
ICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCmluZGV4IGI4ZTEwN2RjZjZiNjcwY2Q4
MjgzZWJmYTUzNTFmN2M2MzQyZjAyM2MuLjk5NDFkNTE0Y2RkMGM1ZmZlMzBmMWE4ODRmM2JhNTRj
NmYwMGY4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCkBA
IC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIENvZGVUeXBlIHsgR2xv
YmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9OworZW51bSBDb2RlVHlwZSB7IEdsb2Jh
bENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUsIE1vZHVsZUNvZGUgfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDU3NGIxZTQ4MjM4OThiMzgwMTRkNTE4MjllYWI3Zjcx
MzA5ZGJiMGEuLjUyMWE4ZTA4YjczZDhjNTdkZjA4MmE3OWMzN2ZkZTQ5ODc2NTY3ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBV
bmxpbmtlZENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRDb2RlQmxvY2siLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZv
IFVubGlua2VkR2xvYmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEdsb2JhbENvZGVC
bG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRHbG9i
YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
OjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykgfTsKK2NvbnN0
IENsYXNzSW5mbyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKSB9OwogY29u
c3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRF
dmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxp
bmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykg
fTsKIApAQCAtMjkyLDYgKzI5MywxMyBAQCB2b2lkIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiB9CiAKK3ZvaWQgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworfQorCiBVbmxp
bmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKIHsKIH0KQEAgLTMwMSw2ICszMDks
MTEgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQogICAgIGpzQ2FzdDxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqPihjZWxsKS0+flVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jaygpOwogfQogCit2b2lkIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAganNDYXN0PFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KCk7Cit9CisKIHZvaWQgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKIHsKICAgICBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4oY2VsbCktPn5Vbmxpbmtl
ZEV2YWxDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMzIyZDI2MTk5Zjc5N2MxMDM4MWRkNDU4OTNiZDUz
NTNmZjFiNmI0Ni4uMmZlYTYyOGMxZmNlYWRlMmE0NTU5MDJmYjhkOTVjNjk5NmE1MDE4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKQEAgLTUxNCw2ICs1MTQsNDQgQEAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZp
bmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKICAgICBERUNMQVJFX0lORk87
CiB9OwogCitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJs
aWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgeworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
Q29kZUNhY2hlOworICAgIHN0YXRpYyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgIHsKKyAgICAgICAg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0tPmhlYXApKSBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0sIHZtLT51bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8pOworICAgICAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworcHVi
bGljOgorICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OworCisgICAgdm9pZCBzZXRWYXJpYWJsZURlY2xhcmF0aW9ucyhjb25zdCBWYXJpYWJsZUVudmly
b25tZW50JiBlbnZpcm9ubWVudCkgeyBtX3ZhckRlY2xhcmF0aW9ucyA9IGVudmlyb25tZW50OyB9
CisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX3ZhckRlY2xhcmF0aW9uczsgfQorCisgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAgIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IE1vZHVsZUNvZGUsIGluZm8pCisgICAgeworICAgIH0KKworICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQgbV92YXJEZWNsYXJhdGlvbnM7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2tUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworfTsKKwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVu
bGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVD
YWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMTJiOTc5ODhhZjI1ZDhlMjIyODVhODUyNTkzNWNj
NjMzMDI1NGE5Ni4uYjk3OGE1ZTk0NDdiZGUxOWFmMjg5ODlkMTBhMzk1MzUwZDQxODM5MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKQEAgLTUzNCw2ICs1MzQsODggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxD
b2QKICAgICBtX1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMsIGZhbHNlKSk7CiB9CiAKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dl
ck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29r
cyhPcHRpb25zOjpmb3JjZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgZGVidWdnZXJN
b2RlID09IERlYnVnZ2VyT24pCisgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MoT3B0aW9u
czo6Zm9yY2VQcm9maWxlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IHByb2ZpbGVyTW9kZSA9PSBQ
cm9maWxlck9uKQorICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCisgICAgLCBt
X2NvZGVCbG9jayh2bSwgY29kZUJsb2NrKQorICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1l
Ojp0aGlzQXJndW1lbnRPZmZzZXQoKSkKKyAgICAsIG1fY29kZVR5cGUoTW9kdWxlQ29kZSkKKyAg
ICAsIG1fdm0oJnZtKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMtPnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xp
bmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCisgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxs
cHRyOworCisgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgIG1fc2hvdWxkRW1p
dERlYnVnSG9va3MgPSBmYWxzZTsKKworICAgIFN5bWJvbFRhYmxlKiBmdW5jdGlvblN5bWJvbFRh
YmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZSgqbV92bSk7CisgICAgZnVuY3Rpb25TeW1ib2xUYWJs
ZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CisgICAgaW50IHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleCA9IGFkZENvbnN0YW50VmFsdWUoZnVuY3Rpb25TeW1ib2xU
YWJsZSktPmluZGV4KCk7CisKKyAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3Mg
PSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCk7CisgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKKyAgICBpZiAoc2hvdWxkQ2Fw
dHVyZUFsbE9mVGhlVGhpbmdzKQorICAgICAgICBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFy
YXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKKworICAgIGF1dG8gY2FwdHVy
ZXMgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIC0+IGJvb2wgeworICAgICAgICBpZiAo
IXNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBtb2R1bGVQcm9ncmFtTm9kZS0+Y2FwdHVyZXModWlkKTsKKyAgICB9
OworICAgIGF1dG8gdmFyS2luZCA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgLT4gVmFy
S2luZCB7CisgICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBW
YXJLaW5kOjpTdGFjazsKKyAgICB9OworCisgICAgZW1pdE9wY29kZShvcF9lbnRlcik7CisKKyAg
ICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCisgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRl
eChKU1N0YWNrOjpDYWxsZWUpOworCisgICAgaWYgKHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MpIHsKKyAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciA9IGFkZFZhcigpOwor
ICAgICAgICAvLyBXZSBjYW4gYWxsb2NhdGUgdGhlICJ2YXIiIGVudmlyb25tZW50IGlmIHdlIGRv
bid0IGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMuIElmIHdlIGhhdmUKKyAgICAg
ICAgLy8gZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMsIHdlIGhhdmUgdG8gaG9sZCBvZmYg
b24gYWxsb2NhdGluZyB0aGUgInZhciIgZW52aXJvbm1lbnQgYmVjYXVzZQorICAgICAgICAvLyB0
aGUgcGFyZW50IHNjb3BlIG9mIHRoZSAidmFyIiBlbnZpcm9ubWVudCBpcyB0aGUgcGFyYW1ldGVy
IGVudmlyb25tZW50LgorICAgICAgICBpbml0aWFsaXplVmFyTGV4aWNhbEVudmlyb25tZW50KHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleCk7CisgICAgfQorCisgICAgbV9jb2RlQmxvY2stPnNldE51
bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKKworICAgIC8vIE5l
ZWQgdG8ga25vdyB3aGF0IG91ciBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gUGFyYW1ldGVycyBoYXZl
IHNvbWUgZ29vZnkgYmVoYXZpb3JzIHdoZW4gaXQKKyAgICAvLyBjb21lcyB0byBmdW5jdGlvbnMg
b2YgdGhlIHNhbWUgbmFtZS4KKyAgICBmb3IgKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlv
biA6IG1vZHVsZVByb2dyYW1Ob2RlLT5mdW5jdGlvblN0YWNrKCkpCisgICAgICAgIG1fZnVuY3Rp
b25zLmFkZChmdW5jdGlvbi0+aWRlbnQoKS5pbXBsKCkpOworCisgICAgLy8gTm93IGRlY2xhcmUg
YWxsIHZhcmlhYmxlcy4KKyAgICBmb3IgKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbiA6
IG1vZHVsZVByb2dyYW1Ob2RlLT5mdW5jdGlvblN0YWNrKCkpIHsKKyAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBmdW5jdGlvbi0+aWRlbnQoKTsKKyAgICAgICAgY3JlYXRlVmFyaWFi
bGUoaWRlbnQsIHZhcktpbmQoaWRlbnQuaW1wbCgpKSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7Cisg
ICAgICAgIG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihmdW5j
dGlvbiwgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSkpOworICAgIH0KKyAgICBmb3IgKGF1dG8mIGVu
dHJ5IDogbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpKSB7CisgICAgICAgIEFT
U0VSVCghZW50cnkudmFsdWUuaXNMZXQoKSAmJiAhZW50cnkudmFsdWUuaXNDb25zdCgpKTsKKyAg
ICAgICAgaWYgKCFlbnRyeS52YWx1ZS5pc1ZhcigpKSAvLyBUaGlzIGlzIGVpdGhlciBhIHBhcmFt
ZXRlciBvciBjYWxsZWUuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5
LnZhbHVlLmlzRXhwb3J0ZWQoKSB8fCBlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkpIC8vIFRoZXNl
IGFyZSBtYW5hZ2VkIGluIHRoZSBNb2R1bGVFbnZpcm9ubWVudC4KKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAvLyBWYXJpYWJsZXMgbmFtZWQgImFyZ3VtZW50cyIgYXJlIG5ldmVyIGNv
bnN0LgorICAgICAgICBjcmVhdGVWYXJpYWJsZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGVu
dHJ5LmtleS5nZXQoKSksIHZhcktpbmQoZW50cnkua2V5LmdldCgpKSwgZnVuY3Rpb25TeW1ib2xU
YWJsZSwgSWdub3JlRXhpc3RpbmcpOworICAgIH0KKworICAgIC8vIEFsbCAiYWRkVmFyKCkicyBu
ZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0Fu
ZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAorICAgIC8vIGJlY2F1c2UgYSBm
dW5jdGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2RlcyB3aWxsIHVzZSB0ZW1w
b3JhcnkgcmVnaXN0ZXJzLgorICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCpw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2UpKTsKKworICAgIGlmIChtX2xleGljYWxFbnZp
cm9ubWVudFJlZ2lzdGVyKQorICAgICAgICBwdXNoU2NvcGVkQ29udHJvbEZsb3dDb250ZXh0KCk7
CisgICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFwcGVuZChTeW1ib2xUYWJsZVN0YWNrRW50cnkgeyBT
dHJvbmc8U3ltYm9sVGFibGU+KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKSwgbV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlciwgZmFsc2UsIHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KTsK
K30KKwogQnl0ZWNvZGVHZW5lcmF0b3I6On5CeXRlY29kZUdlbmVyYXRvcigpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggZDdmMWIxZjc1NDMxMGVkOTdjMDJjOWYzMzRiYTE3NjMwNGY4Y2JhMi4uZjNk
NGJlMzhlMzc4ZGRjYWMzMmNjYTIxYjljMTI1ZGI5Y2RhYmYyZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
MjY4LDYgKzI2OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCeXRlY29kZUdlbmVyYXRv
cihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKICAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqKTsKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlu
a2VkRXZhbENvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxl
UHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogCiAgICAgICAg
IH5CeXRlY29kZUdlbmVyYXRvcigpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0MWFlN2ZlMWRkMmY1
NzM0ODU0Zjk1MDA0YWJjZTAyNGI2NDI3NDE5Li5hMmRlYmJjODI0MDQ2MjQ1ZGY4MjQxYmY4YWFm
YzhmYzYzMDc5ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yODg0LDggKzI4ODQsMTcgQEAgdm9pZCBQcm9ncmFt
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTW9kdWxlUHJvZ3JhbU5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIE1vZHVsZVByb2dy
YW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCopCiB7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFt
LCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgp
KTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpz
VW5kZWZpbmVkKCkpOworICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0
U3RhcnRPZmZzZXQoKSk7CisgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKKworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGNjMzRhNjY1YmUzMGRiMjllMGRhZGUzYzdkOGE1M2E0N2EwZjVmNzIu
LjdkZjkwYzM4NmU2ODkyNzNmYTVlODhjNjg1NGE1MjBkNTQ5NjliYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtOTcsNiAr
OTcsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VVUkwoKSBjb25zdAogICAg
IAogICAgIHN3aXRjaCAoY29kZVR5cGUpIHsKICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToK
KyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgogICAgIGNhc2UgU3RhY2tGcmFtZUZ1bmN0
aW9uQ29kZToKICAgICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgogICAgICAgICBpZiAoIXNv
dXJjZVVSTC5pc0VtcHR5KCkpCkBAIC0xMTgsNiArMTE5LDkgQEAgU3RyaW5nIFN0YWNrRnJhbWU6
OmZyaWVuZGx5RnVuY3Rpb25OYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAogICAgIGNh
c2UgU3RhY2tGcmFtZUV2YWxDb2RlOgogICAgICAgICB0cmFjZUxpbmUgPSAiZXZhbCBjb2RlIjsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29kZToKKyAgICAgICAg
dHJhY2VMaW5lID0gIm1vZHVsZSBjb2RlIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdGFj
a0ZyYW1lTmF0aXZlQ29kZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAgICAgIHRyYWNl
TGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUsIHN0YWNrRnJhbWVDYWxs
ZWUpLmltcGwoKTsKQEAgLTQ1MSw2ICs0NTUsOCBAQCBzdGF0aWMgU3RhY2tGcmFtZUNvZGVUeXBl
IGdldFN0YWNrRnJhbWVDb2RlVHlwZShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCiAgICAgc3dpdGNo
ICh2aXNpdG9yLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpF
dmFsOgogICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAgIGNhc2UgU3RhY2tW
aXNpdG9yOjpGcmFtZTo6TW9kdWxlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU1vZHVsZUNv
ZGU7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpGdW5jdGlvbjoKICAgICAgICAgcmV0
dXJuIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1l
OjpHbG9iYWw6CkBAIC0xMTc2LDYgKzExODIsNTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUK
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgVk0mIHZtID0gKnNjb3BlLT52
bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdTY29wZSh0aGlzKTsKKworICAgIEFTU0VS
VChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKKyAgICBBU1NFUlQoIXZtLmV4Y2Vw
dGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBpZiAodm0u
aXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIFZNRW50
cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGlmICgh
dm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworCisgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oY2FsbEZyYW1lLCBudWxscHRy
LCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikp
CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpOworCisgICAgaWYgKFVOTElL
RUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7
CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFy
YW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMg
YWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlz
YmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAg
IFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQo
Y29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCksIHNj
b3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2Zp
bGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0
ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBleGVjdXRhYmxlLT5maXJzdExp
bmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAgICAvLyBFeGVjdXRlIHRoZSBj
b2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsKKyAgICAgICAgU2FtcGxpbmdUb29sOjpD
YWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKKyAgICAgICAgcmVzdWx0ID0g
ZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZy
YW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5h
YmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwg
ZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRh
YmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7
Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQpCiB7CiAgICAgRGVidWdnZXIqIGRlYnVn
Z2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDEz
MmM5NWQxN2Y0ZTEwOWJhMzdiYmNiMDE4NzI3MzJiMmY5NTExNmYuLjgzNjZhMTFkMTNjNTgyZTE5
ZTgyZTNkYWYwMGE4MzhiMzVmMWEyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKKyAgICBjbGFzcyBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBKU1Njb3BlOwog
ICAgIGNsYXNzIFNhbXBsaW5nVG9vbDsKQEAgLTc2LDYgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgewogICAgICAgICBTdGFja0ZyYW1lR2xvYmFs
Q29kZSwKICAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAorICAgICAgICBTdGFja0ZyYW1lTW9k
dWxlQ29kZSwKICAgICAgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwKICAgICAgICAgU3RhY2tG
cmFtZU5hdGl2ZUNvZGUKICAgICB9OwpAQCAtMjEyLDYgKzIxNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5j
dGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1l
KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRh
JiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBl
eGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpT
U2NvcGUqKTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KiwgQ2FsbEZyYW1lKiwgSlNTY29wZSopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0
YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRl
eCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggYTFlOWYx
MmIzMTYxMDljZDBjNTA4MTViMTVlMTA3Y2RmNTQ0NjgzNi4uODdiZWNkNTJlNGIxYjI4MTY0OWMy
N2UzZmJlYTgyNGYzMGU0YTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTE4MSw2ICsxODEsOCBAQCBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpDb2RlVHlwZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSgpIGNvbnN0
CiAgICAgc3dpdGNoIChjb2RlQmxvY2soKS0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgRXZhbENv
ZGU6CiAgICAgICAgIHJldHVybiBDb2RlVHlwZTo6RXZhbDsKKyAgICBjYXNlIE1vZHVsZUNvZGU6
CisgICAgICAgIHJldHVybiBDb2RlVHlwZTo6TW9kdWxlOwogICAgIGNhc2UgRnVuY3Rpb25Db2Rl
OgogICAgICAgICByZXR1cm4gQ29kZVR5cGU6OkZ1bmN0aW9uOwogICAgIGNhc2UgR2xvYmFsQ29k
ZToKQEAgLTE5OSw2ICsyMDEsOSBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rp
b25OYW1lKCkKICAgICBjYXNlIENvZGVUeXBlOjpFdmFsOgogICAgICAgICB0cmFjZUxpbmUgPSBB
U0NJSUxpdGVyYWwoImV2YWwgY29kZSIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENvZGVU
eXBlOjpNb2R1bGU6CisgICAgICAgIHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgibW9kdWxlIGNv
ZGUiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6TmF0aXZlOgogICAgICAg
ICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3Bs
YXlOYW1lKGNhbGxGcmFtZSgpLCBjYWxsZWUpLmltcGwoKTsKQEAgLTIxOSw2ICsyMjQsNyBAQCBT
dHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKCkKIAogICAgIHN3aXRjaCAoY29k
ZVR5cGUoKSkgewogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6CisgICAgY2FzZSBDb2RlVHlwZTo6
TW9kdWxlOgogICAgIGNhc2UgQ29kZVR5cGU6OkZ1bmN0aW9uOgogICAgIGNhc2UgQ29kZVR5cGU6
Okdsb2JhbDogewogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gY29kZUJsb2NrKCktPm93bmVy
RXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCAwMDM2YTc4OWM1OGUxOWFlMTNiMGQ0YWJm
Yjc1NTgzZTliYjQ2NzM0Li40MWJmYzcwODgyMGVjY2ZjYWM3MzViMzliNDIyNDcxM2ViZTUyZDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFN0YWNrVmlzaXRvciB7CiAgICAgICAgICAgICBH
bG9iYWwsCiAgICAgICAgICAgICBFdmFsLAogICAgICAgICAgICAgRnVuY3Rpb24sCisgICAgICAg
ICAgICBNb2R1bGUsCiAgICAgICAgICAgICBOYXRpdmUKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCmluZGV4IGJiYzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4
NmM1NTEuLjg0ZjM2ZDU0MGYzY2JhYTFhZWNjNTUzYWRmOGM0NjE0YjdiZGU4NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTQ4Niw2ICs0ODYsNyBAQCBDb21waWxhdGlvblJlc3Vs
dCBKSVQ6OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAK
ICAgICBzd2l0Y2ggKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBHbG9iYWxD
b2RlOgorICAgIGNhc2UgTW9kdWxlQ29kZToKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICBt
X2NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGU5MjZm
NTJkYzc2ZDllZGUyZjBlM2E1YjNkYzI2YjMzNmE5MmY4NWQuLjJhNTg0MzcwMGMyMTU2NWExYzAy
ZWJjYjA5MDRlNGMzNmVmOWE4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9u
cyhWTSYgdm0pCiAgICAgQVNTRVJUKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID09IDY0
KTsKICNlbmRpZgogICAgIEFTU0VSVChTdHJpbmdUeXBlID09IDYpOwotICAgIEFTU0VSVChPYmpl
Y3RUeXBlID09IDE4KTsKLSAgICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDE5KTsKKyAgICBB
U1NFUlQoT2JqZWN0VHlwZSA9PSAyMCk7CisgICAgQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAy
MSk7CiAgICAgQVNTRVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgQVNTRVJU
KEltcGxlbWVudHNIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSA9PSA4KTsKQEAgLTE0MSw2ICsxNDEsNyBAQCB2b2lkIERhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQoR2xvYmFsQ29kZSA9PSAwKTsKICAgICBB
U1NFUlQoRXZhbENvZGUgPT0gMSk7CiAgICAgQVNTRVJUKEZ1bmN0aW9uQ29kZSA9PSAyKTsKKyAg
ICBBU1NFUlQoTW9kdWxlQ29kZSA9PSAzKTsKIAogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJv
cGVydHkgPT0gMCwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHkgUmVzdWx0VHlwZSBpcyA9
PSAwIik7CiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXIgPT0gMSwgIkxMSW50IGFzc3VtZXMg
R2xvYmFsVmFyIFJlc3VsdFR5cGUgaXMgPT0gMSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAppbmRleCA5ZDAwMTA2YjlhODI3NmY0ODQyMGY2
YjU0NmMzMmQ1OTMwYTM2YjY4Li5hNmMzZDI3ZTI4MGEwNDQ3OTIyODY5ZDc4MmNmZTJhNTVhYjc4
MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
LmNwcApAQCAtOTcsMTIgKzk3LDMwIEBAIHN0YXRpYyB2b2lkIHNldFByb2dyYW1FbnRyeXBvaW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJl
Y3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50
X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5
cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyNpZiBFTkFCTEUoSklUKQor
ICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
CisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2bS5nZXRDVElTdHViKG1v
ZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKAorICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9tb2R1bGVfcHJvZ3Jh
bV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSkpOworfQorCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKICAgICBzd2l0Y2ggKGNvZGVCbG9jay0+Y29kZVR5cGUoKSkgewogICAgIGNh
c2UgR2xvYmFsQ29kZToKICAgICAgICAgc2V0UHJvZ3JhbUVudHJ5cG9pbnQodm0sIGNvZGVCbG9j
ayk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAgICAgIHNldE1v
ZHVsZVByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgc2V0RXZhbEVudHJ5cG9pbnQodm0sIGNvZGVCbG9j
ayk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCmluZGV4IDhhYjk2YjMwNDc1ZmQ1NTRkZWY4YjMyNjYyNDk2NjMyZWFmOTZkOWEu
LmFmNjg4NGU1ZWRlN2JlYmUwNGYzN2IzZjAwMDkxZWUxNmY5NTExNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApAQCAtODgsNiArODgsMTEgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHIobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksICJwcm9ncmFtIik7CiB9CiAKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgIm1vZHVsZV9wcm9ncmFt
Iik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIExMSW50CiAKICNlbHNlIC8vIEVOQUJMRShKSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmluZGV4IDBkMWJlNmJkYWVh
ZGY3OTQ4N2NlOTA2NjgyNjQ2ODUxODhhOGJkMTIuLjk1YjBmNDQ4NDhiY2M1MjlkMTUwM2UyODli
OTNlZmUzNzA1YzgzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5oCkBAIC00Niw2ICs0Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNh
bGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDVhZDgzNDY1Y2QxYTRlOGY0ZTk2
NGE2N2VkMDhhMTU3ZTdmYTM3NWEuLmUxYzAwZjlkMjAyNzIwYmEyOGZjZmFiNDUzMTUwOTQ1NWU1
MDM1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTE2MSw4ICsxNjEsOCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9y
YWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYK
LWNvbnN0IE9iamVjdFR5cGUgPSAxOAotY29uc3QgRmluYWxPYmplY3RUeXBlID0gMTkKK2NvbnN0
IE9iamVjdFR5cGUgPSAyMAorY29uc3QgRmluYWxPYmplY3RUeXBlID0gMjEKIAogIyBUeXBlIGZs
YWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCkBAIC0xNzYs
NiArMTc2LDcgQEAgY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAw
CiBjb25zdCBHbG9iYWxDb2RlID0gMAogY29uc3QgRXZhbENvZGUgPSAxCiBjb25zdCBGdW5jdGlv
bkNvZGUgPSAyCitjb25zdCBNb2R1bGVDb2RlID0gMwogCiAjIFRoZSBpbnRlcnByZXRlciBzdGVh
bHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBjb3VudC4KIGNvbnN0IExMSW50UmV0dXJu
UEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CkBAIC04ODQsNiArODg1LDExIEBAIF9sbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGRpc3BhdGNoKDApCiAKIAorX2xsaW50X21vZHVsZV9w
cm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKwogX2xsaW50X2V2YWxfcHJvbG9ndWU6
CiAgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAg
ICAgZGlzcGF0Y2goMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVB
bmFseXplci5jcHAKaW5kZXggM2QxNzdjYTc3YjhiOGQ4OGQ4N2I0ZjRlODVjZTNkNDY4MzhjNDQx
ZC4uMmM2ZDZkOGUwZjRiNGJhNWI2MGFlN2EwMDI4NGRkYmQyOGMxMDY2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTM2LDkgKzM2
LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAKLU1vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXpl
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCitNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFy
aWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAg
IDogbV92bSgmZXhlYy0+dm0oKSkKLSAgICAsIG1fbW9kdWxlUmVjb3JkKGV4ZWMtPnZtKCksIEpT
TW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSwgbW9kdWxlS2V5KSkKKyAgICAsIG1fbW9kdWxl
UmVjb3JkKGV4ZWMtPnZtKCksIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSwgbW9kdWxl
S2V5LCBzb3VyY2VDb2RlKSkKICAgICAsIG1fZGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJp
YWJsZXMpCiAgICAgLCBtX2xleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAyMjhh
NjlmZWU3NDczNjYyMGQ3ZjZkYTU3MWJiNmFjYWQ4NDZiNzA2Li4yMGVjNWEyZTFlYjM0MGNkMWI2
YWMwZjFjNWI1MWYyNWUwY2Y3YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVBbmFseXplci5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIFNvdXJjZUNvZGU7CiAKIGNsYXNzIE1vZHVs
ZUFuYWx5emVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVBbmFseXplcik7CiBw
dWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgTW9kdWxl
QW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBT
b3VyY2VDb2RlJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpOwogCiAgICAgSlNN
b2R1bGVSZWNvcmQqIGFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYWI3MGVhYmI5ZTNhMmEwNDUw
YzYyOWU3MDU2NjZmNGRjY2EwMWUyOC4uZDJlZmVjZDgyOWIyYzQ0ODVkZjEwNGI3ZmU0MWMyYzc2
OWJkOGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CkBAIC02NywxMSArNjcsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBDYWNoZVR5
cGVzIHsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkUHJvZ3JhbUNv
ZGVCbG9jaz4gewogICAgIHR5cGVkZWYgSlNDOjpQcm9ncmFtTm9kZSBSb290Tm9kZTsKICAgICBz
dGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2Rl
S2V5OjpQcm9ncmFtVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7CiB9OwogCiB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IHsKICAgICB0eXBlZGVmIEpT
Qzo6RXZhbE5vZGUgUm9vdE5vZGU7CiAgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNv
ZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtleTo6RXZhbFR5cGU7CisgICAgc3RhdGljIGNv
bnN0IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlOworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrPiB7CisgICAgdHlwZWRlZiBKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlIFJv
b3ROb2RlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlw
ZSA9IFNvdXJjZUNvZGVLZXk6OlByb2dyYW1UeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7
CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVj
dXRhYmxlVHlwZT4KQEAgLTk1LDcgKzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29k
ZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJv
b3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUg
PSBwYXJzZTxSb290Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1
aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7
CisgICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBl
cnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAg
aWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEzMiw2ICsxNDAs
MTIgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2so
Vk0mIHZtLCBFdmFsRXhlY3V0YWJsZSogZXhlY3UKICAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJs
b2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRp
bk1vZGUsIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgZXJyb3IsIHZhcmlhYmxlc1VuZGVyVERaKTsKIH0KIAorVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdn
ZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCit7
CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVBhcmVudFREWlZhcmlhYmxlczsKKyAgICBy
ZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4o
dm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZTo6
U3RyaWN0LCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJNb2RlLCBwcm9maWxl
ck1vZGUsIGVycm9yLCAmZW1wdHlQYXJlbnRURFpWYXJpYWJsZXMpOworfQorCiAvLyBGSVhNRTog
VGhlcmUncyBubyBuZWVkIHRvIGFkZCB0aGUgZnVuY3Rpb24ncyBuYW1lIHRvIHRoZSBrZXkgaGVy
ZS4gSXQncyBhbHJlYWR5IGluIHRoZSBzb3VyY2UgY29kZS4KIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZN
JiB2bSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQ
YXJzZXJFcnJvciYgZXJyb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5oCmluZGV4IGFmN2RhYzdlNDg3MDQxMzE5YzYzZmVjOTc1NWUyMzkzMTg4MzRjYjYuLjcx
NzVmZTM5NTEyYzkzNjZlNjE2Mzk4MTNjYjZjNGY4MjI1OThkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBJZGVu
dGlmaWVyOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOworY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
azsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOwpAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAog
Y2xhc3MgU291cmNlQ29kZUtleSB7CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxU
eXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlIH07CisgICAgZW51bSBDb2RlVHlwZSB7IEV2
YWxUeXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CiAKICAgICBT
b3VyY2VDb2RlS2V5KCkKICAgICB7CkBAIC0yNTcsNiArMjU5LDcgQEAgY2xhc3MgQ29kZUNhY2hl
IHsKIAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhW
TSYsIFByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRp
bk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBh
cnNlckVycm9yJik7CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2Nr
KFZNJiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGlu
TW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBUaGlzVERaTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUsIFBhcnNlckVycm9yJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogZ2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayhWTSYsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFy
c2VyQnVpbHRpbk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYp
OwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVG
cm9tR2xvYmFsQ29kZShWTSYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwg
UGFyc2VyRXJyb3ImKTsKIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggMTYzYjExNjEwNDFjY2Ri
MzVhZDUyOTc2Y2FmZTZiZDExZGZjOGI3Ny4uNGZkYmQ5MzE0MzA4ZmI5OTUxNDUzNjgzMzgzZTFi
YTRlMmM4MmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCkBAIC0yODMsNiArMjgzLDcgQEAKICAgICBtYWNybyhBcnJheSkgXAog
ICAgIG1hY3JvKFN0cmluZykgXAogICAgIG1hY3JvKE1hcCkgXAorICAgIG1hY3JvKFNldCkgXAog
ICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhJbnRlcm5hbFByb21pc2UpIFwKICAgICBt
YWNybyhhYnMpIFwKQEAgLTMwNyw2ICszMDgsNyBAQAogICAgIG1hY3JvKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbikgXAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKHNldCkgXAorICAgIG1h
Y3JvKGFkZCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAyNzExNzhjMmI1ZjY0MzdlNjhkZTU5MmQ2MTRi
ODEyZmE1MWVmMjVkLi5iNWY2MjNhY2RhNTIzMDUxMTg3ZDBkYjU2ODg1MjEyNjJkODYyNDhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBQcml2YXRlTmFtZSBwcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24s
ICJFbnRyeVBvaW50TW9kdWxlIik7Ci0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChwcml2YXRlTmFtZSksIG1vZHVsZVByb2dyYW1Ob2Rl
LT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMo
KSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVVpZChwcml2YXRlTmFtZSksIHNvdXJjZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xh
cmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBt
b2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmlu
ZGV4IDVmZmI4ZGI3ZjA1MDViNGQxNjI2YTM2ODQ3YTI4ODFmYjRhMTc1MjMuLjY0MDA4MWUwZmRm
M2RiZTFhNWU2ZGEzMWE3YWVhNjg4YTViZGQ4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZH
RHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgpAQCAtMTU5
LDcgKzE2MCwxOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKENvZGVCbG9j
ayogZ2VuZXJpY0NvZGVCbG9jaykKICAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJs
b2NrID0gY29kZUJsb2NrOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAg
Y2FzZSBNb2R1bGVDb2RlOiB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAg
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsKKworICAgICAgICBBU1NFUlQoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCk7CisKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAg
IGNhc2UgRXZhbENvZGU6IHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgRXZhbENvZGVCbG9jayogY29k
ZUJsb2NrID0gc3RhdGljX2Nhc3Q8RXZhbENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwpA
QCAtMjI2LDcgKzIzOCwxNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpu
ZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCiAgICAgICAgICAgICBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVt
bigpKSk7CiAgICAgfQotICAgIAorCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRh
YmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCisgICAg
ICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3Vy
Y2UoKS5zdGFydENvbHVtbigpKSk7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJ
bmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGZ1bmN0aW9uKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CkBAIC0yODMsNiArMzA1LDE3IEBAIFBhc3NSZWZQ
dHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zv
cigKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAoY2xhc3NJbmZvKCkg
PT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsK
KyAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oCisgICAgICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVs
ZVByb2dyYW1Db2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICAgICAgUmVmUHRyPE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2s+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKAorICAgICAgICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNl
bGluZSkpOworICAgICAgICByZXN1bHQtPnNldEFsdGVybmF0aXZlKGJhc2VsaW5lKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8o
KSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgIEZ1
bmN0aW9uQ29kZUJsb2NrKiBiYXNlbGluZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2Nr
Kj4oCkBAIC0zODMsNiArNDE2LDQyIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCkt
PlByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAorY29uc3QgQ2xh
c3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CisKK01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxz
ZSkKK3sKKyAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0o
KS50eXBlUHJvZmlsZXIoKSB8fCBleGVjLT52bSgpLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAg
ICAgICAgZXhlYy0+dm0oKS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVj
dXRlZFJhbmdlKHNvdXJjZUlEKCksIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBtX3R5cGVQ
cm9maWxpbmdFbmRPZmZzZXQpOworfQorCitNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAg
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCksIG1vZHVsZVJlY29yZCk7CisKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUgPSBnbG9iYWxPYmplY3Qt
PmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soZXhlYywgZXhlY3V0YWJsZSk7CisgICAgaWYg
KCF1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5zZXQoZXhlYy0+
dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CisKKyAgICByZXR1
cm4gZXhlY3V0YWJsZTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX21vZHVsZVJlY29yZC5zZXQodm0sIHRoaXMs
IG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4oY2VsbCktPk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp+TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZv
ID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCAKQEAgLTUzNSw2ICs2MDQsNDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJD
b2RlKCkKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIAorSlNPYmplY3QqIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9
IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgdm0sIG1fc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAgICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBl
cnJvcik7CisgICAgaWYgKG1vZHVsZVByb2dyYW1Ob2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gZXJyb3IudG9FcnJv
ck9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSk7Cit9CisKK3ZvaWQgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAg
IGlmICghbV9qaXRDb2RlRm9yQ2FsbCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNT
RVJUKG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgbV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLT51bmxpbmtDYWxscygpOworI2VuZGlmCit9Cit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZCk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKK3sKKyAgICBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2sg
PSBudWxscHRyOworICAgIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7
CisgICAgQmFzZTo6Y2xlYXJDb2RlKCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0OwpAQCAtNjIzLDYgKzczMywx
NSBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAg
ICAgICAgICAgICBvdXQucHJpbnQoIlByb2dyYW1FeGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ocmVhbFRo
aXMpOworICAgICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2Rl
QmxvY2soKSkKKyAgICAgICAgICAgIG91dC5wcmludCgqY29kZUJsb2NrKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgb3V0LnByaW50KCJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSB3L28gQ29k
ZUJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihyZWFsVGhpcyk7
CiAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29kZUJsb2NrKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMDQwNTM3NzNjMTA3NjQwZWI2NmYyYWRh
MzIxODY5MTk1MDgxMjc1Yy4uMGViZDk5YzA5YjQwNmY4YTBkOWZhZWMzNjIzZjRmMjA1ZmI0NTk5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTIs
NiArNTIsOCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7
CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwor
Y2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwogY2xh
c3MgSlNTY29wZTsKICAgICAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlv
biwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CkBAIC0xMDQsNiArMTA2LDExIEBAIGNsYXNzIEV4
ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gdHlw
ZSgpID09IFByb2dyYW1FeGVjdXRhYmxlVHlwZTsKICAgICB9CisgICAgYm9vbCBpc01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0gTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVUeXBlOworICAgIH0KKwogCiAgICAgYm9vbCBpc0hvc3RGdW5jdGlv
bigpIGNvbnN0CiAgICAgewpAQCAtNTQzLDYgKzU1MCw1NSBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBSZWZQdHI8UHJvZ3Jh
bUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogfTsKIAorY2xhc3MgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFNjcmlw
dEV4ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBz
dGF0aWMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsKKyAgICB9
CisKKyAgICBKU09iamVjdCogY2hlY2tTeW50YXgoRXhlY1N0YXRlKik7CisKKyAgICBQYXNzUmVm
UHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgdm9pZCB1bmxpbmtDYWxscygpOworCisgICAgdm9pZCBjbGVhckNvZGUoKTsKKworICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKKyAgICBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOworICAgIFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7Cisg
ICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azsKK307CisKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CkBAIC02ODksNiArNzQ1LDggQEAgaW5saW5lIHZvaWQgRXhlY3V0
YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCiAg
ICAgICAgIHJldHVybiBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xl
YXJDb2RlKCk7CiAgICAgY2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1
cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsK
KyAgICBjYXNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZToKKyAgICAgICAgcmV0dXJuIGpz
Q2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgfQpAQCAtNzAzLDYgKzc2MSw4IEBAIGlubGlu
ZSB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpLT51bmxpbmtDYWxscygpOwogICAgIGNhc2Ug
RnVuY3Rpb25FeGVjdXRhYmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPih0aGlzKS0+dW5saW5rQ2FsbHMoKTsKKyAgICBjYXNlIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlVHlwZToKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSo+KHRoaXMpLT51bmxpbmtDYWxscygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkzZWUxZmQ3NGI5OTI1OTA0MWNh
MWU4NjJmNjMxMWY2NTA5ODM4OWEuLjJkMjI5YmU2OTQ0OWQ2ZTgyYjUyOGZlZWRmYWUwM2I1MmQ5
N2YzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVs
ZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNp
bmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNs
dWRlICJKU1Byb21pc2UuaCIKQEAgLTMxMCw2ICszMTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0u
c3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0ucHJvdG90eXBlLmdldCgp
KSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CisgICAg
bV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1fc3RyaWN0RXZhbEFjdGl2
YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVidWdnZXJTY29wZVN0cnVj
dHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRlU3RydWN0dXJlKG1fdm0s
IHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV2l0aFNj
b3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBAIC0zNDYsNiArMzQ5
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUodm0sICp0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtNTIwLDYgKzUyNCw3IEBAIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMg
Q29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlzZVByb21p
c2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZh
dGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlz
LCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFw
UHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5TZXRQ
cml2YXRlTmFtZSwgc2V0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FS
UkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC03ODksNiArNzk0LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xl
eGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUpOwpAQCAt
ODE2LDYgKzgyMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKQEAgLTkzMCw2
ICs5MzcsMjUgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRl
RXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1cm4gdW5saW5rZWRD
b2RlQmxvY2s7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogSlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQoreworICAgIFBhcnNlckVycm9y
IGVycm9yOworICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dlcigpID8g
RGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOworICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUg
PSBoYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOworICAgIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNvZGVDYWNo
ZSgpLT5nZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICB2bSgpLCBleGVjdXRhYmxl
LCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKworICAgIGlmIChoYXNEZWJ1Z2dl
cigpKQorICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7
CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxs
RnJhbWUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHVubGlua2VkQ29k
ZUJsb2NrOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDI2MTMx
NmU4NWQyYmFmYmRlZDc4NDMwYjZmOGY4ZWJhNWFkODc3NmUuLjhjMmUzY2E0ZWU0Y2YyYmUxZjI5
YjEyZTA3ZmI0NTUzMDA3MWViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBKU1N0YWNrOwogY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3MgTW9kdWxl
TG9hZGVyT2JqZWN0OworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9n
cmFtQ29kZUJsb2NrOwpAQCAtODUsNiArODYsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsK
IGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90eXBlOwogY2xhc3Mg
U291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNz
IE51bGxHZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsKIGVudW0gY2xh
c3MgVGhpc1REWk1vZGU7CkBAIC0yMzAsNiArMjMyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2
NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRTdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTdHJ1Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNDQ2LDYgKzQ1MCw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxB
Y3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9Cisg
ICAgU3RydWN0dXJlKiBtb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGRp
cmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJndW1lbnRz
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTQ5OSw2ICs1MDQs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBzdGF0aWMgcHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlT2Zmc2V0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJhdG9yUmVz
dWx0U3RydWN0dXJlKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBT
dHJ1Y3R1cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc21Nb2R1
bGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNjQxLDYgKzY0Nyw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAg
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFt
ZSosIFByb2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgIFVubGlu
a2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBFdmFsRXhl
Y3V0YWJsZSosIFRoaXNURFpNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKENhbGxGcmFtZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7CiAKIHByb3RlY3RlZDoK
ICAgICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDk1MTYzMThkNzAx
NjllM2RkOGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5ODI2MmQ0MTBiZjAx
Zjg0OTM3MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBw
dWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIEpT
TGV4aWNhbEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxl
Kik7CiAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZTA0M2ExYjg1MjVhNzY1
NzAyNzhkN2QxY2I4ZmM2ODA2NDJiY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMCwwICsxLDc5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisKKyNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSlNNb2R1bGVFbnZpcm9ubWVudDo6c19pbmZvID0geyAiSlNNb2R1bGVF
bnZpcm9ubWVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1
bGVFbnZpcm9ubWVudCkgfTsKKworSlNNb2R1bGVFbnZpcm9ubWVudCogSlNNb2R1bGVFbnZpcm9u
bWVudDo6Y3JlYXRlKAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUq
IGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxW
YWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICAvLyBKU0xleGljYWxF
bnZpcm9ubWVudCAocHJlY2lzZWx5LCBKU0Vudmlyb25tZW50UmVjb3JkKSBoYXMgdGhlIHN0b3Jh
Z2UgdG8gc3RvcmUgdGhlIHZhcmlhYmxlIHNsb3RzIGFmdGVyIHRoZSBpdHMgY2xhc3Mgc3RvcmFn
ZS4KKyAgICAvLyBCZWNhdXNlIHRoZSBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIHNsb3RzIGFyZSBm
aXhlZCBpbiB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCwgaW5oZXJpdHRpbmcgdGhlc2UgY2xhc3Mg
YW5kIGFkZGluZyBuZXcgbWVtYmVyIGZpZWxkIGlzIG5vdCBhbGxvd2VkLAorICAgIC8vIHRoZSBu
ZXcgbWVtYmVyIHdpbGwgb3ZlcmxhcCB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8gVG8ga2Vl
cCB0aGUgSlNNb2R1bGVFbnZpcm9ubWVudCBjb21wYXRpYmxlIHRvIHRoZSBKU0xleGljYWxFbnZp
cm9ubWVudCBidXQgYWRkIHRoZSBuZXcgbWVtYmVyIHRvIHN0b3JlIHRoZSBKU01vZHVsZVJlY29y
ZCwgd2UgYWRkaXRpb25hbGx5IGFsbG9jYXRlCisgICAgLy8gdGhlIHN0b3JhZ2UgYWZ0ZXIgdGhl
IHZhcmlhYmxlIHNsb3RzLgorICAgIC8vCisgICAgLy8gSlNMZXhpY2FsRW52aXJvbm1lbnQ6Cisg
ICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXQorICAg
IC8vCisgICAgLy8gSlNNb2R1bGVFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxF
bnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBdWyBhZGRpdGlvbmFsIHNsb3RzIGZvciBKU01v
ZHVsZUVudmlyb25tZW50IF0KKyAgICBKU01vZHVsZUVudmlyb25tZW50KiByZXN1bHQgPQorICAg
ICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRlQ2Vs
bDxKU01vZHVsZUVudmlyb25tZW50Pih2bS5oZWFwLCBKU01vZHVsZUVudmlyb25tZW50OjphbGxv
Y2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQorICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KHZt
LCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpOworICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSk7CisgICAgdGhp
cy0+bW9kdWxlUmVjb3JkKCkuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQpOworfQorCit2b2lk
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNP
YmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5zY29wZVNpemUo
KSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjZkMjc1MzIwNzRmNmViZDYx
YmYxNTZmMmU5ODljZGMxZjFjY2VhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtMCwwICsxLDg5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNN
b2R1bGVFbnZpcm9ubWVudF9oCisjZGVmaW5lIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorCisjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVnaXN0ZXI7CisKK2NsYXNzIEpTTW9kdWxl
RW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhpY2FsRW52aXJvbm1lbnQgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNMZXhpY2FsRW52aXJvbm1lbnQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRp
YyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwg
U3ltYm9sVGFibGUqLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKwor
ICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQpCisgICAgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2
bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBpbml0aWFsVmFsdWUsIG1v
ZHVsZVJlY29yZCk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQo
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPik+KEJh
c2U6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSk7CisgICAgfQorCisgICAgc3RhdGljIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgeworICAg
ICAgICByZXR1cm4gb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUpICsgc2l6ZW9mKFdy
aXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU01v
ZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7
CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpT
TW9kdWxlUmVjb3JkKik7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPiYg
bW9kdWxlUmVjb3JkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFdyaXRl
QmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSAr
IG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKCkpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCitpbmxp
bmUgSlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xU
YWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZUVu
dmlyb25tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzhhNjU0MGQ3ZWU5NTIx
NDVlZjBlYTJmYzY3MThkZWZjODdiNDJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC0wLDAgKzEs
MTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisK
KyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNv
cmQuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqKTsKKworY29uc3QgQ2xhc3NJbmZvIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpzX2luZm8gPSB7ICJNb2R1bGVOYW1lc3BhY2VPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KSB9OworCisKK0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5h
bWVzcGFjZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyU2V0JiBleHBvcnRzKQorICAgIDogSlNXcmFwcGVyT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisg
ICAgLCBtX2V4cG9ydHMoZXhwb3J0cykKK3sKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgc2V0SW50ZXJuYWxW
YWx1ZSh2bSwgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVy
YXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
Z2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXRwcm90
b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtaXNleHRlbnNpYmxl
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtcHJldmVudGV4dGVuc2lvbnMKKyAg
ICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7Cisg
ICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6On5KU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCgpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4
b3RpYy1vYmplY3RzLWdldG93bnByb3BlcnR5LXAKKworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7
CisKKyAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisKKyAgICBpZiAoIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0
eU5hbWUudWlkKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkID0gdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpOworCisgICAgSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICBJZGVudGlmaWVyU2V0IGV4
cG9ydFN0YXJTZXQ7CisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5y
ZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1l
LnVpZCgpKSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgQVNTRVJUKHJlc29sdXRp
b24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQgJiYg
cmVzb2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpBbWJp
Z3VvdXMpOworICAgIEpTTW9kdWxlUmVjb3JkKiB0YXJnZXRNb2R1bGUgPSByZXNvbHV0aW9uLm1v
ZHVsZVJlY29yZDsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0YXJnZXRFbnZpcm9ubWVudCA9
IHRhcmdldE1vZHVsZS0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKyAgICBQcm9wZXJ0eVNsb3QgdHJh
bXBvbGluZVNsb3QodGFyZ2V0RW52aXJvbm1lbnQpOworICAgIGlmICghdGFyZ2V0RW52aXJvbm1l
bnQtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0RW52
aXJvbm1lbnQsIGV4ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lLCB0cmFtcG9saW5lU2xvdCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xv
dC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIEFTU0VSVCghZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpOworICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udERlbGV0ZSwgdmFs
dWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYt
cmVjZWl2ZXIKKyAgICByZXR1cm47Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUt
cAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4
cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKK30KKwordm9pZCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtb3ducHJvcGVy
dHlrZXlzCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5h
bWUgOiB0aGlzT2JqZWN0LT5tX2V4cG9ydHMpCisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKG5h
bWUuZ2V0KCkpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9y
Zy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlZmlu
ZW93bnByb3BlcnR5LXAtZGVzYworICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0
eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVj
dFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGFuIG9iamVjdCIpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZSgpLCBhc09i
amVjdCh0aGlzVmFsdWUpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjgzNTBlNzk2ZWEzYjAyNDllNjFjZWEwMWY5ZWYwYWFmODU2MzA2YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAor
I2RlZmluZSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisKKyNpbmNsdWRlICJKU1dyYXBwZXJP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworCitj
bGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3Qgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworCisg
ICAgc3RhdGljIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cykK
KyAgICB7CisgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oZXhlYy0+dm0oKS5o
ZWFwKSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBleHBv
cnRzKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBnbG9iYWxP
YmplY3QsIG1vZHVsZVJlY29yZCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorCisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duTm9u
SW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGludGVybmFsVmFsdWUoKSBjb25zdCB7
IHJldHVybiBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihKU1dyYXBwZXJPYmplY3Q6OmludGVybmFs
VmFsdWUoKSk7fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNvcmQqKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisKKyAgICBJZGVudGlmaWVyU2V0IG1fZXhwb3J0czsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IGU3MDJmYWZhNDRlNTA2ZjlkNDdmZWRlNjMzNjY0YTczOGMxOWI0MGIuLjg5NzNmYzhhMWY1
ZTcwYTM5YWViZGNiMjY4YTE2NGYzZmNhN2I0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTIwLDE1ICsyMCwyMCBAQAogICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNb2R1
bGVSZWNvcmQuaCIKIAorI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJv
bm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMiArNDYsMjQgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNNb2R1bGVSZWNvcmQ6On5K
U01vZHVsZVJlY29yZCgpOwogfQogCi0KIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgicmVnaXN0cnlFbnRyeSIpKSwganNVbmRlZmluZWQoKSk7
CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRl
cmFsKCJldmFsdWF0ZWQiKSksIGpzQm9vbGVhbihmYWxzZSkpOworCisgICAgbV9kZXBlbmRlbmNp
ZXNNYXAuc2V0KHZtLCB0aGlzLCBKU01hcDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKS0+bWFw
U3RydWN0dXJlKCkpKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCBBU0NJSUxpdGVyYWwoImRlcGVuZGVuY2llc01hcCIpKSwgbV9kZXBlbmRlbmNpZXNNYXAu
Z2V0KCkpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZUVudmlyb25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7CiB9CiAKIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9y
dEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJ
ZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFy
aWFibGUpIC0+IEV4cG9ydEVudHJ5CkBAIC02NCw2ICs4MSwyMjEgQEAgYXV0byBKU01vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9y
dE5hbWUsIGMKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpJbmRpcmVjdCwgZXhwb3J0
TmFtZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmly
b25tZW50RW50cnkoKSB9OwogfQogCit2b2lkIEpTTW9kdWxlUmVjb3JkOjphbGxvY2F0ZU1vZHVs
ZUVudmlyb25tZW50KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoIW1fbW9kdWxlRW52
aXJvbm1lbnQpOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6
OmNyZWF0ZShleGVjLT52bSgpKTsKKyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVu
dHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkg
eworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Oklu
ZGlyZWN0OgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEpTTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgICAg
IC8vIFRoZSBoZWFwIHZhcmlhYmxlIGZvciB0aGUgbmFtZXNwYWNlIG9iamVjdCBpcyBpbnRyb2R1
Y2VkIHdoZW4gaW1wb3J0aW5nIGFsbCB0aGUgbmFtZXNwYWNlIGJpbmRpbmcgaW50byB0aGUgY3Vy
cmVudCBtb2R1bGUgc2NvcGUuCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
IGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAg
ICAgICAgICBWYXJPZmZzZXQgdmFyT2Zmc2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zm
c2V0KGxvY2tlcikpOworICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnko
dmFyT2Zmc2V0LCBleHBvcnRFbnRyeS52YXJpYWJsZS5pc0NvbnN0KCkgPyBSZWFkT25seSA6IDAp
OworICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBleHBvcnRFbnRyeS5s
b2NhbE5hbWUuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0g
cGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVj
LT52bSgpKSkgeworICAgICAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZzZXQoc3ltYm9sVGFi
bGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKSk7CisgICAgICAgICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIFJlYWRPbmx5KTsKKyAgICAgICAgICAgICAg
ICBzeW1ib2xUYWJsZS0+YWRkKGxvY2tlciwgaW1wb3J0RW50cnkubG9jYWxOYW1lLmltcGwoKSwg
bmV3RW50cnkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbV9tb2R1
bGVFbnZpcm9ubWVudC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNb2R1bGVFbnZpcm9ubWVudDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKSk7Cit9
CisKK3N0YXRpYyBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGlmIChpZGVudGlmaWVyLmlzU3lt
Ym9sKCkpCisgICAgICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBzdGF0aWNf
Y2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSk7CisgICAgcmV0dXJuIGpzU3Ry
aW5nKCZleGVjLT52bSgpLCBpZGVudGlmaWVyLmltcGwoKSk7Cit9CisKK0pTTW9kdWxlUmVjb3Jk
KiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgSlNWYWx1ZSBtb2R1bGVO
YW1lVmFsdWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMsIG1vZHVsZU5hbWUpOworICAgIEpT
VmFsdWUgcGFpciA9IG1fZGVwZW5kZW5jaWVzTWFwLT5KU01hcDo6Z2V0KGV4ZWMsIG1vZHVsZU5h
bWVWYWx1ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KHBhaXIuZ2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIikpKTsKK30KKworYXV0byBK
U01vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUsIFJlc29sdmVTZXQmIHJlc29sdmVTZXQsIElkZW50aWZpZXJTZXQm
IHN0YXJTZXQpIC0+IFJlc29sdXRpb24KK3sKKyAgICBpZiAoIXJlc29sdmVTZXQuYWRkKFJlc29s
dmVRdWVyeShtb2R1bGVLZXkoKSwgZXhwb3J0TmFtZSkpLmlzTmV3RW50cnkpCisgICAgICAgIHJl
dHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVsZUtleSgp
LCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4
cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lLmltcGwoKSk7CisgICAgaWYgKGl0ZXJhdG9yICE9
IG1fZXhwb3J0RW50cmllcy5lbmQoKSkgeworICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRy
eSA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7
CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoK
KyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFj
ZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQsIG1vZHVsZUtleSgpLCB0aGlzLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUgfTsKKworICAg
ICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6IHsK
KyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IGhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhwb3J0RW50cnkubW9kdWxlTmFtZSk7CisgICAg
ICAgICAgICBjb25zdCBhdXRvIGluZGlyZWN0UmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlUmVj
b3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydE5hbWUsIHJlc29sdmVTZXQsIHN0YXJTZXQp
OworICAgICAgICAgICAgaWYgKGluZGlyZWN0UmVzb2x1dGlvbi50eXBlICE9IFJlc29sdXRpb246
OlR5cGU6Ok5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBpbmRpcmVjdFJlc29sdXRp
b247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGV4cG9ydE5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1bHRLZXl3b3Jk
KQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkVycm9yLCBt
b2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBpZiAoIXN0YXJTZXQuYWRk
KG1vZHVsZUtleSgpLmltcGwoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRp
b24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50
aWZpZXIoKSB9OworCisgICAgYXV0byBzdGFyUmVzb2x1dGlvbiA9IFJlc29sdXRpb24geyBSZXNv
bHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50aWZpZXIoKSB9
OworICAgIGZvciAoY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRy
aWVzKSB7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IGhv
c3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBz
dGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBp
bXBvcnRlZE1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBleHBvcnROYW1lLCByZXNv
bHZlU2V0LCBzdGFyU2V0KTsKKyAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0
aW9uOjpUeXBlOjpBbWJpZ3VvdXMgfHwgcmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5
cGU6OkVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHJlc29sdXRpb247CisgICAgICAgIGlmIChy
ZXNvbHV0aW9uLnR5cGUgIT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAgICAg
ICAgIGlmIChzdGFyUmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5k
KQorICAgICAgICAgICAgICAgIHN0YXJSZXNvbHV0aW9uID0gcmVzb2x1dGlvbjsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHN0YXJSZXNvbHV0aW9uLm1vZHVsZUtleSAhPSByZXNvbHV0aW9uLm1vZHVs
ZUtleSB8fCBzdGFyUmVzb2x1dGlvbi5sb2NhbE5hbWUgIT0gcmVzb2x1dGlvbi5sb2NhbE5hbWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpB
bWJpZ3VvdXMsIElkZW50aWZpZXIoKSwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RhclJlc29sdXRpb247Cit9CisKK3ZvaWQgSlNNb2R1
bGVSZWNvcmQ6OmdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyU2V0
JiBleHBvcnRTdGFyU2V0LCBJZGVudGlmaWVyU2V0JiBleHBvcnRlZE5hbWVzLCBJbmNsdWRlRGVm
YXVsdE1vZGUgbW9kZSkKK3sKKyAgICBpZiAoZXhwb3J0U3RhclNldC5jb250YWlucyhtb2R1bGVL
ZXkoKS5pbXBsKCkpKQorICAgICAgICByZXR1cm47CisgICAgZXhwb3J0U3RhclNldC5hZGQobW9k
dWxlS2V5KCkuaW1wbCgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVu
dHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOwor
ICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgY2FzZSBKU01vZHVs
ZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICBjYXNlIEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICBpZiAobW9k
ZSA9PSBJbmNsdWRlRGVmYXVsdE1vZGU6OkluY2x1ZGUgfHwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmRlZmF1bHRLZXl3b3JkICE9IGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpCisgICAgICAgICAgICAg
ICAgZXhwb3J0ZWROYW1lcy5hZGQoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50
cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgZm9yIChjb25zdCBhdXRvJiBzdGFyTW9kdWxlTmFtZSA6IG1fc3RhckV4cG9ydEVu
dHJpZXMpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIHJlcXVlc3RlZE1vZHVsZVJlY29yZCA9
IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVj
LCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICByZXF1ZXN0ZWRNb2R1bGVSZWNvcmQt
PmdldEV4cG9ydGVkTmFtZXMoZXhlYywgZXhwb3J0U3RhclNldCwgZXhwb3J0ZWROYW1lcywgSW5j
bHVkZURlZmF1bHRNb2RlOjpFeGNsdWRlKTsKKyAgICB9Cit9CisKK0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCisgICAgICAgIHJldHVybiBt
X21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSWRlbnRpZmllclNl
dCBleHBvcnRlZE5hbWVzOworICAgIHsKKyAgICAgICAgSWRlbnRpZmllclNldCBleHBvcnRTdGFy
U2V0OworICAgICAgICBnZXRFeHBvcnRlZE5hbWVzKGV4ZWMsIGV4cG9ydFN0YXJTZXQsIGV4cG9y
dGVkTmFtZXMsIEluY2x1ZGVEZWZhdWx0TW9kZTo6SW5jbHVkZSk7CisgICAgfQorCisgICAgSWRl
bnRpZmllclNldCB1bmFtYmlndW91c05hbWVzOworICAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6
IGV4cG9ydGVkTmFtZXMpIHsKKyAgICAgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgICAg
ICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1
dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1l
LmdldCgpKSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgICAgIHN3aXRjaCAocmVz
b2x1dGlvbi50eXBlKSB7CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6
CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICB0aHJv
d1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAgICAgICAg
dW5hbWJpZ3VvdXNOYW1lcy5hZGQobmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldChleGVjLT52bSgpLCB0
aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSwgdGhpcywgdW5h
bWJpZ3VvdXNOYW1lcykpOworICAgIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQo
KTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChtX21vZHVsZUVudmlyb25tZW50KTsKKworICAg
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1fbW9kdWxlRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsK
KyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBp
ZiAoZXhwb3J0RW50cnkudHlwZSA9PSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6
OkluZGlyZWN0KSB7CisgICAgICAgICAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgICAg
ICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgICAgICAgICBjb25zdCBhdXRv
IHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUs
IHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0
aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6
CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAg
Y2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50
cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUg
PSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVl
c3QpOworICAgICAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpIHsK
KyAgICAgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBp
bXBvcnRlZE1vZHVsZS0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpOworICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7Cisg
ICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmlubGluZUdl
dChsb2NrZXIsIGltcG9ydEVudHJ5LmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgU2Nv
cGVPZmZzZXQgb2Zmc2V0ID0gZW50cnkuc2NvcGVPZmZzZXQoKTsKKyAgICAgICAgICAgIEFTU0VS
VChtX21vZHVsZUVudmlyb25tZW50LT5pc1ZhbGlkKG9mZnNldCkpOworICAgICAgICAgICAgbV9t
b2R1bGVFbnZpcm9ubWVudC0+dmFyaWFibGVBdChvZmZzZXQpLnNldChleGVjLT52bSgpLCBtX21v
ZHVsZUVudmlyb25tZW50LmdldCgpLCBuYW1lc3BhY2VPYmplY3QpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgICAgICAgICAgSWRlbnRp
ZmllclNldCBleHBvcnRTdGFyU2V0OworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9u
ID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0
TmFtZSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgICAgICAgICBzd2l0Y2ggKHJl
c29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RG
b3VuZDoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogc3RhdGljIFN0cmlu
ZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKIHsK
ICAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQpAQCAtNzYsNyArMzA4LDYgQEAgc3RhdGljIFN0cmlu
ZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHJldHVybiBwcmlu
dGFibGVOYW1lKGlkZW50LmltcGwoKSk7CiB9CiAKLQogdm9pZCBKU01vZHVsZVJlY29yZDo6ZHVt
cCgpCiB7CiAgICAgZGF0YUxvZygiXG5BbmFseXppbmcgTW9kdWxlUmVjb3JkIGtleSgiLCBwcmlu
dGFibGVOYW1lKG1fbW9kdWxlS2V5KSwgIilcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggMDVkNjk0ZDNlM2ZlNTVhNTIxYWYzNWRl
ODI2MTU5ODBmMDgwZTJlMC4uYjMzMWI2NmU3NjJhM2RmZDI0Y2E2ZjA0YzUxODAzNThhZmM0MDFk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5o
CkBAIC0yOCwxMiArMjgsMTcgQEAKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNs
dWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKK2NsYXNz
IEpTTWFwOworCiAvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAogLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJj
ZS10ZXh0LW1vZHVsZS1yZWNvcmRzCiBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rl
c3RydWN0aWJsZU9iamVjdCB7CkBAIC04MSwxNiArODYsMTYgQEAgY2xhc3MgSlNNb2R1bGVSZWNv
cmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTTW9k
dWxlUmVjb3JkKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlS2V5KQorICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIEpTTW9kdWxlUmVj
b3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlUmVjb3Jk
Pih2bS5oZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5KTsKKyAg
ICAgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01vZHVsZVJlY29yZCh2bSwgc3RydWN0dXJl
LCBtb2R1bGVLZXksIHNvdXJjZUNvZGUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgc3RhdGljIEpT
TW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KQorICAgIHN0YXRpYyBKU01vZHVsZVJlY29y
ZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBtb2R1bGVLZXkp
OworICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbW9kdWxlS2V5
LCBzb3VyY2VDb2RlKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZFJlcXVlc3RlZE1vZHVsZShj
b25zdCBJZGVudGlmaWVyJik7CkBAIC05OCwyNiArMTAzLDEwNCBAQCBjbGFzcyBKU01vZHVsZVJl
Y29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgdm9pZCBhZGRJbXBvcnRF
bnRyeShjb25zdCBJbXBvcnRFbnRyeSYpOwogICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3Qg
RXhwb3J0RW50cnkmKTsKIAorICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KKworICAgIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlS2V5OyB9CisKICAgICBjb25zdCBJbXBvcnRF
bnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
bG9jYWxOYW1lKTsKIAogICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRN
b2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CiAKKyAgICBjb25z
dCBFeHBvcnRNYXAmIGV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydEVudHJp
ZXM7IH0KKwogICAgIHZvaWQgZHVtcCgpOwogCisgICAgdm9pZCBhbGxvY2F0ZU1vZHVsZUVudmly
b25tZW50KEV4ZWNTdGF0ZSopOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmly
b25tZW50KCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsgfQorCisgICAgdm9p
ZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqKTsKKworICAgIHN0cnVjdCBSZXNv
bHZlUXVlcnkgeworICAgICAgICBSZXNvbHZlUXVlcnkoVW5pcXVlZFN0cmluZ0ltcGwqIG1vZHVs
ZUtleSwgVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpCisgICAgICAgICAgICA6IG1vZHVs
ZUtleShtb2R1bGVLZXkpCisgICAgICAgICAgICAsIGV4cG9ydE5hbWUoZXhwb3J0TmFtZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVzb2x2ZVF1ZXJ5KGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZUtleSwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkKKyAgICAgICAgICAg
IDogUmVzb2x2ZVF1ZXJ5KG1vZHVsZUtleS5pbXBsKCksIGV4cG9ydE5hbWUuaW1wbCgpKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZh
bHVlIH07CisgICAgICAgIFJlc29sdmVRdWVyeShFbXB0eVZhbHVlVGFnKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9
OworICAgICAgICBSZXNvbHZlUXVlcnkoRGVsZXRlZFZhbHVlVGFnKQorICAgICAgICAgICAgOiBt
b2R1bGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgICAgICAsIGV4cG9y
dE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuICFtb2R1bGVLZXk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzRGVsZXRl
ZFZhbHVlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1vZHVsZUtleS5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiBtb2R1bGVLZXk7CisgICAgICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4gZXhwb3J0TmFtZTsKKyAgICB9OworCisgICAgc3RydWN0IFJlc29sdmVRdWVyeUhhc2gg
eworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiwgY29uc3QgUmVzb2x2
ZVF1ZXJ5Jik7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okhhc2hTZXQ8UmVz
b2x2ZVF1ZXJ5LCBSZXNvbHZlUXVlcnlIYXNoLCBXVEY6OkN1c3RvbUhhc2hUcmFpdHM8UmVzb2x2
ZVF1ZXJ5Pj4gUmVzb2x2ZVNldDsKKworICAgIHN0cnVjdCBSZXNvbHV0aW9uIHsKKyAgICAgICAg
ZW51bSBjbGFzcyBUeXBlIHsgUmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJpZ3VvdXMsIEVycm9yIH07
CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBJZGVudGlmaWVyIG1vZHVsZUtleTsKKyAg
ICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICAgICAgSWRlbnRpZmllciBs
b2NhbE5hbWU7CisgICAgfTsKKworICAgIFJlc29sdXRpb24gcmVzb2x2ZUV4cG9ydChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBSZXNvbHZlU2V0JiwgSWRlbnRpZmll
clNldCYgZXhwb3J0U3RhclNldCk7CisKIHByaXZhdGU6Ci0gICAgSlNNb2R1bGVSZWNvcmQoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KQor
ICAgIEpTTW9kdWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9tb2R1bGVLZXkobW9kdWxlS2V5
KQorICAgICAgICAsIG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICB9CiAKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCogZ2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSopOworICAgIGVudW0gY2xhc3MgSW5jbHVk
ZURlZmF1bHRNb2RlIHsgSW5jbHVkZSwgRXhjbHVkZSB9OworICAgIHZvaWQgZ2V0RXhwb3J0ZWRO
YW1lcyhFeGVjU3RhdGUqLCBJZGVudGlmaWVyU2V0JiBleHBvcnRTdGFyU2V0LCBJZGVudGlmaWVy
U2V0JiBleHBvcnRlZE5hbWVzLCBJbmNsdWRlRGVmYXVsdE1vZGUpOworCisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKKyAgICBKU01vZHVsZVJlY29yZCogaG9zdFJlc29sdmVJbXBv
cnRlZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKwog
ICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBt
b2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJlc2Vu
dCB0aGlzIG1vZHVsZS4KICAgICBJZGVudGlmaWVyIG1fbW9kdWxlS2V5OwogCisgICAgU291cmNl
Q29kZSBtX3NvdXJjZUNvZGU7CisKICAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5
LgogICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7CiAKQEAgLTEyOSw2ICsyMTIsMTAgQEAg
Y2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAg
IC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9h
ZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KICAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlv
bgogICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKKworICAgIFdy
aXRlQmFycmllcjxKU01vZHVsZUVudmlyb25tZW50PiBtX21vZHVsZUVudmlyb25tZW50OworICAg
IFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVOYW1lc3BhY2VP
YmplY3Q7CisgICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX2RlcGVuZGVuY2llc01hcDsKIH07CiAK
IGlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSkKQEAgLTE1Niw2ICsyNDMsMTYgQEAgaW5saW5lIGF1dG8g
SlNNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGwKICAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUp
KS52YWx1ZTsKIH0KIAoraW5saW5lIHVuc2lnbmVkIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVl
cnlIYXNoOjpoYXNoKGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnkmIHF1ZXJ5KQor
eworICAgIHJldHVybiBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChxdWVyeS5tb2R1bGVLZXkpICsg
SWRlbnRpZmllclJlcEhhc2g6Omhhc2gocXVlcnkuZXhwb3J0TmFtZSk7Cit9CisKK2lubGluZSBi
b29sIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNvbHZl
UXVlcnkmIGxocywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5t
b2R1bGVLZXkgPT0gcmhzLm1vZHVsZUtleSAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0
TmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU01vZHVsZVJlY29y
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDQwMzI2Y2UwZjMy
OWZhN2M3YmJjOTlmNDQ2NDI4ZmU5NmM5MTI0YjMuLmZjZTA2MWQxZjhkNjFkYWIwNjM2MGFlOGQ3
YWE0NDhmMmYxOGM3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBA
IC00MSwxMCArNDEsMTIgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIEV2YWxFeGVj
dXRhYmxlVHlwZSwKICAgICBQcm9ncmFtRXhlY3V0YWJsZVR5cGUsCisgICAgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVUeXBlLAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAKICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
VHlwZSwKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tUeXBlLAogICAgIFVubGlu
a2VkRXZhbENvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1R5cGUs
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJP
YmplY3QuY3BwCmluZGV4IDFkNjdhNGNhZGU4YjQ3Y2MxOGNmNTg2NDJkNjQ0NmQwMzJmNWU3OTMu
LmJjZDhkZWZmMGI3OTc0YjkzYzk3M2VmM2Y2NjY5NDNiNjhiMDEwMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAi
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAj
aW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNDUsNiAr
NDYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRN
b2R1bGVzKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbklu
c3RhbnRpYXRpb24oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2goRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RUcmFuc2xhdGUoRXhlY1N0YXRlKik7CkBAIC02MiwyOCArNjUsMzQgQEAgY29uc3QgQ2xhc3NJ
bmZvIE1vZHVsZUxvYWRlck9iamVjdDo6c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6
OnNfaW5mbywgJm0KIAogLyogU291cmNlIGZvciBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgKIEBi
ZWdpbiBtb2R1bGVMb2FkZXJPYmplY3RUYWJsZQotICAgIHNldFN0YXRlVG9NYXggICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKLSAgICBuZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3ROZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAg
ZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0
ZXJlZCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIGZvcmNlRnVsZmlsbFByb21p
c2UgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RGdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAy
Ci0gICAgZnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmls
bFRyYW5zbGF0ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxJbnN0
YW50aWF0ZSAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RDb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAzCi0gICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
SW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwotICAgIHJlcXVl
c3RGZXRjaCAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RGZXRjaCAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAg
IHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNv
bHZlRGVwZW5kZW5jaWVzIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0SW5zdGFudGlh
dGVBbGwgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCi0gICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgbW9kdWxl
TG9hZGVyT2JqZWN0TG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MgotICAgIHByb3ZpZGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFByb3Zp
ZGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKLSAgICBwYXJzZU1vZHVs
ZSAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQotICAgIHJlc29sdmUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dFJlc29sdmUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBmZXRj
aCAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaCAgICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgdHJhbnNsYXRlICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMgotICAgIGluc3RhbnRpYXRlICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdEluc3RhbnRpYXRlICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAg
ICBzZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0U2V0U3Rh
dGVUb01heCAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBuZXdSZWdp
c3RyeUVudHJ5ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRy
eSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBlbnN1cmVSZWdpc3RlcmVk
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBmb3JjZUZ1bGZpbGxQcm9taXNlICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Rm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKKyAgICBmdWxmaWxsVHJhbnNsYXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVs
ZmlsbEluc3RhbnRpYXRlICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBjb21t
aXRJbnN0YW50aWF0ZWQgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFu
dGlhdGVkICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICBpbnN0YW50aWF0aW9u
ICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgICByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
UmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBy
ZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdElu
c3RhbnRpYXRlQWxsICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0TGlu
ayAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdExpbmsgICAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0UmVhZHkgICAgICAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBsaW5rICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0TGluayAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgICBtb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gbW9kdWxl
TG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgICBtb2R1bGVFdmFsdWF0aW9uICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0TW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAg
ICBldmFsdWF0ZSAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVh
dGUgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBsb2FkTW9k
dWxlICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TG9hZE1vZHVsZSAgICAg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBwcm92aWRlICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgICByZXNvbHZlICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICBmZXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RmV0
Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFu
c2xhdGUgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBpbnN0YW50aWF0ZSAg
ICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKIEBlbmQKICovCiAKQEAgLTEzNywxOSArMTQ2
LDYgQEAgSlNWYWx1ZSBNb2R1bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGtleSwgU3RhdHVzIHN0YXR1cywKICAgICByZXR1cm4gY2FsbChleGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogfQogCi1KU0ludGVy
bmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkKLXsKLSAgICBKU09iamVjdCogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLnJlcXVlc3RJbnN0YW50aWF0ZUFsbFB1YmxpY05hbWUoKSkpOwotICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5j
dGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOwot
Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBl
bmQoa2V5KTsKLQotICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOwotfQot
CiBKU0ludGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0Ojpsb2FkTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQogewogICAg
IEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkubG9hZE1vZHVsZVB1YmxpY05hbWUoKSkpOwpA
QCAtMjQ5LDE0ICsyNDUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogICAgIEFTU0VS
VChtb2R1bGVQcm9ncmFtTm9kZSk7CiAKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXpl
cihleGVjLCBtb2R1bGVLZXksIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwg
bW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6
ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5LCBzb3VyY2VDb2RlLCBtb2R1bGVQcm9n
cmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFy
aWFibGVzKCkpOwogICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVBbmFs
eXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CisKKyAgICBtb2R1bGVSZWNvcmQtPmFs
bG9jYXRlTW9kdWxlRW52aXJvbm1lbnQoZXhlYyk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG1vZHVsZVJlY29yZCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4
ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNE
eW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
IW1vZHVsZVJlY29yZCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpKTsKIApAQCAtMjY4LDYgKzI2Nyw0MCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhl
Yy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKE9wdGlvbnM6OmR1bXBN
b2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAiLCBt
b2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKKworICAgIG1vZHVsZVJlY29yZC0+aW5z
dGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8
SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1bGVSZWNv
cmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAg
ICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9n
KCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsK
KworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtb2R1bGVSZWNvcmQtPnNvdXJjZUNvZGUoKSwgbW9k
dWxlUmVjb3JkKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmlu
dGVycHJldGVyKCktPmV4ZWN1dGUoZXhlY3V0YWJsZSwgZXhlYywgbW9kdWxlUmVjb3JkLT5tb2R1
bGVFbnZpcm9ubWVudCgpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
K30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaAppbmRleCA0NWI5
MzJhYzU4MGFmNjBhYjUyZmQxNTAxOTM5MDk1OWFiZTA1MTAzLi4xMmNmZTU2ZWViYjZjNDI3YzBl
Zjc5MDIxZjk5N2M2YjBkMzg0YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaApAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBNb2R1
bGVMb2FkZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICAvLyBBUElz
IHRvIGNvbnRyb2wgdGhlIG1vZHVsZSBsb2FkZXIuCiAgICAgSlNWYWx1ZSBwcm92aWRlKEV4ZWNT
dGF0ZSosIEpTVmFsdWUga2V5LCBTdGF0dXMsIGNvbnN0IFN0cmluZyYpOwotICAgIEpTSW50ZXJu
YWxQcm9taXNlKiByZXF1ZXN0SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXkp
OwogICAgIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
bW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7CiAKICAgICAvLyBQbGF0Zm9ybSBkZXBlbmRl
bnQgaG9va2VkIEFQSXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmNwcAppbmRleCBlODNlMzgzMjU4Zjk5YmIwNWJiZTExZTBjNjVkZTA0YjhlMDQ5ZTBh
Li40YzQzYzZhZmYyZjY3ZmYzNTc1NzNhZWNhMmRmNDNiZDM3MTEzYjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKIAorI2lu
Y2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhY2hlZENhbGwuaCIKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTY1LDYgKzY2LDEw
IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5oYXMsIHNldFByb3RvRnVuY0hhcywgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgc2V0UHJvdG9GdW5jRW50cmllcywg
RG9udEVudW0sIDApOwogCisgICAgLy8gUHJpdmF0ZSBhZGQgLyBoYXMgb3BlcmF0aW9ucy4KKyAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmFkZFByaXZhdGVOYW1lLCBz
ZXRQcm90b0Z1bmNBZGQsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc1ByaXZhdGVOYW1lKCksIHNldFByb3Rv
RnVuY0hhcywgRG9udEVudW0sIDEpOworCiAgICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
cy5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCB2YWx1ZXMsIERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+a2V5
cywgdmFsdWVzLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggOTNjOTZmYmVjMDQ0ZjdmNzRlOTc4NDczYjZiZjk4YzA3MjFiOGVkMy4uMDU2Y2Q5MWZlNTlj
MTgwNjQ1ODVhMzQwMzRjODliMTFjZDhjOTViOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtMjIxLDYgKzIyMSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJv
Z3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9ncmFtRXhlY3V0YWJsZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0
dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdF
eHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzeW1ib2xTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2w6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBzeW1ib2xUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CkBAIC0yMzIsNiArMjMzLDcgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
azo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRXZh
bENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJv
cGVydHlUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB3ZWFrTWFwRGF0YVN0cnVjdHVyZS5zZXQo
KnRoaXMsIFdlYWtNYXBEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgaW5mZXJyZWRWYWx1ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVmFsdWU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDlhZmU5YTVhMmZmNDFkOWMxZmM2NTFmZGMwNmJiNmE1MGY3NDlmNjEuLmNk
YWI5YjIyNDQxMGY0MzBjNjA1NjY5YWExOGYwYjE5OWJmMjc0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaApAQCAtMTAzLDYgKzEwMyw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
OwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU7CiBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFzcyBW
TUVudHJ5U2NvcGU7CiBjbGFzcyBXYXRjaGRvZzsKQEAgLTI3OSw2ICsyODAsNyBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb2dy
YW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBtb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdFeHBTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9sU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHN5bWJvbFRhYmxlU3RydWN0dXJlOwpAQCAtMjkwLDYgKzI5Miw3IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiB1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBwcm9wZXJ0eVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IHdlYWtNYXBEYXRhU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVmFs
dWVTdHJ1Y3R1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259925</attachid>
            <date>2015-08-25 22:12:39 -0700</date>
            <delta_ts>2015-08-26 15:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150825221230.patch</filename>
            <type>text/plain</type>
            <size>152014</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAwZDNiMWIzMjNjYzA4Mjk0NmVmNjJhYjFjMmI3YTE2OGVmMmQ2Li5hZGIyOGM2NWExZDFkYmFk
YzhhN2UwYTgyYWE3MzM3MDY0N2Y5YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzcgQEAKKzIwMTUtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExv
YWRlcidzIHJlYWR5IC8gbGluayBwaGFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAg
KHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzLnJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlLnRo
aXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAgICAgICAgKHJlcXVlc3RMaW5rKToKKyAg
ICAgICAgKHJlcXVlc3RSZWFkeSk6CisgICAgICAgIChsaW5rKToKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppbmZlcnJlZE5hbWUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6TW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OkV2YWxD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6RnVuY3Rpb25Db2Rl
QmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6
cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5cGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVBy
b2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlv
bk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0
aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TG9jYWxEZWNsYXJh
dGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCk6Cisg
ICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKToKKyAgICAgICAg
KEpTQzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNp
dG9yOjpGcmFtZTo6Y29kZVR5cGUpOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1l
OjpmdW5jdGlvbk5hbWUpOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3Vy
Y2VVUkwpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojptb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01v
ZHVsZUFuYWx5emVyLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0pOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlvbik6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZUxleGljYWxW
YXJpYWJsZSk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc0ltcG9ydGVkTmFtZXNwYWNlKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc0ltcG9ydGVkTmFt
ZXNwYWNlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hl
OjpnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNo
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0
RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxl
OjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdS
ZXBsYWNlbWVudENvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp1
bmxpbmtDYWxscyk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFy
Q29kZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpkdW1wKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmlzTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xl
YXJDb2RlVmlydHVhbCk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0Nh
bGxzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVOYW1lc3BhY2VPYmplY3RT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVu
dmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om9mZnNldE9mTW9kdWxlUmVj
b3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUp
OgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmQpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpKU01vZHVsZUVudmlyb25tZW50KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95KToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjptb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcik6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphbGxvY2F0ZU1vZHVsZUVu
dmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvSlNWYWx1ZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmdldEV4cG9ydGVkTmFtZXMpOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW5zdGFu
dGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhlY3V0
ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnNv
dXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxlS2V5KToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4cG9ydEVudHJpZXMpOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6ZGVjbGFyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjptb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpS
ZXNvbHZlUXVlcnk6OlJlc29sdmVRdWVyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
OjpSZXNvbHZlUXVlcnk6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpSZXNvbHZlUXVlcnk6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6Om1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OkpTTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OlJlc29sdmVRdWVyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
UmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpt
b2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRl
ck9iamVjdFJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmpl
Y3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAgICAoSlNDOjptb2R1bGVM
b2FkZXJPYmplY3RFdmFsdWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6
cmVxdWVzdEluc3RhbnRpYXRlQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL01vZHVs
ZUxvYWRlck9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorCiAyMDE1LTA4LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtFUzZdIFJldHVybiBKU0ludGVybmFsUHJvbWlzZSBhcyByZXN1bHQgb2Yg
ZXZhbHVhdGVNb2R1bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzhkYzBiNjFi
NmZhODJiODFhNjEzYzA2MThkZmFhMWE5ZjFiNzJmNC4uZDAzMjNlNWFmM2EyZjdhYzhhNGY3OWFj
ODY0YzllMTgxNGE1MjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTcs
NiArMTY5Nyw5IEBACiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4
RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYx
IC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5j
cHAgKi87IH07CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBE
OTBCMzQgLyogVk0uY3BwICovOyB9OworCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9k
dWxlTG9hZGVyT2JqZWN0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0
LmpzICovOyB9OworCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cCAqLzsgfTsKKwkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVm
bGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZs
ZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJENzUw
MDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0
OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpAQCAt
MTcxOSw2ICsxNzIyLDggQEAKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5h
bHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAq
LzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OworCQlFM0Qy
MzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURD
MTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1NDcsNiArMzU1Miw5
IEBACiAJCUUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXRpYWxpemVUaHJlYWRp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMThFM0E1NjBERjkyNzhDMDBE
OTBCMzQgLyogVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsg
cGF0aCA9IFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0
aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQlFMThFM0E1NzBERjkyNzhD
MDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5k
aW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFn
ZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CisJCUUzMDY3Nzk3
MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBMzFCNjMyMjAyMDBFRTA4
NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWZsZWN0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMz
NjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNTcxLDYgKzM1NzksOCBAQAogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9k
ZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAx
ODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ3NTgsNiArNDc2OCwxMCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMz
RTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01h
cEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJ
dGVyYXRvci5oICovLAorCQkJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCAqLywKKwkJCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5oICovLAorCQkJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8sCisJCQkJRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlE
IC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi8sCiAJCQkJRTM5REE0QTQxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlFMzlEQTRBNTFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4
RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCkBAIC01Nzc2LDYgKzU3OTAsNyBAQAogCQkJCUUz
NUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
anMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIEludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVCMUI2NUQ5QTMwMDlEQjFFRiAvKiBJdGVyYXRv
ci5wcm90b3R5cGUuanMgKi8sCisJCQkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVs
ZUxvYWRlck9iamVjdC5qcyAqLywKIAkJCQk3Q0Y5QkM1QzFCNjVEOUIxMDA5REIxRUYgLyogT2Jq
ZWN0Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUQxQjY1RDlCMTAwOURCMUVGIC8qIE9w
ZXJhdGlvbnMuUHJvbWlzZS5qcyAqLywKIAkJCQk3Q0ZCQUMxQzE4QjUzNUU1MDBEMDA3NTAgLyog
UHJvbWlzZS5wcm90b3R5cGUuanMgKi8sCkBAIC02MTEwLDYgKzYxMjUsNyBAQAogCQkJCTBGMkI5
Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2
ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0QyMzlDOTFCODI5QzFD
MDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
MEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNy
ZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNjI0Miw2ICs2MjU4LDcgQEAKIAkJCQk3
QjAyNDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dl
cmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjky
OUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhB
MzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjM1QkRFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsYXRpb25JbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTcwMTksNiArNzAzNiw3IEBACiAJCQlpc2EgPSBQQlhSZXNv
dXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAorCQkJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmpl
Y3QuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYwMDcyRUI2RCAvKiBm
cmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtNzM1Myw2ICs3MzcxLDcgQEAKIAkJCQkwRjZDNzM1
MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVj
aWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNEMjM5QzgxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4
Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0MzEsNiArNzQ1MCw3IEBACiAJCQkJMEZEMTIwMzMx
QThDODVCRDAwMEY1MjgwIC8qIEZUTEpTQ2FsbFZhcmFyZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5RDMzOTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMzNGNTA4NDFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQg
LyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDM2
OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzQkQxQjcxQjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNl
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgwNzksNiArODA5OSw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZB
QkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsK
IAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MDg2LDYgKzgxMDcsNyBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmlnICovOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2
X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC04MDkzLDYgKzgx
MTUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsK
QEAgLTgxMDAsNiArODEyMyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8q
IExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJv
ZHVjdGlvbjsKIAkJfTsKQEAgLTgxMDcsNiArODEzMSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5
MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODExNCw2ICs4MTM5LDcgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTgxMjEsNiAr
ODE0Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRh
YmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01P
RFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsK
IAkJfTsKQEAgLTgxMjgsNiArODE1NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1
NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTU2LDYgKzgxODQsNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFD
OTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9N
T0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxNjMsNiArODE5Miw3
IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBA
IC04MTcxLDYgKzgyMDEsNyBAQAogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkw
NTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0gewogCQkJCUJVSUxEX1ZBUklBTlRTID0gbm9ybWFsOworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJv
ZHVjdGlvbjsKIAkJfTsKQEAgLTgxNzgsNiArODIwOSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZC
Njg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxODUsNiArODIxNyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0Ix
NDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJ
CW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODE5Miw2ICs4MjI1LDcgQEAKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1REFG
RDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9
OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MzIzLDYgKzgzNTcsNyBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxF
X0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7
CiAJCQl9OwpAQCAtODMzMiw2ICs4MzY3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4
MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZP
UExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9E
VUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNDEsNiArODM3
Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3Jl
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVM
RVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291
cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzUwLDYgKzgzODcsNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQz
MEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVT
OwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3Qi
OwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9OwpAQCAt
ODM1OSw2ICs4Mzk3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2
YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9EVUNUX05BTUUgPSAi
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC04
MzY3LDYgKzg0MDYsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZh
U2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxF
X0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAt
ODM3NSw2ICs4NDE1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2
YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9EVUNUX05BTUUgPSAi
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsK
QEAgLTgzOTgsNiArODQzOSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8q
IEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlF
TkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9
IFByb2ZpbGluZzsKIAkJfTsKQEAgLTg0MDUsNiArODQ0Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMw
QkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9Owog
CQkJbmFtZSA9IFByb2ZpbGluZzsKQEAgLTg0MjcsNiArODQ3MCw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2
Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsK
IAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwppbmRleCA2NWEwNTM5NjRkZjQ4Nzcz
NWU2NzVmNGI5MTc4MzY4MTBjZGQ5YTMyLi44MzkwODZlMGMyNzhiYzIxYTVjMjg5YzA1ZjJkYjVj
NzY5ZmFlMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9N
b2R1bGVMb2FkZXJPYmplY3QuanMKQEAgLTE5Miw3ICsxOTIsNyBAQCBmdW5jdGlvbiBjb21taXRJ
bnN0YW50aWF0ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSkKICAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CiAKICAgICB2YXIgZGVwZW5kZW5j
aWVzID0gW107Ci0gICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG5ldyBATWFwKCk7CisgICAgdmFy
IGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7CiAgICAgbW9k
dWxlUmVjb3JkLnJlZ2lzdHJ5RW50cnkgPSBlbnRyeTsKICAgICB2YXIgcmVxdWVzdGVkTW9kdWxl
cyA9IHRoaXMucmVxdWVzdGVkTW9kdWxlcyhtb2R1bGVSZWNvcmQpOwogICAgIGZvciAodmFyIGkg
PSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7
CkBAIC0zNDksNyArMzQ5LDcgQEAgZnVuY3Rpb24gcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMo
a2V5KQogICAgIHZhciByZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZSA9IHRoaXMucmVxdWVzdElu
c3RhbnRpYXRlKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKICAgICAgICAgdmFyIGRlcExv
YWRzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbnRyeS5kZXBlbmRl
bmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBwYWlyID0g
ZW50cnkuZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAgICAgbGV0IHBhaXIgPSBlbnRyeS5kZXBl
bmRlbmNpZXNbaV07CiAKICAgICAgICAgICAgIC8vIEhvb2sgcG9pbnQuCiAgICAgICAgICAgICAv
LyAxLiBMb2FkZXIucmVzb2x2ZS4KQEAgLTM2MSwxNiArMzYxLDI1IEBAIGZ1bmN0aW9uIHJlcXVl
c3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKIAogICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2l2
ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBpcyBiZWluZyByZXNv
bHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgogICAgICAgICAgICAgICAgIC8vIFN0b3AgdHJhY2lu
ZyB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIC8vIEJ1dCB0byBy
ZXRyaWV2ZSB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSByZWNvcmQgY29ycmVjdGx5LAorICAgICAg
ICAgICAgICAgIC8vIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGluc3RhbnRpYXRpb24gZm9yIHRo
ZSBkZXBlbmRlbnQgbW9kdWxlLgorICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCByZWFj
aGluZyBoZXJlLCB0aGUgbW9kdWxlIGlzIHN0YXJ0aW5nIHJlc29sdmluZyB0aGUgZGVwZW5kZW5j
aWVzLgorICAgICAgICAgICAgICAgIC8vIEJ1dCB0aGUgbW9kdWxlIG1heSBvciBtYXkgbm90IHJl
YWNoIHRoZSBpbnN0YW50aWF0aW9uIHBoYXNlIGluIHRoZSBsb2FkZXIncyBwaXBlbGluZS4KKyAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSB3YWl0IGZvciB0aGUgUmVzb2x2ZURlcGVuZGVuY2llcyBm
b3IgdGhpcyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUgY2lyY3VsYXIgcHJvbWlzZSBjaGFpbiBh
bmQKKyAgICAgICAgICAgICAgICAvLyByZWplY3RlZCBieSB0aGUgUHJvbWlzZXMgcnVudGltZS4g
U2luY2Ugb25seSB3ZSBuZWVkIGlzIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlLCBpbnN0ZWFkIG9m
IHdhaXRpbmcKKyAgICAgICAgICAgICAgICAvLyB0aGUgUmVzb2x2ZURlcGVuZGVuY2llcyBmb3Ig
dGhpcyBtb2R1bGUsIHdlIGp1c3Qgd2FpdCBJbnN0YW50aWF0ZSBmb3IgdGhpcy4KICAgICAgICAg
ICAgICAgICBpZiAoZGVwRW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykgewotICAgICAgICAgICAg
ICAgICAgICBwYWlyLnZhbHVlID0gZGVwRW50cnkubW9kdWxlOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZGVwRW50cnk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBFbnRyeS5p
bnN0YW50aWF0ZS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2ll
cyhkZXBLZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgIHBh
aXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGUgcmVzdWx0IHByb21pc2Ugb2YgdGhlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCBzaG91bGQgYmUg
ZnVsZmlsbGVkIHdpdGgKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdHJ5IGVudHJ5
LgogICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRl
ci9wdWxsLzY2Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIH0pOwpAQCAtMzk2LDYgKzQwNSw5MCBAQCBmdW5jdGlvbiByZXF1ZXN0SW5z
dGFudGlhdGVBbGwoa2V5KQogICAgIHJldHVybiB0aGlzLnJlcXVlc3RSZXNvbHZlRGVwZW5kZW5j
aWVzKGtleSk7CiB9CiAKK2Z1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSkKK3sKKyAgICAvLyBodHRw
czovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWxpbmsKKworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOworICAg
IGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBA
bmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAgICAgIGRlZmVycmVk
LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgZW50cnkubW9kdWxlKTsKKyAgICAgICAgcmV0dXJu
IGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAg
IHJldHVybiB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpLnRoZW4oZnVuY3Rpb24gKGVu
dHJ5KSB7CisgICAgICAgIGxvYWRlci5saW5rKGVudHJ5KTsKKyAgICAgICAgcmV0dXJuIGVudHJ5
OworICAgIH0pOworfQorCitmdW5jdGlvbiByZXF1ZXN0UmVhZHkoa2V5KQoreworICAgIC8vIGh0
dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtcmVhZHkKKworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHJldHVybiB0aGlzLnJlcXVl
c3RMaW5rKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgbG9hZGVyLm1vZHVs
ZUV2YWx1YXRpb24oZW50cnkubW9kdWxlKTsKKyAgICB9KTsKK30KKworLy8gTGlua2luZyBzZW1h
bnRpY3MuCisKK2Z1bmN0aW9uIGxpbmsoZW50cnkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8jbGluaworCisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gRklY
TUU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBvcHRpb25hbEluc3Rh
bmNlLgorICAgIC8vIFNvIExpbmsncyBzdGVwIDMgaXMgc2tpcHBlZC4KKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcxCisKKyAgICBpZiAoZW50cnku
c3RhdGUgPT09IHRoaXMuUmVhZHkpCisgICAgICAgIHJldHVybjsKKyAgICBlbnRyeS5zdGF0ZSA9
IHRoaXMuUmVhZHk7CisKKyAgICAvLyBGSVhNRTogU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSAi
ZGVwZW5kZW5jaWVzIiBmaWVsZCwKKyAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1bGVEZWNsYXJhdGlv
bkluc3RhbnRpYXRpb24gd2l0aCB0aGUgY29ycmVjdCBvcmRlcgorICAgIC8vIHdpdGhvdXQgY29u
c3RydWN0aW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGJ5IGNhbGxpbmcgZGVwZW5kZW5jeUdyYXBo
LgorICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7CisgICAgZm9yICh2
YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgcGFpciA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgdGhpcy5saW5r
KHBhaXIudmFsdWUucmVnaXN0cnlFbnRyeSk7CisgICAgfQorCisgICAgdGhpcy5tb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlKTsKK30KKworLy8gTW9kdWxlIHNlbWFu
dGljcy4KKworZnVuY3Rpb24gbW9kdWxlRXZhbHVhdGlvbihtb2R1bGVSZWNvcmQpCit7CisgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZWV2YWx1YXRpb24KKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChtb2R1bGVSZWNv
cmQuZXZhbHVhdGVkKQorICAgICAgICByZXR1cm47CisgICAgbW9kdWxlUmVjb3JkLmV2YWx1YXRl
ZCA9IHRydWU7CisKKyAgICB2YXIgZW50cnkgPSBtb2R1bGVSZWNvcmQucmVnaXN0cnlFbnRyeTsK
KworICAgIC8vIFRoZSBjb250ZW50cyBvZiB0aGUgW1tSZXF1ZXN0ZWRNb2R1bGVzXV0gaXMgY2xv
bmVkIGludG8gZW50cnkuZGVwZW5kZW5jaWVzLgorICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRy
eS5kZXBlbmRlbmNpZXM7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2ll
cy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcGFpciA9IGRlcGVuZGVu
Y2llc1tpXTsKKyAgICAgICAgdmFyIHJlcXVpcmVkTW9kdWxlUmVjb3JkID0gcGFpci52YWx1ZTsK
KyAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKHJlcXVpcmVkTW9kdWxlUmVjb3JkKTsKKyAg
ICB9CisgICAgdGhpcy5ldmFsdWF0ZShtb2R1bGVSZWNvcmQpOworfQorCiBmdW5jdGlvbiBsb2Fk
TW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKQEAgLTQw
NiwxMSArNDk5LDcgQEAgZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCByZWZlcnJlcikK
ICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUgaWRlbnRp
ZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgogICAgIC8vIEZvciBleGFtcGxlLCB0YWtl
IHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4KICAgICBy
ZXR1cm4gdGhpcy5yZXNvbHZlKG1vZHVsZU5hbWUsIHJlZmVycmVyKS50aGVuKGZ1bmN0aW9uIChr
ZXkpIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdywgd2UgZG9uJ3QgaW1wbGVtZW50IHRoZSBsaW5r
aW5nIHBoYXNlIHlldC4KLSAgICAgICAgLy8gU28gaGVyZSwgd2UganVzdCBjYWxsIHJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCB0byBvbmx5IHBlcmZvcm0gdGhlIG1vZHVsZSBsb2FkaW5nLgotICAgICAg
ICAvLyBBdCBsYXN0LCBpdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1ZXN0UmVhZHkuCi0g
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNzIK
LSAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KTsKKyAgICAg
ICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVhZHkoa2V5KTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDRl
NWE5NmMzOGVkODYyNzc0NDJjYTI2MTljNWM4Y2FjMjljZTgyYWEuLjAyMGVjMjQ4OWVmZTNhMzMy
OTg1YjcwOTEwZGVjY2Y3OGQ0OWE5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE1Nyw2ICsxNTcsNyBAQAogICAgICAgICAi
Ynl0ZWNvZGVzIiA6IFsKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X3Byb2dyYW1fcHJv
bG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9ldmFsX3Byb2xvZ3VlIiB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUi
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9s
b2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjayIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZDAzMWVhOTEyZmNlN2U1NDE2Zjc2ZDRjNjY2M2IzMmUx
Mjc4NjRhMy4uYTI2NWUxZDhmMjMzYWQ1ZjYzYzkwNDcxNWU1Zjc0ODdmODg3ZjEzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTg3LDYgKzg3
LDggQEAgQ1N0cmluZyBDb2RlQmxvY2s6OmluZmVycmVkTmFtZSgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAiPGV2YWw+IjsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmluZmVycmVkTmFt
ZSgpLnV0ZjgoKTsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAgICAgIHJldHVybiAiPG1vZHVs
ZT4iOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIHJldHVybiBDU3Ry
aW5nKCIiLCAwKTsKQEAgLTMwNDQsNiArMzA0NiwxMSBAQCBDb2RlQmxvY2sqIFByb2dyYW1Db2Rl
QmxvY2s6OnJlcGxhY2VtZW50KCkKICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKIH0KIAorQ29kZUJsb2NrKiBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCit7CisgICAgcmV0dXJuIGpzQ2FzdDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7
Cit9CisKIENvZGVCbG9jayogRXZhbENvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewogICAgIHJl
dHVybiBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9j
aygpOwpAQCAtMzA1OSw2ICszMDY2LDExIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIFByb2dyYW1D
b2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkKICAgICByZXR1cm4gREZHOjpwcm9n
cmFtQ2FwYWJpbGl0eUxldmVsKHRoaXMpOwogfQogCitERkc6OkNhcGFiaWxpdHlMZXZlbCBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCit7CisgICAgcmV0
dXJuIERGRzo6cHJvZ3JhbUNhcGFiaWxpdHlMZXZlbCh0aGlzKTsKK30KKwogREZHOjpDYXBhYmls
aXR5TGV2ZWwgRXZhbENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogewogICAg
IHJldHVybiBERkc6OmV2YWxDYXBhYmlsaXR5TGV2ZWwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggMzgxODgwZDYzZWRhMjY1NzBhNTdiM2Ex
MzZjNWE4Yjg1OGY4NjMzMy4uNThhNjMwMmM4NTg5NzQ4MTM5Y2JmZjMzOTFmNzRiMzg2Y2UwZjFh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTA5
MiwxMCArMTA5MiwyOSBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENv
ZGVCbG9jayB7CiAjZW5kaWYKIH07CiAKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgOiBw
dWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKK3B1YmxpYzoKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCisg
ICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgewor
ICAgIH0KKworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+
IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAg
IDogR2xvYmFsQ29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNj
b3BlLCBzb3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgIHsKKyAg
ICB9CisKKyNpZiBFTkFCTEUoSklUKQorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQ29kZUJsb2Nr
KiByZXBsYWNlbWVudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwogY2xh
c3MgRXZhbENvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogcHVibGljOgogICAg
IEV2YWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikK
LSAgICA6IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAgICAgICA6
IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAgICB9CiAg
ICAgICAgIApAQCAtMTEyMCw3ICsxMTM5LDcgQEAgY2xhc3MgRXZhbENvZGVCbG9jayA6IHB1Ymxp
YyBHbG9iYWxDb2RlQmxvY2sgewogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgOiBwdWJsaWMgQ29k
ZUJsb2NrIHsKIHB1YmxpYzoKICAgICBGdW5jdGlvbkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsIEZ1bmN0aW9uQ29kZUJsb2NrJiBvdGhlcikKLSAgICA6IENvZGVCbG9jayhDb3B5UGFyc2Vk
QmxvY2ssIG90aGVyKQorICAgICAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVy
KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5
cGUuY3BwCmluZGV4IDhiMmNhZDU2YWI2OGFmMTJiMzJiZjI5Y2Q4NDBhYzBhYTcxODNkNDguLjBj
NzA0M2RmYTNlYWZmZTlmOTQ2YWRkOTE3OTNmZTYyNTdhYWU0MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcApAQCAtNDIsNiArNDIsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2RlVHlwZSBjb2RlVHlwZSkKICAg
ICBjYXNlIEpTQzo6RnVuY3Rpb25Db2RlOgogICAgICAgICBvdXQucHJpbnQoIkZ1bmN0aW9uIik7
CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6TW9kdWxlQ29kZToKKyAgICAgICAgb3V0
LnByaW50KCJNb2R1bGUiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IENSQVNIKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVUeXBlLmgKaW5kZXggYjhlMTA3ZGNmNmI2NzBjZDgyODNlYmZhNTM1MWY3YzYzNDJmMDIz
Yy4uOTk0MWQ1MTRjZGQwYzVmZmUzMGYxYTg4NGYzYmE1NGM2ZjAwZjg5MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWVudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVu
Y3Rpb25Db2RlIH07CitlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0
aW9uQ29kZSwgTW9kdWxlQ29kZSB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5k
ZXggNTc0YjFlNDgyMzg5OGIzODAxNGQ1MTgyOWVhYjdmNzEzMDlkYmIwYS4uNDYwOTVkODRiY2Nh
NjA2NzVmZWZkZTdmNDAwMjc1MmRkOWFlYjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00Nyw2ICs0Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkQ29kZUJsb2NrOjpzX2lu
Zm8gPSB7ICJVbmxpbmtlZENvZGVCbG9jayIsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5s
aW5rZWRDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRHbG9iYWxDb2RlQmxv
Y2s6OnNfaW5mbyA9IHsgIlVubGlua2VkR2xvYmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEdsb2JhbENvZGVCbG9jaykgfTsKIGNvbnN0
IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKSB9OworY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRF
dmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsK
IGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCkBAIC04OSw3ICs5MCw2IEBA
IHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICBVbmxpbmtlZENvZGVCbG9jayogdGhpc09iamVjdCA9IGpz
Q2FzdDxVbmxpbmtlZENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJv
bFRhYmxlKTsKICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRy
ID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRlY2xzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3Qt
Pm1fZnVuY3Rpb25EZWNscy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHB0cik7CiAgICAgZm9yIChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0ZXJh
dG9yIHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBycy5iZWdpbigpLCBlbmQgPSB0aGlz
T2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQpAQCAtMjky
LDYgKzI5MiwxNCBAQCB2b2lkIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKK30KKwogVW5saW5rZWRDb2RlQmxvY2s6On5Vbmxp
bmtlZENvZGVCbG9jaygpCiB7CiB9CkBAIC0zMDEsNiArMzA5LDExIEBAIHZvaWQgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBqc0Nhc3Q8VW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soKTsK
IH0KIAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQoreworICAgIGpzQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihj
ZWxsKS0+flVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOworfQorCiB2b2lkIFVubGlu
a2VkRXZhbENvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CiAgICAganNDYXN0PFVu
bGlua2VkRXZhbENvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRFdmFsQ29kZUJsb2NrKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CmluZGV4IDMyMmQyNjE5OWY3OTdjMTAzODFkZDQ1ODkzYmQ1MzUzZmYxYjZiNDYuLjg4Y2UyMzEz
Y2FjYTA4ODJkODZjMWYyODc3MGEzYTA5ODcwNmI2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zNjAsOSArMzYwLDYg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICAgICAgaWYgKGNvZGVUeXBlKCkgPT0gR2xvYmFsQ29kZSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5bWJvbFRhYmxl
OjpjcmVhdGUodm0pKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC00MTIsOCArNDA5LDYgQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBGdW5jdGlvbkV4cHJl
c3Npb25WZWN0b3IgbV9mdW5jdGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rv
ciBtX2Z1bmN0aW9uRXhwcnM7CiAKLSAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3lt
Ym9sVGFibGU7Ci0KICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnM7CiAKICNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCkBAIC01MTQsNiArNTA5LDQ5
IEBAIGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtl
ZEdsb2JhbENvZGVCbG9jayB7CiAgICAgREVDTEFSRV9JTkZPOwogfTsKIAorY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29k
ZUJsb2NrIHsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBzdGF0
aWMgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBF
eGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICB7CisgICAgICAgIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLT5oZWFwKSkgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKHZtLCB2bS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJl
LmdldCgpLCBpbmZvKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7Cisg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFVu
bGlua2VkR2xvYmFsQ29kZUJsb2NrIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFs
OworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisgICAgICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBNb2R1bGVDb2RlLCBpbmZvKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5bWJvbFRhYmxl
OjpjcmVhdGUodm0pKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1f
c3ltYm9sVGFibGU7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworfTsK
KwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xv
YmFsQ29kZUJsb2NrIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggMTJiOTc5ODhhZjI1ZDhlMjIyODVhODUyNTkzNWNjNjMzMDI1NGE5
Ni4uNmY2MWJkOGJkMWE4NjYxN2I4NGYxMzQ2OTdhZDIzYmE3ZmE2NzI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTcwLDcgKzcwLDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKICAgICBpZiAobV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzKQogICAgICAgICBp
bml0aWFsaXplVmFyaWFibGUodmFyaWFibGUocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyksIG1f
YXJndW1lbnRzUmVnaXN0ZXIpOwogCi0gICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwg
dHJ1ZSk7CisgICAgLy8gRm9yIE1vZHVsZUNvZGUsIHdlIGFscmVhZHkgaW5zdGFudGlhdGVkIHRo
ZSBlbnZpcm9ubWVudCBmb3IgdGhlIGxleGljYWwgdmFyaWFibGVzLgorICAgIGlmIChtX2NvZGVU
eXBlICE9IE1vZHVsZUNvZGUpCisgICAgICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUs
IHRydWUpOwogCiAgICAgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9IG5ld1Rl
bXBvcmFyeSgpOwpAQCAtNTM0LDYgKzUzNiwxMzAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QK
ICAgICBtX1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIGZhbHNlKSk7CiB9CiAKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhP
cHRpb25zOjpmb3JjZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgZGVidWdnZXJNb2Rl
ID09IERlYnVnZ2VyT24pCisgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MoT3B0aW9uczo6
Zm9yY2VQcm9maWxlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IHByb2ZpbGVyTW9kZSA9PSBQcm9m
aWxlck9uKQorICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCisgICAgLCBtX2Nv
ZGVCbG9jayh2bSwgY29kZUJsb2NrKQorICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0
aGlzQXJndW1lbnRPZmZzZXQoKSkKKyAgICAsIG1fY29kZVR5cGUoTW9kdWxlQ29kZSkKKyAgICAs
IG1fdm0oJnZtKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMtPnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnMpCisgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRy
OworCisgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgIG1fc2hvdWxkRW1pdERl
YnVnSG9va3MgPSBmYWxzZTsKKworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGNvZGVC
bG9jay0+c3ltYm9sVGFibGUoKTsKKyAgICBzeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2
YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CisgICAgc3ltYm9sVGFibGUtPnNldFNjb3BlVHlwZShT
eW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOworCisgICAgLy8gRm9yIHRoZSBl
eHBvcnRlZCB2YXJpYWJsZXMsIHdlIGFscmVhZHkgcmVnaXN0ZXIgdGhlbSB0byB0aGUgc3RvcmVk
IHN5bWJvbCB0YWJsZS4KKyAgICAvLyBFdmVuIGlmIHRoZSB1bmxpbmtlZC9saW5rZWQgY29kZSBi
bG9jayBpcyByZW1vdmVkIGFuZCBzeW1ib2wgdGFibGUgaXMgcmVjcmVhdGVkLAorICAgIC8vIHRo
aXMgZW5zdXJlcyB0aGUgZ2VuZXJhdGVkIHN5bWJvbCB0YWJsZSBpcyBhbHdheXMgdGhlIHNhbWUu
CisKKyAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7CisgICAgYm9v
bCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8
IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKKyAgICBpZiAoc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhp
bmdzKQorICAgICAgICBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkubWFya0Fs
bFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKKworICAgIGF1dG8gY2FwdHVyZXMgPSBbJl0gKFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpIC0+IGJvb2wgeworICAgICAgICBpZiAoIXNob3VsZENhcHR1cmVT
b21lT2ZUaGVUaGluZ3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBtb2R1bGVQcm9ncmFtTm9kZS0+Y2FwdHVyZXModWlkKTsKKyAgICB9OworICAgIGF1dG8gbG9v
a1VwVmFyS2luZCA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5JiBlbnRyeSkgLT4gVmFyS2luZCB7CisgICAgICAgIGlmIChlbnRyeS5p
c0V4cG9ydGVkKCkpCisgICAgICAgICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7CisgICAgICAg
IGlmIChlbnRyeS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICByZXR1cm4gVmFy
S2luZDo6U2NvcGU7CisgICAgICAgIGlmIChlbnRyeS5pc0NhcHR1cmVkKCkpCisgICAgICAgICAg
ICByZXR1cm4gVmFyS2luZDo6U2NvcGU7CisgICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8g
VmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKKyAgICB9OworCisgICAgZW1pdE9wY29k
ZShvcF9lbnRlcik7CisKKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCisgICAgbV9jYWxs
ZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOworCisgICAgbV9jb2RlQmxvY2st
PnNldE51bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKKworICAg
IC8vIE5vdyBkZWNsYXJlIGFsbCB2YXJpYWJsZXMuCisgICAgZm9yIChGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogZnVuY3Rpb24gOiBtb2R1bGVQcm9ncmFtTm9kZS0+ZnVuY3Rpb25TdGFjaygpKQorICAg
ICAgICBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rp
b24sIE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUpKTsKKworICAgIGZvciAoYXV0byYgZW50cnkgOiBt
b2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkpIHsKKyAgICAgICAgQVNTRVJUKCFl
bnRyeS52YWx1ZS5pc0xldCgpICYmICFlbnRyeS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICBp
ZiAoIWVudHJ5LnZhbHVlLmlzVmFyKCkpIC8vIFRoaXMgaXMgZWl0aGVyIGEgcGFyYW1ldGVyIG9y
IGNhbGxlZS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZW50cnkudmFsdWUu
aXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpIC8vIFRo
ZXNlIGFyZSBtYW5hZ2VkIGluIHRoZSBvdGhlciBwaGFzZS4KKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAvLyBWYXJpYWJsZXMgbmFtZWQgImFyZ3VtZW50cyIgYXJlIG5ldmVyIGNvbnN0
LgorICAgICAgICBjcmVhdGVWYXJpYWJsZShJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGVudHJ5
LmtleS5nZXQoKSksIGxvb2tVcFZhcktpbmQoZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSks
IHN5bWJvbFRhYmxlLCBJZ25vcmVFeGlzdGluZyk7CisgICAgfQorCisgICAgVmFyaWFibGVFbnZp
cm9ubWVudCYgZW52aXJvbm1lbnQgPSBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxl
cygpOworCisgICAgeworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xU
YWJsZS0+bV9sb2NrKTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudmlyb25tZW50KSB7
CisgICAgICAgICAgICBBU1NFUlQoZW50cnkudmFsdWUuaXNMZXQoKSB8fCBlbnRyeS52YWx1ZS5p
c0NvbnN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS52YWx1ZS5pc1ZhcigpKTsKKyAg
ICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgc3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxl
LT5nZXQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKHN5bWJv
bFRhYmxlRW50cnkuaXNOdWxsKCkpOworCisgICAgICAgICAgICAvLyBJbXBvcnRlZCB2YXJpYWJs
ZXMgYXJlIGhhbmRsZWQgaW5zaWRlIHRoZSB0b3AtbW9zdCBtb2R1bGUgZW52aXJvbm1lbnQuCisg
ICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1ZS5p
c0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZhcktpbmQoZW50cnkua2V5LmdldCgpLCBl
bnRyeS52YWx1ZSk7CisgICAgICAgICAgICBWYXJPZmZzZXQgdmFyT2Zmc2V0OworICAgICAgICAg
ICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpCisgICAgICAgICAgICAgICAgdmFyT2Zm
c2V0ID0gVmFyT2Zmc2V0KHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0g
VmFyS2luZDo6U3RhY2spOworICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsID0gbmV3
QmxvY2tTY29wZVZhcmlhYmxlKCk7CisgICAgICAgICAgICAgICAgbG9jYWwtPnJlZigpOworICAg
ICAgICAgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldChsb2NhbC0+dmlydHVhbFJlZ2lzdGVy
KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0Vu
dHJ5KHZhck9mZnNldCwgZW50cnkudmFsdWUuaXNDb25zdCgpID8gUmVhZE9ubHkgOiAwKTsKKyAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCksIG5ld0Vu
dHJ5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9s
VGFibGUgPSBudWxscHRyOworICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgY29u
c3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUoc3ltYm9sVGFibGUpOworICAgIGVs
c2UKKyAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUoc3ltYm9s
VGFibGUtPmNsb25lU2NvcGVQYXJ0KCptX3ZtKSk7CisKKyAgICBtX1REWlN0YWNrLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihlbnZpcm9ubWVudCwgdHJ1ZSkpOworICAgIG1fc3ltYm9sVGFibGVTdGFj
ay5hcHBlbmQoU3ltYm9sVGFibGVTdGFja0VudHJ5IHsgU3Ryb25nPFN5bWJvbFRhYmxlPigqbV92
bSwgc3ltYm9sVGFibGUpLCBtX3Njb3BlUmVnaXN0ZXIsIGZhbHNlLCBjb25zdGFudFN5bWJvbFRh
YmxlLT5pbmRleCgpIH0pOworCisgICAgLy8gUHJlZmlsbCBzdGFjayB2YXJpYWJsZXMgd2l0aCB0
aGUgVERaIGVtcHR5IHZhbHVlLgorICAgIC8vIFNjb3BlIHZhcmlhYmxlcyB3aWxsIGJlIGluaXRp
YWxpemVkIHRvIHRoZSBURFogZW1wdHkgdmFsdWUgd2hlbiBKU0xleGljYWxFbnZpcm9ubWVudCBp
cyBhbGxvY2F0ZWQuCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudmlyb25tZW50KSB7CisgICAg
ICAgIC8vIEltcG9ydGVkIHZhcmlhYmxlcyBhcmUgYWxyZWFkeSBpbml0aWFsaXplZC4KKyAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRl
ZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgU3ltYm9sVGFi
bGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0gc3ltYm9sVGFibGUtPmdldChlbnRyeS5rZXkuZ2V0
KCkpOworICAgICAgICBBU1NFUlQoIXN5bWJvbFRhYmxlRW50cnkuaXNOdWxsKCkpOworICAgICAg
ICBWYXJPZmZzZXQgb2Zmc2V0ID0gc3ltYm9sVGFibGVFbnRyeS52YXJPZmZzZXQoKTsKKyAgICAg
ICAgaWYgKG9mZnNldC5pc1Njb3BlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
QVNTRVJUKG9mZnNldC5pc1N0YWNrKCkpOworICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJnJl
Z2lzdGVyRm9yKG9mZnNldC5zdGFja09mZnNldCgpKSk7CisgICAgfQorfQorCiBCeXRlY29kZUdl
bmVyYXRvcjo6fkJ5dGVjb2RlR2VuZXJhdG9yKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkN2Yx
YjFmNzU0MzEwZWQ5N2MwMmM5ZjMzNGJhMTc2MzA0ZjhjYmEyLi5mM2Q0YmUzOGUzNzhkZGNhYzMy
Y2NhMjFiOWMxMjVkYjljZGFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0yNjgsNiArMjY4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5v
ZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRv
cihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBEZWJ1Z2dl
ck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
KTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJh
dG9yKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDQxYWU3ZmUxZGQyZjU3MzQ4NTRmOTUwMDRhYmNl
MDI0YjY0Mjc0MTkuLjc5NjNkN2QzNzZkNDE1YTMzMGRjMWI4ZGM0ZmQ5ODA5ZjFjZmRjMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKQEAgLTI4ODQsOCArMjg4NCwxNyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi12b2lkIE1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBz
dGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAg
IGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsK
KyAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkp
OworCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RM
aW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzA0
NiwyNCArMzA1NSwzMCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiB2b2lkIEltcG9ydERl
Y2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCopCiB7CisgICAgLy8gRG8gbm90aGluZyBpbiB0aGUgcnVudGltZS4KIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGlu
ZyBpbiB0aGUgcnVudGltZS4KIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4
cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKQordm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
eworICAgIEFTU0VSVChtX2RlY2xhcmF0aW9uKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0
LCBtX2RlY2xhcmF0aW9uKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4
cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKikKK3ZvaWQgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Cisg
ICAgQVNTRVJUKG1fZGVjbGFyYXRpb24pOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
ZGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhw
b3J0TmFtZWREZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYzM0YTY2
NWJlMzBkYjI5ZTBkYWRlM2M3ZDhhNTNhNDdhMGY1ZjcyLi43ZGY5MGMzODZlNjg5MjczZmE1ZTg4
YzY4NTRhNTIwZDU0OTY5YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTk3LDYgKzk3LDcgQEAgU3RyaW5nIFN0YWNrRnJh
bWU6OmZyaWVuZGx5U291cmNlVVJMKCkgY29uc3QKICAgICAKICAgICBzd2l0Y2ggKGNvZGVUeXBl
KSB7CiAgICAgY2FzZSBTdGFja0ZyYW1lRXZhbENvZGU6CisgICAgY2FzZSBTdGFja0ZyYW1lTW9k
dWxlQ29kZToKICAgICBjYXNlIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU6CiAgICAgY2FzZSBTdGFj
a0ZyYW1lR2xvYmFsQ29kZToKICAgICAgICAgaWYgKCFzb3VyY2VVUkwuaXNFbXB0eSgpKQpAQCAt
MTE4LDYgKzExOSw5IEBAIFN0cmluZyBTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9uTmFtZShD
YWxsRnJhbWUqIGNhbGxGcmFtZSkgY29uc3QKICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToK
ICAgICAgICAgdHJhY2VMaW5lID0gImV2YWwgY29kZSI7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6CisgICAgICAgIHRyYWNlTGluZSA9ICJtb2R1bGUgY29k
ZSI7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RhY2tGcmFtZU5hdGl2ZUNvZGU6CiAgICAg
ICAgIGlmIChjYWxsZWUpCiAgICAgICAgICAgICB0cmFjZUxpbmUgPSBnZXRDYWxjdWxhdGVkRGlz
cGxheU5hbWUoY2FsbEZyYW1lLCBzdGFja0ZyYW1lQ2FsbGVlKS5pbXBsKCk7CkBAIC00NTEsNiAr
NDU1LDggQEAgc3RhdGljIFN0YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQ29kZVR5cGUo
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKQogICAgIHN3aXRjaCAodmlzaXRvci0+Y29kZVR5cGUoKSkg
ewogICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6RXZhbDoKICAgICAgICAgcmV0dXJuIFN0
YWNrRnJhbWVFdmFsQ29kZTsKKyAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6Ok1vZHVsZToK
KyAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVNb2R1bGVDb2RlOwogICAgIGNhc2UgU3RhY2tWaXNp
dG9yOjpGcmFtZTo6RnVuY3Rpb246CiAgICAgICAgIHJldHVybiBTdGFja0ZyYW1lRnVuY3Rpb25D
b2RlOwogICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6R2xvYmFsOgpAQCAtMTE3Niw2ICsx
MTgyLDU0IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2
YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4ocmVzdWx0KTsKIH0KIAorSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU2NvcGUq
IHNjb3BlKQoreworICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAgICBTYW1wbGluZ1Njb3Bl
IHNhbXBsaW5nU2NvcGUodGhpcyk7CisKKyAgICBBU1NFUlQoc2NvcGUtPnZtKCkgPT0gJmNhbGxG
cmFtZS0+dm0oKSk7CisgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CisgICAgQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwg
c2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIXZtLmlzU2FmZVRvUmVjdXJzZSgpKQor
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUpKTsKKworICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uKGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsKTsK
KyAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQorICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxl
RXJyb3IpKTsKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRh
YmxlLT5jb2RlQmxvY2soKTsKKworICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53
YXRjaGRvZy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworCisgICAgQVNTRVJUKGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgorCisg
ICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KKyAg
ICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
bW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKKyAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmly
b25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0Nh
bGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNy
ZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSksIGpzVW5kZWZpbmVkKCksIDEp
OworCisgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxl
cigpKQorICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxl
LT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0
Q29sdW1uKCkpOworCisgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKKyAgICBKU1ZhbHVlIHJlc3Vs
dDsKKyAgICB7CisgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1f
c2FtcGxlci5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJ
VENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgfQorCisgICAgaWYg
KExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQorICAgICAg
ICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgp
LCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisK
KyAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOworfQorCiBORVZFUl9JTkxJTkUgdm9p
ZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRl
YnVnSG9va0lEKQogewogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCAxMzJjOTVkMTdmNGUxMDliYTM3YmJjYjAx
ODcyNzMyYjJmOTUxMTZmLi44MzY2YTExZDEzYzU4MmUxOWU4MmUzZGFmMDBhODM4YjM1ZjFhMjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CisgICAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xh
c3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTYW1wbGluZ1Rvb2w7
CkBAIC03Niw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gU3RhY2tGcmFtZUNv
ZGVUeXBlIHsKICAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCiAgICAgICAgIFN0YWNrRnJh
bWVFdmFsQ29kZSwKKyAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCiAgICAgICAgIFN0YWNr
RnJhbWVGdW5jdGlvbkNvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCiAgICAgfTsK
QEAgLTIxMiw2ICsyMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBleGVj
dXRlQ2FsbChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBD
YWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAgICAgICAgIEpT
T2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1Zh
bHVlIG5ld1RhcmdldCk7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSos
IENhbGxGcmFtZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKik7CisgICAgICAgIEpTVmFs
dWUgZXhlY3V0ZShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTU2NvcGUq
KTsKIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlv
biomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50
JiBhcmdjKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IGExZTlmMTJiMzE2MTA5Y2QwYzUwODE1YjE1ZTEw
N2NkZjU0NDY4MzYuLjg3YmVjZDUyZTRiMWIyODE2NDljMjdlM2ZiZWE4MjRmMzBlNGE0NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwCkBAIC0xODEsNiArMTgxLDggQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3Rh
Y2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogICAgIHN3aXRjaCAoY29kZUJsb2Nr
KCktPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICByZXR1cm4gQ29k
ZVR5cGU6OkV2YWw7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICByZXR1cm4gQ29kZVR5
cGU6Ok1vZHVsZTsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIENvZGVU
eXBlOjpGdW5jdGlvbjsKICAgICBjYXNlIEdsb2JhbENvZGU6CkBAIC0xOTksNiArMjAxLDkgQEAg
U3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpCiAgICAgY2FzZSBDb2Rl
VHlwZTo6RXZhbDoKICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJldmFsIGNvZGUi
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgorICAgICAgICB0
cmFjZUxpbmUgPSBBU0NJSUxpdGVyYWwoIm1vZHVsZSBjb2RlIik7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAg
ICAgIHRyYWNlTGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUoKSwgY2Fs
bGVlKS5pbXBsKCk7CkBAIC0yMTksNiArMjI0LDcgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJh
bWU6OnNvdXJjZVVSTCgpCiAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKCkpIHsKICAgICBjYXNlIENv
ZGVUeXBlOjpFdmFsOgorICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKICAgICBjYXNlIENvZGVU
eXBlOjpGdW5jdGlvbjoKICAgICBjYXNlIENvZGVUeXBlOjpHbG9iYWw6IHsKICAgICAgICAgU3Ry
aW5nIHNvdXJjZVVSTCA9IGNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlVVJM
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9y
LmgKaW5kZXggMDAzNmE3ODljNThlMTlhZTEzYjBkNGFiZmI3NTU4M2U5YmI0NjczNC4uNDFiZmM3
MDg4MjBlY2NmY2FjNzM1YjM5YjQyMjQ3MTNlYmU1MmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBj
bGFzcyBTdGFja1Zpc2l0b3IgewogICAgICAgICAgICAgR2xvYmFsLAogICAgICAgICAgICAgRXZh
bCwKICAgICAgICAgICAgIEZ1bmN0aW9uLAorICAgICAgICAgICAgTW9kdWxlLAogICAgICAgICAg
ICAgTmF0aXZlCiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBi
YmM4NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxLi44NGYzNmQ1NDBmM2NiYWEx
YWVjYzU1M2FkZjhjNDYxNGI3YmRlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC00ODYsNiArNDg2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShK
SVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgCiAgICAgc3dpdGNoIChtX2NvZGVCbG9j
ay0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICBjYXNlIE1vZHVsZUNv
ZGU6CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3
YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBlOTI2ZjUyZGM3NmQ5ZWRlMmYwZTNhNWIzZGMy
NmIzMzZhOTJmODVkLi4yYTU4NDM3MDBjMjE1NjVhMWMwMmViY2IwOTA0ZTRjMzZlZjlhOGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTMyLDggKzEz
Miw4IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVCht
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA2NCk7CiAjZW5kaWYKICAgICBBU1NFUlQo
U3RyaW5nVHlwZSA9PSA2KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxOCk7Ci0gICAgQVNT
RVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAxOSk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMjAp
OworICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjEpOwogICAgIEFTU0VSVChNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
PT0gMik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CkBA
IC0xNDEsNiArMTQxLDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAg
ICAgQVNTRVJUKEdsb2JhbENvZGUgPT0gMCk7CiAgICAgQVNTRVJUKEV2YWxDb2RlID09IDEpOwog
ICAgIEFTU0VSVChGdW5jdGlvbkNvZGUgPT0gMik7CisgICAgQVNTRVJUKE1vZHVsZUNvZGUgPT0g
Myk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5ID09IDAsICJMTEludCBhc3N1
bWVzIEdsb2JhbFByb3BlcnR5IFJlc3VsdFR5cGUgaXMgPT0gMCIpOwogICAgIHN0YXRpY19hc3Nl
cnQoR2xvYmFsVmFyID09IDEsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhciBSZXN1bHRUeXBlIGlz
ID09IDEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dC5jcHAKaW5kZXggOWQwMDEwNmI5YTgyNzZmNDg0MjBmNmI1NDZjMzJkNTkzMGEzNmI2OC4uYTZj
M2QyN2UyODBhMDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTk3LDEyICs5NywzMCBA
QCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAodm0uY2FuVXNlSklUKCkp
IHsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dl
bmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisK
KyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVMTEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKK30KKwogdm9pZCBz
ZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgc3dpdGNo
IChjb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6CiAgICAgICAg
IHNldFByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCh2
bSwgY29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXZhbENvZGU6CiAgICAg
ICAgIHNldEV2YWxFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAppbmRleCA4YWI5NmIz
MDQ3NWZkNTU0ZGVmOGIzMjY2MjQ5NjYzMmVhZjk2ZDlhLi5hZjY4ODRlNWVkZTdiZWJlMDRmMzdi
M2YwMDA5MWVlMTZmOTUxMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X3Byb2dyYW1fcHJv
bG9ndWUpLCAicHJvZ3JhbSIpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9tb2R1bGVf
cHJvZ3JhbV9wcm9sb2d1ZSksICJtb2R1bGVfcHJvZ3JhbSIpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBMTEludAogCiAjZWxzZSAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAppbmRleCAwZDFiZTZiZGFlYWRmNzk0ODdjZTkwNjY4MjY0Njg1MTg4
YThiZDEyLi45NWIwZjQ0ODQ4YmNjNTI5ZDE1MDNlMjg5YjkzZWZlMzcwNWM4MzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNDYsNiArNDYsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50
cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJvZ3Jh
bUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCA1YWQ4MzQ2NWNkMWE0ZThmNGU5NjRhNjdlZDA4YTE1N2U3ZmEzNzVhLi5l
MWMwMGY5ZDIwMjcyMGJhMjhmY2ZhYjQ1MzE1MDk0NTVlNTAzNTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjEs
OCArMTYxLDggQEAgY29uc3QgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMzAKIAogIyBUeXBl
IGNvbnN0YW50cy4KIGNvbnN0IFN0cmluZ1R5cGUgPSA2Ci1jb25zdCBPYmplY3RUeXBlID0gMTgK
LWNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDE5Citjb25zdCBPYmplY3RUeXBlID0gMjAKK2NvbnN0
IEZpbmFsT2JqZWN0VHlwZSA9IDIxCiAKICMgVHlwZSBmbGFncyBjb25zdGFudHMuCiBjb25zdCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQpAQCAtMTc2LDYgKzE3Niw3IEBAIGNvbnN0IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAogY29uc3QgR2xvYmFsQ29kZSA9IDAK
IGNvbnN0IEV2YWxDb2RlID0gMQogY29uc3QgRnVuY3Rpb25Db2RlID0gMgorY29uc3QgTW9kdWxl
Q29kZSA9IDMKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUg
YXJndW1lbnQgY291bnQuCiBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldApAQCAtODg0LDYgKzg4NSwxMSBAQCBfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAg
ICBkaXNwYXRjaCgwKQogCiAKK19sbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBw
cm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNw
YXRjaCgwKQorCisKIF9sbGludF9ldmFsX3Byb2xvZ3VlOgogICAgIHByb2xvZ3VlKG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IDNkMTc3
Y2E3N2I4YjhkODhkODdiNGY0ZTg1Y2UzZDQ2ODM4YzQ0MWQuLjJmYTgxYWFjZmMxZjhmMmJkNzY0
MmYzODM5YjNiMTI2MDU4N2YyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC0zNiwxMSArMzYsOSBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIAotTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNs
YXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxl
cykKK01vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAgOiBtX3ZtKCZleGVjLT52bSgpKQot
ICAgICwgbV9tb2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShl
eGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0cnVj
dHVyZSgpLCBtb2R1bGVLZXkpKQotICAgICwgbV9kZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZh
cmlhYmxlcykKLSAgICAsIG1fbGV4aWNhbFZhcmlhYmxlcyhsZXhpY2FsVmFyaWFibGVzKQorICAg
ICwgbV9tb2R1bGVSZWNvcmQoZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVj
LT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVy
ZSgpLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFibGVzLCBsZXhpY2FsVmFy
aWFibGVzKSkKIHsKIH0KIApAQCAtMTQ0LDEwICsxNDIsMTAgQEAgSlNNb2R1bGVSZWNvcmQqIE1v
ZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9k
ZSkKICAgICAvLyAgICAgVGhpcyBleHBvcnRzIGFsbCB0aGUgbmFtZXMgZnJvbSB0aGUgc3BlY2lm
aWVkIGV4dGVybmFsIG1vZHVsZSBhcyB0aGUgY3VycmVudCBtb2R1bGUncyBuYW1lLgogICAgIC8v
CiAgICAgLy8gICAgIGV4cG9ydCAqIGZyb20gIm1vZCIKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX2RlY2xhcmVkVmFyaWFibGVzKQorICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1f
bW9kdWxlUmVjb3JkLT5kZWNsYXJlZFZhcmlhYmxlcygpKQogICAgICAgICBleHBvcnRWYXJpYWJs
ZShwYWlyLmtleSwgcGFpci52YWx1ZSk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X2xleGljYWxWYXJpYWJsZXMpCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVS
ZWNvcmQtPmxleGljYWxWYXJpYWJsZXMoKSkKICAgICAgICAgZXhwb3J0VmFyaWFibGUocGFpci5r
ZXksIHBhaXIudmFsdWUpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAy
MjhhNjlmZWU3NDczNjYyMGQ3ZjZkYTU3MWJiNmFjYWQ4NDZiNzA2Li43MDgzY2E5MDk5MThlZmQy
M2ViYTFhM2Q1YmI5YzNmNjU3MzM4ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Nb2R1bGVBbmFseXplci5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIFNvdXJjZUNvZGU7CiAKIGNsYXNzIE1v
ZHVsZUFuYWx5emVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVBbmFseXplcik7
CiBwdWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgTW9k
dWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJs
ZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpOwogCiAgICAg
SlNNb2R1bGVSZWNvcmQqIGFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmKTsKIApAQCAtNTQsOCAr
NTUsNiBAQCBjbGFzcyBNb2R1bGVBbmFseXplciB7CiAKICAgICBWTSogbV92bTsKICAgICBTdHJv
bmc8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOwotICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQgbV9kZWNsYXJlZFZhcmlhYmxlczsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fbGV4aWNh
bFZhcmlhYmxlczsKICAgICBJZGVudGlmaWVyQWxpYXNNYXAgbV9hbGlhc01hcDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzMjZiZmQyOTViZDU2MjQ1
OTkxMGVhZTg0MmU4YjA4YzE0YjJlY2E3Li45OTYxZDIxYmExYjMzMjI5Mzc4M2M1OGIxNTQ2OTZm
MDYwYTlkY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0y
MzE4LDcgKzIzMTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpJbXBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAgIH0KIAogICAgIHNl
bWFudGljRmFpbElmVHJ1ZShsb2NhbE5hbWVUb2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFn
LCAiQ2Fubm90IHVzZSBrZXl3b3JkIGFzIGltcG9ydGVkIGJpbmRpbmcgbmFtZSIpOwotICAgIERl
Y2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZShs
b2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgRGVjbGFyYXRpb25J
bXBvcnRUeXBlOjpJbXBvcnRlZCk7CisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0
aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpD
b25zdERlY2xhcmF0aW9uLCAoc3BlY2lmaWVyVHlwZSA9PSBJbXBvcnRTcGVjaWZpZXJUeXBlOjpO
YW1lc3BhY2VJbXBvcnQpID8gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZE5hbWVzcGFj
ZSA6IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpOwogICAgIGlmIChkZWNsYXJhdGlv
blJlc3VsdCAhPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQpIHsKICAgICAgICAgZmFpbElmVHJ1
ZUlmU3RyaWN0KGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRT
dHJpY3RNb2RlLCAiQ2Fubm90IGRlY2xhcmUgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lZCAiLCBs
b2NhbE5hbWUtPmltcGwoKSwgIiBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBpZiAoZGVjbGFy
YXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0
aW9uKQpAQCAtMjU1OSwxMCArMjU1OSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAg
ICAgICAgICAvLyBkb2VzIG5vdCBoYXZlIGVmZmVjdCBvbiB0aGUgY3VycmVudCBtb2R1bGUncyBz
Y29wZS4gQnV0LAogICAgICAgICAgICAgLy8gICBleHBvcnQgeyBBLCBCLCBDIGFzIEQgfQogICAg
ICAgICAgICAgLy8gd2lsbCByZWZlcmVuY2UgdGhlIGN1cnJlbnQgbW9kdWxlJ3MgYmluZGluZ3Mu
Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFtZSA6IG1heWJlTG9j
YWxOYW1lcykgewotICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShs
b2NhbE5hbWUsIG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmxvY2FsTmFtZSk7CisgICAg
ICAgICAgICBmb3IgKGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFtZSA6IG1heWJlTG9jYWxOYW1l
cykKICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhw
b3J0QmluZGluZygqbG9jYWxOYW1lKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oZXhwb3J0TG9j
YXRpb24sIHNwZWNpZmllckxpc3QsIG1vZHVsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggYzJlNmE2NTA0MDg5OTE1ZGMyODA1N2ZmZTAxZjA0ZWVhZGUwMWYx
NC4uZjY5N2JlMzM2YmI4MGM1MjUwNDI4NTZiOGMwODc1NTM3MzNhMTIxNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMDAsNiArMTAwLDcgQEAgZW51bSBjbGFzcyBE
ZWNsYXJhdGlvblR5cGUgewogCiBlbnVtIGNsYXNzIERlY2xhcmF0aW9uSW1wb3J0VHlwZSB7CiAg
ICAgSW1wb3J0ZWQsCisgICAgSW1wb3J0ZWROYW1lc3BhY2UsCiAgICAgTm90SW1wb3J0ZWQKIH07
CiAKQEAgLTMzNSw2ICszMzYsMTAgQEAgc3RydWN0IFNjb3BlIHsKIAogICAgICAgICBpZiAoaW1w
b3J0VHlwZSA9PSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKQogICAgICAgICAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVkKCk7CisgICAgICAgIGVsc2Ug
aWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZE5hbWVzcGFj
ZSkgeworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVk
KCk7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWRO
YW1lc3BhY2UoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNWVkMmE2YmRhOTI4MzhlMjk2NDgyZjY2YzA3ODVh
MzYxMWFlNjE1Yy4uNDVmMWJlYzgyNWYwYTA0N2I0MmEwZWIxNWEzMzgyZjU1NDYzNDJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzTGV0KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNM
ZXQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzRXhwb3J0ZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbXBvcnRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzSW1wb3J0ZWQ7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNJbXBvcnRlZE5hbWVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
SW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1
cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNDcsNiArNDgsNyBAQCBzdHJ1
Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
SXNMZXQoKSB7IG1fYml0cyB8PSBJc0xldDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJ
c0V4cG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNFeHBvcnRlZDsgfQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXRJc0ltcG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNJbXBvcnRlZDsgfQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCkgeyBtX2JpdHMgfD0gSXNJbXBv
cnRlZE5hbWVzcGFjZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7
IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtNTcsNyArNTksOCBAQCBzdHJ1Y3QgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5IHsKICAgICAgICAgSXNWYXIgPSAxIDw8IDIsCiAgICAgICAgIElzTGV0
ID0gMSA8PCAzLAogICAgICAgICBJc0V4cG9ydGVkID0gMSA8PCA0LAotICAgICAgICBJc0ltcG9y
dGVkID0gMSA8PCA1CisgICAgICAgIElzSW1wb3J0ZWQgPSAxIDw8IDUsCisgICAgICAgIElzSW1w
b3J0ZWROYW1lc3BhY2UgPSAxIDw8IDYKICAgICB9OwogICAgIHVpbnQ4X3QgbV9iaXRzIHsgMCB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4
IGFiNzBlYWJiOWUzYTJhMDQ1MGM2MjllNzA1NjY2ZjRkY2NhMDFlMjguLmQyZWZlY2Q4MjliMmM0
NDg1ZGYxMDRiN2ZlNDFjMmM3NjliZDhhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNjcsMTEgKzY3LDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ2FjaGVUeXBlcyB7IH07CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBl
czxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+IHsKICAgICB0eXBlZGVmIEpTQzo6UHJvZ3JhbU5v
ZGUgUm9vdE5vZGU7CiAgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNv
ZGVUeXBlID0gU291cmNlQ29kZUtleTo6UHJvZ3JhbVR5cGU7CisgICAgc3RhdGljIGNvbnN0IFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOwog
fTsKIAogdGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRFdmFsQ29kZUJsb2Nr
PiB7CiAgICAgdHlwZWRlZiBKU0M6OkV2YWxOb2RlIFJvb3ROb2RlOwogICAgIHN0YXRpYyBjb25z
dCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNvZGVLZXk6OkV2YWxU
eXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZTsKK307CisKK3RlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5
cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4geworICAgIHR5cGVkZWYgSlNDOjpN
b2R1bGVQcm9ncmFtTm9kZSBSb290Tm9kZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtl
eTo6Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5OjpQcm9ncmFtVHlwZTsKKyAgICBz
dGF0aWMgY29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6
TW9kdWxlRXZhbHVhdGVNb2RlOwogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGU+CkBAIC05NSw3ICsxMDMsNyBAQCBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhl
Y3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJj
ZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgdGhpc1REWk1vZGUpOworICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2Nr
VHlwZT46OnBhcnNlTW9kZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
dGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0xMzIsNiArMTQwLDEyIEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hl
OjpnZXRFdmFsQ29kZUJsb2NrKFZNJiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1CiAgICAgcmV0
dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRh
YmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSwgZGVidWdn
ZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCB2YXJpYWJsZXNVbmRlclREWik7CiB9CiAKK1Vu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQoreworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlQYXJlbnRU
RFpWYXJpYWJsZXM7CisgICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGRl
YnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVz
KTsKK30KKwogLy8gRklYTUU6IFRoZXJlJ3Mgbm8gbmVlZCB0byBhZGQgdGhlIGZ1bmN0aW9uJ3Mg
bmFtZSB0byB0aGUga2V5IGhlcmUuIEl0J3MgYWxyZWFkeSBpbiB0aGUgc291cmNlIGNvZGUuCiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFi
bGVGcm9tR2xvYmFsQ29kZShWTSYgdm0sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCBhZjdkYWM3ZTQ4NzA0MTMxOWM2M2ZlYzk3
NTVlMjM5MzE4ODM0Y2I2Li43MTc1ZmUzOTUxMmM5MzY2ZTYxNjM5ODEzY2I2YzRmODIyNTk4ZGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtNDUsOCAr
NDUsMTAgQEAgY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBQYXJzZXJF
cnJvcjsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVC
bG9jazsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsK
IGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTU2LDcgKzU4LDcgQEAgY2xhc3Mg
U291cmNlUHJvdmlkZXI7CiAKIGNsYXNzIFNvdXJjZUNvZGVLZXkgewogcHVibGljOgotICAgIGVu
dW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSB9OworICAg
IGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9k
dWxlVHlwZSB9OwogCiAgICAgU291cmNlQ29kZUtleSgpCiAgICAgewpAQCAtMjU3LDYgKzI1OSw3
IEBAIGNsYXNzIENvZGVDYWNoZSB7CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdl
dFByb2dyYW1Db2RlQmxvY2soVk0mLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRXZhbENvZGVCbG9j
ayogZ2V0RXZhbENvZGVCbG9jayhWTSYsIEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29k
ZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgVGhpc1REWk1vZGUs
IERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqKTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGdldE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAKICAgICB2b2lkIGNsZWFyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmlu
ZGV4IDE2M2IxMTYxMDQxY2NkYjM1YWQ1Mjk3NmNhZmU2YmQxMWRmYzhiNzcuLjRmZGJkOTMxNDMw
OGZiOTk1MTQ1MzY4MzM4M2UxYmE0ZTJjODJmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjgzLDYgKzI4Myw3IEBACiAg
ICAgbWFjcm8oQXJyYXkpIFwKICAgICBtYWNybyhTdHJpbmcpIFwKICAgICBtYWNybyhNYXApIFwK
KyAgICBtYWNybyhTZXQpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8oSW50ZXJu
YWxQcm9taXNlKSBcCiAgICAgbWFjcm8oYWJzKSBcCkBAIC0zMDcsNiArMzA4LDcgQEAKICAgICBt
YWNybyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pIFwKICAgICBtYWNybyhnZXQpIFwKICAgICBt
YWNybyhzZXQpIFwKKyAgICBtYWNybyhhZGQpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggMjcxMTc4YzJi
NWY2NDM3ZTY4ZGU1OTJkNjE0YjgxMmZhNTFlZjI1ZC4uYjVmNjIzYWNkYTUyMzA1MTE4N2QwZGI1
Njg4NTIxMjYyZDg2MjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5hbWUoUHJpdmF0
ZU5hbWU6OkRlc2NyaXB0aW9uLCAiRW50cnlQb2ludE1vZHVsZSIpOwotICAgIE1vZHVsZUFuYWx5
emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQocHJpdmF0ZU5hbWUp
LCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2Rl
LT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVy
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQocHJpdmF0ZU5hbWUpLCBzb3VyY2UsIG1vZHVsZVBy
b2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxW
YXJpYWJsZXMoKSk7CiAgICAgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5v
ZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAppbmRleCA1ZmZiOGRiN2YwNTA1YjRkMTYyNmEzNjg0N2EyODgxZmI0
YTE3NTIzLi42NDAwODFlMGZkZjNkYmUxYTVlNmRhMzFhN2FlYTY4OGE1YmRkODc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkxM
SW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2ZpbGVy
RGF0YWJhc2UuaCIKQEAgLTE1OSw3ICsxNjAsMTggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpp
bnN0YWxsQ29kZShDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2spCiAgICAgICAgIGV4ZWN1dGFi
bGUtPm1fcHJvZ3JhbUNvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgICAgICAKKworICAgIGNhc2UgTW9kdWxlQ29kZTogeworICAgICAgICBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSo+KHRoaXMpOworICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBz
dGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CisK
KyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOworCisgICAgICAgIG9sZENvZGVC
bG9jayA9IGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKKyAgICAgICAgZXhl
Y3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIEV2YWxDb2RlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAg
IEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sqPihn
ZW5lcmljQ29kZUJsb2NrKTsKQEAgLTIyNiw3ICsyMzgsMTcgQEAgUmVmUHRyPENvZGVCbG9jaz4g
U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgICAgICAgICAgZXhlY3V0YWJs
ZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAog
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+
c291cmNlKCkuc3RhcnRDb2x1bW4oKSkpOwogICAgIH0KLSAgICAKKworICAgIGlmIChjbGFzc0lu
Zm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKj4odGhpcyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNh
bGwpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAg
ZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2su
Z2V0KCksIHNjb3BlLAorICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIo
KSwgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRDb2x1bW4oKSkpOworICAgIH0KKwogICAgIFJF
TEVBU0VfQVNTRVJUKGNsYXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvbik7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwpAQCAtMjgzLDYg
KzMwNSwxNyBAQCBQYXNzUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVw
bGFjZW1lbnRDb2RlQmxvY2tGb3IoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisg
ICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGJhc2Vs
aW5lID0gc3RhdGljX2Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KAorICAgICAgICAgICAg
ZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7
CisgICAgICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFJl
ZihuZXcgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgICAgIENvZGVCbG9jazo6Q29w
eVBhcnNlZEJsb2NrLCAqYmFzZWxpbmUpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRBbHRlcm5hdGl2
ZShiYXNlbGluZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgUkVMRUFT
RV9BU1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPih0aGlzKTsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkNvZGVCbG9jayo+KApAQCAtMzgzLDYgKzQxNiw0MiBAQCB2b2lkIFByb2dyYW1F
eGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFt
RXhlY3V0YWJsZSo+KGNlbGwpLT5Qcm9ncmFtRXhlY3V0YWJsZTo6flByb2dyYW1FeGVjdXRhYmxl
KCk7CiB9CiAKK2NvbnN0IENsYXNzSW5mbyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZv
ID0geyAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSB9OworCitN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxl
KGV4ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMt
PnZtKCksIHNvdXJjZSwgZmFsc2UpCit7CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQg
PSAwOworICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7
CisgICAgaWYgKGV4ZWMtPnZtKCkudHlwZVByb2ZpbGVyKCkgfHwgZXhlYy0+dm0oKS5jb250cm9s
Rmxvd1Byb2ZpbGVyKCkpCisgICAgICAgIGV4ZWMtPnZtKCkuZnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdT
dGFydE9mZnNldCwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKK30KKworTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNv
cmQpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPigqZXhl
Yy0+aGVhcCgpKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKKyAgICBl
eGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBtb2R1bGVSZWNvcmQpOworCisg
ICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGV4ZWMsIGV4
ZWN1dGFibGUpOworICAgIGlmICghdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2suc2V0KGV4ZWMtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGUpOworCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVs
ZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9tb2R1bGVS
ZWNvcmQuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQpOworfQorCit2b2lkIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpLT5Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6
fk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlv
bkV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVj
dXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxl
KSB9OwogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCkBAIC01MzUsNiArNjA0LDQ3IEBAIHZvaWQgUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2RlKCk7CiB9CiAKK0pT
T2JqZWN0KiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4g
bW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCisgICAgICAgIHZt
LCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgIGlmIChtb2R1bGVQcm9ncmFtTm9kZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CisgICAg
cmV0dXJuIGVycm9yLnRvRXJyb3JPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9zb3VyY2Up
OworfQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCit7Cisj
aWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoIW1faml0Q29kZUZvckNhbGwpCisgICAgICAgIHJldHVy
bjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgIG1f
bW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+dW5saW5rQ2FsbHMoKTsKKyNlbmRpZgorfQordm9pZCBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIFNjcmlwdEV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOworICAgIGlmICh0
aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spCisgICAgICAgIHRoaXNPYmplY3Qt
Pm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Cit9CisK
K3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCit7CisgICAgbV9tb2R1
bGVQcm9ncmFtQ29kZUJsb2NrID0gbnVsbHB0cjsKKyAgICBtX3VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay5jbGVhcigpOworICAgIEJhc2U6OmNsZWFyQ29kZSgpOworfQorCiBGdW5jdGlv
bkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0ZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dDsKQEAgLTYyMyw2ICs3MzMsMTUgQEAgdm9pZCBFeGVjdXRhYmxlQmFzZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogICAgICAgICAgICAgb3V0LnByaW50KCJQcm9ncmFtRXhlY3V0YWJs
ZSB3L28gQ29kZUJsb2NrIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoY2xh
c3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSo+KHJlYWxUaGlzKTsKKyAgICAgICAgaWYgKENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoKmNvZGVC
bG9jayk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludCgiTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUgdy9vIENvZGVCbG9jayIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBqc0Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4ocmVhbFRoaXMpOwogICAgIGlmICghZnVuY3Rpb24tPmVpdGhlckNvZGVCbG9jaygp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDA0MDUz
NzczYzEwNzY0MGViNjZmMmFkYTMyMTg2OTE5NTA4MTI3NWMuLjU1NzczMzQ2ODU5MGEwYjA2OTdl
ZWU3NGEzMWJlY2JiZjUyOTg2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKQEAgLTUyLDYgKzUyLDggQEAgY2xhc3MgRXZhbENvZGVCbG9jazsKIGNsYXNz
IEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBK
U01vZHVsZVJlY29yZDsKIGNsYXNzIEpTU2NvcGU7CiAgICAgCiBlbnVtIENvbXBpbGF0aW9uS2lu
ZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwpAQCAtMTA0LDYg
KzEwNiwxMSBAQCBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CiAgICAgfQor
ICAgIGJvb2wgaXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdHlwZSgpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZTsKKyAgICB9CisKIAogICAg
IGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdAogICAgIHsKQEAgLTU0Myw2ICs1NTAsNTYgQEAg
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgUmVmUHRyPFByb2dyYW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKIH07CiAK
K2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOworCisgICAgc3RhdGljIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogY29kZUJsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21vZHVsZVByb2dyYW1Db2Rl
QmxvY2suZ2V0KCk7CisgICAgfQorCisgICAgSlNPYmplY3QqIGNoZWNrU3ludGF4KEV4ZWNTdGF0
ZSopOworCisgICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOworICAgIH0KKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsKKworICAgIHZvaWQg
Y2xlYXJDb2RlKCk7CisKKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNl
KTsgfQorICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2suZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJs
ZTsKKworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJj
ZUNvZGUmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU01vZHVsZVJlY29yZCop
OworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworCisgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxl
UmVjb3JkPiBtX21vZHVsZVJlY29yZDsKKyAgICBSZWZQdHI8TW9kdWxlUHJvZ3JhbUNvZGVCbG9j
az4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworfTsKKwogY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTY4OSw2ICs3
NDYsOCBAQCBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxQcm9ncmFtRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICBjYXNlIEZ1bmN0aW9uRXhl
Y3V0YWJsZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOworICAgIGNhc2UgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGVUeXBlOgorICAgICAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBq
c0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICB9
CkBAIC03MDMsNiArNzYyLDggQEAgaW5saW5lIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6dW5saW5r
Q2FsbHMoKQogICAgICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcykt
PnVubGlua0NhbGxzKCk7CiAgICAgY2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOgogICAgICAg
ICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpLT51bmxpbmtDYWxscygp
OworICAgIGNhc2UgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgorICAgICAgICByZXR1cm4g
anNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxzKCk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggOTNlZTFmZDc0Yjk5MjU5MDQxY2ExZTg2MmY2MzExZjY1MDk4Mzg5YS4uMmQyMjliZTY5
NDQ5ZDZlODJiNTI4ZmVlZGZhZTAzYjUyZDk3ZjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODQsNiArODQsOCBAQAogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5j
bHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgpAQCAtMzEwLDYgKzMx
Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fdHlwZWRBcnJh
eXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5zdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0RhdGFW
aWV3OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBl
RGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKICAgICBtX2xleGljYWxFbnZpcm9u
bWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTGV4aWNhbEVudmlyb25tZW50OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
KSk7CiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0
cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7
CiAgICAgbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnNldChtX3ZtLCB0aGlzLCBEZWJ1Z2dlclNj
b3BlOjpjcmVhdGVTdHJ1Y3R1cmUobV92bSwgdGhpcykpOwogICAgIG1fd2l0aFNjb3BlU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNXaXRoU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
anNOdWxsKCkpKTsKQEAgLTM0Niw2ICszNDksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKIAogICAgIG1f
bW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX21v
ZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC01MjAs
NiArNTI0LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhl
bmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24o
dm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0
b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPlNldFByaXZhdGVOYW1lLCBzZXRDb25zdHJ1Y3RvciwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xv
YmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAg
ICAKQEAgLTc4OSw2ICs3OTQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGlyZWN0QXJndW1lbnRzU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZWRBcmd1bWVu
dHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX291dE9mQmFu
ZEFyZ3VtZW50c1N0cnVjdHVyZSk7CkBAIC04MTYsNiArODIyLDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9i
amVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29uc29s
ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFyVk1T
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmUpOwpAQCAtOTMwLDYgKzkzNywyNSBAQCBVbmxpbmtlZEV2YWxDb2RlQmxv
Y2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZy
YW1lLAogICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0KIAorVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUpCit7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSA9IGhhc0RlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CisgICAg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGhhc1Byb2ZpbGVyKCkgPyBQcm9maWxlck9uIDog
UHJvZmlsZXJPZmY7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
CisgICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJy
b3IpOworCisgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCisgICAgICAgIGRlYnVnZ2VyKCktPnNvdXJj
ZVBhcnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9y
LmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKKworICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlz
LCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7Cit9CisKIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggMjYxMzE2ZTg1ZDJiYWZiZGVkNzg0MzBiNmY4ZjhlYmE1YWQ4
Nzc2ZS4uOGMyZTNjYTRlZTRjZjJiZTFmMjliMTJlMDdmYjQ1NTMwMDcxZWIyNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC03OCw2ICs3
OCw3IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFz
cyBNaWNyb3Rhc2s7CiBjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3Q7CitjbGFzcyBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiBjbGFzcyBPYmpl
Y3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CkBAIC04NSw2ICs4Niw3IEBA
IGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFz
cyBSZWdFeHBQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgTnVsbEdldHRlckZ1bmN0aW9uOwogY2xhc3MgTnVs
bFNldHRlckZ1bmN0aW9uOwogZW51bSBjbGFzcyBUaGlzVERaTW9kZTsKQEAgLTIzMCw2ICsyMzIs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVudmlyb25tZW50U3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlRW52aXJvbm1lbnRT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kaXJlY3RBcmd1bWVudHNT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zY29wZWRBcmd1bWVudHNT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vdXRPZkJhbmRBcmd1bWVu
dHNTdHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJl
OwogI2VuZGlmCkBAIC00NDYsNiArNDUwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBhY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJv
bm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25tZW50
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIHNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVkQXJn
dW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvdXRPZkJhbmRBcmd1bWVu
dHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVy
ZS5nZXQoKTsgfQpAQCAtNDk5LDYgKzUwNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRl
cmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNH
bG9iYWxPYmplY3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0dXJl
KiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3Jk
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7
IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmCkBA
IC02NDEsNiArNjQ3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0
ZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU09iamVj
dCoqIGV4Y2VwdGlvbik7CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjcmVhdGVFdmFsQ29k
ZUJsb2NrKENhbGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwgVGhpc1REWk1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IGNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqKTsKIAogcHJvdGVjdGVkOgogICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmly
b25tZW50LmgKaW5kZXggOTUxNjMxOGQ3MDE2OWUzZGQ4YzJiZWY3ODMzMTI1Njc1YzVlMjE4Yi4u
NDQ4ZWE0MzFiN2I3Yzk4MjYyZDQxMGJmMDFmODQ5MzcxZDhhYjU3NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUmVnaXN0ZXI7CiAgICAgCiBjbGFz
cyBKU0xleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVjb3JkIHsKLXBy
aXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1
cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKICAgICAKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmJlMDQzYTFiODUyNWE3NjU3MDI3OGQ3ZDFjYjhmYzY4MDY0MmJjZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxl
RW52aXJvbm1lbnQuaCIKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25t
ZW50OjpzX2luZm8gPSB7ICJKU01vZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01vZHVsZUVu
dmlyb25tZW50KiBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVj
b3JkKQoreworICAgIC8vIEpTTGV4aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpTRW52aXJv
bm1lbnRSZWNvcmQpIGhhcyB0aGUgc3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMg
YWZ0ZXIgdGhlIGl0cyBjbGFzcyBzdG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBv
ZiB0aGUgdmFyaWFibGUgc2xvdHMgYXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3Jk
LCBpbmhlcml0dGluZyB0aGVzZSBjbGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMg
bm90IGFsbG93ZWQsCisgICAgLy8gdGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJp
YWJsZSBzbG90cy4KKyAgICAvLyBUbyBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBh
dGlibGUgdG8gdGhlIEpTTGV4aWNhbEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIg
dG8gc3RvcmUgdGhlIEpTTW9kdWxlUmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAg
ICAvLyB0aGUgc3RvcmFnZSBhZnRlciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAv
LyBKU0xleGljYWxFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVu
dCBdWyB2YXJpYWJsZSBzbG90cyBdCisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50
OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1b
IGFkZGl0aW9uYWwgc2xvdHMgZm9yIEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxs
LAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAs
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAg
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1i
b2xUYWJsZSk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBt
b2R1bGVSZWNvcmQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZp
cm9ubWVudDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgaW5pdGlhbFZhbHVlKTsKKyAgICB0aGlzLT5tb2R1bGVSZWNvcmQoKS5zZXQodm0sIHRoaXMs
IG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNl
bGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3Qt
PnN5bWJvbFRhYmxlKCktPnNjb3BlU2l6ZSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bW9kdWxlUmVjb3JkKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NmQyNzUzMjA3NGY2ZWJkNjFiZjE1NmYyZTk4OWNkYzFmMWNjZWFhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZpbmUgSlNN
b2R1bGVFbnZpcm9ubWVudF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgor
I2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBS
ZWdpc3RlcjsKKworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxF
bnZpcm9ubWVudCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0xleGljYWxFbnZpcm9ubWVudCBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEpTVmFsdWUgaW5pdGlhbFZh
bHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1
cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1
ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAgICB7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgp
OworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3lt
Ym9sVGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIHNp
emVfdCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAg
eworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJh
cnJpZXI8SlNNb2R1bGVSZWNvcmQ+KT4oQmFzZTo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZk1vZHVsZVJlY29y
ZChzeW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPik7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIFdyaXRlQmFy
cmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+JiBtb2R1bGVSZWNvcmQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICpiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29yZD4qPihi
aXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFi
bGUoKSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKK307CisKK2lubGluZSBKU01vZHVsZUVudmlyb25tZW50OjpKU01vZHVs
ZUVudmlyb25tZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJl
bnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkMjczZmNhYzc0ZWYwZGYyZGQwMWNmODQ1MDI1OTY3ZWU1ZWY1YzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKKworI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0
ZSopOworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnNfaW5mbyA9
IHsgIk1vZHVsZU5hbWVzcGFjZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpIH07CisKKworSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4cG9ydHMoZXhwb3J0cykKK3sKK30KKwordm9pZCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cisg
ICAgbV9tb2R1bGVSZWNvcmQuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQpOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIG1vZHVsZU5h
bWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yLCBEb250RW51bSwgMCk7CisKKyAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5h
bWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRwcm90b3R5cGVvZgorICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNl
LWV4b3RpYy1vYmplY3RzLXNldHByb3RvdHlwZW9mLXYKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90
aWMtb2JqZWN0cy1pc2V4dGVuc2libGUKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0
cy1wcmV2ZW50ZXh0ZW5zaW9ucworICAgIHByZXZlbnRFeHRlbnNpb25zKHZtKTsKK30KKwordm9p
ZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6fkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZVJlY29yZCk7Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2Ut
ZXhvdGljLW9iamVjdHMtZ2V0b3ducHJvcGVydHktcAorCisgICAgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxs
KTsKKworICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKKworICAgIGlmICghdGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3Bl
cnR5TmFtZS51aWQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQgPSB0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZC5nZXQoKTsKKwor
ICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgSWRlbnRpZmll
clNldCBleHBvcnRTdGFyU2V0OworICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IG1vZHVsZVJl
Y29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3Bl
cnR5TmFtZS51aWQoKSksIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQpOworICAgIEFTU0VSVChy
ZXNvbHV0aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6Ok5vdEZv
dW5kICYmIHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlw
ZTo6QW1iaWd1b3VzKTsKKyAgICBKU01vZHVsZVJlY29yZCogdGFyZ2V0TW9kdWxlID0gcmVzb2x1
dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0RW52aXJv
bm1lbnQgPSB0YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgUHJvcGVydHlT
bG90IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50KTsKKyAgICBpZiAoIXRhcmdldEVu
dmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRh
cmdldEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNs
b3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gdHJhbXBv
bGluZVNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBBU1NFUlQoIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpKTsKKyAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnREZWxl
dGUsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90JikKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1z
ZXQtcC12LXJlY2VpdmVyCisgICAgcmV0dXJuOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
ZGVsZXRlLXAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIHJldHVybiAhdGhpc09iamVj
dC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSk7Cit9CisKK3ZvaWQgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLW93
bnByb3BlcnR5a2V5cworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBuYW1lIDogdGhpc09iamVjdC0+bV9leHBvcnRzKQorICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChuYW1lLmdldCgpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Cit9CisKK2Jvb2wgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0
cy1kZWZpbmVvd25wcm9wZXJ0eS1wLWRlc2MKKyAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUg
cHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhbiBvYmplY3QiKSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUo
KSwgYXNPYmplY3QodGhpc1ZhbHVlKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZhZDc3MjExMTY5ZGUwOTQwNzg2ZWZhY2M2Nzg0ZWQ3YjI5ZjZm
YmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0X2gKKyNkZWZpbmUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAorCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTTW9kdWxl
UmVjb3JkOworCitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVj
dCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lczsKKworICAgIHN0YXRpYyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElk
ZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgeworICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q+KGV4ZWMtPnZtKCkuaGVhcCkpIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KGV4ZWMt
PnZtKCksIHN0cnVjdHVyZSwgZXhwb3J0cyk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24oZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVSZWNvcmQpOworICAgICAgICByZXR1
cm4gb2JqZWN0OworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxl
UmVjb3JkKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qo
Vk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKTsKKworcHJpdmF0
ZToKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIElkZW50aWZpZXJTZXQg
bV9leHBvcnRzOworICAgIFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNv
cmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcAppbmRleCBlNzAyZmFmYTQ0ZTUwNmY5ZDQ3ZmVkZTYzMzY2NGE3MzhjMTliNDBi
Li5iMTFkNzYyZmQ3ODg4NjgxYzYwZjExMmNhZWE1ZWFhOGFhMjc3YTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0yMCwxNSAr
MjAsMjAgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAKKyNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJK
U01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsMTIgKzQ2LDI1IEBAIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTTW9k
dWxlUmVjb3JkOjp+SlNNb2R1bGVSZWNvcmQoKTsKIH0KIAotCiB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICBwdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoInJlZ2lzdHJ5RW50cnkiKSksIGpz
VW5kZWZpbmVkKCkpOworICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sIEFTQ0lJTGl0ZXJhbCgiZXZhbHVhdGVkIikpLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKworICAg
IG1fZGVwZW5kZW5jaWVzTWFwLnNldCh2bSwgdGhpcywgSlNNYXA6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KCktPm1hcFN0cnVjdHVyZSgpKSk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJkZXBlbmRlbmNpZXNNYXAiKSksIG1fZGVw
ZW5kZW5jaWVzTWFwLmdldCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxl
UmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CisgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudCk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsKIH0KIAogYXV0byBKU01v
ZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKQEAgLTY0LDYgKzgyLDI0OCBA
QCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoY29uc3Qg
SWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6
OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVy
KCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07CiB9CiAKK3ZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmFsbG9jYXRlTW9kdWxlRW52aXJvbm1lbnQoRXhlY1N0YXRlKikKK3sKKy8vICAgICBTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKGV4ZWMtPnZtKCkpOwor
Ly8gICAgIHsKKy8vICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUtPm1fbG9jayk7CisvLyAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0
RW50cmllcykgeworLy8gICAgICAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWly
LnZhbHVlOworLy8gICAgICAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisvLyAg
ICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJl
Y3Q6CisvLyAgICAgICAgICAgICAgICAgYnJlYWs7CisvLworLy8gICAgICAgICAgICAgY2FzZSBK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKy8vICAgICAgICAg
ICAgICAgICAvLyBUaGUgaGVhcCB2YXJpYWJsZSBmb3IgdGhlIG5hbWVzcGFjZSBvYmplY3QgaXMg
aW50cm9kdWNlZCB3aGVuIGltcG9ydGluZyBhbGwgdGhlIG5hbWVzcGFjZSBiaW5kaW5nIGludG8g
dGhlIGN1cnJlbnQgbW9kdWxlIHNjb3BlLgorLy8gICAgICAgICAgICAgICAgIGJyZWFrOworLy8K
Ky8vICAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpM
b2NhbDoKKy8vICAgICAgICAgICAgICAgICBWYXJPZmZzZXQgdmFyT2Zmc2V0KHN5bWJvbFRhYmxl
LT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikpOworLy8gICAgICAgICAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBleHBvcnRFbnRyeS52YXJpYWJsZS5pc0Nv
bnN0KCkgPyBSZWFkT25seSA6IDApOworLy8gICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5h
ZGQobG9ja2VyLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBuZXdFbnRyeSk7CisvLyAg
ICAgICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgICAgICB9CisvLyAgICAgICAgIH0KKy8v
CisvLyAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykgewor
Ly8gICAgICAgICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworLy8g
ICAgICAgICAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKSB7Cisv
LyAgICAgICAgICAgICAgICAgVmFyT2Zmc2V0IHZhck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5l
eHRTY29wZU9mZnNldChsb2NrZXIpKTsKKy8vICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgUmVhZE9ubHkpOworLy8gICAgICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLT5hZGQobG9ja2VyLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBuZXdF
bnRyeSk7CisvLyAgICAgICAgICAgICB9CisvLyAgICAgICAgIH0KKy8vICAgICB9Cit9CisKK3N0
YXRpYyBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkp
CisgICAgICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKCZl
eGVjLT52bSgpLCBpZGVudGlmaWVyLmltcGwoKSk7Cit9CisKK0pTTW9kdWxlUmVjb3JkKiBKU01v
ZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgSlNWYWx1ZSBtb2R1bGVOYW1lVmFs
dWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMsIG1vZHVsZU5hbWUpOworICAgIEpTVmFsdWUg
cGFpciA9IG1fZGVwZW5kZW5jaWVzTWFwLT5KU01hcDo6Z2V0KGV4ZWMsIG1vZHVsZU5hbWVWYWx1
ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KHBhaXIuZ2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIikpKTsKK30KKworYXV0byBKU01vZHVs
ZVJlY29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUsIFJlc29sdmVTZXQmIHJlc29sdmVTZXQsIElkZW50aWZpZXJTZXQmIHN0YXJT
ZXQpIC0+IFJlc29sdXRpb24KK3sKKyAgICBpZiAoIXJlc29sdmVTZXQuYWRkKFJlc29sdmVRdWVy
eShtb2R1bGVLZXkoKSwgZXhwb3J0TmFtZSkpLmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBS
ZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVsZUtleSgpLCB0aGlz
LCBJZGVudGlmaWVyKCkgfTsKKworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVu
dHJpZXMuZmluZChleHBvcnROYW1lLmltcGwoKSk7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1fZXhw
b3J0RW50cmllcy5lbmQoKSkgeworICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IGl0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAg
ICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAg
ICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAg
ICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQs
IG1vZHVsZUtleSgpLCB0aGlzLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUgfTsKKworICAgICAgICBj
YXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6IHsKKyAgICAg
ICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IGhvc3RSZXNvbHZl
SW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhwb3J0RW50cnkubW9kdWxlTmFtZSk7CisgICAgICAgICAg
ICBjb25zdCBhdXRvIGluZGlyZWN0UmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlUmVjb3JkLT5y
ZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydE5hbWUsIHJlc29sdmVTZXQsIHN0YXJTZXQpOworICAg
ICAgICAgICAgaWYgKGluZGlyZWN0UmVzb2x1dGlvbi50eXBlICE9IFJlc29sdXRpb246OlR5cGU6
Ok5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBpbmRpcmVjdFJlc29sdXRpb247Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGV4cG9ydE5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1bHRLZXl3b3JkKQorICAg
ICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkVycm9yLCBtb2R1bGVL
ZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBpZiAoIXN0YXJTZXQuYWRkKG1vZHVs
ZUtleSgpLmltcGwoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBS
ZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50aWZpZXIo
KSB9OworCisgICAgYXV0byBzdGFyUmVzb2x1dGlvbiA9IFJlc29sdXRpb24geyBSZXNvbHV0aW9u
OjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50aWZpZXIoKSB9OworICAg
IGZvciAoY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRyaWVzKSB7
CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IGhvc3RSZXNv
bHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFyTW9k
dWxlTmFtZS5nZXQoKSkpOworICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBpbXBvcnRl
ZE1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBleHBvcnROYW1lLCByZXNvbHZlU2V0
LCBzdGFyU2V0KTsKKyAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXMgfHwgcmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6OkVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIHJlc29sdXRpb247CisgICAgICAgIGlmIChyZXNvbHV0
aW9uLnR5cGUgIT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlm
IChzdGFyUmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKQorICAg
ICAgICAgICAgICAgIHN0YXJSZXNvbHV0aW9uID0gcmVzb2x1dGlvbjsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHN0YXJSZXNvbHV0aW9uLm1vZHVsZUtleSAhPSByZXNvbHV0aW9uLm1vZHVsZUtleSB8
fCBzdGFyUmVzb2x1dGlvbi5sb2NhbE5hbWUgIT0gcmVzb2x1dGlvbi5sb2NhbE5hbWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3Vv
dXMsIElkZW50aWZpZXIoKSwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gc3RhclJlc29sdXRpb247Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyU2V0JiBleHBv
cnRTdGFyU2V0LCBJZGVudGlmaWVyU2V0JiBleHBvcnRlZE5hbWVzLCBJbmNsdWRlRGVmYXVsdE1v
ZGUgbW9kZSkKK3sKKyAgICBpZiAoZXhwb3J0U3RhclNldC5jb250YWlucyhtb2R1bGVLZXkoKS5p
bXBsKCkpKQorICAgICAgICByZXR1cm47CisgICAgZXhwb3J0U3RhclNldC5hZGQobW9kdWxlS2V5
KCkuaW1wbCgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMp
IHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAg
ICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29y
ZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3Jk
OjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICBpZiAobW9kZSA9PSBJ
bmNsdWRlRGVmYXVsdE1vZGU6OkluY2x1ZGUgfHwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1
bHRLZXl3b3JkICE9IGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpCisgICAgICAgICAgICAgICAgZXhw
b3J0ZWROYW1lcy5hZGQoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5
cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgZm9yIChjb25zdCBhdXRvJiBzdGFyTW9kdWxlTmFtZSA6IG1fc3RhckV4cG9ydEVudHJpZXMp
IHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIHJlcXVlc3RlZE1vZHVsZVJlY29yZCA9IGhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFy
TW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICByZXF1ZXN0ZWRNb2R1bGVSZWNvcmQtPmdldEV4
cG9ydGVkTmFtZXMoZXhlYywgZXhwb3J0U3RhclNldCwgZXhwb3J0ZWROYW1lcywgSW5jbHVkZURl
ZmF1bHRNb2RlOjpFeGNsdWRlKTsKKyAgICB9Cit9CisKK0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCisgICAgICAgIHJldHVybiBtX21vZHVs
ZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSWRlbnRpZmllclNldCBleHBv
cnRlZE5hbWVzOworICAgIHsKKyAgICAgICAgSWRlbnRpZmllclNldCBleHBvcnRTdGFyU2V0Owor
ICAgICAgICBnZXRFeHBvcnRlZE5hbWVzKGV4ZWMsIGV4cG9ydFN0YXJTZXQsIGV4cG9ydGVkTmFt
ZXMsIEluY2x1ZGVEZWZhdWx0TW9kZTo6SW5jbHVkZSk7CisgICAgfQorCisgICAgSWRlbnRpZmll
clNldCB1bmFtYmlndW91c05hbWVzOworICAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6IGV4cG9y
dGVkTmFtZXMpIHsKKyAgICAgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgICAgICBJZGVu
dGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9
IHJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1lLmdldCgp
KSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgICAgIHN3aXRjaCAocmVzb2x1dGlv
bi50eXBlKSB7CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICB0aHJvd1N5bnRh
eEVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2Fz
ZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAgICAgICAgdW5hbWJp
Z3VvdXNOYW1lcy5hZGQobmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldChleGVjLT52bSgpLCB0aGlzLCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSwgdGhpcywgdW5hbWJpZ3Vv
dXNOYW1lcykpOworICAgIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKK30K
Kwordm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSwgdGhpcyk7CisgICAgaWYgKCFleGVjdXRhYmxl
KSB7CisgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywg
ZXhlY3V0YWJsZSk7CisKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVu
dCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbV9tb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCktPnN5bWJvbFRh
YmxlKCksIGpzVERaVmFsdWUoKSwgdGhpcyk7CisgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMo
ZXhlYywgbW9kdWxlRW52aXJvbm1lbnQpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQoZXhlYy0+dm0o
KSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpp
bnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlRW52aXJvbm1l
bnQqIG1vZHVsZUVudmlyb25tZW50KQoreworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9
IG1vZHVsZUVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOworCisgICAgLy8gSW5pdGlhbGl6ZSBu
b24tbGV4aWNhbCB2YXJpYWJsZXMgd2l0aCB1bmRlZmluZWQuCisgICAgZm9yIChjb25zdCBhdXRv
JiB2YXJpYWJsZSA6IG1fZGVjbGFyZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYg
ZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7CisgICAgICAgIFZh
ck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKCFvZmZzZXQu
aXNTdGFjaygpKQorICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJvbm1lbnQs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNV
bmRlZmluZWQoKSwgZmFsc2UpOworICAgIH0KKworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IHBh
aXIudmFsdWU7CisgICAgICAgIGlmIChleHBvcnRFbnRyeS50eXBlID09IEpTTW9kdWxlUmVjb3Jk
OjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3QpIHsKKyAgICAgICAgICAgIFJlc29sdmVTZXQg
cmVzb2x2ZVNldDsKKyAgICAgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAg
ICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhw
b3J0RW50cnkuZXhwb3J0TmFtZSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgICAg
ICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3I6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAg
ICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykgeworICAgICAgICBj
b25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIEpTTW9kdWxlUmVj
b3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1w
b3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVz
cGFjZShleGVjLT52bSgpKSkgeworICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhl
Yyk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUtPmlubGluZUdldChsb2NrZXIsIGltcG9ydEVudHJ5LmxvY2FsTmFtZS5pbXBsKCkp
OworICAgICAgICAgICAgU2NvcGVPZmZzZXQgb2Zmc2V0ID0gZW50cnkuc2NvcGVPZmZzZXQoKTsK
KyAgICAgICAgICAgIEFTU0VSVChtb2R1bGVFbnZpcm9ubWVudC0+aXNWYWxpZChvZmZzZXQpKTsK
KyAgICAgICAgICAgIG1vZHVsZUVudmlyb25tZW50LT52YXJpYWJsZUF0KG9mZnNldCkuc2V0KGV4
ZWMtPnZtKCksIG1vZHVsZUVudmlyb25tZW50LCBuYW1lc3BhY2VPYmplY3QpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgICAgICAgICAg
SWRlbnRpZmllclNldCBleHBvcnRTdGFyU2V0OworICAgICAgICAgICAgY29uc3QgYXV0byByZXNv
bHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnku
aW1wb3J0TmFtZSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgICAgICAgICBzd2l0
Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBl
OjpOb3RGb3VuZDoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3Vz
OgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAg
ICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworSlNWYWx1
ZSBKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFt
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUobV9tb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKSwgZXhlYywgbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQo
KSk7CisgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jbGVhcigpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiB1aWQpCiB7CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKQEAgLTc2
LDcgKzMzNiw2IEBAIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKICAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkpOwogfQogCi0K
IHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQogewogICAgIGRhdGFMb2coIlxuQW5hbHl6aW5n
IE1vZHVsZVJlY29yZCBrZXkoIiwgcHJpbnRhYmxlTmFtZShtX21vZHVsZUtleSksICIpXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4
IDA1ZDY5NGQzZTNmZTU1YTUyMWFmMzVkZTgyNjE1OTgwZjA4MGUyZTAuLmY3YjY0ZjNkMzYwOGYz
NjBiZjJhOTgzNjJlNGNjOTYyNDc0YmJkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMjgsMTIgKzI4LDE4IEBACiAKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNs
dWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKK2NsYXNzIEpT
TW9kdWxlRW52aXJvbm1lbnQ7CitjbGFzcyBKU01hcDsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOworCiAvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAogLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJj
ZS10ZXh0LW1vZHVsZS1yZWNvcmRzCiBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rl
c3RydWN0aWJsZU9iamVjdCB7CkBAIC04MSwxOCArODcsMTMgQEAgY2xhc3MgSlNNb2R1bGVSZWNv
cmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTTW9k
dWxlUmVjb3JkKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlS2V5KQorICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
ZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJp
YWJsZXMpCiAgICAgewotICAgICAgICBKU01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29yZD4odm0uaGVhcCkpIEpTTW9kdWxlUmVj
b3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSk7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlUmVjb3JkPih2bS5o
ZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5LCBzb3VyY2VDb2Rl
LCBkZWNsYXJlZFZhcmlhYmxlcywgbGV4aWNhbFZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAK
LSAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCi0gICAgewotICAg
ICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbW9kdWxlS2V5KTsKLSAg
ICB9Ci0KICAgICB2b2lkIGFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7
CiAgICAgdm9pZCBhZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYpOwogICAgIHZv
aWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKQEAgLTEwMCwyNCArMTAxLDEx
MSBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAKICAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKIAorICAgIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KKyAgICBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtleTsgfQogICAg
IGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CisgICAgY29uc3QgRXhwb3J0TWFwJiBleHBvcnRF
bnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Rl
Y2xhcmVkVmFyaWFibGVzOyB9CisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsgfQogCiAgICAg
dm9pZCBkdW1wKCk7CiAKKyAgICB2b2lkIGFsbG9jYXRlTW9kdWxlRW52aXJvbm1lbnQoRXhlY1N0
YXRlKik7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSB7IHJl
dHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOyB9CisKKyAgICB2b2lkIGxpbmsoRXhlY1N0
YXRlKik7CisgICAgSlNWYWx1ZSBleGVjdXRlKEV4ZWNTdGF0ZSopOworCisgICAgc3RydWN0IFJl
c29sdmVRdWVyeSB7CisgICAgICAgIFJlc29sdmVRdWVyeShVbmlxdWVkU3RyaW5nSW1wbCogbW9k
dWxlS2V5LCBVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgICAgIDogbW9k
dWxlS2V5KG1vZHVsZUtleSkKKyAgICAgICAgICAgICwgZXhwb3J0TmFtZShleHBvcnROYW1lKQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvbHZlUXVlcnkoY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlS2V5LCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKQorICAgICAgICAg
ICAgOiBSZXNvbHZlUXVlcnkobW9kdWxlS2V5LmltcGwoKSwgZXhwb3J0TmFtZS5pbXBsKCkpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5
VmFsdWUgfTsKKyAgICAgICAgUmVzb2x2ZVF1ZXJ5KEVtcHR5VmFsdWVUYWcpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVl
IH07CisgICAgICAgIFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVUYWcpCisgICAgICAgICAgICA6
IG1vZHVsZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgICAgICwgZXhw
b3J0TmFtZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gIW1vZHVsZUtleTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaXNEZWxl
dGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbW9kdWxlS2V5
LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+IG1vZHVsZUtleTsKKyAgICAgICAgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiBleHBvcnROYW1lOworICAgIH07CisKKyAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5SGFz
aCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYpOwor
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmLCBjb25zdCBSZXNv
bHZlUXVlcnkmKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SGFzaFNldDxS
ZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxSZXNv
bHZlUXVlcnk+PiBSZXNvbHZlU2V0OworCisgICAgc3RydWN0IFJlc29sdXRpb24geworICAgICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBSZXNvbHZlZCwgTm90Rm91bmQsIEFtYmlndW91cywgRXJyb3Ig
fTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlS2V5Owor
ICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgICAgICBJZGVudGlmaWVy
IGxvY2FsTmFtZTsKKyAgICB9OworCisgICAgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIFJlc29sdmVTZXQmLCBJZGVudGlm
aWVyU2V0JiBleHBvcnRTdGFyU2V0KTsKKworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBt
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUuZ2V0KCk7IH0KKwogcHJpdmF0ZToKLSAgICBKU01vZHVsZVJlY29yZChWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAg
SlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAg
ICAgICAgICwgbV9tb2R1bGVLZXkobW9kdWxlS2V5KQorICAgICAgICAsIG1fc291cmNlQ29kZShz
b3VyY2VDb2RlKQorICAgICAgICAsIG1fZGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJs
ZXMpCisgICAgICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMpCiAgICAg
ewogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAorICAgIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRlKik7CisgICAgZW51
bSBjbGFzcyBJbmNsdWRlRGVmYXVsdE1vZGUgeyBJbmNsdWRlLCBFeGNsdWRlIH07CisgICAgdm9p
ZCBnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSosIElkZW50aWZpZXJTZXQmIGV4cG9ydFN0YXJT
ZXQsIElkZW50aWZpZXJTZXQmIGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVEZWZhdWx0TW9kZSk7CisK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAorICAgIHZvaWQgaW5zdGFudGlhdGVE
ZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOworCisgICAgSlNN
b2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKICAgICAvLyBUaGUgbG9hZGVyIHJlc29sdmVzIHRo
ZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1vZHVsZSBrZXkgaXMg
dGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAgICAgSWRlbnRpZmll
ciBtX21vZHVsZUtleTsKIAorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworCisgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOworICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOworCiAgICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBv
cnRFbnRyeS4KICAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOwogCkBAIC0xMjksNiArMjE3
LDExIEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKICAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUgbG9h
ZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIuCiAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2
YWx1YXRpb24KICAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3RlZE1vZHVsZXM7CisK
KyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4gbV9tb2R1bGVFbnZpcm9ubWVu
dDsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0OworICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4g
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNNYXA+IG1fZGVw
ZW5kZW5jaWVzTWFwOwogfTsKIAogaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJl
cXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQpAQCAtMTU2LDYgKzI0
OSwxNiBAQCBpbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbAogICAgIHJldHVybiAoKm1faW1wb3J0RW50
cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOwogfQogCitpbmxpbmUgdW5zaWduZWQgSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29uc3QgSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdmVRdWVyeSYgcXVlcnkpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXJSZXBIYXNoOjpoYXNo
KHF1ZXJ5Lm1vZHVsZUtleSkgKyBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChxdWVyeS5leHBvcnRO
YW1lKTsKK30KKworaW5saW5lIGJvb2wgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhhc2g6
OmVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJocykK
K3sKKyAgICByZXR1cm4gbGhzLm1vZHVsZUtleSA9PSByaHMubW9kdWxlS2V5ICYmIGxocy5leHBv
cnROYW1lID09IHJocy5leHBvcnROYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKaW5kZXggNDAzMjZjZTBmMzI5ZmE3YzdiYmM5OWY0NDY0MjhmZTk2YzkxMjRiMy4uZmNlMDYx
ZDFmOGQ2MWRhYjA2MzYwYWU4ZDdhYTQ0OGYyZjE4Yzc5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKQEAgLTQxLDEwICs0MSwxMiBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4
X3QgewogCiAgICAgRXZhbEV4ZWN1dGFibGVUeXBlLAogICAgIFByb2dyYW1FeGVjdXRhYmxlVHlw
ZSwKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGUsCiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlVHlwZSwKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwKICAgICBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tUeXBlLAorICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9ja1R5cGUsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrVHlwZSwKICAgICBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrVHlwZSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMWQ2N2E0Y2FkZThiNDdjYzE4Y2Y1
ODY0MmQ2NDQ2ZDAzMmY1ZTc5My4uZTZjMjJkMmQzYzM1MjUwOWM1Yzg1NzI1NTNhOWZhNmMyYmRi
OTY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVM
b2FkZXJPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNJbnRlcm5hbFBy
b21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVk
ZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCkBAIC00NSw2ICs0Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZShFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVj
dE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJP
YmplY3RGZXRjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZShFeGVjU3RhdGUqKTsKQEAgLTYyLDI4ICs2
NSwzNCBAQCBjb25zdCBDbGFzc0luZm8gTW9kdWxlTG9hZGVyT2JqZWN0OjpzX2luZm8gPSB7ICJN
b2R1bGVMb2FkZXIiLCAmQmFzZTo6c19pbmZvLCAmbQogCiAvKiBTb3VyY2UgZm9yIE1vZHVsZUxv
YWRlck9iamVjdC5sdXQuaAogQGJlZ2luIG1vZHVsZUxvYWRlck9iamVjdFRhYmxlCi0gICAgc2V0
U3RhdGVUb01heCAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0U2V0U3RhdGVUb01heCAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIG5ld1JlZ2lzdHJ5RW50cnkgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdE5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKLSAgICBlbnN1cmVSZWdpc3RlcmVkICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RFbnN1cmVSZWdpc3RlcmVkICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0g
ICAgZm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Rm9yY2VGdWxm
aWxsUHJvbWlzZSAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxGZXRjaCAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxGZXRjaCAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBmdWxmaWxsVHJhbnNsYXRlICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RGdWxmaWxsVHJhbnNsYXRlICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCi0gICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVs
ZmlsbEluc3RhbnRpYXRlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGNvbW1pdElu
c3RhbnRpYXRlZCAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdENvbW1pdEluc3RhbnRpYXRlZCAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKLSAgICBpbnN0YW50aWF0aW9uICAgICAgICAgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0aW9uICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAzCi0gICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0UmVxdWVzdEZldGNoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJl
cXVlc3RUcmFuc2xhdGUgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RUcmFuc2xh
dGUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0SW5zdGFudGlhdGUg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMgRG9udEVudW18RnVuY3Rpb24gMQot
ICAgIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJ
bnN0YW50aWF0ZUFsbCAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBsb2FkTW9kdWxlICAg
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RMb2FkTW9kdWxlICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMwotICAgIHBhcnNlTW9kdWxlICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBh
cnNlTW9kdWxlICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICByZXF1ZXN0
ZWRNb2R1bGVzICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQotICAgIGZldGNoICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdEZldGNoICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICB0
cmFuc2xhdGUgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgaW5zdGFudGlhdGUgICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgorICAgIHNldFN0YXRlVG9NYXggICAgICAgICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgorICAgIG5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3ROZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RFbnN1
cmVSZWdpc3RlcmVkICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGZvcmNl
RnVsZmlsbFByb21pc2UgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGb3JjZUZ1bGZpbGxQ
cm9taXNlICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxGZXRjaCAg
ICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsRmV0Y2ggICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAgICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsVHJhbnNsYXRlICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgorICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgorICAgIGNvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RDb21taXRJbnN0YW50aWF0ZWQgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MworICAgIGluc3RhbnRpYXRpb24gICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RJ
bnN0YW50aWF0aW9uICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHJl
cXVlc3RGZXRjaCAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0RmV0
Y2ggICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RUcmFu
c2xhdGUgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0VHJhbnNsYXRlICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAg
ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICAgIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICAgIHJlcXVlc3RMaW5rICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RSZXF1ZXN0TGluayAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAg
IHJlcXVlc3RSZWFkeSAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0
UmVhZHkgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIGxpbmsgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RMaW5rICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIG1vZHVsZURlY2xhcmF0aW9u
SW5zdGFudGlhdGlvbiBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRp
YXRpb24gRG9udEVudW18RnVuY3Rpb24gMgorICAgIG1vZHVsZUV2YWx1YXRpb24gICAgICAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVFdmFsdWF0aW9uICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgorICAgIGV2YWx1YXRlICAgICAgICAgICAgICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RFdmFsdWF0ZSAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgorICAgIGxvYWRNb2R1bGUgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RMb2FkTW9kdWxlICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgor
ICAgIHByb3ZpZGUgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQcm92
aWRlICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMworICAgIHBhcnNl
TW9kdWxlICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSAg
ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIHJlcXVlc3RlZE1vZHVs
ZXMgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHJlc29sdmUgICAgICAgICAgICAgICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICAgIGZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RGZXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQorICAgIHRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RUcmFuc2xhdGUgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MgorICAgIGluc3RhbnRpYXRlICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RJ
bnN0YW50aWF0ZSAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogQGVuZAog
Ki8KIApAQCAtMTM3LDE5ICsxNDYsNiBAQCBKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cHJv
dmlkZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBTdGF0dXMgc3RhdHVzLAogICAgIHJl
dHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3Vt
ZW50cyk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVl
c3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQotewotICAgIEpT
T2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucmVxdWVzdEluc3RhbnRpYXRlQWxsUHVibGljTmFt
ZSgpKSk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBK
U0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBl
ICE9IENhbGxUeXBlTm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
Ci0gICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOwotCi0gICAgcmV0dXJuIGpzQ2FzdDxKU0ludGVy
bmFsUHJvbWlzZSo+KGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
cywgYXJndW1lbnRzKSk7Ci19Ci0KIEpTSW50ZXJuYWxQcm9taXNlKiBNb2R1bGVMb2FkZXJPYmpl
Y3Q6OmxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFs
dWUgcmVmZXJyZXIpCiB7CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0
Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5sb2FkTW9k
dWxlUHVibGljTmFtZSgpKSk7CkBAIC0yNDksMTQgKzI0NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICB9CiAgICAgQVNTRVJUKG1vZHVsZVByb2dyYW1Ob2RlKTsKIAotICAgIE1vZHVsZUFu
YWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZUtleSwgbW9kdWxlUHJvZ3JhbU5vZGUt
PnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygp
KTsKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXksIHNv
dXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJv
Z3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVs
ZVJlY29yZCA9IG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKKwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobW9kdWxlUmVjb3JkKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganND
YXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+
YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlUmVjb3JkKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpOwogCkBAIC0y
NjgsNiArMjY1LDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nh
c3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1bGVS
ZWNvcmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisK
KyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRh
TG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCksICJcbiIpOwor
CisgICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWND
YXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghbW9kdWxl
UmVjb3JkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAgICAgICAgZGF0
YUxvZygiTG9hZGVyIFtldmFsdWF0ZV0gIiwgbW9kdWxlUmVjb3JkLT5tb2R1bGVLZXkoKSwgIlxu
Iik7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1vZHVsZVJlY29yZC0+ZXhlY3V0ZShleGVjKTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVj
dFJlc29sdmUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaAppbmRleCA0NWI5MzJhYzU4MGFmNjBhYjUyZmQx
NTAxOTM5MDk1OWFiZTA1MTAzLi4xMmNmZTU2ZWViYjZjNDI3YzBlZjc5MDIxZjk5N2M2YjBkMzg0
YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuaApAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICAvLyBBUElzIHRvIGNvbnRyb2wgdGhlIG1v
ZHVsZSBsb2FkZXIuCiAgICAgSlNWYWx1ZSBwcm92aWRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5
LCBTdGF0dXMsIGNvbnN0IFN0cmluZyYpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXF1ZXN0
SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXkpOwogICAgIEpTSW50ZXJuYWxQ
cm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1
ZSByZWZlcnJlcik7CiAKICAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCBl
ODNlMzgzMjU4Zjk5YmIwNWJiZTExZTBjNjVkZTA0YjhlMDQ5ZTBhLi40YzQzYzZhZmYyZjY3ZmYz
NTc1NzNhZWNhMmRmNDNiZDM3MTEzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1l
cy5oIgogI2luY2x1ZGUgIkNhY2hlZENhbGwuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKQEAgLTY1LDYgKzY2LDEwIEBAIHZvaWQgU2V0UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIHNldFByb3Rv
RnVuY0hhcywgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVy
dHlOYW1lcy0+ZW50cmllcywgc2V0UHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwogCisg
ICAgLy8gUHJpdmF0ZSBhZGQgLyBoYXMgb3BlcmF0aW9ucy4KKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmFkZFByaXZhdGVOYW1lLCBzZXRQcm90b0Z1bmNBZGQsIERv
bnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmhhc1ByaXZhdGVOYW1lKCksIHNldFByb3RvRnVuY0hhcywgRG9udEVudW0s
IDEpOworCiAgICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgc2V0UHJv
dG9GdW5jVmFsdWVzKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dmFsdWVzLCB2YWx1ZXMsIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+a2V5cywgdmFsdWVzLCBEb250RW51
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTNjOTZmYmVjMDQ0Zjdm
NzRlOTc4NDczYjZiZjk4YzA3MjFiOGVkMy4uMDU2Y2Q5MWZlNTljMTgwNjQ1ODVhMzQwMzRjODli
MTFjZDhjOTViOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjIxLDYg
KzIyMSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBl
dmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRo
aXMsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOworICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzeW1ib2xTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBT
eW1ib2w6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzeW1ib2xU
YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CkBAIC0yMzIsNiArMjMzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVj
dHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVy
ZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CisgICAgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3Ry
dWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvcGVydHlUYWJsZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICB3ZWFrTWFwRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYWtNYXBEYXRh
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRWYWx1
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVmFsdWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlhZmU5
YTVhMmZmNDFkOWMxZmM2NTFmZGMwNmJiNmE1MGY3NDlmNjEuLmNkYWI5YjIyNDQxMGY0MzBjNjA1
NjY5YWExOGYwYjE5OWJmMjc0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
MTAzLDYgKzEwMyw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRF
dmFsQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2NvcGU7CiBjbGFz
cyBXYXRjaGRvZzsKQEAgLTI3OSw2ICsyODAsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV2YWxFeGVjdXRhYmxl
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb2dyYW1FeGVjdXRhYmxlU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZTsK
KyAgICBTdHJvbmc8U3RydWN0dXJlPiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdFeHBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gc3ltYm9sU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFRhYmxl
U3RydWN0dXJlOwpAQCAtMjkwLDYgKzI5Miw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRXZhbENv
ZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9wZXJ0
eVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYWtNYXBEYXRhU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVmFsdWVTdHJ1Y3R1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259984</attachid>
            <date>2015-08-26 15:28:02 -0700</date>
            <delta_ts>2015-08-26 17:36:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150826152751.patch</filename>
            <type>text/plain</type>
            <size>179678</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAwZDNiMWIzMjNjYzA4Mjk0NmVmNjJhYjFjMmI3YTE2OGVmMmQ2Li5jY2YzNzJlM2Y2N2Y3MTVj
MjI1MGRiY2IzNDFkZmVlODMzNDk5YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDUgQEAKKzIwMTUtMDgtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExv
YWRlcidzIHJlYWR5IC8gbGluayBwaGFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAg
KHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzLnJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlLnRo
aXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAgICAgICAgKHJlcXVlc3RMaW5rKToKKyAg
ICAgICAgKHJlcXVlc3RSZWFkeSk6CisgICAgICAgIChsaW5rKToKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppbmZlcnJlZE5hbWUpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJl
cGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJp
bGl0eUxldmVsSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6RXZhbENvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZVR5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlVHlwZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZp
c2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseVNv
dXJjZVVSTCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1l
KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUpOgorICAgICAgICAoSlNDOjpTdGFja1Zp
c2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUpOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6
OkZyYW1lOjpzb3VyY2VVUkwpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5o
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fc2Nv
cGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBv
aW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0
b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAo
SlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgorICAgICAgICAoSlNDOjpNb2R1
bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXpl
cjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmg6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUltcG9ydENsYXVzZUl0ZW0pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VFeHBvcnREZWNsYXJhdGlvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAg
ICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZUxleGljYWxWYXJpYWJsZSk6CisgICAgICAgICogcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5Ojppc0ltcG9ydGVkTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5OjpzZXRJc0ltcG9ydGVkTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudDo6ZmluZCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUu
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAg
ICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpT
Qzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6
ZHVtcCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4
ZWN1dGFibGVCYXNlOjppc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTY3JpcHRF
eGVjdXRhYmxlOjp1bmxpbmtDYWxscyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxl
RW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9k
dWxlQ2FsbGVlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVs
ZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVDYWxsZWUuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaC4KKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVDYWxsZWU6OkpTTW9kdWxlQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVDYWxsZWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVD
YWxsZWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVDYWxsZWUu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlQ2FsbGVlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUNhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVDYWxsZWU6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKiBydW50aW1l
L0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVF
bnZpcm9ubWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlND
OjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlND
OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoSlNDOjppZGVudGlmaWVyVG9KU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6Z2V0RXhwb3J0ZWROYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpn
ZXRNb2R1bGVOYW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpzb3VyY2VDb2RlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6Om1vZHVsZUtleSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpleHBv
cnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmRlY2xhcmVkVmFyaWFi
bGVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmxleGljYWxWYXJpYWJsZXMpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5Ojppc0VtcHR5VmFsdWUpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjptb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpKU01vZHVsZVJlY29yZCk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6
CisgICAgICAgIChKU0M6OnJlc29sdmVUeXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU1Nj
b3BlLmg6CisgICAgICAgIChKU0M6Om1ha2VUeXBlKToKKyAgICAgICAgKEpTQzo6bmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICog
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2Fk
ZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmpl
Y3RFdmFsdWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6cmVxdWVzdElu
c3RhbnRpYXRlQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDE1LTA4LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtFUzZdIFJldHVybiBKU0ludGVybmFsUHJvbWlzZSBhcyByZXN1bHQgb2YgZXZhbHVhdGVN
b2R1bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzhkYzBiNjFiNmZhODJiODFh
NjEzYzA2MThkZmFhMWE5ZjFiNzJmNC4uMmE3MWZmM2EzY2VlMmI4MzcxYjA0ZDdjMzY0ZWUxYjAx
NDBhZmJhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OTcsNiArMTY5Nywx
MSBAQAogCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3
NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFx
dWVKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9
OwogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8q
IFZNLmNwcCAqLzsgfTsKKwkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRl
ck9iamVjdC5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLzsg
fTsKKwkJRTMwNjc3OUIxQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDY3Nzk5MUI4RTRC
OEYwMDNGODdGMCAvKiBKU01vZHVsZUNhbGxlZS5jcHAgKi87IH07CisJCUUzMDY3NzlDMUI4RTRC
OEYwMDNGODdGMCAvKiBKU01vZHVsZUNhbGxlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwNjc3OUExQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxl
Q2FsbGVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJF
MUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87IH07CisJ
CUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhB
RUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUw
ODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
Y3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQx
QjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTE3MTksNiArMTcy
NCw4IEBACiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjND
RUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUz
OURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzRDIz
OUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKKwkJRTNEMjM5QzkxQjgyOUMx
QzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICov
OyB9OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4
NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNF
MDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291
cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0zNTQ3LDYgKzM1NTQsMTEgQEAKIAkJRTE3
ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBW
TS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlm
aWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAv
KiBWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBw
YXRoID0gVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNh
dGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjc3OTcxQjhCQzZGNTAw
M0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IE1vZHVsZUxvYWRlck9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMwNjc3OTkxQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlQ2FsbGVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNjc3OUExQjhFNEI4RjAwM0Y4N0Yw
IC8qIEpTTW9kdWxlQ2FsbGVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TW9kdWxlQ2FsbGVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJFMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZsZWN0T2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTcxLDYgKzM1ODMsOCBAQAogCQlFMzk2M0NF
QzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVs
ZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VG
ODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNC
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0
ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NTgsNiArNDc3MiwxMiBAQAog
CQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhG
MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4
MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCUUzMDY3Nzk5MUI4RTRC
OEYwMDNGODdGMCAvKiBKU01vZHVsZUNhbGxlZS5jcHAgKi8sCisJCQkJRTMwNjc3OUExQjhFNEI4
RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmggKi8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCisJCQkJRTMxOENCQkUxQjhB
RUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4
Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLywKIAkJ
CQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJ
CUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUE3
MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLywKQEAgLTU3NzYs
NiArNTc5Niw3IEBACiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYg
LyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUIxQjY1RDlB
MzAwOURCMUVGIC8qIEl0ZXJhdG9yLnByb3RvdHlwZS5qcyAqLywKKwkJCQlFMzA2Nzc5NzFCOEJD
NkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovLAogCQkJCTdDRjlCQzVDMUI2
NUQ5QjEwMDlEQjFFRiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFC
NjVEOUIxMDA5REIxRUYgLyogT3BlcmF0aW9ucy5Qcm9taXNlLmpzICovLAogCQkJCTdDRkJBQzFD
MThCNTM1RTUwMEQwMDc1MCAvKiBQcm9taXNlLnByb3RvdHlwZS5qcyAqLywKQEAgLTYxMTAsNiAr
NjEzMSw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVF
MjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVk
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBK
U1dlYWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAv
KiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjE3
LDYgKzYyMzksNyBAQAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25W
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBG
VExDb21waWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU5NUY3QTE4QjU2OTQ3MDBCNTMxRkIg
LyogRlRMRGF0YVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDY3NzlDMUI4RTRCOEYw
MDNGODdGMCAvKiBKU01vZHVsZUNhbGxlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFDOTIyQkMx
OEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVu
dEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLApAQCAtNjI0Miw2ICs2MjY1LDcgQEAKIAkJCQk3
QjAyNDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dl
cmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjky
OUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhB
MzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjM1QkRFMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsYXRpb25JbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTcwMTksNiArNzA0Myw3IEBACiAJCQlpc2EgPSBQQlhSZXNv
dXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAorCQkJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmpl
Y3QuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYwMDcyRUI2RCAvKiBm
cmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtNzM1Myw2ICs3Mzc4LDcgQEAKIAkJCQkwRjZDNzM1
MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVj
aWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNEMjM5QzgxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4
Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0MzEsNiArNzQ1Nyw3IEBACiAJCQkJMEZEMTIwMzMx
QThDODVCRDAwMEY1MjgwIC8qIEZUTEpTQ2FsbFZhcmFyZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY5RDMzOTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMzNGNTA4NDFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQg
LyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDM2
OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzQkQxQjcxQjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNl
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0OTEsNiArNzUxOCw3IEBACiAJCQkJMEY5RkI0RjQx
N0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY0RjI5REYxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50
RXN0aW1hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTcyMTFEMTkzQjlDNTkw
MDMxRjZFRCAvKiBERkdUcmFuc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMDY3NzlC
MUI4RTRCOEYwMDNGODdGMCAvKiBKU01vZHVsZUNhbGxlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkMyMENCNTE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQ0NGRTE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhy
ZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTdBMTE0NkIyOENBMDBDRjI0NDIg
LyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODA3OSw2ICs4MTA3LDcgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VT
Nl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgwODYsNiArODEx
NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNj
b25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9
IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAg
LTgwOTMsNiArODEyMyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExM
Vk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9F
UzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmls
aW5nOwogCQl9OwpAQCAtODEwMCw2ICs4MTMxLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5
MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJ
CW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODEwNyw2ICs4MTM5LDcgQEAKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBC
QzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZf
TU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MTE0LDYgKzgxNDcs
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVT
ID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpA
QCAtODEyMSw2ICs4MTU1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyog
VG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVO
QUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0g
UHJvZmlsaW5nOwogCQl9OwpAQCAtODEyOCw2ICs4MTYzLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEz
NjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsK
IAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgxNTYsNiArODE5Miw3IEBA
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29u
ZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBF
TkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODE2
Myw2ICs4MjAwLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNj
cmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9F
UzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFz
ZTsKIAkJfTsKQEAgLTgxNzEsNiArODIwOSw3IEBACiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJQlVJTERfVkFSSUFOVFMgPSBub3JtYWw7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJ
CW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODE3OCw2ICs4MjE3LDcgQEAKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1
REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODE4NSw2ICs4MjI1LDcgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7
CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC04MTkyLDYgKzgyMzMsNyBAQAog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9E
VUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgzMjMsNiArODM2
NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3Jl
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVM
RVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291
cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzMyLDYgKzgzNzUsNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQz
MEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVT
OwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3Qi
OwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9OwpAQCAt
ODM0MSw2ICs4Mzg1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2
YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAi
RGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNTAsNiArODM5NSw3IEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVf
RVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkt
SW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
IAkJCX07CkBAIC04MzU5LDYgKzg0MDUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgx
RTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RV
Q1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBE
ZWJ1ZzsKQEAgLTgzNjcsNiArODQxNCw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFF
OUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJUFJPRFVD
VF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJbmFtZSA9IFJl
bGVhc2U7CkBAIC04Mzc1LDYgKzg0MjMsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgx
RTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RV
Q1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBQ
cm9kdWN0aW9uOwpAQCAtODM5OCw2ICs4NDQ3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3
MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07
CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpAQCAtODQwNSw2ICs4NDU1LDcgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
IjsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwpAQCAtODQyNyw2ICs4NDc4LDcgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCmluZGV4IDY1YTA1
Mzk2NGRmNDg3NzM1ZTY3NWY0YjkxNzgzNjgxMGNkZDlhMzIuLjgzOTA4NmUwYzI3OGJjMjFhNWMy
ODljMDVmMmRiNWM3NjlmYWUxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwpAQCAtMTkyLDcgKzE5Miw3IEBAIGZ1bmN0
aW9uIGNvbW1pdEluc3RhbnRpYXRlZChlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwgc291cmNlKQog
ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKIAogICAgIHZh
ciBkZXBlbmRlbmNpZXMgPSBbXTsKLSAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbmV3IEBNYXAo
KTsKKyAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbW9kdWxlUmVjb3JkLmRlcGVuZGVuY2llc01h
cDsKICAgICBtb2R1bGVSZWNvcmQucmVnaXN0cnlFbnRyeSA9IGVudHJ5OwogICAgIHZhciByZXF1
ZXN0ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CiAgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoOyBpIDwgbGVu
Z3RoOyArK2kpIHsKQEAgLTM0OSw3ICszNDksNyBAQCBmdW5jdGlvbiByZXF1ZXN0UmVzb2x2ZURl
cGVuZGVuY2llcyhrZXkpCiAgICAgdmFyIHJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlID0gdGhp
cy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgewogICAgICAg
ICB2YXIgZGVwTG9hZHMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGVu
dHJ5LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
dmFyIHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAgICAgICAgICBsZXQgcGFpciA9
IGVudHJ5LmRlcGVuZGVuY2llc1tpXTsKIAogICAgICAgICAgICAgLy8gSG9vayBwb2ludC4KICAg
ICAgICAgICAgIC8vIDEuIExvYWRlci5yZXNvbHZlLgpAQCAtMzYxLDE2ICszNjEsMjUgQEAgZnVu
Y3Rpb24gcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KQogCiAgICAgICAgICAgICAgICAg
Ly8gUmVjdXJzaXZlIHJlc29sdmluZy4gVGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIGVudHJ5IGlz
IGJlaW5nIHJlc29sdmVkIG9yIGFscmVhZHkgcmVzb2x2ZWQuCiAgICAgICAgICAgICAgICAgLy8g
U3RvcCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAg
Ly8gQnV0IHRvIHJldHJpZXZlIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIHJlY29yZCBjb3JyZWN0
bHksCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgaW5zdGFudGlh
dGlvbiBmb3IgdGhlIGRlcGVuZGVudCBtb2R1bGUuCisgICAgICAgICAgICAgICAgLy8gRm9yIGV4
YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRoZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2aW5nIHRo
ZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgLy8gQnV0IHRoZSBtb2R1bGUgbWF5IG9y
IG1heSBub3QgcmVhY2ggdGhlIGluc3RhbnRpYXRpb24gcGhhc2UgaW4gdGhlIGxvYWRlcidzIHBp
cGVsaW5lLgorICAgICAgICAgICAgICAgIC8vIElmIHdlIHdhaXQgZm9yIHRoZSBSZXNvbHZlRGVw
ZW5kZW5jaWVzIGZvciB0aGlzIG1vZHVsZSwgaXQgY29uc3RydWN0IHRoZSBjaXJjdWxhciBwcm9t
aXNlIGNoYWluIGFuZAorICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRoZSBQcm9taXNl
cyBydW50aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUs
IGluc3RlYWQgb2Ygd2FpdGluZworICAgICAgICAgICAgICAgIC8vIHRoZSBSZXNvbHZlRGVwZW5k
ZW5jaWVzIGZvciB0aGlzIG1vZHVsZSwgd2UganVzdCB3YWl0IEluc3RhbnRpYXRlIGZvciB0aGlz
LgogICAgICAgICAgICAgICAgIGlmIChkZXBFbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBkZXBFbnRyeS5tb2R1bGU7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBkZXBFbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGRlcEVudHJ5Lmluc3RhbnRpYXRlLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RSZXNvbHZl
RGVwZW5kZW5jaWVzKGRlcEtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRoZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVzdEluc3RhbnRpYXRlQWxs
IHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aAogICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVn
aXN0cnkgZW50cnkuCiAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93
aGF0d2cvbG9hZGVyL3B1bGwvNjYKLSAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGVu
dHJ5Lm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CkBAIC0zOTYsNiArNDA1LDkwIEBAIGZ1bmN0aW9u
IHJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpCiAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFJlc29s
dmVEZXBlbmRlbmNpZXMoa2V5KTsKIH0KIAorZnVuY3Rpb24gcmVxdWVzdExpbmsoa2V5KQorewor
ICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtbGluaworCisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVk
KGtleSk7CisgICAgaWYgKGVudHJ5LnN0YXRlID4gdGhpcy5MaW5rKSB7CisgICAgICAgIHZhciBk
ZWZlcnJlZCA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShASW50ZXJuYWxQcm9taXNlKTsKKyAgICAg
ICAgZGVmZXJyZWQuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCBlbnRyeS5tb2R1bGUpOworICAg
ICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CisgICAgfQorCisgICAgdmFyIGxvYWRlciA9
IHRoaXM7CisgICAgcmV0dXJuIHRoaXMucmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSkudGhlbihm
dW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgbG9hZGVyLmxpbmsoZW50cnkpOworICAgICAgICBy
ZXR1cm4gZW50cnk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJlcXVlc3RSZWFkeShrZXkpCit7
CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1yZWFkeQor
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgcmV0dXJu
IHRoaXMucmVxdWVzdExpbmsoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICBs
b2FkZXIubW9kdWxlRXZhbHVhdGlvbihlbnRyeS5tb2R1bGUpOworICAgIH0pOworfQorCisvLyBM
aW5raW5nIHNlbWFudGljcy4KKworZnVuY3Rpb24gbGluayhlbnRyeSkKK3sKKyAgICAvLyBodHRw
czovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNsaW5rCisKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICAvLyBGSVhNRTogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9w
dGlvbmFsSW5zdGFuY2UuCisgICAgLy8gU28gTGluaydzIHN0ZXAgMyBpcyBza2lwcGVkLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNzEKKworICAg
IGlmIChlbnRyeS5zdGF0ZSA9PT0gdGhpcy5SZWFkeSkKKyAgICAgICAgcmV0dXJuOworICAgIGVu
dHJ5LnN0YXRlID0gdGhpcy5SZWFkeTsKKworICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBhbHJlYWR5
IGhhdmUgdGhlICJkZXBlbmRlbmNpZXMiIGZpZWxkLAorICAgIC8vIHdlIGNhbiBjYWxsIG1vZHVs
ZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IG9yZGVyCisgICAgLy8g
d2l0aG91dCBjb25zdHJ1Y3RpbmcgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYnkgY2FsbGluZyBkZXBl
bmRlbmN5R3JhcGguCisgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsK
KyAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwYWlyID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAg
ICB0aGlzLmxpbmsocGFpci52YWx1ZS5yZWdpc3RyeUVudHJ5KTsKKyAgICB9CisKKyAgICB0aGlz
Lm1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUpOworfQorCisvLyBN
b2R1bGUgc2VtYW50aWNzLgorCitmdW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29y
ZCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KG1vZHVsZVJlY29yZC5ldmFsdWF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtb2R1bGVSZWNv
cmQuZXZhbHVhdGVkID0gdHJ1ZTsKKworICAgIHZhciBlbnRyeSA9IG1vZHVsZVJlY29yZC5yZWdp
c3RyeUVudHJ5OworCisgICAgLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBbW1JlcXVlc3RlZE1vZHVs
ZXNdXSBpcyBjbG9uZWQgaW50byBlbnRyeS5kZXBlbmRlbmNpZXMuCisgICAgdmFyIGRlcGVuZGVu
Y2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0g
ZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwYWly
ID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAgICB2YXIgcmVxdWlyZWRNb2R1bGVSZWNvcmQgPSBw
YWlyLnZhbHVlOworICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24ocmVxdWlyZWRNb2R1bGVS
ZWNvcmQpOworICAgIH0KKyAgICB0aGlzLmV2YWx1YXRlKG1vZHVsZVJlY29yZCk7Cit9CisKIGZ1
bmN0aW9uIGxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIpCiB7CiAgICAgInVzZSBzdHJp
Y3QiOwpAQCAtNDA2LDExICs0OTksNyBAQCBmdW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUs
IHJlZmVycmVyKQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVu
aXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8gRm9yIGV4
YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291
cmNlLgogICAgIHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgcmVmZXJyZXIpLnRoZW4o
ZnVuY3Rpb24gKGtleSkgewotICAgICAgICAvLyBGSVhNRTogTm93LCB3ZSBkb24ndCBpbXBsZW1l
bnQgdGhlIGxpbmtpbmcgcGhhc2UgeWV0LgotICAgICAgICAvLyBTbyBoZXJlLCB3ZSBqdXN0IGNh
bGwgcmVxdWVzdEluc3RhbnRpYXRlQWxsIHRvIG9ubHkgcGVyZm9ybSB0aGUgbW9kdWxlIGxvYWRp
bmcuCi0gICAgICAgIC8vIEF0IGxhc3QsIGl0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHJlcXVl
c3RSZWFkeS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0ODE3MgotICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChr
ZXkpOworICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RSZWFkeShrZXkpOwogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KaW5kZXggNGU1YTk2YzM4ZWQ4NjI3NzQ0MmNhMjYxOWM1YzhjYWMyOWNlODJhYS4uMDIwZWMy
NDg5ZWZlM2EzMzI5ODViNzA5MTBkZWNjZjc4ZDQ5YTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTU3LDYgKzE1Nyw3IEBA
CiAgICAgICAgICJieXRlY29kZXMiIDogWwogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRf
cHJvZ3JhbV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2V2YWxf
cHJvbG9ndWUiIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9tb2R1bGVfcHJvZ3Jh
bV9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkMDMxZWE5MTJmY2U3ZTU0MTZmNzZk
NGM2NjYzYjMyZTEyNzg2NGEzLi42OTc5MzIyODg4MGQ3YmVmMjk3NWJkNmFhNzg2MWNlZTlmNmVk
NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJK
U01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAg
LTg3LDYgKzg4LDggQEAgQ1N0cmluZyBDb2RlQmxvY2s6OmluZmVycmVkTmFtZSgpIGNvbnN0CiAg
ICAgICAgIHJldHVybiAiPGV2YWw+IjsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAg
cmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmlu
ZmVycmVkTmFtZSgpLnV0ZjgoKTsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAgICAgIHJldHVy
biAiPG1vZHVsZT4iOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIHJl
dHVybiBDU3RyaW5nKCIiLCAwKTsKQEAgLTE5NjgsOSArMTk3MSwxNCBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RS
ZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2Nv
cGUsIGlkZW50LCBHZXQsIHR5cGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51
Lm9wZXJhbmQgPSBvcC50eXBlOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51Lm9w
ZXJhbmQgPSBvcC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQp
Ci0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgq
dm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxl
KCkpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG9wLmxleGljYWxFbnZpcm9u
bWVudCkgeworICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikgeworICAg
ICAgICAgICAgICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQgbW9kdWxlIGVudmlyb25tZW50IHN0
cm9uZ2x5IHJlZmVyZW5jZWQuCisgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0YW50KG9wLmxl
eGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
Nl0udS5qc0NlbGwuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9u
bWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwg
b3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpKTsKKyAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gbnVsbHB0
cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xOTk1LDcgKzIwMDMsMTIgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50ID0gaWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgUmVzb2x2ZU9w
IG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIG1vZGVBbmRUeXBlLnR5cGUo
KSk7CiAKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2
ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOworICAg
ICAgICAgICAgLy8gTW9kdWxlVmFyIGNhbiBnZXQgdGhlIHZhcmlhYmxlIGFzIHRoZSBzYW1lIHRv
IENsb3N1cmVWYXIuCisgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCisgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFu
ZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBDbG9zdXJlVmFyKS5vcGVyYW5kKCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQg
PSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5vcGVyYW5k
KCk7CisKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IEdsb2JhbFZhciB8fCBvcC50eXBlID09
IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCiAgICAgICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyA1XS51LndhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAg
ICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtMzA0NCw2ICszMDU3LDExIEBAIENvZGVC
bG9jayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIHJldHVybiBqc0Nhc3Q8
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9jaygpOwogfQog
CitDb2RlQmxvY2sqIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50KCkKK3sKKyAg
ICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5jb2RlQmxvY2soKTsKK30KKwogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2NrOjpyZXBsYWNl
bWVudCgpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0
YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0zMDU5LDYgKzMwNzcsMTEgQEAgREZHOjpDYXBhYmls
aXR5TGV2ZWwgUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogICAg
IHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9CiAKK0RGRzo6Q2Fw
YWJpbGl0eUxldmVsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVy
bmFsKCkKK3sKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVsKHRoaXMpOwor
fQorCiBERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJ
bnRlcm5hbCgpCiB7CiAgICAgcmV0dXJuIERGRzo6ZXZhbENhcGFiaWxpdHlMZXZlbCh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCAzODE4ODBk
NjNlZGEyNjU3MGE1N2IzYTEzNmM1YThiODU4Zjg2MzMzLi5iNjQ2MDk0MGZhZWEzMTk4YWM2NGU1
MWM5MmNjNWQyZjg1YjUwZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRp
b247CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9k
ZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKQEAg
LTEwOTIsMTAgKzEwOTMsMjkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9i
YWxDb2RlQmxvY2sgewogI2VuZGlmCiB9OwogCitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
IDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CitwdWJsaWM6CisgICAgTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2smIG90aGVy
KQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAg
IHsKKyAgICB9CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAg
ICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2Nr
LCBzY29wZSwgc291cmNlUHJvdmlkZXIsIDAsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICB7
CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIENvZGVC
bG9jayogcmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIERGRzo6Q2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisK
IGNsYXNzIEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKIHB1YmxpYzoK
ICAgICBFdmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9jayYgb3Ro
ZXIpCi0gICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikKKyAgICAg
ICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikKICAgICB7CiAgICAg
fQogICAgICAgICAKQEAgLTExMjAsNyArMTE0MCw3IEBAIGNsYXNzIEV2YWxDb2RlQmxvY2sgOiBw
dWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrIDogcHVibGlj
IENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRnVuY3Rpb25Db2RlQmxvY2soQ29weVBhcnNlZEJs
b2NrVGFnLCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCi0gICAgOiBDb2RlQmxvY2soQ29weVBh
cnNlZEJsb2NrLCBvdGhlcikKKyAgICAgICAgOiBDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBv
dGhlcikKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZVR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVUeXBlLmNwcAppbmRleCA4YjJjYWQ1NmFiNjhhZjEyYjMyYmYyOWNkODQwYWMwYWE3MTgzZDQ4
Li4wYzcwNDNkZmEzZWFmZmU5Zjk0NmFkZDkxNzkzZmU2MjU3YWFlNDI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKQEAgLTQyLDYgKzQyLDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29kZVR5cGUgY29kZVR5cGUp
CiAgICAgY2FzZSBKU0M6OkZ1bmN0aW9uQ29kZToKICAgICAgICAgb3V0LnByaW50KCJGdW5jdGlv
biIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6Ok1vZHVsZUNvZGU6CisgICAgICAg
IG91dC5wcmludCgiTW9kdWxlIik7CisgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAg
ICAgICBDUkFTSCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlVHlwZS5oCmluZGV4IGI4ZTEwN2RjZjZiNjcwY2Q4MjgzZWJmYTUzNTFmN2M2MzQy
ZjAyM2MuLjk5NDFkNTE0Y2RkMGM1ZmZlMzBmMWE4ODRmM2JhNTRjNmYwMGY4OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUs
IEZ1bmN0aW9uQ29kZSB9OworZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBG
dW5jdGlvbkNvZGUsIE1vZHVsZUNvZGUgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CmluZGV4IDU3NGIxZTQ4MjM4OThiMzgwMTRkNTE4MjllYWI3ZjcxMzA5ZGJiMGEuLjQ2MDk1ZDg0
YmNjYTYwNjc1ZmVmZGU3ZjQwMDI3NTJkZDlhZWI1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDcsNiArNDcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZENvZGVCbG9jazo6
c19pbmZvID0geyAiVW5saW5rZWRDb2RlQmxvY2siLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFVubGlua2VkQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkR2xvYmFsQ29k
ZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEdsb2JhbENvZGVCbG9jayIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRHbG9iYWxDb2RlQmxvY2spIH07CiBj
b25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykgfTsKK2NvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlu
a2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2sp
IH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0g
eyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIApAQCAtODksNyArOTAs
NiBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8VW5saW5rZWRDb2RlQmxvY2sqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
eW1ib2xUYWJsZSk7CiAgICAgZm9yIChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0ZXJhdG9y
IHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25EZWNscy5iZWdpbigpLCBlbmQgPSB0aGlzT2Jq
ZWN0LT5tX2Z1bmN0aW9uRGVjbHMuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQogICAgICAgICB2
aXNpdG9yLmFwcGVuZChwdHIpOwogICAgIGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOjpp
dGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYmVnaW4oKSwgZW5kID0g
dGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikKQEAg
LTI5Miw2ICsyOTIsMTQgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQogCit2b2lkIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdGhpc09i
amVjdCA9IGpzQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7Cit9CisKIFVubGlua2VkQ29kZUJsb2NrOjp+
VW5saW5rZWRDb2RlQmxvY2soKQogewogfQpAQCAtMzAxLDYgKzMwOSwxMSBAQCB2b2lkIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAganNDYXN0PFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
KCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
Kj4oY2VsbCktPn5VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKTsKK30KKwogdm9pZCBV
bmxpbmtlZEV2YWxDb2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAgIGpzQ2Fz
dDxVbmxpbmtlZEV2YWxDb2RlQmxvY2sqPihjZWxsKS0+flVubGlua2VkRXZhbENvZGVCbG9jaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAppbmRleCAzMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1M2ZmMWI2YjQ2Li44OGNl
MjMxM2NhY2EwODgyZDg2YzFmMjg3NzBhM2EwOTg3MDZiNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzYwLDkgKzM2
MCw2IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgICAgIGlmIChjb2RlVHlwZSgpID09IEdsb2JhbENvZGUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBTeW1ib2xU
YWJsZTo6Y3JlYXRlKHZtKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNDEyLDggKzQwOSw2IEBA
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgRnVuY3Rpb25F
eHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25W
ZWN0b3IgbV9mdW5jdGlvbkV4cHJzOwogCi0gICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBt
X3N5bWJvbFRhYmxlOwotCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zOwogCiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQpAQCAtNTE0LDYgKzUw
OSw0OSBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5s
aW5rZWRHbG9iYWxDb2RlQmxvY2sgewogICAgIERFQ0xBUkVfSU5GTzsKIH07CiAKK2NsYXNzIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2Jh
bENvZGVCbG9jayB7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7CisgICAg
c3RhdGljIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2bSwgY29u
c3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisgICAgeworICAgICAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayh2bSwgdm0tPnVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVj
dHVyZS5nZXQoKSwgaW5mbyk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0p
OworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCitwdWJsaWM6CisgICAgdHlwZWRl
ZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1v
cnRhbDsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUoKSB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CisKK3By
aXZhdGU6CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSwgTW9kdWxlQ29kZSwgaW5mbykKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBTeW1ib2xU
YWJsZTo6Y3JlYXRlKHZtKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxl
PiBtX3N5bWJvbFRhYmxlOworCitwdWJsaWM6CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
K307CisKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtl
ZEdsb2JhbENvZGVCbG9jayB7CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCmluZGV4IDEyYjk3OTg4YWYyNWQ4ZTIyMjg1YTg1MjU5MzVjYzYzMzAy
NTRhOTYuLjIwM2E4N2EyMTc0ODk4MTk2NGMzM2FiMWVmMWI5M2I1OGQzNGFjNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCkBAIC03MCw3ICs3MCw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSgpCiAgICAgaWYgKG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cykKICAgICAg
ICAgaW5pdGlhbGl6ZVZhcmlhYmxlKHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMp
LCBtX2FyZ3VtZW50c1JlZ2lzdGVyKTsKIAotICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5v
ZGUsIHRydWUpOworICAgIC8vIEZvciBNb2R1bGVDb2RlLCB3ZSBhbHJlYWR5IGluc3RhbnRpYXRl
ZCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSBsZXhpY2FsIHZhcmlhYmxlcy4KKyAgICBpZiAobV9j
b2RlVHlwZSAhPSBNb2R1bGVDb2RlKQorICAgICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVO
b2RlLCB0cnVlKTsKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBu
ZXdUZW1wb3JhcnkoKTsKQEAgLTUzNCw2ICs1MzYsMTQzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFs
Q29kCiAgICAgbV9URFpTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKnBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBmYWxzZSkpOwogfQogCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBEZWJ1Z2dlck1vZGUgZGVidWdn
ZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKKyAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MoT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IGRlYnVnZ2Vy
TW9kZSA9PSBEZWJ1Z2dlck9uKQorICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKE9wdGlv
bnM6OmZvcmNlUHJvZmlsZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBwcm9maWxlck1vZGUgPT0g
UHJvZmlsZXJPbikKKyAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQorICAgICwg
bV9jb2RlQmxvY2sodm0sIGNvZGVCbG9jaykKKyAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFt
ZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCisgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUpCisg
ICAgLCBtX3ZtKCZ2bSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCit7CisgICAg
QVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFy
aWFibGVzLT5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9s
aW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQorICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVs
bHB0cjsKKworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICBtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzID0gZmFsc2U7CisKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBj
b2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgc3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJp
Y3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOworICAgIHN5bWJvbFRhYmxlLT5zZXRTY29wZVR5
cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsKKworICAgIC8vIEZvciB0
aGUgZXhwb3J0ZWQgdmFyaWFibGVzLCB3ZSBhbHJlYWR5IHJlZ2lzdGVyIHRoZW0gdG8gdGhlIHN0
b3JlZCBzeW1ib2wgdGFibGUuCisgICAgLy8gRXZlbiBpZiB0aGUgdW5saW5rZWQvbGlua2VkIGNv
ZGUgYmxvY2sgaXMgcmVtb3ZlZCBhbmQgc3ltYm9sIHRhYmxlIGlzIHJlY3JlYXRlZCwKKyAgICAv
LyB0aGlzIGVuc3VyZXMgdGhlIGdlbmVyYXRlZCBzeW1ib2wgdGFibGUgaXMgYWx3YXlzIHRoZSBz
YW1lLgorCisgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gbV9zaG91bGRF
bWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOworICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29r
cyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CisgICAgaWYgKHNob3VsZENhcHR1cmVBbGxPZlRo
ZVRoaW5ncykKKyAgICAgICAgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLm1h
cmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CisKKyAgICBhdXRvIGNhcHR1cmVzID0gWyZdIChV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKSAtPiBib29sIHsKKyAgICAgICAgaWYgKCFzaG91bGRDYXB0
dXJlU29tZU9mVGhlVGhpbmdzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gbW9kdWxlUHJvZ3JhbU5vZGUtPmNhcHR1cmVzKHVpZCk7CisgICAgfTsKKyAgICBhdXRv
IGxvb2tVcFZhcktpbmQgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeSYgZW50cnkpIC0+IFZhcktpbmQgeworICAgICAgICBpZiAoZW50
cnkuaXNFeHBvcnRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZhcktpbmQ6OlNjb3BlOworICAg
ICAgICBpZiAoZW50cnkuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAgcmV0dXJu
IFZhcktpbmQ6OlNjb3BlOworICAgICAgICBpZiAoZW50cnkuaXNDYXB0dXJlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIFZhcktpbmQ6OlNjb3BlOworICAgICAgICByZXR1cm4gY2FwdHVyZXModWlk
KSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CisgICAgfTsKKworICAgIGVtaXRP
cGNvZGUob3BfZW50ZXIpOworCisgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKworICAgIG1f
Y2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKworICAgIG1fY29kZUJs
b2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCisK
KyAgICBmb3IgKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbiA6IG1vZHVsZVByb2dyYW1O
b2RlLT5mdW5jdGlvblN0YWNrKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgaXRlcmF0b3IgPSBt
b2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZmluZChmdW5jdGlvbi0+aWRlbnQo
KS5pbXBsKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyYXRvciAhPSBtb2R1bGVQcm9n
cmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZW5kKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghaXRlcmF0b3ItPnZhbHVlLmlzSW1wb3J0ZWQoKSk7CisKKyAgICAgICAgVmFyS2luZCB2YXJL
aW5kID0gbG9va1VwVmFyS2luZChpdGVyYXRvci0+a2V5LmdldCgpLCBpdGVyYXRvci0+dmFsdWUp
OworICAgICAgICBpZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkgeworICAgICAgICAgICAg
Ly8gSGVhcCBhbGxvY2F0ZWQgZnVuY3Rpb25zIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgd2hlbiB0
aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGNyZWF0ZWQuCisgICAgICAgICAgICBtX2NvZGVCbG9j
ay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gU3RhY2sgYWxsb2NhdGVkIGZ1bmN0aW9ucyBjYW4gYmUgYWxs
b2NhdGVkIHdoZW4gZXhlY3V0aW5nIHRoZSBtb2R1bGUncyBib2R5LgorICAgICAgICAgICAgbV9m
dW5jdGlvbnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9uLCBOb3Jt
YWxGdW5jdGlvblZhcmlhYmxlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOb3cgZGVj
bGFyZSBhbGwgdmFyaWFibGVzLgorCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1vZHVsZVByb2dy
YW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSkgeworICAgICAgICBBU1NFUlQoIWVudHJ5LnZhbHVl
LmlzTGV0KCkgJiYgIWVudHJ5LnZhbHVlLmlzQ29uc3QoKSk7CisgICAgICAgIGlmICghZW50cnku
dmFsdWUuaXNWYXIoKSkgLy8gVGhpcyBpcyBlaXRoZXIgYSBwYXJhbWV0ZXIgb3IgY2FsbGVlLgor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVk
KCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1wb3J0ZWROYW1lc3BhY2UoKSkgLy8gVGhlc2UgYXJlIG1h
bmFnZWQgaW4gdGhlIG90aGVyIHBoYXNlLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IC8vIFZhcmlhYmxlcyBuYW1lZCAiYXJndW1lbnRzIiBhcmUgbmV2ZXIgY29uc3QuCisgICAgICAg
IGNyZWF0ZVZhcmlhYmxlKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgZW50cnkua2V5LmdldCgp
KSwgbG9va1VwVmFyS2luZChlbnRyeS5rZXkuZ2V0KCksIGVudHJ5LnZhbHVlKSwgc3ltYm9sVGFi
bGUsIElnbm9yZUV4aXN0aW5nKTsKKyAgICB9CisKKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBl
bnZpcm9ubWVudCA9IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCk7CisKKyAg
ICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xv
Y2spOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChlbnRyeS52YWx1ZS5pc0xldCgpIHx8IGVudHJ5LnZhbHVlLmlzQ29uc3QoKSk7
CisgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LnZhbHVlLmlzVmFyKCkpOworICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0gc3ltYm9sVGFibGUtPmdldChsb2Nr
ZXIsIGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVGFibGVFbnRy
eS5pc051bGwoKSk7CisKKyAgICAgICAgICAgIC8vIEltcG9ydGVkIHZhcmlhYmxlcyBhcmUgaGFu
ZGxlZCBpbnNpZGUgdGhlIHRvcC1tb3N0IG1vZHVsZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAg
IGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1wb3J0ZWRO
YW1lc3BhY2UoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgVmFy
S2luZCB2YXJLaW5kID0gbG9va1VwVmFyS2luZChlbnRyeS5rZXkuZ2V0KCksIGVudHJ5LnZhbHVl
KTsKKyAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZzZXQ7CisgICAgICAgICAgICBpZiAodmFy
S2luZCA9PSBWYXJLaW5kOjpTY29wZSkKKyAgICAgICAgICAgICAgICB2YXJPZmZzZXQgPSBWYXJP
ZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKSk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyS2luZCA9PSBWYXJLaW5kOjpT
dGFjayk7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogbG9jYWwgPSBuZXdCbG9ja1Njb3Bl
VmFyaWFibGUoKTsKKyAgICAgICAgICAgICAgICBsb2NhbC0+cmVmKCk7CisgICAgICAgICAgICAg
ICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KGxvY2FsLT52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zm
c2V0LCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBSZWFkT25seSA6IDApOworICAgICAgICAgICAg
c3ltYm9sVGFibGUtPmFkZChsb2NrZXIsIGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRTeW1ib2xUYWJsZSA9IG51
bGxwdHI7CisgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQorICAgICAgICBjb25zdGFudFN5bWJv
bFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJsZSk7CisgICAgZWxzZQorICAgICAg
ICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJsZS0+Y2xv
bmVTY29wZVBhcnQoKm1fdm0pKTsKKworICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGVudmlyb25tZW50LCB0cnVlKSk7CisgICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFwcGVuZChT
eW1ib2xUYWJsZVN0YWNrRW50cnkgeyBTdHJvbmc8U3ltYm9sVGFibGU+KCptX3ZtLCBzeW1ib2xU
YWJsZSksIG1fc2NvcGVSZWdpc3RlciwgZmFsc2UsIGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4
KCkgfSk7CisKKyAgICAvLyBQcmVmaWxsIHN0YWNrIHZhcmlhYmxlcyB3aXRoIHRoZSBURFogZW1w
dHkgdmFsdWUuCisgICAgLy8gU2NvcGUgdmFyaWFibGVzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgdG8g
dGhlIFREWiBlbXB0eSB2YWx1ZSB3aGVuIEpTTGV4aWNhbEVudmlyb25tZW50IGlzIGFsbG9jYXRl
ZC4KKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQpIHsKKyAgICAgICAgLy8gSW1w
b3J0ZWQgdmFyaWFibGVzIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkLgorICAgICAgICBpZiAoZW50
cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1ZS5pc0ltcG9ydGVkTmFtZXNwYWNl
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5
bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KGVudHJ5LmtleS5nZXQoKSk7CisgICAg
ICAgIEFTU0VSVCghc3ltYm9sVGFibGVFbnRyeS5pc051bGwoKSk7CisgICAgICAgIFZhck9mZnNl
dCBvZmZzZXQgPSBzeW1ib2xUYWJsZUVudHJ5LnZhck9mZnNldCgpOworICAgICAgICBpZiAob2Zm
c2V0LmlzU2NvcGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQob2Zm
c2V0LmlzU3RhY2soKSk7CisgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmcmVnaXN0ZXJGb3Io
b2Zmc2V0LnN0YWNrT2Zmc2V0KCkpKTsKKyAgICB9Cit9CisKIEJ5dGVjb2RlR2VuZXJhdG9yOjp+
Qnl0ZWNvZGVHZW5lcmF0b3IoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ3ZjFiMWY3NTQzMTBl
ZDk3YzAyYzlmMzM0YmExNzYzMDRmOGNiYTIuLmYzZDRiZTM4ZTM3OGRkY2FjMzJjY2EyMWI5YzEy
NWRiOWNkYWJmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTI2OCw2ICsyNjgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50Kik7CiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVu
Y3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAgICAgICAgIEJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBEZWJ1Z2dl
ck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3IoKTsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKaW5kZXggNDFhZTdmZTFkZDJmNTczNDg1NGY5NTAwNGFiY2UwMjRiNjQyNzQx
OS4uZTI5NjdmOGE5YjJlOGNhZWNmMjg5ZTU3M2QzZmI2ZTQ5ODM1MmFlZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAt
Mjg4NCw4ICsyODg0LDE3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIE1vZHVsZVByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LXZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKQordm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogeworICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRP
ZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZHN0UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGRzdFJlZ2lzdGVyLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOworICAgIGVtaXRT
dGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CisKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgbGFzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RW5kKGRz
dFJlZ2lzdGVyLmdldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMDQ2LDMwICszMDU1
LDM3IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIHZvaWQgSW1wb3J0RGVjbGFyYXRpb25O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKIHsKKyAg
ICAvLyBEbyBub3RoaW5nIGF0IHRoZSBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKIHsKKyAgICAvLyBEbyBub3RoaW5nIGF0IHRoZSBy
dW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0RGVm
YXVsdERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0RGVmYXVs
dERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCopCit2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgQVNT
RVJUKG1fZGVjbGFyYXRpb24pOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZGVjbGFy
YXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0TG9j
YWxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0TG9jYWxE
ZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKQordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBBU1NFUlQo
bV9kZWNsYXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNsYXJhdGlv
bik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnROYW1lZERl
Y2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBFeHBvcnROYW1lZERlY2xh
cmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCop
CiB7CisgICAgLy8gRG8gbm90aGluZyBhdCB0aGUgcnVudGltZS4KIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCA1MzNlMDk3MzNjMzk0ZmNhNWE5ODFiMTAwOTRhM2UzMjVjYzM5YWIzLi5h
NWZlNDk2MGMzNTYzYTc0ZGRkYmM2MWFjODc0MjFkYWNlMDkxYWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC0zNzg5LDYgKzM3OTAsMTIgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Mp
CiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0RGlyZWN0KG1faW5s
aW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIE1vZHVsZVZhcjogeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYWxyZWFkeSBz
dHJvbmdseSByZWZlcmVuY2VkIGJ5IHRoZSBDb2RlQmxvY2suCisgICAgICAgICAgICAgICAgSlNN
b2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZp
cm9ubWVudCo+KGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudChtb2R1bGVF
bnZpcm9ubWVudCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVW
YXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7
CkBAIC0zOTU4LDYgKzM5NjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdldENsb3N1cmVW
YXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBzY29wZU5vZGUpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9k
dWxlVmFyOgogICAgICAgICAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00MDQy
LDYgKzQwNTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2FzZSBEeW5h
bWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYzM0YTY2NWJlMzBkYjI5ZTBkYWRlM2M3ZDhhNTNh
NDdhMGY1ZjcyLi5jNWQyMWQwMmJhMzJkOGQwNWY0Y2U3NzNiNTdjMGVkMjY3OTM3ODE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
QEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNs
dWRlICJKU01vZHVsZUNhbGxlZS5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNs
dWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC05Nyw2ICs5
OCw3IEBAIFN0cmluZyBTdGFja0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCgpIGNvbnN0CiAgICAg
CiAgICAgc3dpdGNoIChjb2RlVHlwZSkgewogICAgIGNhc2UgU3RhY2tGcmFtZUV2YWxDb2RlOgor
ICAgIGNhc2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rp
b25Db2RlOgogICAgIGNhc2UgU3RhY2tGcmFtZUdsb2JhbENvZGU6CiAgICAgICAgIGlmICghc291
cmNlVVJMLmlzRW1wdHkoKSkKQEAgLTExOCw2ICsxMjAsOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6
ZnJpZW5kbHlGdW5jdGlvbk5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIGNvbnN0CiAgICAgY2Fz
ZSBTdGFja0ZyYW1lRXZhbENvZGU6CiAgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNvZGUiOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgorICAgICAgICB0
cmFjZUxpbmUgPSAibW9kdWxlIGNvZGUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YWNr
RnJhbWVOYXRpdmVDb2RlOgogICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VM
aW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSwgc3RhY2tGcmFtZUNhbGxl
ZSkuaW1wbCgpOwpAQCAtNDUxLDYgKzQ1Niw4IEBAIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUg
Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKICAgICBzd2l0Y2gg
KHZpc2l0b3ItPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkV2
YWw6CiAgICAgICAgIHJldHVybiBTdGFja0ZyYW1lRXZhbENvZGU7CisgICAgY2FzZSBTdGFja1Zp
c2l0b3I6OkZyYW1lOjpNb2R1bGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lTW9kdWxlQ29k
ZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkZ1bmN0aW9uOgogICAgICAgICByZXR1
cm4gU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6
Okdsb2JhbDoKQEAgLTExNzYsNiArMTE4Myw1NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQog
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBKU1Njb3BlKiBzY29w
ZSkKK3sKKyAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgU2FtcGxpbmdTY29wZSBzYW1w
bGluZ1Njb3BlKHRoaXMpOworCisgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUt
PnZtKCkpOworICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdm0uaXND
b2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdBUElMb2NrKCkpOworICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOworCisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3Bl
LT5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCF2bS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KSk7CisKKyAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbihjYWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CisgICAg
aWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9y
KSk7CisgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
Y29kZUJsb2NrKCk7CisKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hk
b2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkpCisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKworICAgIC8v
IFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVu
dC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJh
bWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTTW9kdWxlQ2FsbGVlOjpj
cmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSwgc2NvcGUsIG1vZHVsZVJlY29yZCksIGpz
VW5kZWZpbmVkKCksIDEpOworCisgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZt
LmVuYWJsZWRQcm9maWxlcigpKQorICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZy
YW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4
ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKKyAg
ICBKU1ZhbHVlIHJlc3VsdDsKKyAgICB7CisgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29y
ZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IGV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Cisg
ICAgfQorCisgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9m
aWxlcigpKQorICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFi
bGUtPnNvdXJjZVVSTCgpLCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3Rh
cnRDb2x1bW4oKSk7CisKKyAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOworfQorCiBO
RVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IERlYnVnSG9va0lEIGRlYnVnSG9va0lEKQogewogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNh
bGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCAxMzJjOTVkMTdm
NGUxMDliYTM3YmJjYjAxODcyNzMyYjJmOTUxMTZmLi45YjZiNDA0ODU3ZWJhNThlYmRjNTRkODRj
OWRhMjNkN2EzZTdlYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNTQsOCArNTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworICAgIGNs
YXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNs
YXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU2FtcGxpbmdUb29sOwpAQCAtNzYsNiArNzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CiAgICAgICAgIFN0
YWNrRnJhbWVHbG9iYWxDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAg
IFN0YWNrRnJhbWVNb2R1bGVDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAog
ICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQogICAgIH07CkBAIC0yMTIsNiArMjE1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiwg
SlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0
cnVjdChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNvbnN0
IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNTY29wZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU01vZHVsZVJlY29yZCosIEpTU2NvcGUqKTsK
IAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiom
LCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBh
cmdjKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IGExZTlmMTJiMzE2MTA5Y2QwYzUwODE1YjE1ZTEwN2Nk
ZjU0NDY4MzYuLjg3YmVjZDUyZTRiMWIyODE2NDljMjdlM2ZiZWE4MjRmMzBlNGE0NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
CkBAIC0xODEsNiArMTgxLDggQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3RhY2tW
aXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogICAgIHN3aXRjaCAoY29kZUJsb2NrKCkt
PmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICByZXR1cm4gQ29kZVR5
cGU6OkV2YWw7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICByZXR1cm4gQ29kZVR5cGU6
Ok1vZHVsZTsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIENvZGVUeXBl
OjpGdW5jdGlvbjsKICAgICBjYXNlIEdsb2JhbENvZGU6CkBAIC0xOTksNiArMjAxLDkgQEAgU3Ry
aW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpCiAgICAgY2FzZSBDb2RlVHlw
ZTo6RXZhbDoKICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJldmFsIGNvZGUiKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgorICAgICAgICB0cmFj
ZUxpbmUgPSBBU0NJSUxpdGVyYWwoIm1vZHVsZSBjb2RlIik7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAgICAg
IHRyYWNlTGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUoKSwgY2FsbGVl
KS5pbXBsKCk7CkBAIC0yMTksNiArMjI0LDcgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6
OnNvdXJjZVVSTCgpCiAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKCkpIHsKICAgICBjYXNlIENvZGVU
eXBlOjpFdmFsOgorICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKICAgICBjYXNlIENvZGVUeXBl
OjpGdW5jdGlvbjoKICAgICBjYXNlIENvZGVUeXBlOjpHbG9iYWw6IHsKICAgICAgICAgU3RyaW5n
IHNvdXJjZVVSTCA9IGNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgK
aW5kZXggMDAzNmE3ODljNThlMTlhZTEzYjBkNGFiZmI3NTU4M2U5YmI0NjczNC4uNDFiZmM3MDg4
MjBlY2NmY2FjNzM1YjM5YjQyMjQ3MTNlYmU1MmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFz
cyBTdGFja1Zpc2l0b3IgewogICAgICAgICAgICAgR2xvYmFsLAogICAgICAgICAgICAgRXZhbCwK
ICAgICAgICAgICAgIEZ1bmN0aW9uLAorICAgICAgICAgICAgTW9kdWxlLAogICAgICAgICAgICAg
TmF0aXZlCiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiYmM4
NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxLi44NGYzNmQ1NDBmM2NiYWExYWVj
YzU1M2FkZjhjNDYxNGI3YmRlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00
ODYsNiArNDg2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSVRD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgCiAgICAgc3dpdGNoIChtX2NvZGVCbG9jay0+
Y29kZVR5cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICBjYXNlIE1vZHVsZUNvZGU6
CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBjNmYxZWY5ZjdmMGM3Yzg3ZGU5
MTY1ZDU1N2M0NWVkMDE3MWYzMDBhLi4wNDEyMjgyNWM3NTc3ODRiOGZlNWU2ODRjNzZhYWU0MmVl
MjU3YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcApAQCAtNzAzLDYgKzcwMywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwg
c2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSksIHJlZ1QwKTsKKyAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtNzc4LDYgKzc4Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBh
ZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoK
ICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CkBAIC04NTIsNiArODU3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRW
YXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwog
ICAgICAgICBlbWl0UHV0Q2xvc3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90LCB2YWx1ZSwgY3Vy
cmVudEluc3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2Uo
anVtcCgpKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCmluZGV4IGU5MjZmNTJkYzc2ZDllZGUyZjBlM2E1YjNkYzI2YjMzNmE5MmY4NWQu
LjAyNjliYTQ2YjFiYjFkZTIyMDQzMzViZWI5OTMyYTBkZGQ3M2IwYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAgdm9pZCBE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKG1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsID09IDY0KTsKICNlbmRpZgogICAgIEFTU0VSVChTdHJpbmdUeXBlID09
IDYpOwotICAgIEFTU0VSVChPYmplY3RUeXBlID09IDE4KTsKLSAgICBBU1NFUlQoRmluYWxPYmpl
Y3RUeXBlID09IDE5KTsKKyAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAyMCk7CisgICAgQVNTRVJU
KEZpbmFsT2JqZWN0VHlwZSA9PSAyMSk7CiAgICAgQVNTRVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPT0gMSk7CiAgICAgQVNTRVJUKEltcGxlbWVudHNIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBB
U1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSA4KTsKQEAgLTE0MSwxNSArMTQx
LDE3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChH
bG9iYWxDb2RlID09IDApOwogICAgIEFTU0VSVChFdmFsQ29kZSA9PSAxKTsKICAgICBBU1NFUlQo
RnVuY3Rpb25Db2RlID09IDIpOworICAgIEFTU0VSVChNb2R1bGVDb2RlID09IDMpOwogCiAgICAg
c3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eSA9PSAwLCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQ
cm9wZXJ0eSBSZXN1bHRUeXBlIGlzID09IDAiKTsKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZh
ciA9PSAxLCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXIgUmVzdWx0VHlwZSBpcyA9PSAxIik7CiAg
ICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyID09IDIsICJMTEludCBhc3N1bWVzIENsb3N1cmVW
YXIgUmVzdWx0VHlwZSBpcyA9PSAyIik7CiAgICAgc3RhdGljX2Fzc2VydChMb2NhbENsb3N1cmVW
YXIgPT0gMywgIkxMSW50IGFzc3VtZXMgTG9jYWxDbG9zdXJlVmFyIFJlc3VsdFR5cGUgaXMgPT0g
MyIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzID09IDQsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcyBSZXN1bHRUeXBlIGlzID09IDQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJMTEludCBhc3N1bWVzIENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNiIpOwotICAg
IHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA3LCAiTExJbnQgYXNzdW1lcyBEeW5hbWljIFJlc3Vs
dFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoTW9kdWxlVmFyID09IDQsICJMTElu
dCBhc3N1bWVzIE1vZHVsZVZhciBSZXN1bHRUeXBlIGlzID09IDQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1LCAiTExJbnQgYXNz
dW1lcyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9
PSA1Iik7CisgICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
ID09IDYsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVz
dWx0VHlwZSBpcyA9PSA2Iik7CisgICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA9PSA3LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KER5bmFt
aWMgPT0gOCwgIkxMSW50IGFzc3VtZXMgRHluYW1pYyBSZXN1bHRUeXBlIGlzID09IDgiKTsKICAg
ICAKICAgICBBU1NFUlQoUmVzb2x2ZU1vZGVBbmRUeXBlOjptYXNrID09IDB4ZmZmZik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXgg
OWQwMDEwNmI5YTgyNzZmNDg0MjBmNmI1NDZjMzJkNTkzMGEzNmI2OC4uYTZjM2QyN2UyODBhMDQ0
NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTk3LDEyICs5NywzMCBAQCBzdGF0aWMgdm9p
ZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAg
ICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAKK3N0YXRpYyB2b2lk
IHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Cit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKKyAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJ
VENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyAgICBVTlVTRURf
UEFSQU0odm0pOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVS
ZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKK30KKwogdm9pZCBzZXRFbnRyeXBvaW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgc3dpdGNoIChjb2RlQmxvY2st
PmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6CiAgICAgICAgIHNldFByb2dyYW1F
bnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBNb2R1
bGVDb2RlOgorICAgICAgICBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCh2bSwgY29kZUJsb2Nr
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXZhbENvZGU6CiAgICAgICAgIHNldEV2YWxF
bnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4
IGEyYTZiMmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEuLjdhMWE3NWY3MWYzM2M5
Y2NjMGU3ODlhOGI5NGQ0OTYxMzY5YTQzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC00Miw2ICs0Miw4IEBA
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZUNhbGxlZS5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDhhYjk2YjMwNDc1ZmQ1NTRkZWY4YjMyNjYy
NDk2NjMyZWFmOTZkOWEuLmFmNjg4NGU1ZWRlN2JlYmUwNGYzN2IzZjAwMDkxZWUxNmY5NTExNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApAQCAtODgs
NiArODgsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKICAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSksICJwcm9ncmFtIik7
CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwg
Im1vZHVsZV9wcm9ncmFtIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIExMSW50CiAKICNlbHNlIC8v
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmlu
ZGV4IDBkMWJlNmJkYWVhZGY3OTQ4N2NlOTA2NjgyNjQ2ODUxODhhOGJkMTIuLjk1YjBmNDQ4NDhi
Y2M1MjlkMTUwM2UyODliOTNlZmUzNzA1YzgzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCkBAIC00Niw2ICs0Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKFZN
Kik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0q
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dlbmVyYXRv
cihWTSopOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDVhZDgz
NDY1Y2QxYTRlOGY0ZTk2NGE2N2VkMDhhMTU3ZTdmYTM3NWEuLjI5ODhlMWVhYmEyMDczYTcxNDc0
MzU4MjJlNDU5NmFkZDRhYzQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2MSw4ICsxNjEsOCBAQCBjb25zdCBT
bG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29uc3RhbnRzLgogY29uc3Qg
U3RyaW5nVHlwZSA9IDYKLWNvbnN0IE9iamVjdFR5cGUgPSAxOAotY29uc3QgRmluYWxPYmplY3RU
eXBlID0gMTkKK2NvbnN0IE9iamVjdFR5cGUgPSAyMAorY29uc3QgRmluYWxPYmplY3RUeXBlID0g
MjEKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSAxCkBAIC0xNzYsNiArMTc2LDcgQEAgY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSAweDQwMDAwMDAwCiBjb25zdCBHbG9iYWxDb2RlID0gMAogY29uc3QgRXZhbENvZGUgPSAx
CiBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCitjb25zdCBNb2R1bGVDb2RlID0gMwogCiAjIFRoZSBp
bnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBjb3VudC4KIGNv
bnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CkBAIC0xOTEsMTAg
KzE5MiwxMSBAQCBjb25zdCBHbG9iYWxQcm9wZXJ0eSA9IDAKIGNvbnN0IEdsb2JhbFZhciA9IDEK
IGNvbnN0IENsb3N1cmVWYXIgPSAyCiBjb25zdCBMb2NhbENsb3N1cmVWYXIgPSAzCi1jb25zdCBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA0Ci1jb25zdCBHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQotY29uc3QgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPSA2Ci1jb25zdCBEeW5hbWljID0gNworY29uc3QgTW9kdWxlVmFyID0gNAorY29u
c3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQorY29uc3QgR2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYKK2NvbnN0IENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzID0gNworY29uc3QgRHluYW1pYyA9IDgKIAogY29uc3QgUmVzb2x2ZU1vZGVN
YXNrID0gMHhmZmZmCiAKQEAgLTg4NCw2ICs4ODYsMTEgQEAgX2xsaW50X3Byb2dyYW1fcHJvbG9n
dWU6CiAgICAgZGlzcGF0Y2goMCkKIAogCitfbGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWU6
CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisg
ICAgZGlzcGF0Y2goMCkKKworCiBfbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBwcm9sb2d1ZShu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKICAgICBkaXNwYXRjaCgwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQppbmRleCBkMjE1MmEyZjI3N2FkZTU4Nzk3NmExYzNmMTIwMjM3MjliMzhhNTlhLi40
YjJhZjE1ZTI4ZjcyNjQzYmI5NGRjNmViY2ZlY2I4ZDY4MDMyMzJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAt
MTkxOCw2ICsxOTE4LDEyIEBAIG1hY3JvIGdldEdsb2JhbE9iamVjdChkc3QpCiAgICAgc3RvcmVx
IHQwLCBbY2ZyLCB0MSwgOF0KIGVuZAogCittYWNybyBnZXRJbXBvcnRlZE1vZHVsZVNjb3BlKGRz
dCkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oZHN0LCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorZW5kCisKIG1hY3Jv
IHZhckluamVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MApAQCAtMTk1Nywx
MCArMTk2MywxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKICAgICBkaXNwYXRjaCg3KQog
CiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9k
dWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNwYXRjaCg3KQogCisuck1vZHVsZVZh
cjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3
KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0
MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCkBAIC0y
MjMzLDQgKzIyNDQsNCBAQCBfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAg
bG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCiAgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlz
cGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgZGlzcGF0Y2goMikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXgg
M2QxNzdjYTc3YjhiOGQ4OGQ4N2I0ZjRlODVjZTNkNDY4MzhjNDQxZC4uZjYyMzhmYjk2ODAyYmU1
MzdlOTFhZGMyNmI4MmQ4OTBiOTU0MDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTM2LDExICszNiw5IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogCi1Nb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
IGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFy
aWFibGVzKQorTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICA6IG1fdm0oJmV4ZWMtPnZt
KCkpCi0gICAgLCBtX21vZHVsZVJlY29yZChleGVjLT52bSgpLCBKU01vZHVsZVJlY29yZDo6Y3Jl
YXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlUmVjb3Jk
U3RydWN0dXJlKCksIG1vZHVsZUtleSkpCi0gICAgLCBtX2RlY2xhcmVkVmFyaWFibGVzKGRlY2xh
cmVkVmFyaWFibGVzKQotICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMp
CisgICAgLCBtX21vZHVsZVJlY29yZChleGVjLT52bSgpLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlUmVjb3JkU3Ry
dWN0dXJlKCksIG1vZHVsZUtleSwgc291cmNlQ29kZSwgZGVjbGFyZWRWYXJpYWJsZXMsIGxleGlj
YWxWYXJpYWJsZXMpKQogewogfQogCkBAIC04NSw3ICs4Myw3IEBAIHZvaWQgTW9kdWxlQW5hbHl6
ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSwKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29y
ZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOwotICAgIGlmIChpbXBvcnRFbnRyeS5p
c05hbWVzcGFjZSh2bSgpKSkgeworICAgIGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFtZXNwYWNl
KCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8v
IGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCiAgICAgICAgIC8vIGV4cG9ydCB7IG5h
bWVzcGFjZSB9CkBAIC0xNDQsMTAgKzE0MiwxMCBAQCBKU01vZHVsZVJlY29yZCogTW9kdWxlQW5h
bHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQogICAg
IC8vICAgICBUaGlzIGV4cG9ydHMgYWxsIHRoZSBuYW1lcyBmcm9tIHRoZSBzcGVjaWZpZWQgZXh0
ZXJuYWwgbW9kdWxlIGFzIHRoZSBjdXJyZW50IG1vZHVsZSdzIG5hbWUuCiAgICAgLy8KICAgICAv
LyAgICAgZXhwb3J0ICogZnJvbSAibW9kIgotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1f
ZGVjbGFyZWRWYXJpYWJsZXMpCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVS
ZWNvcmQtPmRlY2xhcmVkVmFyaWFibGVzKCkpCiAgICAgICAgIGV4cG9ydFZhcmlhYmxlKHBhaXIu
a2V5LCBwYWlyLnZhbHVlKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fbGV4aWNh
bFZhcmlhYmxlcykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX21vZHVsZVJlY29yZC0+
bGV4aWNhbFZhcmlhYmxlcygpKQogICAgICAgICBleHBvcnRWYXJpYWJsZShwYWlyLmtleSwgcGFp
ci52YWx1ZSk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCmluZGV4IDIyOGE2OWZl
ZTc0NzM2NjIwZDdmNmRhNTcxYmI2YWNhZDg0NmI3MDYuLjcwODNjYTkwOTkxOGVmZDIzZWJhMWEz
ZDViYjljM2Y2NTczMzhlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZUFuYWx5emVyLmgKQEAgLTMxLDExICszMSwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgU291cmNlQ29kZTsKIAogY2xhc3MgTW9kdWxlQW5h
bHl6ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1vZHVsZUFuYWx5emVyKTsKIHB1Ymxp
YzoKLSAgICBNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXksIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKTsKKyAgICBNb2R1bGVBbmFs
eXplcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJj
ZUNvZGUmLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcyk7CiAKICAgICBKU01vZHVs
ZVJlY29yZCogYW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYpOwogCkBAIC01NCw4ICs1NSw2IEBA
IGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKIAogICAgIFZNKiBtX3ZtOwogICAgIFN0cm9uZzxKU01v
ZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2Rl
Y2xhcmVkVmFyaWFibGVzOwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFi
bGVzOwogICAgIElkZW50aWZpZXJBbGlhc01hcCBtX2FsaWFzTWFwOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDMyNmJmZDI5NWJkNTYyNDU5OTEwZWFl
ODQyZThiMDhjMTRiMmVjYTcuLjk5NjFkMjFiYTFiMzMyMjkzNzgzYzU4YjE1NDY5NmYwNjBhOWRj
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIzMTgsNyAr
MjMxOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkltcG9ydFNwZWNpZmllciBQYXJzZXI8TGV4ZXJUCiAgICAgfQogCiAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGxvY2FsTmFtZVRva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcsICJDYW5u
b3QgdXNlIGtleXdvcmQgYXMgaW1wb3J0ZWQgYmluZGluZyBuYW1lIik7Ci0gICAgRGVjbGFyYXRp
b25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFt
ZSwgRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uLCBEZWNsYXJhdGlvbkltcG9ydFR5
cGU6OkltcG9ydGVkKTsKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1
bHQgPSBkZWNsYXJlVmFyaWFibGUobG9jYWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVj
bGFyYXRpb24sIChzcGVjaWZpZXJUeXBlID09IEltcG9ydFNwZWNpZmllclR5cGU6Ok5hbWVzcGFj
ZUltcG9ydCkgPyBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkTmFtZXNwYWNlIDogRGVj
bGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCk7CiAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0
ICE9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCkgewogICAgICAgICBmYWlsSWZUcnVlSWZTdHJp
Y3QoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1v
ZGUsICJDYW5ub3QgZGVjbGFyZSBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWVkICIsIGxvY2FsTmFt
ZS0+aW1wbCgpLCAiIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGlmIChkZWNsYXJhdGlvblJl
c3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24pCkBA
IC0yNTU5LDEwICsyNTU5LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAg
IC8vIGRvZXMgbm90IGhhdmUgZWZmZWN0IG9uIHRoZSBjdXJyZW50IG1vZHVsZSdzIHNjb3BlLiBC
dXQsCiAgICAgICAgICAgICAvLyAgIGV4cG9ydCB7IEEsIEIsIEMgYXMgRCB9CiAgICAgICAgICAg
ICAvLyB3aWxsIHJlZmVyZW5jZSB0aGUgY3VycmVudCBtb2R1bGUncyBiaW5kaW5ncy4KLSAgICAg
ICAgICAgIGZvciAoY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVz
KSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGxvY2FsTmFt
ZSwgbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqbG9jYWxOYW1lKTsKKyAgICAgICAgICAg
IGZvciAoY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKQogICAg
ICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5k
aW5nKCpsb2NhbE5hbWUpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0TmFtZWREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwg
c3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAppbmRleCBjMmU2YTY1MDQwODk5MTVkYzI4MDU3ZmZlMDFmMDRlZWFkZTAxZjE0Li5mNjk3
YmUzMzZiYjgwYzUyNTA0Mjg1NmI4YzA4NzU1MzczM2ExMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBlbnVtIGNsYXNzIERlY2xhcmF0
aW9uVHlwZSB7CiAKIGVudW0gY2xhc3MgRGVjbGFyYXRpb25JbXBvcnRUeXBlIHsKICAgICBJbXBv
cnRlZCwKKyAgICBJbXBvcnRlZE5hbWVzcGFjZSwKICAgICBOb3RJbXBvcnRlZAogfTsKIApAQCAt
MzM1LDYgKzMzNiwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogCiAgICAgICAgIGlmIChpbXBvcnRUeXBl
ID09IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpCiAgICAgICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWQoKTsKKyAgICAgICAgZWxzZSBpZiAoaW1w
b3J0VHlwZSA9PSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkTmFtZXNwYWNlKSB7Cisg
ICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWQoKTsKKyAg
ICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0SXNJbXBvcnRlZE5hbWVzcGFj
ZSgpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAg
ICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuaAppbmRleCA1ZWQyYTZiZGE5MjgzOGUyOTY0ODJmNjZjMDc4NWEzNjExYWU2
MTVjLi43NmM3MDk2ZTllNjQ0N2ViYmJkYjBkOTY1YTNlYTRhMjRhNTE3M2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAt
NDAsNiArNDAsNyBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNMZXQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0xldDsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0V4cG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRz
ICYgSXNFeHBvcnRlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0ltcG9ydGVkKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNJbXBvcnRlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0ltcG9ydGVkTmFtZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNJbXBvcnRl
ZE5hbWVzcGFjZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7
IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29u
c3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkgewogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0xldCgp
IHsgbV9iaXRzIHw9IElzTGV0OyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRXhwb3J0
ZWQoKSB7IG1fYml0cyB8PSBJc0V4cG9ydGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dElzSW1wb3J0ZWQoKSB7IG1fYml0cyB8PSBJc0ltcG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzSW1wb3J0ZWROYW1lc3BhY2UoKSB7IG1fYml0cyB8PSBJc0ltcG9ydGVkTmFt
ZXNwYWNlOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRz
ICY9IH5Jc1ZhcjsgfQogCkBAIC01Nyw3ICs1OSw4IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkgewogICAgICAgICBJc1ZhciA9IDEgPDwgMiwKICAgICAgICAgSXNMZXQgPSAxIDw8
IDMsCiAgICAgICAgIElzRXhwb3J0ZWQgPSAxIDw8IDQsCi0gICAgICAgIElzSW1wb3J0ZWQgPSAx
IDw8IDUKKyAgICAgICAgSXNJbXBvcnRlZCA9IDEgPDwgNSwKKyAgICAgICAgSXNJbXBvcnRlZE5h
bWVzcGFjZSA9IDEgPDwgNgogICAgIH07CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9OwpA
QCAtNzksNiArODIsOCBAQCBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKICAgICBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmll
cik7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVy
KTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRp
Zmllcik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZmluZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBt
X21hcC5maW5kKGlkZW50aWZpZXIpOyB9CiAgICAgdm9pZCBzd2FwKFZhcmlhYmxlRW52aXJvbm1l
bnQmIG90aGVyKTsKICAgICB2b2lkIG1hcmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBtYXJr
VmFyaWFibGVBc0NhcHR1cmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5k
ZXggYWI3MGVhYmI5ZTNhMmEwNDUwYzYyOWU3MDU2NjZmNGRjY2EwMWUyOC4uZDJlZmVjZDgyOWIy
YzQ0ODVkZjEwNGI3ZmU0MWMyYzc2OWJkOGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC02NywxMSArNjcsMTkgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0cnVjdCBDYWNoZVR5cGVzIHsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5
cGVzPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4gewogICAgIHR5cGVkZWYgSlNDOjpQcm9ncmFt
Tm9kZSBSb290Tm9kZTsKICAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUg
Y29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5OjpQcm9ncmFtVHlwZTsKKyAgICBzdGF0aWMgY29uc3Qg
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7
CiB9OwogCiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZEV2YWxDb2RlQmxv
Y2s+IHsKICAgICB0eXBlZGVmIEpTQzo6RXZhbE5vZGUgUm9vdE5vZGU7CiAgICAgc3RhdGljIGNv
bnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtleTo6RXZh
bFR5cGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IENhY2hl
VHlwZXM8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiB7CisgICAgdHlwZWRlZiBKU0M6
Ok1vZHVsZVByb2dyYW1Ob2RlIFJvb3ROb2RlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2Rl
S2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNvZGVLZXk6OlByb2dyYW1UeXBlOworICAg
IHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2Rl
OjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4KQEAgLTk1LDcgKzEwMyw3IEBAIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBF
eGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlu
a2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCiAgICAgICAgICZ2bSwgc291
cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCB0aGlzVERaTW9kZSk7CisgICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxv
Y2tUeXBlPjo6cGFyc2VNb2RlLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKQEAgLTEzMiw2ICsxNDAsMTIgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2Fj
aGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBFdmFsRXhlY3V0YWJsZSogZXhlY3UKICAgICBy
ZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1
dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlLCBkZWJ1
Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIHZhcmlhYmxlc1VuZGVyVERaKTsKIH0KIAor
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldE1vZHVsZVByb2dy
YW1Db2RlQmxvY2soVk0mIHZtLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2Rl
LCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQ
YXJzZXJFcnJvciYgZXJyb3IpCit7CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVBhcmVu
dFREWlZhcmlhYmxlczsKKyAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUs
IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCAmZW1wdHlQYXJlbnRURFpWYXJpYWJs
ZXMpOworfQorCiAvLyBGSVhNRTogVGhlcmUncyBubyBuZWVkIHRvIGFkZCB0aGUgZnVuY3Rpb24n
cyBuYW1lIHRvIHRoZSBrZXkgaGVyZS4gSXQncyBhbHJlYWR5IGluIHRoZSBzb3VyY2UgY29kZS4K
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0
YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IGFmN2RhYzdlNDg3MDQxMzE5YzYzZmVj
OTc1NWUyMzkzMTg4MzRjYjYuLjcxNzVmZTM5NTEyYzkzNjZlNjE2Mzk4MTNjYjZjNGY4MjI1OThk
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC00NSw4
ICs0NSwxMCBAQCBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNl
ckVycm9yOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrOworY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwpAQCAtNTYsNyArNTgsNyBAQCBjbGFz
cyBTb3VyY2VQcm92aWRlcjsKIAogY2xhc3MgU291cmNlQ29kZUtleSB7CiBwdWJsaWM6Ci0gICAg
ZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlIH07Cisg
ICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBN
b2R1bGVUeXBlIH07CiAKICAgICBTb3VyY2VDb2RlS2V5KCkKICAgICB7CkBAIC0yNTcsNiArMjU5
LDcgQEAgY2xhc3MgQ29kZUNhY2hlIHsKIAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayog
Z2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYsIFByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNl
Q29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgRGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZNJiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBUaGlzVERaTW9k
ZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCopOworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogZ2V0
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgY29u
c3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmls
ZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAogICAgIHZvaWQgY2xlYXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
aW5kZXggMTYzYjExNjEwNDFjY2RiMzVhZDUyOTc2Y2FmZTZiZDExZGZjOGI3Ny4uNGZkYmQ5MzE0
MzA4ZmI5OTUxNDUzNjgzMzgzZTFiYTRlMmM4MmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yODMsNiArMjgzLDcgQEAK
ICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKFN0cmluZykgXAogICAgIG1hY3JvKE1hcCkg
XAorICAgIG1hY3JvKFNldCkgXAogICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhJbnRl
cm5hbFByb21pc2UpIFwKICAgICBtYWNybyhhYnMpIFwKQEAgLTMwNyw2ICszMDgsNyBAQAogICAg
IG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAogICAgIG1hY3JvKGdldCkgXAogICAg
IG1hY3JvKHNldCkgXAorICAgIG1hY3JvKGFkZCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAyNzExNzhj
MmI1ZjY0MzdlNjhkZTU5MmQ2MTRiODEyZmE1MWVmMjVkLi5iNWY2MjNhY2RhNTIzMDUxMTg3ZDBk
YjU2ODg1MjEyNjJkODYyNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcApAQCAtNzgsNyArNzgsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQcml2YXRlTmFtZSBwcml2YXRlTmFtZShQcml2
YXRlTmFtZTo6RGVzY3JpcHRpb24sICJFbnRyeVBvaW50TW9kdWxlIik7Ci0gICAgTW9kdWxlQW5h
bHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChwcml2YXRlTmFt
ZSksIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5v
ZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6
ZXIoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChwcml2YXRlTmFtZSksIHNvdXJjZSwgbW9kdWxl
UHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNh
bFZhcmlhYmxlcygpKTsKICAgICBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFt
Tm9kZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDVmZmI4ZGI3ZjA1MDViNGQxNjI2YTM2ODQ3YTI4ODFm
YjRhMTc1MjMuLjY0MDA4MWUwZmRmM2RiZTFhNWU2ZGEzMWE3YWVhNjg4YTViZGQ4NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAi
TExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmls
ZXJEYXRhYmFzZS5oIgpAQCAtMTU5LDcgKzE2MCwxOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6
Omluc3RhbGxDb2RlKENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaykKICAgICAgICAgZXhlY3V0
YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOwogICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBNb2R1bGVDb2RlOiB7CisgICAgICAgIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4odGhpcyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsK
KworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisKKyAgICAgICAgb2xkQ29k
ZUJsb2NrID0gZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgICAgICBl
eGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRXZhbENvZGU6IHsKICAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAg
ICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8RXZhbENvZGVCbG9jayo+
KGdlbmVyaWNDb2RlQmxvY2spOwpAQCAtMjI2LDcgKzIzOCwxNyBAQCBSZWZQdHI8Q29kZUJsb2Nr
PiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICBleGVjdXRh
YmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUs
CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxl
LT5zb3VyY2UoKS5zdGFydENvbHVtbigpKSk7CiAgICAgfQotICAgIAorCisgICAgaWYgKGNsYXNz
SW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q2FsbCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX21vZHVsZVByb2dy
YW1Db2RlQmxvY2spOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgICAg
ICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5nZXQoKSwgc2NvcGUsCisgICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRl
cigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVtbigpKSk7CisgICAgfQorCiAgICAg
UkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CkBAIC0yODMs
NiArMzA1LDE3IEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdS
ZXBsYWNlbWVudENvZGVCbG9ja0ZvcigKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
KyAgICBpZiAoY2xhc3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKKyAgICAgICAg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqPih0aGlzKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogYmFz
ZWxpbmUgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oCisgICAgICAgICAg
ICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigp
KTsKKyAgICAgICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IHJlc3VsdCA9IGFkb3B0
UmVmKG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAgQ29kZUJsb2NrOjpD
b3B5UGFyc2VkQmxvY2ssICpiYXNlbGluZSkpOworICAgICAgICByZXN1bHQtPnNldEFsdGVybmF0
aXZlKGJhc2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBSRUxF
QVNFX0FTU0VSVChjbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSk7CiAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KHRoaXMpOwogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBiYXNlbGluZSA9IHN0YXRpY19j
YXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4oCkBAIC0zODMsNiArNDE2LDQyIEBAIHZvaWQgUHJvZ3Jh
bUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PFByb2dy
YW1FeGVjdXRhYmxlKj4oY2VsbCktPlByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFi
bGUoKTsKIH0KIAorY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2lu
Zm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CisK
K01vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFi
bGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhl
Yy0+dm0oKSwgc291cmNlLCBmYWxzZSkKK3sKKyAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNl
dCA9IDA7CisgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0g
MTsKKyAgICBpZiAoZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKSB8fCBleGVjLT52bSgpLmNvbnRy
b2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgZXhlYy0+dm0oKS5mdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJjZUlEKCksIG1fdHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQpOworfQorCitNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KCpl
eGVjLT5oZWFwKCkpKSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIG1vZHVsZVJlY29yZCk7CisK
KyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGUgPSBnbG9iYWxPYmplY3QtPmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soZXhlYywg
ZXhlY3V0YWJsZSk7CisgICAgaWYgKCF1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZSk7CisKKyAgICByZXR1cm4gZXhlY3V0YWJsZTsKK30KKwordm9pZCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX21vZHVs
ZVJlY29yZC5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0
PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCktPk1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
Ojp+TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4
ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFi
bGUpIH07CiAKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCAKQEAgLTUzNSw2ICs2MDQsNDcgQEAgdm9pZCBQcm9n
cmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIAor
SlNPYmplY3QqIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2Rl
PiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAg
dm0sIG1fc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6
Ok1vZHVsZUFuYWx5emVNb2RlLCBlcnJvcik7CisgICAgaWYgKG1vZHVsZVByb2dyYW1Ob2RlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAg
ICByZXR1cm4gZXJyb3IudG9FcnJvck9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJj
ZSk7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKK3sK
KyNpZiBFTkFCTEUoSklUKQorICAgIGlmICghbV9qaXRDb2RlRm9yQ2FsbCkKKyAgICAgICAgcmV0
dXJuOworICAgIFJFTEVBU0VfQVNTRVJUKG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAg
bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT51bmxpbmtDYWxscygpOworI2VuZGlmCit9Cit2b2lk
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgU2NyaXB0RXhl
Y3V0YWJsZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZCk7CisgICAgaWYg
KHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgdGhpc09iamVj
dC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30K
Kwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKK3sKKyAgICBtX21v
ZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBudWxscHRyOworICAgIG1fdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgQmFzZTo6Y2xlYXJDb2RlKCk7Cit9CisKIEZ1bmN0
aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0OwpAQCAtNjIzLDYgKzczMywxNSBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoIlByb2dyYW1FeGVjdXRh
YmxlIHcvbyBDb2RlQmxvY2siKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChj
bGFzc0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAg
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKj4ocmVhbFRoaXMpOworICAgICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgIG91dC5wcmludCgqY29k
ZUJsb2NrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50KCJNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSB3L28gQ29kZUJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihyZWFsVGhpcyk7CiAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29kZUJsb2Nr
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMDQw
NTM3NzNjMTA3NjQwZWI2NmYyYWRhMzIxODY5MTk1MDgxMjc1Yy4uNTU3NzMzNDY4NTkwYTBiMDY5
N2VlZTc0YTMxYmVjYmJmNTI5ODYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaApAQCAtNTIsNiArNTIsOCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrOwogY2xh
c3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFz
cyBQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNz
IEpTTW9kdWxlUmVjb3JkOwogY2xhc3MgSlNTY29wZTsKICAgICAKIGVudW0gQ29tcGlsYXRpb25L
aW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CkBAIC0xMDQs
NiArMTA2LDExIEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ewogICAgICAgICByZXR1cm4gdHlwZSgpID09IFByb2dyYW1FeGVjdXRhYmxlVHlwZTsKICAgICB9
CisgICAgYm9vbCBpc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0eXBlKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOworICAgIH0KKwogCiAg
ICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAgICAgewpAQCAtNTQzLDYgKzU1MCw1NiBA
QCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICBSZWZQdHI8UHJvZ3JhbUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogfTsK
IAorY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0YWJsZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0
ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5nZXQoKTsKKyAgICB9CisKKyAgICBKU09iamVjdCogY2hlY2tTeW50YXgoRXhlY1N0
YXRlKik7CisKKyAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAgfQorCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCB1bmxpbmtDYWxscygpOworCisgICAgdm9p
ZCBjbGVhckNvZGUoKTsKKworICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFs
c2UpOyB9CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRh
YmxlOworCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291
cmNlQ29kZSYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTTW9kdWxlUmVjb3Jk
Kik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKKyAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBt
X3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1
bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7Cit9OworCiBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNjg5LDYg
Kzc0Niw4IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogICAgICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1F
eGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGNhc2UgRnVuY3Rpb25F
eGVjdXRhYmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZVR5cGU6CisgICAgICAgIHJldHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IGpzQ2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAg
IH0KQEAgLTcwMyw2ICs3NjIsOCBAQCBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjp1bmxp
bmtDYWxscygpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlz
KS0+dW5saW5rQ2FsbHMoKTsKICAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU6CiAgICAg
ICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxz
KCk7CisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CisgICAgICAgIHJldHVy
biBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKS0+dW5saW5rQ2FsbHMoKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA5M2VlMWZkNzRiOTkyNTkwNDFjYTFlODYyZjYzMTFmNjUwOTgzODlhLi4zYzkxNDAx
NmM3ZDg3OWMxYTVhZTcyM2MwNDBkNWYyYzcwYTRmZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw5IEBACiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVDYWxsZWUuaCIKKyNpbmNsdWRlICJKU01vZHVs
ZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNp
bmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNs
dWRlICJKU1Byb21pc2UuaCIKQEAgLTI2MCw2ICsyNjMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKIAogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBG
dW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpKTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdpbGwg
YmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90eXBlIGlzIGNyZWF0ZWQuCiAgICAgbV9jYWxsZWVTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0NhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBq
c051bGwoKSkpOworICAgIG1fbW9kdWxlQ2FsbGVlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNN
b2R1bGVDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKIAogICAg
IC8vIE5lZWQgdG8gY3JlYXRlIHRoZSBjYWxsZWUgc3RydWN0dXJlIChhYm92ZSkgYmVmb3JlIGNy
ZWF0aW5nIHRoZSBjYWxsZWUuCiAgICAgbV9nbG9iYWxDYWxsZWUuc2V0KHZtLCB0aGlzLCBKU0Nh
bGxlZTo6Y3JlYXRlKHZtLCB0aGlzLCB0aGlzKSk7CkBAIC0zMTAsNiArMzE0LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5
cGVEYXRhVmlldyldLnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRGF0YVZpZXc6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnBy
b3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcykpOworICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U01vZHVsZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICBtX3N0
cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RyaWN0RXZhbEFjdGl2
YXRpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2RlYnVn
Z2VyU2NvcGVTdHJ1Y3R1cmUuc2V0KG1fdm0sIHRoaXMsIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZVN0
cnVjdHVyZShtX3ZtLCB0aGlzKSk7CiAgICAgbV93aXRoU2NvcGVTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwpA
QCAtMzQ2LDYgKzM1MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgbV93YXNtTW9kdWxlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXQVNN
TW9kdWxlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKQEAgLTUyMCw2ICs1MjYsNyBAQCBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwg
bG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYlByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9u
c1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNy
ZWF0ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+U2V0UHJpdmF0ZU5hbWUsIHNldENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0ds
b2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNzg5LDYg
Kzc5Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZCYW5kQXJndW1lbnRzU3Ry
dWN0dXJlKTsKQEAgLTgxNiw2ICs4MjQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZSk7CkBAIC05MzAsNiArOTM5LDI1IEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxP
YmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCiAgICAgcmV0
dXJuIHVubGlua2VkQ29kZUJsb2NrOwogfQogCitVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKK3sKKyAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gaGFz
RGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKKyAgICBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlID0gaGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsK
KyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0g
dm0oKS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgdm0o
KSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisKKyAgICBp
ZiAoaGFzRGVidWdnZXIoKSkKKyAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxG
cmFtZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJv
ci5tZXNzYWdlKCkpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJv
d1ZNRXJyb3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUt
PnNvdXJjZSgpKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVy
biB1bmxpbmtlZENvZGVCbG9jazsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0UmVtb3Rl
RGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCAyNjEzMTZlODVkMmJhZmJkZWQ3ODQzMGI2ZjhmOGViYTVhZDg3NzZlLi44YzcwMTQ4
MDRmYjljNWIxNGZhNzE1ZmFjYTI1YWMwM2ZhMTcyNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTc4LDYgKzc4LDcgQEAgY2xhc3Mg
SlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsK
IGNsYXNzIE1vZHVsZUxvYWRlck9iamVjdDsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9y
OwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTg1LDYgKzg2LDcgQEAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3Rv
dHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBOdWxsR2V0dGVyRnVuY3Rpb247CiBjbGFzcyBOdWxsU2V0dGVyRnVuY3Rp
b247CiBlbnVtIGNsYXNzIFRoaXNURFpNb2RlOwpAQCAtMjMwLDYgKzIzMiw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsK
QEAgLTI0OSw2ICsyNTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICNlbmRpZgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NhbGxlZVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21v
ZHVsZUNhbGxlZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Z1bmN0
aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Fycm93RnVuY3Rpb25T
dHJ1Y3R1cmU7CkBAIC0yNjIsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwog
I2VuZGlmCkBAIC00NDYsNiArNDUxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBhY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1l
bnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25tZW50U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IHNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVkQXJndW1l
bnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvdXRPZkJhbmRBcmd1bWVudHNT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5n
ZXQoKTsgfQpAQCAtNDgyLDYgKzQ4OCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogbnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsZWVT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZVN0cnVjdHVyZS5nZXQoKTsgfQorICAg
IFN0cnVjdHVyZSogbW9kdWxlQ2FsbGVlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1
bGVDYWxsZWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGZ1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogYm91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXJyb3dGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyb3dGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQpAQCAtNDk5LDYgKzUwNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1
bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmpl
Y3QsIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmCkBAIC02NDEsNiAr
NjQ5LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZVByb2dyYW1D
b2RlQmxvY2soQ2FsbEZyYW1lKiwgUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU09iamVjdCoqIGV4Y2Vw
dGlvbik7CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjcmVhdGVFdmFsQ29kZUJsb2NrKENh
bGxGcmFtZSosIEV2YWxFeGVjdXRhYmxlKiwgVGhpc1REWk1vZGUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQqKTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZU1v
ZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
KTsKIAogcHJvdGVjdGVkOgogICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgK
aW5kZXggOTUxNjMxOGQ3MDE2OWUzZGQ4YzJiZWY3ODMzMTI1Njc1YzVlMjE4Yi4uNDQ4ZWE0MzFi
N2I3Yzk4MjYyZDQxMGJmMDFmODQ5MzcxZDhhYjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUmVnaXN0ZXI7CiAgICAgCiBjbGFzcyBKU0xleGlj
YWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVjb3JkIHsKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Nj
b3BlKiwgU3ltYm9sVGFibGUqKTsKICAgICAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlQ2FsbGVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWRjYmVkYTUx
NjVjYmZmMDgxYTQwYmE1NDY0YWM3YmVlNzNhNjM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVDYWxsZWUuY3BwCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVDYWxsZWUuaCIKKworI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNN
b2R1bGVDYWxsZWU6OnNfaW5mbyA9IHsgIkpTTW9kdWxlQ2FsbGVlIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZUNhbGxlZSkgfTsKKworSlNNb2R1
bGVDYWxsZWU6OkpTTW9kdWxlQ2FsbGVlKFZNJiB2bSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkKK3sKK30KKwor
dm9pZCBKU01vZHVsZUNhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgbV9tb2R1bGVSZWNvcmQuc2V0KHZtLCB0aGlz
LCBtb2R1bGVSZWNvcmQpOworfQorCit2b2lkIEpTTW9kdWxlQ2FsbGVlOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVDYWxs
ZWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVDYWxsZWUqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVDYWxsZWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlQ2FsbGVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjE3ODFhMDBjZTI5Y2I1MWU3ZTA3NDc1ZmViOGUyYmViM2JjOTJlNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlQ2FsbGVlLmgKQEAg
LTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSlNNb2R1bGVDYWxsZWVfaAorI2RlZmluZSBKU01vZHVsZUNhbGxlZV9oCisK
KyNpbmNsdWRlICJKU0NhbGxlZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBKU01vZHVsZVJl
Y29yZDsKKworCitjbGFzcyBKU01vZHVsZUNhbGxlZSA6IHB1YmxpYyBKU0NhbGxlZSB7CisgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBmcmllbmQgY2xhc3Mg
REZHOjpTcGVjdWxhdGl2ZUpJVDsKKyAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsK
KyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBWTTsKKworcHVibGljOgorICAgIHR5cGVkZWYgSlND
YWxsZWUgQmFzZTsKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBKU01vZHVsZUNhbGxlZSogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsIEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCisgICAgeworICAgICAgICBKU01vZHVsZUNhbGxl
ZSogY2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVDYWxsZWU+KHZt
LmhlYXApKSBKU01vZHVsZUNhbGxlZSh2bSwgc2NvcGUsIGdsb2JhbE9iamVjdC0+bW9kdWxlQ2Fs
bGVlU3RydWN0dXJlKCkpOworICAgICAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZtLCBtb2R1
bGVSZWNvcmQpOworICAgICAgICByZXR1cm4gY2FsbGVlOworICAgIH0KKworICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0NhbGxl
ZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgaW5s
aW5lIHB0cmRpZmZfdCBvZmZzZXRPZk1vZHVsZVJlY29yZCgpCisgICAgeworICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTTW9kdWxlQ2FsbGVlLCBtX21vZHVsZVJlY29yZCk7CisgICAg
fQorCitwcm90ZWN0ZWQ6CisgICAgSlNNb2R1bGVDYWxsZWUoVk0mLCBKU1Njb3BlKiwgU3RydWN0
dXJlKik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNNb2R1bGVSZWNvcmQqKTsK
KworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisg
ICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVDYWxsZWVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZWZlY2MzM2UxODYyYWQ5MWM0OTgyMTAzZWQ0MmY0OWE4NzRiMmJjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2Ug
c3RkOworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OnNfaW5mbyA9IHsgIkpTTW9kdWxlRW52aXJvbm1lbnQiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlRW52aXJvbm1lbnQpIH07CisKK0pTTW9kdWxl
RW52aXJvbm1lbnQqIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQpCit7CisgICAgLy8gSlNMZXhpY2FsRW52aXJvbm1lbnQgKHByZWNpc2VseSwgSlNFbnZp
cm9ubWVudFJlY29yZCkgaGFzIHRoZSBzdG9yYWdlIHRvIHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90
cyBhZnRlciB0aGUgaXRzIGNsYXNzIHN0b3JhZ2UuCisgICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0
IG9mIHRoZSB2YXJpYWJsZSBzbG90cyBhcmUgZml4ZWQgaW4gdGhlIEpTRW52aXJvbm1lbnRSZWNv
cmQsIGluaGVyaXR0aW5nIHRoZXNlIGNsYXNzIGFuZCBhZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBp
cyBub3QgYWxsb3dlZCwKKyAgICAvLyB0aGUgbmV3IG1lbWJlciB3aWxsIG92ZXJsYXAgdGhlIHZh
cmlhYmxlIHNsb3RzLgorICAgIC8vIFRvIGtlZXAgdGhlIEpTTW9kdWxlRW52aXJvbm1lbnQgY29t
cGF0aWJsZSB0byB0aGUgSlNMZXhpY2FsRW52aXJvbm1lbnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJl
ciB0byBzdG9yZSB0aGUgSlNNb2R1bGVSZWNvcmQsIHdlIGFkZGl0aW9uYWxseSBhbGxvY2F0ZQor
ICAgIC8vIHRoZSBzdG9yYWdlIGFmdGVyIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLworICAg
IC8vIEpTTGV4aWNhbEVudmlyb25tZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25t
ZW50IF1bIHZhcmlhYmxlIHNsb3RzIF0KKyAgICAvLworICAgIC8vIEpTTW9kdWxlRW52aXJvbm1l
bnQ6CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMg
XVsgYWRkaXRpb25hbCBzbG90cyBmb3IgSlNNb2R1bGVFbnZpcm9ubWVudCBdCisgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogcmVzdWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51
bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0uaGVh
cCwgSlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUpKSkKKyAg
ICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5
bWJvbFRhYmxlKTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUs
IG1vZHVsZVJlY29yZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU01vZHVsZUVu
dmlyb25tZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCBpbml0aWFsVmFsdWUpOworICAgIHRoaXMtPm1vZHVsZVJlY29yZFNsb3QoKS5zZXQodm0s
IHRoaXMsIG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpT
TW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVu
dCo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPnNjb3BlU2l6ZSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bW9kdWxlUmVjb3JkU2xvdCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmly
b25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25t
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDk3YmVkNDYzNzNkYTgyMzU1ZTcxNzdlNTI3NmRlOTM3NmVkNjhh
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisj
ZGVmaW5lIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgUmVnaXN0ZXI7CisKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMg
SlNMZXhpY2FsRW52aXJvbm1lbnQgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTGV4
aWNhbEVudmlyb25tZW50IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZp
cm9ubWVudCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwg
SlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgSlNN
b2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpT
VmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorICAgIHsK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUVudmly
b25tZW50U3RydWN0dXJlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwg
Y3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOwor
ICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwganNOdWxs
KCksIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pPihCYXNlOjphbGxvY2F0aW9u
U2l6ZShzeW1ib2xUYWJsZSkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlv
blNpemUoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9m
ZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKSArIHNpemVvZihXcml0ZUJhcnJpZXI8SlNN
b2R1bGVSZWNvcmQ+KTsKKyAgICB9CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtb2R1bGVSZWNvcmRTbG90KCkuZ2V0KCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBK
U1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIFdyaXRlQmFycmll
ckJhc2U8SlNNb2R1bGVSZWNvcmQ+JiBtb2R1bGVSZWNvcmRTbG90KCkKKyAgICB7CisgICAgICAg
IHJldHVybiAqYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+Kj4o
Yml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRh
YmxlKCkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7Cit9OworCitpbmxpbmUgSlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1
bGVFbnZpcm9ubWVudChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJy
ZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZUVudmlyb25tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZDI3M2ZjYWM3NGVmMGRmMmRkMDFjZjg0NTAyNTk2N2VlNWVmNWMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3Rh
dGUqKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpzX2luZm8g
PSB7ICJNb2R1bGVOYW1lc3BhY2VPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KSB9OworCisKK0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQorICAgICwgbV9leHBvcnRzKGV4cG9ydHMpCit7Cit9CisKK3ZvaWQgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwor
ICAgIG1fbW9kdWxlUmVjb3JkLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVO
YW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1u
YW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFj
ZS1leG90aWMtb2JqZWN0cy1zZXRwcm90b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhv
dGljLW9iamVjdHMtaXNleHRlbnNpYmxlCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVj
dHMtcHJldmVudGV4dGVuc2lvbnMKKyAgICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3Zv
aWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAg
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VP
YmplY3Q6On5KU01vZHVsZU5hbWVzcGFjZU9iamVjdCgpOworfQorCit2b2lkIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVSZWNvcmQpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNl
LWV4b3RpYy1vYmplY3RzLWdldG93bnByb3BlcnR5LXAKKworICAgIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2Vs
bCk7CisKKyAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CisKKyAgICBpZiAoIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9w
ZXJ0eU5hbWUudWlkKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU01vZHVsZVJl
Y29yZCogbW9kdWxlUmVjb3JkID0gdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQuZ2V0KCk7CisK
KyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgIElkZW50aWZp
ZXJTZXQgZXhwb3J0U3RhclNldDsKKyAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBtb2R1bGVS
ZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpLCByZXNvbHZlU2V0LCBleHBvcnRTdGFyU2V0KTsKKyAgICBBU1NFUlQo
cmVzb2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpOb3RG
b3VuZCAmJiByZXNvbHV0aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5
cGU6OkFtYmlndW91cyk7CisgICAgSlNNb2R1bGVSZWNvcmQqIHRhcmdldE1vZHVsZSA9IHJlc29s
dXRpb24ubW9kdWxlUmVjb3JkOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmly
b25tZW50ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgIFByb3BlcnR5
U2xvdCB0cmFtcG9saW5lU2xvdCh0YXJnZXRFbnZpcm9ubWVudCk7CisgICAgaWYgKCF0YXJnZXRF
bnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0
YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVT
bG90KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1w
b2xpbmVTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgQVNTRVJUKCFleGVj
LT5oYWRFeGNlcHRpb24oKSk7CisgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RGVs
ZXRlLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
c2V0LXAtdi1yZWNlaXZlcgorICAgIHJldHVybjsKK30KKworYm9vbCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3Rz
LWRlbGV0ZS1wCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICByZXR1cm4gIXRoaXNPYmpl
Y3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOworfQorCit2b2lkIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1v
d25wcm9wZXJ0eWtleXMKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIGZvciAoY29uc3Qg
YXV0byYgbmFtZSA6IHRoaXNPYmplY3QtPm1fZXhwb3J0cykKKyAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQobmFtZS5nZXQoKSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVj
dHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCisgICAgaWYgKHNob3VsZFRocm93KQorICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5l
IHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTmFtZXNw
YWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoInx0aGlzfCBzaG91bGQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
KCksIGFzT2JqZWN0KHRoaXNWYWx1ZSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YWQ3NzIxMTE2OWRlMDk0MDc4NmVmYWNjNjc4NGVkN2IyOWY2
ZmJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdF9oCisjZGVmaW5lIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKKworI2luY2x1ZGUgIkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU01vZHVs
ZVJlY29yZDsKKworY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBjb25zdCBJ
ZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0PihleGVjLT52bSgpLmhlYXApKSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChleGVj
LT52bSgpLCBzdHJ1Y3R1cmUsIGV4cG9ydHMpOworICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgbW9kdWxlUmVjb3JkKTsKKyAgICAgICAgcmV0
dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVs
ZVJlY29yZCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KFZNJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cyk7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBJZGVudGlmaWVyU2V0
IG1fZXhwb3J0czsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVj
b3JkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKaW5kZXggZTcwMmZhZmE0NGU1MDZmOWQ0N2ZlZGU2MzM2NjRhNzM4YzE5YjQw
Yi4uYmI1YzQyYTNlMjFkMGRmNGI1NDk2NGQzNTNiNjBmMGJjMzljNTI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMjAsMTUg
KzIwLDIxIEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRl
ICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNs
dWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRl
ICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC00MSwxMiArNDcsMjYgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCiAgICAgdGhpc09iamVjdC0+SlNNb2R1bGVSZWNvcmQ6On5KU01vZHVsZVJlY29yZCgpOwog
fQogCi0KIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OwogICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0
ZXJhbCgicmVnaXN0cnlFbnRyeSIpKSwganNVbmRlZmluZWQoKSk7CisgICAgcHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJldmFsdWF0ZWQiKSks
IGpzQm9vbGVhbihmYWxzZSkpOworCisgICAgbV9kZXBlbmRlbmNpZXNNYXAuc2V0KHZtLCB0aGlz
LCBKU01hcDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKS0+bWFwU3RydWN0dXJlKCkpKTsKKyAg
ICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwo
ImRlcGVuZGVuY2llc01hcCIpKSwgbV9kZXBlbmRlbmNpZXNNYXAuZ2V0KCkpOworfQorCit2b2lk
IEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNN
b2R1bGVSZWNvcmQqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmly
b25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBlbmRl
bmNpZXNNYXApOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fbGlua2Vk
TW9kdWxlcy5kYXRhKCksIHRoaXNPYmplY3QtPm1fbGlua2VkTW9kdWxlcy5zaXplKCkpOwogfQog
CiBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQpAQCAtNjQs
NiArODQsMjU5IEBAIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRp
cmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjCiAgICAgcmV0dXJuIEV4cG9ydEVu
dHJ5IHsgVHlwZTo6SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUs
IElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKIH0KIAorc3RhdGlj
IEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkKKyAg
ICAgICAgcmV0dXJuIFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0YXRpY19jYXN0PFN5bWJv
bEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoJmV4ZWMt
PnZtKCksIGlkZW50aWZpZXIuaW1wbCgpKTsKK30KKworSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxl
UmVjb3JkOjpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSA9
IGlkZW50aWZpZXJUb0pTVmFsdWUoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgSlNWYWx1ZSBwYWly
ID0gbV9kZXBlbmRlbmNpZXNNYXAtPkpTTWFwOjpnZXQoZXhlYywgbW9kdWxlTmFtZVZhbHVlKTsK
KyAgICByZXR1cm4ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOworfQorCithdXRvIEpTTW9kdWxlUmVj
b3JkOjpyZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9j
YWxOYW1lKSAtPiBSZXNvbHV0aW9uCit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1w
b3J0RW50cmllcy5maW5kKGxvY2FsTmFtZS5pbXBsKCkpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X2ltcG9ydEVudHJpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1
dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVsZUtleSgpLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsK
KworICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGlm
IChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgcmV0dXJuIFJl
c29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMs
IElkZW50aWZpZXIoKSB9OworCisgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0g
aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0
KTsKKyAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgSWRlbnRpZmllclNldCBleHBvcnRT
dGFyU2V0OworICAgIHJldHVybiBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBp
bXBvcnRFbnRyeS5pbXBvcnROYW1lLCByZXNvbHZlU2V0LCBleHBvcnRTdGFyU2V0KTsKK30KKwor
YXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIFJlc29sdmVTZXQmIHJlc29sdmVTZXQsIElkZW50aWZp
ZXJTZXQmIHN0YXJTZXQpIC0+IFJlc29sdXRpb24KK3sKKyAgICBpZiAoIXJlc29sdmVTZXQuYWRk
KFJlc29sdmVRdWVyeShtb2R1bGVLZXkoKSwgZXhwb3J0TmFtZSkpLmlzTmV3RW50cnkpCisgICAg
ICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVs
ZUtleSgpLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3Ig
PSBtX2V4cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lLmltcGwoKSk7CisgICAgaWYgKGl0ZXJh
dG9yICE9IG1fZXhwb3J0RW50cmllcy5lbmQoKSkgeworICAgICAgICBjb25zdCBhdXRvJiBleHBv
cnRFbnRyeSA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50
eXBlKSB7CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpM
b2NhbDoKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5h
bWVzcGFjZToKKyAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlw
ZTo6UmVzb2x2ZWQsIG1vZHVsZUtleSgpLCB0aGlzLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUgfTsK
KworICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJl
Y3Q6IHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9
IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhwb3J0RW50cnkubW9kdWxlTmFtZSk7
CisgICAgICAgICAgICBjb25zdCBhdXRvIGluZGlyZWN0UmVzb2x1dGlvbiA9IGltcG9ydGVkTW9k
dWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydE5hbWUsIHJlc29sdmVTZXQsIHN0
YXJTZXQpOworICAgICAgICAgICAgaWYgKGluZGlyZWN0UmVzb2x1dGlvbi50eXBlICE9IFJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBpbmRpcmVjdFJl
c29sdXRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGV4cG9ydE5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1bHRL
ZXl3b3JkKQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkVy
cm9yLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBpZiAoIXN0YXJT
ZXQuYWRkKG1vZHVsZUtleSgpLmltcGwoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFJl
c29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMs
IElkZW50aWZpZXIoKSB9OworCisgICAgYXV0byBzdGFyUmVzb2x1dGlvbiA9IFJlc29sdXRpb24g
eyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50aWZp
ZXIoKSB9OworICAgIGZvciAoY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUgOiBtX3N0YXJFeHBv
cnRFbnRyaWVzKSB7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29y
ZCA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChl
eGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRp
b24gPSBpbXBvcnRlZE1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBleHBvcnROYW1l
LCByZXNvbHZlU2V0LCBzdGFyU2V0KTsKKyAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBS
ZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXMgfHwgcmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRp
b246OlR5cGU6OkVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHJlc29sdXRpb247CisgICAgICAg
IGlmIChyZXNvbHV0aW9uLnR5cGUgIT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAg
ICAgICAgICAgIGlmIChzdGFyUmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5v
dEZvdW5kKQorICAgICAgICAgICAgICAgIHN0YXJSZXNvbHV0aW9uID0gcmVzb2x1dGlvbjsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHN0YXJSZXNvbHV0aW9uLm1vZHVsZUtleSAhPSByZXNvbHV0aW9u
Lm1vZHVsZUtleSB8fCBzdGFyUmVzb2x1dGlvbi5sb2NhbE5hbWUgIT0gcmVzb2x1dGlvbi5sb2Nh
bE5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXMsIElkZW50aWZpZXIoKSwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RhclJlc29sdXRpb247Cit9CisKK3ZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlm
aWVyU2V0JiBleHBvcnRTdGFyU2V0LCBJZGVudGlmaWVyU2V0JiBleHBvcnRlZE5hbWVzLCBJbmNs
dWRlRGVmYXVsdE1vZGUgbW9kZSkKK3sKKyAgICBpZiAoZXhwb3J0U3RhclNldC5jb250YWlucyht
b2R1bGVLZXkoKS5pbXBsKCkpKQorICAgICAgICByZXR1cm47CisgICAgZXhwb3J0U3RhclNldC5h
ZGQobW9kdWxlS2V5KCkuaW1wbCgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4
cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZh
bHVlOworICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgY2FzZSBK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICBjYXNlIEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICBp
ZiAobW9kZSA9PSBJbmNsdWRlRGVmYXVsdE1vZGU6OkluY2x1ZGUgfHwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmRlZmF1bHRLZXl3b3JkICE9IGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpCisgICAgICAg
ICAgICAgICAgZXhwb3J0ZWROYW1lcy5hZGQoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBzdGFyTW9kdWxlTmFtZSA6IG1fc3RhckV4
cG9ydEVudHJpZXMpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIHJlcXVlc3RlZE1vZHVsZVJl
Y29yZCA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVp
ZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICByZXF1ZXN0ZWRNb2R1bGVS
ZWNvcmQtPmdldEV4cG9ydGVkTmFtZXMoZXhlYywgZXhwb3J0U3RhclNldCwgZXhwb3J0ZWROYW1l
cywgSW5jbHVkZURlZmF1bHRNb2RlOjpFeGNsdWRlKTsKKyAgICB9Cit9CisKK0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCisgICAgICAgIHJl
dHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKKworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSWRlbnRp
ZmllclNldCBleHBvcnRlZE5hbWVzOworICAgIHsKKyAgICAgICAgSWRlbnRpZmllclNldCBleHBv
cnRTdGFyU2V0OworICAgICAgICBnZXRFeHBvcnRlZE5hbWVzKGV4ZWMsIGV4cG9ydFN0YXJTZXQs
IGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVEZWZhdWx0TW9kZTo6SW5jbHVkZSk7CisgICAgfQorCisg
ICAgSWRlbnRpZmllclNldCB1bmFtYmlndW91c05hbWVzOworICAgIGZvciAoY29uc3QgYXV0byYg
bmFtZSA6IGV4cG9ydGVkTmFtZXMpIHsKKyAgICAgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0Owor
ICAgICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgICAgIGNvbnN0IGF1dG8g
cmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVj
LCBuYW1lLmdldCgpKSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgICAgIHN3aXRj
aCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQ6CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAg
ICAgICAgdW5hbWJpZ3VvdXNOYW1lcy5hZGQobmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldChleGVjLT52
bSgpLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSwgdGhp
cywgdW5hbWJpZ3VvdXNOYW1lcykpOworICAgIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dC5nZXQoKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSwgdGhpcyk7CisgICAgaWYg
KCFleGVjdXRhYmxlKSB7CisgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0
YWJsZSk7Cit9CisKK3NpemVfdCBKU01vZHVsZVJlY29yZDo6bGlua01vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZCkKK3sKKyAgICBzaXplX3QgY2FuZGlkYXRl
SW5kZXggPSBtX2xpbmtlZE1vZHVsZXMuc2l6ZSgpOworICAgIGNvbnN0IGF1dG8gYWRkUmVzdWx0
ID0gbV9saW5rZWRNb2R1bGVNYXAuYWRkKGltcG9ydGVkLT5tb2R1bGVFbnZpcm9ubWVudCgpLCBj
YW5kaWRhdGVJbmRleCk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAg
IG1fbGlua2VkTW9kdWxlcy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOworICAgICAg
ICBtX2xpbmtlZE1vZHVsZXMubGFzdCgpLnNldChleGVjLT52bSgpLCB0aGlzLCBpbXBvcnRlZCk7
CisgICAgICAgIHJldHVybiBjYW5kaWRhdGVJbmRleDsKKyAgICB9CisgICAgcmV0dXJuIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRp
YXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQoreworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRh
YmxlID0gdW5saW5rZWRDb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgSlNNb2R1bGVFbnZp
cm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHN5bWJvbFRhYmxlLCBqc1REWlZhbHVlKCksIHRoaXMpOworCisgICAgLy8g
SW5pdGlhbGl6ZSBub24tbGV4aWNhbCB2YXJpYWJsZXMgd2l0aCB1bmRlZmluZWQuCisgICAgZm9y
IChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IG1fZGVjbGFyZWRWYXJpYWJsZXMpIHsKKyAgICAgICAg
Y29uc3QgYXV0byYgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7
CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAg
aWYgKCFvZmZzZXQuaXNTdGFjaygpKQorICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxl
RW52aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5
LmdldCgpKSwganNVbmRlZmluZWQoKSwgZmFsc2UpOworICAgIH0KKworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisKKyAgICAvLyBJbml0aWFsaXplIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKyAg
ICBmb3IgKHNpemVfdCBpID0gMCwgbnVtYmVyT2ZGdW5jdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9j
ay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IGkgPCBudW1iZXJPZkZ1bmN0aW9uczsgKytpKSB7
CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CisgICAgICAgIGNv
bnN0IGF1dG8mIGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS0+bmFtZSgpLmltcGwoKSk7CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52
YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAgICAg
ICBBU1NFUlQoIXVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSB8fCB2bS5jb250cm9sRmxvd1Byb2Zp
bGVyKCkpIHsKKyAgICAgICAgICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+
aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2VJRCgp
LAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVBy
b2ZpbGluZ1N0YXJ0T2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgICAgICBzeW1ib2xU
YWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUtPm5hbWUoKSwgZnVuY3Rpb24sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBh
dXRvJiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIGlmIChleHBvcnRFbnRyeS50
eXBlID09IEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3QpIHsKKyAg
ICAgICAgICAgIFJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICAgICAgICAgIElkZW50aWZpZXJT
ZXQgZXhwb3J0U3RhclNldDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJl
c29sdmVFeHBvcnQoZXhlYywgZXhwb3J0RW50cnkuZXhwb3J0TmFtZSwgcmVzb2x2ZVNldCwgZXhw
b3J0U3RhclNldCk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246
OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmll
cykgeworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAg
ICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRN
b2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgICAgIGlmIChpbXBv
cnRFbnRyeS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkgeworICAgICAgICAgICAgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1
bGVOYW1lc3BhY2UoZXhlYyk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmlubGluZUdldChsb2NrZXIsIGltcG9ydEVudHJ5Lmxv
Y2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgU2NvcGVPZmZzZXQgb2Zmc2V0ID0gZW50cnku
c2NvcGVPZmZzZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChtb2R1bGVFbnZpcm9ubWVudC0+aXNW
YWxpZChvZmZzZXQpKTsKKyAgICAgICAgICAgIG1vZHVsZUVudmlyb25tZW50LT52YXJpYWJsZUF0
KG9mZnNldCkuc2V0KGV4ZWMtPnZtKCksIG1vZHVsZUVudmlyb25tZW50LCBuYW1lc3BhY2VPYmpl
Y3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0
OworICAgICAgICAgICAgSWRlbnRpZmllclNldCBleHBvcnRTdGFyU2V0OworICAgICAgICAgICAg
Y29uc3QgYXV0byByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhl
YywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBS
ZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJv
cjoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZl
ZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIG1vZHVs
ZUVudmlyb25tZW50KTsKKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldChleGVjLT52
bSgpLCB0aGlzLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7Cit9CisKK0pTVmFsdWUgSlNNb2R1
bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghbV9tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKG1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuZ2V0KCksIGV4ZWMsIHRoaXMsIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCkp
OworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY2xlYXIoKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgdWlkKQogewogICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCkBAIC03Niw3
ICszNDksNiBAQCBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCiAgICAgcmV0dXJuIHByaW50YWJsZU5hbWUoaWRlbnQuaW1wbCgpKTsKIH0KIAotCiB2
b2lkIEpTTW9kdWxlUmVjb3JkOjpkdW1wKCkKIHsKICAgICBkYXRhTG9nKCJcbkFuYWx5emluZyBN
b2R1bGVSZWNvcmQga2V5KCIsIHByaW50YWJsZU5hbWUobV9tb2R1bGVLZXkpLCAiKVxuIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCAw
NWQ2OTRkM2UzZmU1NWE1MjFhZjM1ZGU4MjYxNTk4MGYwODBlMmUwLi44MDZiOWRmMzI5MTNjNjFi
NjZhYWYwM2UxNDViZDc1YjI1YjU5YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTI4LDE1ICsyOCwyMiBAQAogCiAjaW5jbHVkZSAi
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIAorY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CitjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50OworY2xhc3MgSlNNYXA7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTsKKwogLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2Ut
dGV4dC1tb2R1bGUtcmVjb3JkcwogY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCkBAIC04
MSwxOCArODgsMTMgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KQorICAg
IHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAgewotICAgICAgICBK
U01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01v
ZHVsZVJlY29yZD4odm0uaGVhcCkpIEpTTW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVs
ZUtleSk7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTTW9kdWxlUmVjb3JkPih2bS5oZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0s
IHN0cnVjdHVyZSwgbW9kdWxlS2V5LCBzb3VyY2VDb2RlLCBkZWNsYXJlZFZhcmlhYmxlcywgbGV4
aWNhbFZhcmlhYmxlcyk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNNb2R1bGVSZWNv
cmQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVLZXkpCi0gICAgewotICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMt
PnZtKCksIHN0cnVjdHVyZSwgbW9kdWxlS2V5KTsKLSAgICB9Ci0KICAgICB2b2lkIGFwcGVuZFJl
cXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7CiAgICAgdm9pZCBhZGRTdGFyRXhwb3J0
RW50cnkoY29uc3QgSWRlbnRpZmllciYpOwogICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3Qg
SW1wb3J0RW50cnkmKTsKQEAgLTEwMCwyNCArMTAyLDExOCBAQCBjbGFzcyBKU01vZHVsZVJlY29y
ZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBjb25zdCBJbXBvcnRFbnRy
eSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9j
YWxOYW1lKTsKIAorICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUNvZGU7IH0KKyAgICBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBj
b25zdCB7IHJldHVybiBtX21vZHVsZUtleTsgfQogICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVy
U2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVz
OyB9CisgICAgY29uc3QgRXhwb3J0TWFwJiBleHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4g
bV9leHBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFy
ZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2RlY2xhcmVkVmFyaWFibGVzOyB9CisgICAg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsgfQogCiAgICAgdm9pZCBkdW1wKCk7CiAKKyAgICBKU01v
ZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9tb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25t
ZW50LmdldCgpOworICAgIH0KKworICAgIHZvaWQgbGluayhFeGVjU3RhdGUqKTsKKyAgICBKU1Zh
bHVlIGV4ZWN1dGUoRXhlY1N0YXRlKik7CisKKyAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5IHsKKyAg
ICAgICAgUmVzb2x2ZVF1ZXJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBtb2R1bGVLZXksIFVuaXF1ZWRT
dHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAgICAgICAgICAgOiBtb2R1bGVLZXkobW9kdWxlS2V5
KQorICAgICAgICAgICAgLCBleHBvcnROYW1lKGV4cG9ydE5hbWUpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlc29sdmVRdWVyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXks
IGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgICAgICA6IFJlc29sdmVRdWVy
eShtb2R1bGVLZXkuaW1wbCgpLCBleHBvcnROYW1lLmltcGwoKSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgICAg
ICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKyAgICAgICAgUmVz
b2x2ZVF1ZXJ5KERlbGV0ZWRWYWx1ZVRhZykKKyAgICAgICAgICAgIDogbW9kdWxlS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICAgICAgLCBleHBvcnROYW1lKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29s
IGlzRW1wdHlWYWx1ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbW9k
dWxlS2V5OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtb2R1bGVLZXkuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4gbW9kdWxlS2V5OworICAgICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9ydE5h
bWU7CisgICAgfTsKKworICAgIHN0cnVjdCBSZXNvbHZlUXVlcnlIYXNoIHsKKyAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYsIGNvbnN0IFJlc29sdmVRdWVyeSYpOworICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlc29sdmVRdWVyeSwgUmVz
b2x2ZVF1ZXJ5SGFzaCwgV1RGOjpDdXN0b21IYXNoVHJhaXRzPFJlc29sdmVRdWVyeT4+IFJlc29s
dmVTZXQ7CisKKyAgICBzdHJ1Y3QgUmVzb2x1dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFJlc29sdmVkLCBOb3RGb3VuZCwgQW1iaWd1b3VzLCBFcnJvciB9OworCisgICAgICAgIFR5
cGUgdHlwZTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVLZXk7CisgICAgICAgIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQ7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworICAg
IH07CisKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0TmFtZSwgUmVzb2x2ZVNldCYsIElkZW50aWZpZXJTZXQmIGV4cG9ydFN0
YXJTZXQpOworCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKTsg
fQorCisgICAgUmVzb2x1dGlvbiByZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIGxvY2FsTmFtZSk7CisKKyAgICBzaXplX3QgbGlua01vZHVsZShFeGVjU3RhdGUqLCBK
U01vZHVsZVJlY29yZCogaW1wb3J0ZWQpOworCiBwcml2YXRlOgotICAgIEpTTW9kdWxlUmVjb3Jk
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtl
eSkKKyAgICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKICAgICAgICAgLCBtX21vZHVsZUtleShtb2R1bGVLZXkpCisgICAgICAgICwgbV9zb3Vy
Y2VDb2RlKHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9kZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJl
ZFZhcmlhYmxlcykKKyAgICAgICAgLCBtX2xleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxl
cykKICAgICB7CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCisgICAg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIGdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3RhdGUqKTsK
KyAgICBlbnVtIGNsYXNzIEluY2x1ZGVEZWZhdWx0TW9kZSB7IEluY2x1ZGUsIEV4Y2x1ZGUgfTsK
KyAgICB2b2lkIGdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiwgSWRlbnRpZmllclNldCYgZXhw
b3J0U3RhclNldCwgSWRlbnRpZmllclNldCYgZXhwb3J0ZWROYW1lcywgSW5jbHVkZURlZmF1bHRN
b2RlKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgdm9pZCBpbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSop
OworCisgICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKICAgICAvLyBUaGUgbG9hZGVy
IHJlc29sdmVzIHRoZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1v
ZHVsZSBrZXkgaXMgdGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAg
ICAgSWRlbnRpZmllciBtX21vZHVsZUtleTsKIAorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2Rl
OworCisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOworICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOworCiAgICAgLy8gTWFwIGxvY2Fs
TmFtZSAtPiBJbXBvcnRFbnRyeS4KICAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOwogCkBA
IC0xMjksNiArMjI1LDE1IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKICAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRo
ZSBtb2R1bGUgbG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIu
CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZWV2YWx1YXRpb24KICAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3Rl
ZE1vZHVsZXM7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4gbV9tb2R1
bGVFbnZpcm9ubWVudDsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+
IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0OworICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNNYXA+IG1fZGVwZW5kZW5jaWVzTWFwOworCisgICAgdHlwZWRlZiBIYXNoTWFwPEpTTW9kdWxl
RW52aXJvbm1lbnQqLCBzaXplX3Q+IExpbmtlZE1vZHVsZU1hcDsKKyAgICBMaW5rZWRNb2R1bGVN
YXAgbV9saW5rZWRNb2R1bGVNYXA7CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4g
bV9saW5rZWRNb2R1bGVzOwogfTsKIAogaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVu
ZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQpAQCAtMTU2LDYg
KzI2MSwxNiBAQCBpbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnko
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbAogICAgIHJldHVybiAoKm1faW1wb3J0
RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOwogfQogCitpbmxpbmUgdW5zaWduZWQgSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29uc3QgSlNNb2R1bGVSZWNvcmQ6
OlJlc29sdmVRdWVyeSYgcXVlcnkpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXJSZXBIYXNoOjpo
YXNoKHF1ZXJ5Lm1vZHVsZUtleSkgKyBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChxdWVyeS5leHBv
cnROYW1lKTsKK30KKworaW5saW5lIGJvb2wgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhh
c2g6OmVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJo
cykKK3sKKyAgICByZXR1cm4gbGhzLm1vZHVsZUtleSA9PSByaHMubW9kdWxlS2V5ICYmIGxocy5l
eHBvcnROYW1lID09IHJocy5leHBvcnROYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAKaW5kZXggYmIyZWZkZDA2MzFjZDE4ZWE5NzU0MjY3NGEyY2U3MTgxNTA3MmM4
Zi4uNDViYTJmOWQ1NTI5ZmIwM2NiN2I3ZmMzZjdkZjgwYjE4ZDQwNWNjZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVS
ZWNvcmQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKIApAQCAtNjUsNiArNjcsMjYgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNz
KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKEpTTW9kdWxlRW52aXJv
bm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUVudmlyb25t
ZW50Kj4oc2NvcGUpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
ID0gbW9kdWxlRW52aXJvbm1lbnQtPm1vZHVsZVJlY29yZCgpOworICAgICAgICAgICAgY29uc3Qg
YXV0byByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIGlkZW50
KTsKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgICAgICAgICAgLy8gSW1wb3J0ZWQg
YmluZGluZ3MgYXJlIGFsd2F5cyBpbW11dGFibGUuCisgICAgICAgICAgICAgICAgaWYgKGdldE9y
UHV0ID09IFB1dCkgeworICAgICAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChEeW5hbWlj
LCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVk
UmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICAgICAgbW9kdWxl
UmVjb3JkLT5saW5rTW9kdWxlKGV4ZWMsIGltcG9ydGVkUmVjb3JkKTsKKyAgICAgICAgICAgICAg
ICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZEVudmlyb25tZW50ID0gaW1wb3J0ZWRSZWNv
cmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IGltcG9ydGVkRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5p
bXBsKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAg
ICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MpLCBkZXB0aCwgMCwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hw
b2ludFNldCgpLCBlbnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChs
ZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPnVzZXNOb25TdHJpY3RFdmFsKCkpCiAg
ICAgICAgICAgICBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyA9IHRydWU7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTIzMiw2ICsyNTQsNyBAQCBjb25zdCBjaGFyKiByZXNvbHZlVHlwZU5hbWUo
UmVzb2x2ZVR5cGUgdHlwZSkKICAgICAgICAgIkdsb2JhbFZhciIsCiAgICAgICAgICJDbG9zdXJl
VmFyIiwKICAgICAgICAgIkxvY2FsQ2xvc3VyZVZhciIsCisgICAgICAgICJNb2R1bGVWYXIiLAog
ICAgICAgICAiR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAg
Ikdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiLAogICAgICAgICAiQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MiLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5oCmluZGV4IGE2NTMxNjc0OTBmNjgyMjNmNTExZGQyODkwODkyOWZjNDZhMTk3M2MuLmRmODky
OWY0MTM1MGJmM2ZlODk4YTQ2Y2YwY2MxZjk1NGJkODFmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZW51bSBSZXNvbHZlVHlwZSB7
CiAgICAgR2xvYmFsVmFyLAogICAgIENsb3N1cmVWYXIsCiAgICAgTG9jYWxDbG9zdXJlVmFyLAor
ICAgIE1vZHVsZVZhciwKIAogICAgIC8vIERpdHRvLCBidXQgYXQgbGVhc3Qgb25lIGludGVydmVu
aW5nIHNjb3BlIHVzZWQgbm9uLXN0cmljdCBldmFsLCB3aGljaAogICAgIC8vIGNhbiBpbmplY3Qg
YW4gaW50ZXJjZXB0aW5nIHZhciBkZWxjYXJhdGlvbiBhdCBydW50aW1lLgpAQCAtNzIsNiArNzMs
NyBAQCBpbmxpbmUgUmVzb2x2ZVR5cGUgbWFrZVR5cGUoUmVzb2x2ZVR5cGUgdHlwZSwgYm9vbCBu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcykKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBM
b2NhbENsb3N1cmVWYXI6CiAgICAgICAgIHJldHVybiBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTkw
LDYgKzkyLDcgQEAgaW5saW5lIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5
cGUgdHlwZSkKICAgICBjYXNlIEdsb2JhbFZhcjoKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAg
Y2FzZSBMb2NhbENsb3N1cmVWYXI6CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDQwMzI2Y2UwZjMyOWZhN2M3YmJjOTlmNDQ2NDI4
ZmU5NmM5MTI0YjMuLmZjZTA2MWQxZjhkNjFkYWIwNjM2MGFlOGQ3YWE0NDhmMmYxOGM3OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC00MSwxMCArNDEsMTIgQEAg
ZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIEV2YWxFeGVjdXRhYmxlVHlwZSwKICAgICBQ
cm9ncmFtRXhlY3V0YWJsZVR5cGUsCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLAog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVR5cGUsCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrVHlwZSwKKyAgICBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tUeXBlLAogICAgIFVubGlua2VkRXZhbENvZGVCbG9ja1R5
cGUsCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1R5cGUsCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDFk
NjdhNGNhZGU4YjQ3Y2MxOGNmNTg2NDJkNjQ0NmQwMzJmNWU3OTMuLmU2YzIyZDJkM2MzNTI1MDlj
NWM4NTcyNTUzYTlmYTZjMmJkYjk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5h
bHl6ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNDUsNiArNDYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0
RXZhbHVhdGUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJP
YmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUoRXhlY1N0
YXRlKik7CkBAIC02MiwyOCArNjUsMzQgQEAgY29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlck9i
amVjdDo6c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm0KIAogLyog
U291cmNlIGZvciBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgKIEBiZWdpbiBtb2R1bGVMb2FkZXJP
YmplY3RUYWJsZQotICAgIHNldFN0YXRlVG9NYXggICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBu
ZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3ROZXdSZWdpc3RyeUVu
dHJ5ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgZW5zdXJlUmVnaXN0ZXJlZCAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQotICAgIGZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdEZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
LSAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxs
RmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbFRyYW5z
bGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKLSAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RD
b21taXRJbnN0YW50aWF0ZWQgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCi0gICAgaW5zdGFu
dGlhdGlvbiAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwotICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAg
cmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3Rh
bnRpYXRlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlcXVlc3RSZXNvbHZlRGVw
ZW5kZW5jaWVzIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzIERv
bnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBEb250RW51bXxGdW5jdGlvbiAx
Ci0gICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TG9hZE1v
ZHVsZSAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHByb3ZpZGUgICAg
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFByb3ZpZGUgICAgICAgICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKLSAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCi0gICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
UmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlc29s
dmUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBmZXRjaCAgICAgICAgICAgICAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RGZXRjaCAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCi0gICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0VHJhbnNsYXRlICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAg
IGluc3RhbnRpYXRlICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRl
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBzZXRTdGF0ZVRvTWF4ICAg
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0U2V0U3RhdGVUb01heCAgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBuZXdSZWdpc3RyeUVudHJ5ICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBlbnN1cmVSZWdpc3RlcmVkICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgICBmb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0Rm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgICBmdWxmaWxsRmV0Y2ggICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVs
ZmlsbEZldGNoICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxm
aWxsVHJhbnNsYXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5z
bGF0ZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsSW5zdGFu
dGlhdGUgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEluc3RhbnRpYXRlICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBjb21taXRJbnN0YW50aWF0ZWQgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDMKKyAgICBpbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDMKKyAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
UmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBy
ZXF1ZXN0SW5zdGFudGlhdGUgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdElu
c3RhbnRpYXRlICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0UmVz
b2x2ZURlcGVuZGVuY2llcyAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFJlc29sdmVEZXBl
bmRlbmNpZXMgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGVB
bGwgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0TGluayAgICAgICAgICAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0UmVhZHkgICAgICAgICAgICAgICAgICAgbW9kdWxl
TG9hZGVyT2JqZWN0UmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICBsaW5rICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0TGluayAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
ICBtb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxl
RGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBtb2R1bGVF
dmFsdWF0aW9uICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRXZhbHVhdGlv
biAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBldmFsdWF0ZSAgICAgICAg
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUgICAgICAgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBsb2FkTW9kdWxlICAgICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDMKKyAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0UGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVx
dWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXNv
bHZlICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBmZXRjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlICAgICAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBpbnN0YW50aWF0ZSAgICAgICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKIEBlbmQKICovCiAKQEAgLTEzNywxOSArMTQ2LDYgQEAgSlNWYWx1ZSBNb2R1
bGVMb2FkZXJPYmplY3Q6OnByb3ZpZGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgU3Rh
dHVzIHN0YXR1cywKICAgICByZXR1cm4gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogTW9kdWxl
TG9hZGVyT2JqZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGtleSkKLXsKLSAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihn
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlcXVlc3RJbnN0
YW50aWF0ZUFsbFB1YmxpY05hbWUoKSkpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwot
ICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOwotCi0gICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKLQotICAgIHJl
dHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOwotfQotCiBKU0ludGVybmFsUHJvbWlz
ZSogTW9kdWxlTG9hZGVyT2JqZWN0Ojpsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQogewogICAgIEpTT2JqZWN0KiBmdW5jdGlv
biA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkubG9hZE1vZHVsZVB1YmxpY05hbWUoKSkpOwpAQCAtMjQ5LDE0ICsyNDUsMTUg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1v
ZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9k
ZSk7CiAKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXks
IG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUt
PmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIo
ZXhlYywgbW9kdWxlS2V5LCBzb3VyY2VDb2RlLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFy
YXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAgIEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1
bGVQcm9ncmFtTm9kZSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZVJlY29y
ZCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0
UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01v
ZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZVJlY29yZCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMs
IG51bGxwdHIpKTsKIApAQCAtMjY4LDYgKzI2NSwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVj
KQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3Rh
bnRpYXRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIGlmICghbW9kdWxlUmVjb3JkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworCisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3Rh
dGUoKSkKKyAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAiLCBtb2R1bGVSZWNvcmQtPm1v
ZHVsZUtleSgpLCAiXG4iKTsKKworICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVj
dEV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICBpZiAoIW1vZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0
YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbZXZhbHVhdGVdICIsIG1vZHVsZVJlY29y
ZC0+bW9kdWxlS2V5KCksICJcbiIpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBtb2R1bGVSZWNv
cmQtPmV4ZWN1dGUoZXhlYyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29rIEZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKaW5kZXggNDVi
OTMyYWM1ODBhZjYwYWI1MmZkMTUwMTkzOTA5NTlhYmUwNTEwMy4uMTJjZmU1NmVlYmI2YzQyN2Mw
ZWY3OTAyMWY5OTdjNmIwZDM4NGExZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKQEAgLTY0LDcgKzY0LDYgQEAgY2xhc3MgTW9k
dWxlTG9hZGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgLy8gQVBJ
cyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgogICAgIEpTVmFsdWUgcHJvdmlkZShFeGVj
U3RhdGUqLCBKU1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJpbmcmKTsKLSAgICBKU0ludGVy
bmFsUHJvbWlzZSogcmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5
KTsKICAgICBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVl
IG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpOwogCiAgICAgLy8gUGxhdGZvcm0gZGVwZW5k
ZW50IGhvb2tlZCBBUElzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAKaW5kZXggZTgzZTM4MzI1OGY5OWJiMDViYmUxMWUwYzY1ZGUwNGI4ZTA0OWUw
YS4uNGM0M2M2YWZmMmY2N2ZmMzU3NTczYWVjYTJkZjQzYmQzNzExM2I3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYWNoZWRDYWxsLmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC02NSw2ICs2Niwx
MCBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+aGFzLCBzZXRQcm90b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMs
IERvbnRFbnVtLCAwKTsKIAorICAgIC8vIFByaXZhdGUgYWRkIC8gaGFzIG9wZXJhdGlvbnMuCisg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5hZGRQcml2YXRlTmFtZSwg
c2V0UHJvdG9GdW5jQWRkLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNQcml2YXRlTmFtZSgpLCBzZXRQcm90
b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKKwogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZXMuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgdmFsdWVzLCBEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmtl
eXMsIHZhbHVlcywgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IDkzYzk2ZmJlYzA0NGY3Zjc0ZTk3ODQ3M2I2YmY5OGMwNzIxYjhlZDMuLjA1NmNkOTFmZTU5
YzE4MDY0NTg1YTM0MDM0Yzg5YjExY2Q4Yzk1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTIyMSw2ICsyMjEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHBy
b2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgUHJvZ3JhbUV4ZWN1dGFibGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVn
RXhwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3ltYm9sU3Ry
dWN0dXJlLnNldCgqdGhpcywgU3ltYm9sOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2xUYWJsZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpAQCAtMjMyLDYgKzIzMyw3IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB1bmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEV2
YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHBy
b3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9wZXJ0eVRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2Vha01hcERhdGFTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGluZmVycmVkVmFsdWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFZhbHVlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCA5YWZlOWE1YTJmZjQxZDljMWZjNjUxZmRjMDZiYjZhNTBmNzQ5ZjYxLi5j
ZGFiOWIyMjQ0MTBmNDMwYzYwNTY2OWFhMThmMGIxOTliZjI3NDIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9j
azsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3Mg
Vk1FbnRyeVNjb3BlOwogY2xhc3MgV2F0Y2hkb2c7CkBAIC0yNzksNiArMjgwLDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9n
cmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gbW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsKQEAgLTI5MCw2ICsyOTIsNyBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiB3ZWFrTWFwRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFZh
bHVlU3RydWN0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260009</attachid>
            <date>2015-08-26 17:36:33 -0700</date>
            <delta_ts>2015-08-26 21:03:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150826173622.patch</filename>
            <type>text/plain</type>
            <size>190050</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAwZDNiMWIzMjNjYzA4Mjk0NmVmNjJhYjFjMmI3YTE2OGVmMmQ2Li41ZGJiZGJlMjRiYmI3Yzk1
OTRkMDk4NmI2OGFjYmJkMDQ4YjI1YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTggQEAKKzIwMTUtMDgtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExv
YWRlcidzIHJlYWR5IC8gbGluayBwaGFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAg
KHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzLnJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNlLnRo
aXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAgICAgICAgKHJlcXVlc3RMaW5rKToKKyAg
ICAgICAgKHJlcXVlc3RSZWFkeSk6CisgICAgICAgIChsaW5rKToKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjppbmZlcnJlZE5hbWUpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJl
cGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJp
bGl0eUxldmVsSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6RXZhbENvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZVR5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlVHlwZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZp
c2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNr
RnJhbWU6OmZyaWVuZGx5U291cmNlVVJMKToKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJp
ZW5kbHlGdW5jdGlvbk5hbWUpOgorICAgICAgICAoSlNDOjpnZXRTdGFja0ZyYW1lQ29kZVR5cGUp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6CisgICAg
ICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChK
U0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3Bl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2lu
dC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6
CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKToKKyAgICAgICAgKEpTQzo6TW9kdWxl
QW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6
OmFuYWx5emUpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5oOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbXBvcnRDbGF1c2VJdGVtKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRXhwb3J0RGVjbGFyYXRpb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVMZXhpY2FsVmFyaWFibGUpOgorICAgICAgICAqIHBhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeTo6aXNJbXBvcnRlZE5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeTo6c2V0SXNJbXBvcnRlZE5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnQ6OmZpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQ2FjaGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tN
b2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhl
Y3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjppc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0
YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjp1bmxpbmtDYWxscyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlRW52aXJv
bm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlQ2Fs
bGVlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZU5hbWVz
cGFjZU9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVDYWxsZWUuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaC4KKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVDYWxsZWU6OkpTTW9kdWxlQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVDYWxsZWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVDYWxsZWU6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVDYWxsZWUuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlQ2FsbGVlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpKU01vZHVsZUNhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVDYWxsZWU6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oLgorICAgICAgICAo
SlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVu
dmlyb25tZW50OjpvZmZzZXRPZk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
RW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZp
cm9ubWVudDo6bW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVu
dDo6bW9kdWxlUmVjb3JkU2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OkpTTW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVz
cGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6aWRlbnRp
ZmllclRvSlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2
ZUltcG9ydGVkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmdldEV4cG9y
dGVkTmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNw
YWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6bGlua01vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpleGVjdXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZVJlY29yZDo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjptb2R1
bGVLZXkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhwb3J0RW50cmllcyk6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmRlY2xhcmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6UmVzb2x2ZVF1ZXJ5Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjptb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpKU01vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
OjpSZXNvbHZlUXVlcnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OlJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OnJlc29sdmVU
eXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6Om1h
a2VUeXBlKToKKyAgICAgICAgKEpTQzo6bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOgorICAgICAg
ICAoSlNDOjpSZXNvbHZlT3A6OlJlc29sdmVPcCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRl
ck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAgICAgIChKU0M6Om1v
ZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2Jq
ZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisKIDIwMTUtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0VTNl0gUmV0dXJuIEpTSW50ZXJuYWxQcm9taXNlIGFzIHJlc3Vs
dCBvZiBldmFsdWF0ZU1vZHVsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OGRj
MGI2MWI2ZmE4MmI4MWE2MTNjMDYxOGRmYWExYTlmMWI3MmY0Li4yYTcxZmYzYTNjZWUyYjgzNzFi
MDRkN2MzNjRlZTFiMDE0MGFmYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTY5Nyw2ICsxNjk3LDExIEBACiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVK
U1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEyNEE4RjgwRTU1NTc3NTAw
MzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0
cmluZy5jcHAgKi87IH07CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjky
NzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9OworCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAg
LyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVy
T2JqZWN0LmpzICovOyB9OworCQlFMzA2Nzc5QjFCOEU0QjhGMDAzRjg3RjAgLyogSlNNb2R1bGVD
YWxsZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMwNjc3OTkxQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmNwcCAqLzsgfTsKKwkJ
RTMwNjc3OUMxQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA2Nzc5QTFCOEU0QjhGMDAzRjg3
RjAgLyogSlNNb2R1bGVDYWxsZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcCAqLzsgfTsKKwkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdB
NTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyog
UmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBS
ZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJE
NzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1
MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpA
QCAtMTcxOSw2ICsxNzI0LDggQEAKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNw
cCAqLzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5
QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OworCQlF
M0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0
OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIw
MDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1NDcsNiArMzU1
NCwxMSBAQAogCQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0aWFsaXplVGhy
ZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4RTNBNTYwREY5Mjc4
QzAwRDkwQjM0IC8qIFZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9
IDA7IHBhdGggPSBWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lm
aWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJRTE4RTNBNTcwREY5
Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGlu
ZUVuZGluZyA9IDA7IHBhdGggPSBWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFu
Z3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OworCQlFMzA2
Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyT2JqZWN0LmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA2Nzc5OTFCOEU0QjhGMDAzRjg3RjAgLyogSlNN
b2R1bGVDYWxsZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
b2R1bGVDYWxsZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA2Nzc5QTFC
OEU0QjhGMDAzRjg3RjAgLyogSlNNb2R1bGVDYWxsZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNb2R1bGVDYWxsZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxOENCQkYxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4
NDAgLyogUmVmbGVjdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWZsZWN0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3
QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1NzEsNiArMzU4Myw4
IEBACiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNzFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc1OCw2
ICs0NzcyLDEyIEBACiAJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8s
CiAJCQkJQTc0REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwICovLAog
CQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCisJCQkJ
RTMwNjc3OTkxQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmNwcCAqLywKKwkJCQlF
MzA2Nzc5QTFCOEU0QjhGMDAzRjg3RjAgLyogSlNNb2R1bGVDYWxsZWUuaCAqLywKKwkJCQlFM0Qy
MzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJ
RTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLywKKwkJ
CQlFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3Bw
ICovLAorCQkJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oICovLAogCQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5jcHAgKi8sCiAJCQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmggKi8sCiAJCQkJQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3Bw
ICovLApAQCAtNTc3Niw2ICs1Nzk2LDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJCUUzM0Y1MDg4MUI4
NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3
Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBlLmpzICovLAorCQkJ
CUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8sCiAJ
CQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVjdG9yLmpzICovLAog
CQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlByb21pc2UuanMgKi8s
CiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJvdG90eXBlLmpzICov
LApAQCAtNjExMCw2ICs2MTMxLDcgQEAKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyog
REZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEy
OTgxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdEODlDRkMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAv
KiBERkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5RkI4NjgxQUUzMzVD
NjAwMzlEMDY5IC8qIEpTV2Vha1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0Ew
Qjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTYyMTcsNiArNjIzOSw3IEBACiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJD
IC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEMxNzA1MTNE
QjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTk1RjdBMThC
NTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMw
Njc3OUMxQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQUM5MjJCQzE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENjE3MTc4RTFDMDA2OTBDN0YgLyog
RlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjQyLDYgKzYy
NjUsNyBAQAogCQkJCTdCMDI0NzU3MUI4NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExM
b3dlckRGR1RvTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAwNzcz
QUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMThDQkMx
MUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjIzNUJERDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRD
b21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtNzAxOSw2ICs3MDQzLDcgQEAKIAkJ
CWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1v
ZHVsZUxvYWRlck9iamVjdC5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTUzRjFBQzAxOEM5MEY4
RjAwNzJFQjZEIC8qIGZyYW1ld29yay5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC03MzUzLDYgKzczNzgsNyBA
QAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFp
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29k
ZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5
NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0Qy
MzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZp
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBG
VExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQzMSw2ICs3NDU3LDcgQEAK
IAkJCQkwRkQxMjAzMzFBOEM4NUJEMDAwRjUyODAgLyogRlRMSlNDYWxsVmFyYXJncy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjlEMzM5NjE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzM0Y1MDg0MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMThDQkMwMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjlEMzY5NDFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y3MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZv
cm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQ5MSw2ICs3NTE4LDcgQEAK
IAkJCQkwRjlGQjRGNDE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjRGMjlERjE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
NzIxMUQxOTNCOUM1OTAwMzFGNkVEIC8qIERGR1RyYW5zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTMwNjc3OUIxQjhFNEI4RjAwM0Y4N0YwIC8qIEpTTW9kdWxlQ2FsbGVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQzIwQ0I1MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDQ0ZFMThBNjAwNzAwMDFB
MjdGOCAvKiBERkdUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5N0ExMTQ2
QjI4Q0EwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04MDc5LDYg
KzgxMDcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlND
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVM
RVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpA
QCAtODA4Niw2ICs4MTE1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0NzJDRTQgLyog
TExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxF
X0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxl
YXNlOwogCQl9OwpAQCAtODA5Myw2ICs4MTIzLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5
MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJ
CW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTAwLDYgKzgxMzEsNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBG
Q0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTA3LDYgKzgxMzks
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVT
ID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAg
LTgxMTQsNiArODE0Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRv
b2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFC
TEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJl
bGVhc2U7CiAJCX07CkBAIC04MTIxLDYgKzgxNTUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAw
QzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTI4LDYgKzgxNjMsNyBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxF
X0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODE1
Niw2ICs4MTkyLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNj
cmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9F
UzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7
CiAJCX07CkBAIC04MTYzLDYgKzgyMDAsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgx
RTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJ
CW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODE3MSw2ICs4MjA5LDcgQEAKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3Jp
cHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlCVUlMRF9WQVJJ
QU5UUyA9IG5vcm1hbDsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTc4LDYgKzgyMTcs
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MTg1LDYgKzgy
MjUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJM
RV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTgxOTIs
NiArODIzMyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0g
RU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpA
QCAtODMyMyw2ICs4MzY1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyog
SmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVO
QUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklM
RSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUg
PSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzMzIsNiArODM3NSw3IEBACiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmln
ICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFC
TEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNv
cHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
IjsKIAkJCX07CkBAIC04MzQxLDYgKzgzODUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcw
MDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlO
Rk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBS
T0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9OwpAQCAtODM1MCw2ICs4
Mzk1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENv
cmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9E
VUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVk
IFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNTksNiArODQwNSw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUx
NDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9
OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtODM2Nyw2ICs4NDE0LDcgQEAKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0
MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxF
UzsKIAkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07
CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTgzNzUsNiArODQyMyw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUx
NDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9
OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkBAIC04Mzk4LDYgKzg0NDcsNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFD
OTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9N
T0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04NDA1LDYgKzg0
NTUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBE
ZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CkBAIC04NDI3LDYg
Kzg0NzgsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25m
aWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVO
QUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVj
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3Qu
anMKaW5kZXggNjVhMDUzOTY0ZGY0ODc3MzVlNjc1ZjRiOTE3ODM2ODEwY2RkOWEzMi4uODM5MDg2
ZTBjMjc4YmMyMWE1YzI4OWMwNWYyZGI1Yzc2OWZhZTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCkBAIC0xOTIsNyAr
MTkyLDcgQEAgZnVuY3Rpb24gY29tbWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25hbEluc3Rh
bmNlLCBzb3VyY2UpCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVs
bC82NwogCiAgICAgdmFyIGRlcGVuZGVuY2llcyA9IFtdOwotICAgIHZhciBkZXBlbmRlbmNpZXNN
YXAgPSBuZXcgQE1hcCgpOworICAgIHZhciBkZXBlbmRlbmNpZXNNYXAgPSBtb2R1bGVSZWNvcmQu
ZGVwZW5kZW5jaWVzTWFwOwogICAgIG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5ID0gZW50cnk7
CiAgICAgdmFyIHJlcXVlc3RlZE1vZHVsZXMgPSB0aGlzLnJlcXVlc3RlZE1vZHVsZXMobW9kdWxl
UmVjb3JkKTsKICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcmVxdWVzdGVkTW9kdWxlcy5s
ZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMzQ5LDcgKzM0OSw3IEBAIGZ1bmN0aW9uIHJl
cXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKICAgICB2YXIgcmVzb2x2ZURlcGVuZGVuY2ll
c1Byb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZShrZXkpLnRoZW4oZnVuY3Rpb24gKGVu
dHJ5KSB7CiAgICAgICAgIHZhciBkZXBMb2FkcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0g
MCwgbGVuZ3RoID0gZW50cnkuZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICB2YXIgcGFpciA9IGVudHJ5LmRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAg
ICAgIGxldCBwYWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ldOwogCiAgICAgICAgICAgICAvLyBI
b29rIHBvaW50LgogICAgICAgICAgICAgLy8gMS4gTG9hZGVyLnJlc29sdmUuCkBAIC0zNjEsMTYg
KzM2MSwyNSBAQCBmdW5jdGlvbiByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkpCiAKICAg
ICAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgcmVzb2x2aW5nLiBUaGUgZGVwZW5kZW5jaWVzIG9m
IHRoaXMgZW50cnkgaXMgYmVpbmcgcmVzb2x2ZWQgb3IgYWxyZWFkeSByZXNvbHZlZC4KICAgICAg
ICAgICAgICAgICAvLyBTdG9wIHRyYWNpbmcgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAg
ICAgICAgICAgICAgICAvLyBCdXQgdG8gcmV0cmlldmUgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUg
cmVjb3JkIGNvcnJlY3RseSwKKyAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHdhaXQgZm9y
IHRoZSBpbnN0YW50aWF0aW9uIGZvciB0aGUgZGVwZW5kZW50IG1vZHVsZS4KKyAgICAgICAgICAg
ICAgICAvLyBGb3IgZXhhbXBsZSwgcmVhY2hpbmcgaGVyZSwgdGhlIG1vZHVsZSBpcyBzdGFydGlu
ZyByZXNvbHZpbmcgdGhlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAvLyBCdXQgdGhl
IG1vZHVsZSBtYXkgb3IgbWF5IG5vdCByZWFjaCB0aGUgaW5zdGFudGlhdGlvbiBwaGFzZSBpbiB0
aGUgbG9hZGVyJ3MgcGlwZWxpbmUuCisgICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2FpdCBmb3Ig
dGhlIFJlc29sdmVEZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLCBpdCBjb25zdHJ1Y3QgdGhl
IGNpcmN1bGFyIHByb21pc2UgY2hhaW4gYW5kCisgICAgICAgICAgICAgICAgLy8gcmVqZWN0ZWQg
YnkgdGhlIFByb21pc2VzIHJ1bnRpbWUuIFNpbmNlIG9ubHkgd2UgbmVlZCBpcyB0aGUgaW5zdGFu
dGlhdGVkIG1vZHVsZSwgaW5zdGVhZCBvZiB3YWl0aW5nCisgICAgICAgICAgICAgICAgLy8gdGhl
IFJlc29sdmVEZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLCB3ZSBqdXN0IHdhaXQgSW5zdGFu
dGlhdGUgZm9yIHRoaXMuCiAgICAgICAgICAgICAgICAgaWYgKGRlcEVudHJ5LnJlc29sdmVEZXBl
bmRlbmNpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1ZSA9IGRlcEVudHJ5Lm1v
ZHVsZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcEVudHJ5OworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGVwRW50cnkuaW5zdGFudGlhdGUudGhlbihmdW5jdGlvbiAoZW50cnkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1bGU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIu
cmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoZGVwS2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkg
eworICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOwogICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIHJlc3VsdCBwcm9taXNlIG9mIHRoZSByZXF1ZXN0
SW5zdGFudGlhdGVBbGwgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoCiAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoZSByZWdpc3RyeSBlbnRyeS4KICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9naXRodWIuY29tL3doYXR3Zy9sb2FkZXIvcHVsbC82NgotICAgICAgICAgICAgICAgICAgICBw
YWlyLnZhbHVlID0gZW50cnkubW9kdWxlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50
cnk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKQEAgLTM5Niw2ICs0MDUs
OTAgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSkKICAgICByZXR1cm4gdGhp
cy5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkpOwogfQogCitmdW5jdGlvbiByZXF1ZXN0
TGluayhrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVx
dWVzdC1saW5rCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgZW50cnkgPSB0aGlzLmVu
c3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3RhdGUgPiB0aGlzLkxpbmspIHsK
KyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFBy
b21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIGVudHJ5
Lm1vZHVsZSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJvbWlzZTsKKyAgICB9CisKKyAg
ICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGVB
bGwoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICBsb2FkZXIubGluayhlbnRy
eSk7CisgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVxdWVz
dFJlYWR5KGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNy
ZXF1ZXN0LXJlYWR5CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbG9hZGVyID0gdGhp
czsKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0TGluayhrZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5
KSB7CisgICAgICAgIGxvYWRlci5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1vZHVsZSk7CisgICAg
fSk7Cit9CisKKy8vIExpbmtpbmcgc2VtYW50aWNzLgorCitmdW5jdGlvbiBsaW5rKGVudHJ5KQor
eworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2xpbmsKKworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIC8vIEZJWE1FOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMg
bm90IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKyAgICAvLyBTbyBMaW5rJ3Mgc3RlcCAzIGlz
IHNraXBwZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODE3MQorCisgICAgaWYgKGVudHJ5LnN0YXRlID09PSB0aGlzLlJlYWR5KQorICAgICAgICBy
ZXR1cm47CisgICAgZW50cnkuc3RhdGUgPSB0aGlzLlJlYWR5OworCisgICAgLy8gRklYTUU6IFNp
bmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgImRlcGVuZGVuY2llcyIgZmllbGQsCisgICAgLy8gd2Ug
Y2FuIGNhbGwgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIHdpdGggdGhlIGNvcnJlY3Qg
b3JkZXIKKyAgICAvLyB3aXRob3V0IGNvbnN0cnVjdGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBi
eSBjYWxsaW5nIGRlcGVuZGVuY3lHcmFwaC4KKyAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnku
ZGVwZW5kZW5jaWVzOworICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMu
bGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNp
ZXNbaV07CisgICAgICAgIHRoaXMubGluayhwYWlyLnZhbHVlLnJlZ2lzdHJ5RW50cnkpOworICAg
IH0KKworICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVs
ZSk7Cit9CisKKy8vIE1vZHVsZSBzZW1hbnRpY3MuCisKK2Z1bmN0aW9uIG1vZHVsZUV2YWx1YXRp
b24obW9kdWxlUmVjb3JkKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCisKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBpZiAobW9kdWxlUmVjb3JkLmV2YWx1YXRlZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1vZHVsZVJlY29yZC5ldmFsdWF0ZWQgPSB0cnVlOworCisgICAgdmFyIGVudHJ5ID0gbW9k
dWxlUmVjb3JkLnJlZ2lzdHJ5RW50cnk7CisKKyAgICAvLyBUaGUgY29udGVudHMgb2YgdGhlIFtb
UmVxdWVzdGVkTW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4KKyAg
ICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5jaWVzOworICAgIGZvciAodmFyIGkg
PSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNbaV07CisgICAgICAgIHZhciByZXF1aXJlZE1v
ZHVsZVJlY29yZCA9IHBhaXIudmFsdWU7CisgICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihy
ZXF1aXJlZE1vZHVsZVJlY29yZCk7CisgICAgfQorICAgIHRoaXMuZXZhbHVhdGUobW9kdWxlUmVj
b3JkKTsKK30KKwogZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCByZWZlcnJlcikKIHsK
ICAgICAidXNlIHN0cmljdCI7CkBAIC00MDYsMTEgKzQ5OSw3IEBAIGZ1bmN0aW9uIGxvYWRNb2R1
bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIpCiAgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2
ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4K
ICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJM
IGZvciB0aGUgcmVzb3VyY2UuCiAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShtb2R1bGVOYW1lLCBy
ZWZlcnJlcikudGhlbihmdW5jdGlvbiAoa2V5KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3csIHdl
IGRvbid0IGltcGxlbWVudCB0aGUgbGlua2luZyBwaGFzZSB5ZXQuCi0gICAgICAgIC8vIFNvIGhl
cmUsIHdlIGp1c3QgY2FsbCByZXF1ZXN0SW5zdGFudGlhdGVBbGwgdG8gb25seSBwZXJmb3JtIHRo
ZSBtb2R1bGUgbG9hZGluZy4KLSAgICAgICAgLy8gQXQgbGFzdCwgaXQgc2hvdWxkIGJlIHJlcGxh
Y2VkIHdpdGggcmVxdWVzdFJlYWR5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcyCi0gICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdElu
c3RhbnRpYXRlQWxsKGtleSk7CisgICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdFJlYWR5KGtl
eSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbgppbmRleCA0ZTVhOTZjMzhlZDg2Mjc3NDQyY2EyNjE5YzVjOGNhYzI5
Y2U4MmFhLi4wMjBlYzI0ODllZmUzYTMzMjk4NWI3MDkxMGRlY2NmNzhkNDlhOTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0x
NTcsNiArMTU3LDcgQEAKICAgICAgICAgImJ5dGVjb2RlcyIgOiBbCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJsbGludF9wcm9ncmFtX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAibGxpbnRfZXZhbF9wcm9sb2d1ZSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAibGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2siIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGQwMzFlYTkx
MmZjZTdlNTQxNmY3NmQ0YzY2NjNiMzJlMTI3ODY0YTMuLmE4M2MwZGYwYTU4NTM2Mzc3MTE4NTJi
ZDJmMjg1MzMxNjVlYjk0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgpAQCAtODcsNiArODgsOCBAQCBDU3RyaW5nIENvZGVCbG9jazo6aW5mZXJyZWRO
YW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuICI8ZXZhbD4iOwogICAgIGNhc2UgRnVuY3Rpb25D
b2RlOgogICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhl
Y3V0YWJsZSgpKS0+aW5mZXJyZWROYW1lKCkudXRmOCgpOworICAgIGNhc2UgTW9kdWxlQ29kZToK
KyAgICAgICAgcmV0dXJuICI8bW9kdWxlPiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0go
KTsKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwpAQCAtMTk2OCw5ICsxOTcxLDE0IEBA
IENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Nj
b3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxT
Y29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgdHlwZSk7CiAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IG9wLnR5cGU7CiAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDVdLnUub3BlcmFuZCA9IG9wLmRlcHRoOwotICAgICAgICAgICAgaWYgKG9wLmxleGlj
YWxFbnZpcm9ubWVudCkKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuc3lt
Ym9sVGFibGUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVu
dC0+c3ltYm9sVGFibGUoKSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAob3Au
bGV4aWNhbEVudmlyb25tZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9k
dWxlVmFyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAgdGhlIGxpbmtlZCBtb2R1bGUg
ZW52aXJvbm1lbnQgc3Ryb25nbHkgcmVmZXJlbmNlZC4KKyAgICAgICAgICAgICAgICAgICAgYWRk
Q29uc3RhbnQob3AubGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA2XS51LmpzQ2VsbC5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3Au
bGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOworICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnBv
aW50ZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE5OTUs
NyArMjAwMywxMiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgbW9k
ZUFuZFR5cGUudHlwZSgpKTsKIAotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9w
ZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5v
cGVyYW5kKCk7CisgICAgICAgICAgICAvLyBNb2R1bGVWYXIgY2FuIGdldCB0aGUgdmFyaWFibGUg
YXMgdGhlIHNhbWUgdG8gQ2xvc3VyZVZhci4KKyAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1v
ZHVsZVZhcikKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9
IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5kVHlwZS5tb2RlKCksIENsb3N1cmVWYXIpLm9wZXJh
bmQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5kVHlwZS5tb2RlKCksIG9w
LnR5cGUpLm9wZXJhbmQoKTsKKwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFy
IHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUud2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9p
bnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC0yMDYzLDE3ICsy
MDc2LDE4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICAgICAgLy8gd2Un
cmUgYWJzdHJhY3RseSAicmVhZCJpbmcgZnJvbSBhIEpTU2NvcGUuCiAgICAgICAgICAgICAgICAg
UmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwog
Ci0gICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICAgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gTW9kdWxlVmFyKQog
ICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG9wLmxleGljYWxFbnZpcm9ubWVudC0+
c3ltYm9sVGFibGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2Jh
bFZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5n
ZXQoKS0+c3ltYm9sVGFibGUoKTsKLSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gKG9wLnR5cGUgPT0gTW9kdWxlVmFyKSA/IG9wLmlt
cG9ydGVkTmFtZS5nZXQoKSA6IGlkZW50LmltcGwoKTsKICAgICAgICAgICAgICAgICBpZiAoc3lt
Ym9sVGFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIG91ciBw
YXJlbnQgc2NvcGUgd2FzIGNyZWF0ZWQgd2hpbGUgcHJvZmlsaW5nIHdhcyBkaXNhYmxlZCwgaXQg
d2lsbCBub3QgaGF2ZSBwcmVwYXJlZCBmb3IgcHJvZmlsaW5nIHlldC4KICAgICAgICAgICAgICAg
ICAgICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURG
b3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkpOwotICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJs
ZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9i
YWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBp
bXBsLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xU
YWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlE
ID0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0czsKIApAQCAtMzA0NCw2ICszMDU4LDExIEBA
IENvZGVCbG9jayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIHJldHVybiBq
c0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9jaygp
OwogfQogCitDb2RlQmxvY2sqIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50KCkK
K3sKKyAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKK30KKwogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2NrOjpy
ZXBsYWNlbWVudCgpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0zMDU5LDYgKzMwNzgsMTEgQEAgREZHOjpD
YXBhYmlsaXR5TGV2ZWwgUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwo
KQogICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9CiAKK0RG
Rzo6Q2FwYWJpbGl0eUxldmVsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZl
bEludGVybmFsKCkKK3sKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVsKHRo
aXMpOworfQorCiBERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYXBhYmlsaXR5
TGV2ZWxJbnRlcm5hbCgpCiB7CiAgICAgcmV0dXJuIERGRzo6ZXZhbENhcGFiaWxpdHlMZXZlbCh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCAz
ODE4ODBkNjNlZGEyNjU3MGE1N2IzYTEzNmM1YThiODU4Zjg2MzMzLi5iNjQ2MDk0MGZhZWEzMTk4
YWM2NGU1MWM5MmNjNWQyZjg1YjUwZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBl
TG9jYXRpb247CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0
aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07
CiAKQEAgLTEwOTIsMTAgKzEwOTMsMjkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jayA6IHB1Ymxp
YyBHbG9iYWxDb2RlQmxvY2sgewogI2VuZGlmCiB9OwogCitjbGFzcyBNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CitwdWJsaWM6CisgICAgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sm
IG90aGVyKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVy
KQorICAgIHsKKyAgICB9CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29k
ZUJsb2NrLCBzY29wZSwgc291cmNlUHJvdmlkZXIsIDAsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkK
KyAgICB7CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIERGRzo6Q2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkgb3ZlcnJpZGU7CisjZW5kaWYK
K307CisKIGNsYXNzIEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKIHB1
YmxpYzoKICAgICBFdmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9j
ayYgb3RoZXIpCi0gICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikK
KyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikKICAgICB7
CiAgICAgfQogICAgICAgICAKQEAgLTExMjAsNyArMTE0MCw3IEBAIGNsYXNzIEV2YWxDb2RlQmxv
Y2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrIDog
cHVibGljIENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRnVuY3Rpb25Db2RlQmxvY2soQ29weVBh
cnNlZEJsb2NrVGFnLCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCi0gICAgOiBDb2RlQmxvY2so
Q29weVBhcnNlZEJsb2NrLCBvdGhlcikKKyAgICAgICAgOiBDb2RlQmxvY2soQ29weVBhcnNlZEJs
b2NrLCBvdGhlcikKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVUeXBlLmNwcAppbmRleCA4YjJjYWQ1NmFiNjhhZjEyYjMyYmYyOWNkODQwYWMwYWE3
MTgzZDQ4Li4wYzcwNDNkZmEzZWFmZmU5Zjk0NmFkZDkxNzkzZmU2MjU3YWFlNDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKQEAgLTQyLDYgKzQyLDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29kZVR5cGUgY29k
ZVR5cGUpCiAgICAgY2FzZSBKU0M6OkZ1bmN0aW9uQ29kZToKICAgICAgICAgb3V0LnByaW50KCJG
dW5jdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6Ok1vZHVsZUNvZGU6Cisg
ICAgICAgIG91dC5wcmludCgiTW9kdWxlIik7CisgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0
OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlVHlwZS5oCmluZGV4IGI4ZTEwN2RjZjZiNjcwY2Q4MjgzZWJmYTUzNTFm
N2M2MzQyZjAyM2MuLjk5NDFkNTE0Y2RkMGM1ZmZlMzBmMWE4ODRmM2JhNTRjNmYwMGY4OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCkBAIC0yOCw3ICsyOCw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZh
bENvZGUsIEZ1bmN0aW9uQ29kZSB9OworZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxD
b2RlLCBGdW5jdGlvbkNvZGUsIE1vZHVsZUNvZGUgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDU3NGIxZTQ4MjM4OThiMzgwMTRkNTE4MjllYWI3ZjcxMzA5ZGJiMGEuLjQ2
MDk1ZDg0YmNjYTYwNjc1ZmVmZGU3ZjQwMDI3NTJkZDlhZWI1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDcs
NiArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZENvZGVC
bG9jazo6c19pbmZvID0geyAiVW5saW5rZWRDb2RlQmxvY2siLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFVubGlua2VkQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkR2xv
YmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEdsb2JhbENvZGVCbG9jayIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sp
IH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykgfTsKK2NvbnN0IENsYXNzSW5mbyBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZv
IFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2Nr
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2Rl
QmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19p
bmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIApAQCAtODks
NyArOTAsNiBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRDb2RlQmxvY2sqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9zeW1ib2xUYWJsZSk7CiAgICAgZm9yIChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0
ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25EZWNscy5iZWdpbigpLCBlbmQgPSB0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQogICAg
ICAgICB2aXNpdG9yLmFwcGVuZChwdHIpOwogICAgIGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVj
dG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYmVnaW4oKSwg
ZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0
cikKQEAgLTI5Miw2ICsyOTIsMTQgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQogCit2b2lkIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
dGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7Cit9CisKIFVubGlua2VkQ29kZUJs
b2NrOjp+VW5saW5rZWRDb2RlQmxvY2soKQogewogfQpAQCAtMzAxLDYgKzMwOSwxMSBAQCB2b2lk
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAganND
YXN0PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrKCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKTsKK30KKwog
dm9pZCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAg
IGpzQ2FzdDxVbmxpbmtlZEV2YWxDb2RlQmxvY2sqPihjZWxsKS0+flVubGlua2VkRXZhbENvZGVC
bG9jaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAppbmRleCAzMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1M2ZmMWI2YjQ2
Li44OGNlMjMxM2NhY2EwODgyZDg2YzFmMjg3NzBhM2EwOTg3MDZiNmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzYw
LDkgKzM2MCw2IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewogICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIGlmIChjb2RlVHlwZSgpID09IEdsb2JhbENvZGUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNDEyLDggKzQw
OSw2IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgRnVu
Y3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJl
c3Npb25WZWN0b3IgbV9mdW5jdGlvbkV4cHJzOwogCi0gICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRh
YmxlPiBtX3N5bWJvbFRhYmxlOwotCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zOwogCiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQpAQCAtNTE0
LDYgKzUwOSw0OSBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJs
aWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogICAgIERFQ0xBUkVfSU5GTzsKIH07CiAKK2Ns
YXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtl
ZEdsb2JhbENvZGVCbG9jayB7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7
CisgICAgc3RhdGljIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2
bSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisgICAgeworICAgICAgICBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPnVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
a1N0cnVjdHVyZS5nZXQoKSwgaW5mbyk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bigqdm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCitwdWJsaWM6CisgICAg
dHlwZWRlZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJl
SXNJbW1vcnRhbDsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgICAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgTW9kdWxlQ29kZSwgaW5mbykKKyAgICB7CisgICAgfQor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyPFN5bWJv
bFRhYmxlPiBtX3N5bWJvbFRhYmxlOworCitwdWJsaWM6CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKK307CisKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBV
bmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2Rl
Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDEyYjk3OTg4YWYyNWQ4ZTIyMjg1YTg1MjU5MzVj
YzYzMzAyNTRhOTYuLjIwM2E4N2EyMTc0ODk4MTk2NGMzM2FiMWVmMWI5M2I1OGQzNGFjNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC03MCw3ICs3MCw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgaWYgKG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cykK
ICAgICAgICAgaW5pdGlhbGl6ZVZhcmlhYmxlKHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5hcmd1
bWVudHMpLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKTsKIAotICAgIHB1c2hMZXhpY2FsU2NvcGUobV9z
Y29wZU5vZGUsIHRydWUpOworICAgIC8vIEZvciBNb2R1bGVDb2RlLCB3ZSBhbHJlYWR5IGluc3Rh
bnRpYXRlZCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSBsZXhpY2FsIHZhcmlhYmxlcy4KKyAgICBp
ZiAobV9jb2RlVHlwZSAhPSBNb2R1bGVDb2RlKQorICAgICAgICBwdXNoTGV4aWNhbFNjb3BlKG1f
c2NvcGVOb2RlLCB0cnVlKTsKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRl
bXAgPSBuZXdUZW1wb3JhcnkoKTsKQEAgLTUzNCw2ICs1MzYsMTQzIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5r
ZWRFdmFsQ29kCiAgICAgbV9URFpTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKnBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBmYWxzZSkpOwogfQogCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUs
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKKyAgICA6IG1fc2hvdWxkRW1pdERl
YnVnSG9va3MoT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IGRl
YnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9uKQorICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tz
KE9wdGlvbnM6OmZvcmNlUHJvZmlsZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBwcm9maWxlck1v
ZGUgPT0gUHJvZmlsZXJPbikKKyAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQor
ICAgICwgbV9jb2RlQmxvY2sodm0sIGNvZGVCbG9jaykKKyAgICAsIG1fdGhpc1JlZ2lzdGVyKENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCisgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNv
ZGUpCisgICAgLCBtX3ZtKCZ2bSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCit7
CisgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLT5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVy
IDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQorICAgICAgICBjb25zdGFudFJlZ2lzdGVy
ID0gbnVsbHB0cjsKKworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICBtX3No
b3VsZEVtaXREZWJ1Z0hvb2tzID0gZmFsc2U7CisKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgc3ltYm9sVGFibGUtPnNldFVzZXNO
b25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOworICAgIHN5bWJvbFRhYmxlLT5zZXRT
Y29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsKKworICAgIC8v
IEZvciB0aGUgZXhwb3J0ZWQgdmFyaWFibGVzLCB3ZSBhbHJlYWR5IHJlZ2lzdGVyIHRoZW0gdG8g
dGhlIHN0b3JlZCBzeW1ib2wgdGFibGUuCisgICAgLy8gRXZlbiBpZiB0aGUgdW5saW5rZWQvbGlu
a2VkIGNvZGUgYmxvY2sgaXMgcmVtb3ZlZCBhbmQgc3ltYm9sIHRhYmxlIGlzIHJlY3JlYXRlZCwK
KyAgICAvLyB0aGlzIGVuc3VyZXMgdGhlIGdlbmVyYXRlZCBzeW1ib2wgdGFibGUgaXMgYWx3YXlz
IHRoZSBzYW1lLgorCisgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gbV9z
aG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
OworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVi
dWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CisgICAgaWYgKHNob3VsZENhcHR1cmVB
bGxPZlRoZVRoaW5ncykKKyAgICAgICAgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9u
cygpLm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CisKKyAgICBhdXRvIGNhcHR1cmVzID0g
WyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkKSAtPiBib29sIHsKKyAgICAgICAgaWYgKCFzaG91
bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbW9kdWxlUHJvZ3JhbU5vZGUtPmNhcHR1cmVzKHVpZCk7CisgICAgfTsKKyAg
ICBhdXRvIGxvb2tVcFZhcktpbmQgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgZW50cnkpIC0+IFZhcktpbmQgeworICAgICAgICBp
ZiAoZW50cnkuaXNFeHBvcnRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZhcktpbmQ6OlNjb3Bl
OworICAgICAgICBpZiAoZW50cnkuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAg
cmV0dXJuIFZhcktpbmQ6OlNjb3BlOworICAgICAgICBpZiAoZW50cnkuaXNDYXB0dXJlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFZhcktpbmQ6OlNjb3BlOworICAgICAgICByZXR1cm4gY2FwdHVy
ZXModWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CisgICAgfTsKKworICAg
IGVtaXRPcGNvZGUob3BfZW50ZXIpOworCisgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKwor
ICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKworICAgIG1f
Y29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRo
aXMiCisKKyAgICBmb3IgKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbiA6IG1vZHVsZVBy
b2dyYW1Ob2RlLT5mdW5jdGlvblN0YWNrKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgaXRlcmF0
b3IgPSBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZmluZChmdW5jdGlvbi0+
aWRlbnQoKS5pbXBsKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyYXRvciAhPSBtb2R1
bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZW5kKCkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVCghaXRlcmF0b3ItPnZhbHVlLmlzSW1wb3J0ZWQoKSk7CisKKyAgICAgICAgVmFyS2lu
ZCB2YXJLaW5kID0gbG9va1VwVmFyS2luZChpdGVyYXRvci0+a2V5LmdldCgpLCBpdGVyYXRvci0+
dmFsdWUpOworICAgICAgICBpZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkgeworICAgICAg
ICAgICAgLy8gSGVhcCBhbGxvY2F0ZWQgZnVuY3Rpb25zIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQg
d2hlbiB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGNyZWF0ZWQuCisgICAgICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3RhY2sgYWxsb2NhdGVkIGZ1bmN0aW9ucyBjYW4g
YmUgYWxsb2NhdGVkIHdoZW4gZXhlY3V0aW5nIHRoZSBtb2R1bGUncyBib2R5LgorICAgICAgICAg
ICAgbV9mdW5jdGlvbnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9u
LCBOb3JtYWxGdW5jdGlvblZhcmlhYmxlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBO
b3cgZGVjbGFyZSBhbGwgdmFyaWFibGVzLgorCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1vZHVs
ZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSkgeworICAgICAgICBBU1NFUlQoIWVudHJ5
LnZhbHVlLmlzTGV0KCkgJiYgIWVudHJ5LnZhbHVlLmlzQ29uc3QoKSk7CisgICAgICAgIGlmICgh
ZW50cnkudmFsdWUuaXNWYXIoKSkgLy8gVGhpcyBpcyBlaXRoZXIgYSBwYXJhbWV0ZXIgb3IgY2Fs
bGVlLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0lt
cG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1wb3J0ZWROYW1lc3BhY2UoKSkgLy8gVGhlc2Ug
YXJlIG1hbmFnZWQgaW4gdGhlIG90aGVyIHBoYXNlLgorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIC8vIFZhcmlhYmxlcyBuYW1lZCAiYXJndW1lbnRzIiBhcmUgbmV2ZXIgY29uc3QuCisg
ICAgICAgIGNyZWF0ZVZhcmlhYmxlKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgZW50cnkua2V5
LmdldCgpKSwgbG9va1VwVmFyS2luZChlbnRyeS5rZXkuZ2V0KCksIGVudHJ5LnZhbHVlKSwgc3lt
Ym9sVGFibGUsIElnbm9yZUV4aXN0aW5nKTsKKyAgICB9CisKKyAgICBWYXJpYWJsZUVudmlyb25t
ZW50JiBlbnZpcm9ubWVudCA9IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCk7
CisKKyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxl
LT5tX2xvY2spOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChlbnRyeS52YWx1ZS5pc0xldCgpIHx8IGVudHJ5LnZhbHVlLmlzQ29u
c3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LnZhbHVlLmlzVmFyKCkpOworICAgICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0gc3ltYm9sVGFibGUtPmdl
dChsb2NrZXIsIGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVGFi
bGVFbnRyeS5pc051bGwoKSk7CisKKyAgICAgICAgICAgIC8vIEltcG9ydGVkIHZhcmlhYmxlcyBh
cmUgaGFuZGxlZCBpbnNpZGUgdGhlIHRvcC1tb3N0IG1vZHVsZSBlbnZpcm9ubWVudC4KKyAgICAg
ICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1w
b3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgVmFyS2luZCB2YXJLaW5kID0gbG9va1VwVmFyS2luZChlbnRyeS5rZXkuZ2V0KCksIGVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZzZXQ7CisgICAgICAgICAgICBp
ZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkKKyAgICAgICAgICAgICAgICB2YXJPZmZzZXQg
PSBWYXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyS2luZCA9PSBWYXJL
aW5kOjpTdGFjayk7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogbG9jYWwgPSBuZXdCbG9j
a1Njb3BlVmFyaWFibGUoKTsKKyAgICAgICAgICAgICAgICBsb2NhbC0+cmVmKCk7CisgICAgICAg
ICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KGxvY2FsLT52aXJ0dWFsUmVnaXN0ZXIoKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnko
dmFyT2Zmc2V0LCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBSZWFkT25seSA6IDApOworICAgICAg
ICAgICAgc3ltYm9sVGFibGUtPmFkZChsb2NrZXIsIGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkp
OworICAgICAgICB9CisgICAgfQorCisgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRTeW1ib2xUYWJs
ZSA9IG51bGxwdHI7CisgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQorICAgICAgICBjb25zdGFu
dFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJsZSk7CisgICAgZWxzZQor
ICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJs
ZS0+Y2xvbmVTY29wZVBhcnQoKm1fdm0pKTsKKworICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGVudmlyb25tZW50LCB0cnVlKSk7CisgICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFw
cGVuZChTeW1ib2xUYWJsZVN0YWNrRW50cnkgeyBTdHJvbmc8U3ltYm9sVGFibGU+KCptX3ZtLCBz
eW1ib2xUYWJsZSksIG1fc2NvcGVSZWdpc3RlciwgZmFsc2UsIGNvbnN0YW50U3ltYm9sVGFibGUt
PmluZGV4KCkgfSk7CisKKyAgICAvLyBQcmVmaWxsIHN0YWNrIHZhcmlhYmxlcyB3aXRoIHRoZSBU
RFogZW1wdHkgdmFsdWUuCisgICAgLy8gU2NvcGUgdmFyaWFibGVzIHdpbGwgYmUgaW5pdGlhbGl6
ZWQgdG8gdGhlIFREWiBlbXB0eSB2YWx1ZSB3aGVuIEpTTGV4aWNhbEVudmlyb25tZW50IGlzIGFs
bG9jYXRlZC4KKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQpIHsKKyAgICAgICAg
Ly8gSW1wb3J0ZWQgdmFyaWFibGVzIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkLgorICAgICAgICBp
ZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1ZS5pc0ltcG9ydGVkTmFt
ZXNwYWNlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KGVudHJ5LmtleS5nZXQoKSk7
CisgICAgICAgIEFTU0VSVCghc3ltYm9sVGFibGVFbnRyeS5pc051bGwoKSk7CisgICAgICAgIFZh
ck9mZnNldCBvZmZzZXQgPSBzeW1ib2xUYWJsZUVudHJ5LnZhck9mZnNldCgpOworICAgICAgICBp
ZiAob2Zmc2V0LmlzU2NvcGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NF
UlQob2Zmc2V0LmlzU3RhY2soKSk7CisgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmcmVnaXN0
ZXJGb3Iob2Zmc2V0LnN0YWNrT2Zmc2V0KCkpKTsKKyAgICB9Cit9CisKIEJ5dGVjb2RlR2VuZXJh
dG9yOjp+Qnl0ZWNvZGVHZW5lcmF0b3IoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ3ZjFiMWY3
NTQzMTBlZDk3YzAyYzlmMzM0YmExNzYzMDRmOGNiYTIuLmYzZDRiZTM4ZTM3OGRkY2FjMzJjY2Ey
MWI5YzEyNWRiOWNkYWJmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTI2OCw2ICsyNjgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSos
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBE
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwor
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3Io
KTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNDFhZTdmZTFkZDJmNTczNDg1NGY5NTAwNGFiY2UwMjRi
NjQyNzQxOS4uZTI5NjdmOGE5YjJlOGNhZWNmMjg5ZTU3M2QzZmI2ZTQ5ODM1MmFlZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjg4NCw4ICsyODg0LDE3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1vZHVsZVByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogeworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0
U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7CisKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZHN0UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGRzdFJlZ2lzdGVyLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOworICAg
IGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CisK
KyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0
RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMDQ2LDMw
ICszMDU1LDM3IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIHZvaWQgSW1wb3J0RGVjbGFy
YXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikK
IHsKKyAgICAvLyBEbyBub3RoaW5nIGF0IHRoZSBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKIHsKKyAgICAvLyBEbyBub3RoaW5nIGF0
IHRoZSBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhw
b3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCopCit2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Cisg
ICAgQVNTRVJUKG1fZGVjbGFyYXRpb24pOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
ZGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqKQordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBB
U1NFUlQobV9kZWNsYXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNs
YXJhdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRO
YW1lZERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBFeHBvcnROYW1l
ZERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBhdCB0aGUgcnVudGltZS4KIH0KIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSAt
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCA1MzNlMDk3MzNjMzk0ZmNhNWE5ODFiMTAwOTRhM2UzMjVjYzM5
YWIzLi5hNWZlNDk2MGMzNTYzYTc0ZGRkYmM2MWFjODc0MjFkYWNlMDkxYWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25t
ZW50LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJ
ZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC0zNzg5LDYgKzM3OTAs
MTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0RGlyZWN0
KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIE1vZHVsZVZhcjogeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYWxy
ZWFkeSBzdHJvbmdseSByZWZlcmVuY2VkIGJ5IHRoZSBDb2RlQmxvY2suCisgICAgICAgICAgICAg
ICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNNb2R1
bGVFbnZpcm9ubWVudCo+KGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudCht
b2R1bGVFbnZpcm9ubWVudCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENs
b3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOiB7CkBAIC0zOTU4LDYgKzM5NjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdldENs
b3N1cmVWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBzY29wZU5vZGUp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC00MDQyLDYgKzQwNTAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2Fz
ZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKaW5kZXggN2Y1NDMwODQ4NTI5MTU5M2ZiNzVmNmJiYzA2OWJhYTNi
NmNkMTMyNS4uOGZkYTdlMmJhMTI1NDIzMWJkMTRiMjhjNWJmM2JhNjY5YmVjZGEwMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjEzLDYg
KzIxMyw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAKICAgICBjYXNlIG9wX3B1dF90b19z
Y29wZTogewogICAgICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IFJlc29sdmVNb2RlQW5k
VHlwZShwY1s0XS51Lm9wZXJhbmQpLnR5cGUoKTsKKyAgICAgICAgLy8gSW1wb3J0ZWQgYmluZGlu
Z3MgYXJlIGFsd2F5cyBpbW11dGFibGUuCisgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1
bGVWYXIpCisgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICAgICAgLy8gSWYg
d2UncmUgd3JpdGluZyB0byBhIHJlYWRvbmx5IHByb3BlcnR5IHdlIGVtaXQgYSBEeW5hbWljIHB1
dCB0aGF0CiAgICAgICAgIC8vIHRoZSBERkcgY2FuJ3QgY3VycmVudGx5IGhhbmRsZS4KICAgICAg
ICAgaWYgKHJlc29sdmVUeXBlID09IER5bmFtaWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYzM0YTY2NWJlMzBkYjI5ZTBk
YWRlM2M3ZDhhNTNhNDdhMGY1ZjcyLi5jNWQyMWQwMmJhMzJkOGQwNWY0Y2U3NzNiNTdjMGVkMjY3
OTM3ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUNhbGxlZS5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CkBAIC05Nyw2ICs5OCw3IEBAIFN0cmluZyBTdGFja0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCgp
IGNvbnN0CiAgICAgCiAgICAgc3dpdGNoIChjb2RlVHlwZSkgewogICAgIGNhc2UgU3RhY2tGcmFt
ZUV2YWxDb2RlOgorICAgIGNhc2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6CiAgICAgY2FzZSBTdGFj
a0ZyYW1lRnVuY3Rpb25Db2RlOgogICAgIGNhc2UgU3RhY2tGcmFtZUdsb2JhbENvZGU6CiAgICAg
ICAgIGlmICghc291cmNlVVJMLmlzRW1wdHkoKSkKQEAgLTExOCw2ICsxMjAsOSBAQCBTdHJpbmcg
U3RhY2tGcmFtZTo6ZnJpZW5kbHlGdW5jdGlvbk5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIGNv
bnN0CiAgICAgY2FzZSBTdGFja0ZyYW1lRXZhbENvZGU6CiAgICAgICAgIHRyYWNlTGluZSA9ICJl
dmFsIGNvZGUiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2Rl
OgorICAgICAgICB0cmFjZUxpbmUgPSAibW9kdWxlIGNvZGUiOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIFN0YWNrRnJhbWVOYXRpdmVDb2RlOgogICAgICAgICBpZiAoY2FsbGVlKQogICAgICAg
ICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSwgc3Rh
Y2tGcmFtZUNhbGxlZSkuaW1wbCgpOwpAQCAtNDUxLDYgKzQ1Niw4IEBAIHN0YXRpYyBTdGFja0Zy
YW1lQ29kZVR5cGUgZ2V0U3RhY2tGcmFtZUNvZGVUeXBlKFN0YWNrVmlzaXRvciYgdmlzaXRvcikK
ICAgICBzd2l0Y2ggKHZpc2l0b3ItPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIFN0YWNrVmlzaXRv
cjo6RnJhbWU6OkV2YWw6CiAgICAgICAgIHJldHVybiBTdGFja0ZyYW1lRXZhbENvZGU7CisgICAg
Y2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpNb2R1bGU6CisgICAgICAgIHJldHVybiBTdGFja0Zy
YW1lTW9kdWxlQ29kZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkZ1bmN0aW9uOgog
ICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZTsKICAgICBjYXNlIFN0YWNrVmlz
aXRvcjo6RnJhbWU6Okdsb2JhbDoKQEAgLTExNzYsNiArMTE4Myw1NCBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBK
U1Njb3BlKiBzY29wZSkKK3sKKyAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgU2FtcGxp
bmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOworCisgICAgQVNTRVJUKHNjb3BlLT52bSgpID09
ICZjYWxsRnJhbWUtPnZtKCkpOworICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFT
U0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3ko
KSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2Nv
cGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCF2bS5pc1NhZmVUb1JlY3Vy
c2UoKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJy
b3IoY2FsbEZyYW1lKSk7CisKKyAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJs
ZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9y
Q2FsbCk7CisgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKKyAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
Y29tcGlsZUVycm9yKSk7CisgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCk7CisKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cg
JiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkpCisgICAgICAgIHJldHVybiB0aHJv
d1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlz
Jy4KKworICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5l
ZGAuCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCisgICAgUHJvdG9DYWxsRnJhbWUg
cHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTTW9k
dWxlQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSwgc2NvcGUsIG1vZHVs
ZVJlY29yZCksIGpzVW5kZWZpbmVkKCksIDEpOworCisgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBw
cm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQorICAgICAgICBwcm9maWxlci0+d2lsbEV4
ZWN1dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmly
c3RMaW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgLy8gRXhlY3V0ZSB0
aGUgY29kZToKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICB7CisgICAgICAgIFNhbXBsaW5nVG9v
bDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CisgICAgICAgIHJlc3Vs
dCA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0Nh
bGxGcmFtZSk7CisgICAgfQorCisgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZt
LmVuYWJsZWRQcm9maWxlcigpKQorICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJh
bWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhl
Y3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1
bHQpOworfQorCiBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9va0lEKQogewogICAgIERlYnVnZ2VyKiBk
ZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRl
eCAxMzJjOTVkMTdmNGUxMDliYTM3YmJjYjAxODcyNzMyYjJmOTUxMTZmLi45YjZiNDA0ODU3ZWJh
NThlYmRjNTRkODRjOWRhMjNkN2EzZTdlYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNTQsOCArNTQsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247
CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRh
YmxlOworICAgIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lz
dGVyOwogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU2FtcGxpbmdUb29sOwpAQCAtNzYs
NiArNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7
CiAgICAgICAgIFN0YWNrRnJhbWVHbG9iYWxDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRXZhbENv
ZGUsCisgICAgICAgIFN0YWNrRnJhbWVNb2R1bGVDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRnVu
Y3Rpb25Db2RlLAogICAgICAgICBTdGFja0ZyYW1lTmF0aXZlQ29kZQogICAgIH07CkBAIC0yMTIs
NiArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwo
Q2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEm
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCog
ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVj
dFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdU
YXJnZXQpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJh
bWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU01vZHVsZVJlY29yZCos
IEpTU2NvcGUqKTsKIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwg
SlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYg
YXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IGExZTlmMTJiMzE2MTA5Y2QwYzUw
ODE1YjE1ZTEwN2NkZjU0NDY4MzYuLjg3YmVjZDUyZTRiMWIyODE2NDljMjdlM2ZiZWE4MjRmMzBl
NGE0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCkBAIC0xODEsNiArMTgxLDggQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29k
ZVR5cGUgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogICAgIHN3aXRjaCAo
Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICBy
ZXR1cm4gQ29kZVR5cGU6OkV2YWw7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICByZXR1
cm4gQ29kZVR5cGU6Ok1vZHVsZTsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0
dXJuIENvZGVUeXBlOjpGdW5jdGlvbjsKICAgICBjYXNlIEdsb2JhbENvZGU6CkBAIC0xOTksNiAr
MjAxLDkgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpCiAgICAg
Y2FzZSBDb2RlVHlwZTo6RXZhbDoKICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJl
dmFsIGNvZGUiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgor
ICAgICAgICB0cmFjZUxpbmUgPSBBU0NJSUxpdGVyYWwoIm1vZHVsZSBjb2RlIik7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKICAgICAgICAgaWYgKGNhbGxlZSkK
ICAgICAgICAgICAgIHRyYWNlTGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJh
bWUoKSwgY2FsbGVlKS5pbXBsKCk7CkBAIC0yMTksNiArMjI0LDcgQEAgU3RyaW5nIFN0YWNrVmlz
aXRvcjo6RnJhbWU6OnNvdXJjZVVSTCgpCiAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKCkpIHsKICAg
ICBjYXNlIENvZGVUeXBlOjpFdmFsOgorICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKICAgICBj
YXNlIENvZGVUeXBlOjpGdW5jdGlvbjoKICAgICBjYXNlIENvZGVUeXBlOjpHbG9iYWw6IHsKICAg
ICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+
c291cmNlVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmgKaW5kZXggMDAzNmE3ODljNThlMTlhZTEzYjBkNGFiZmI3NTU4M2U5YmI0Njcz
NC4uNDFiZmM3MDg4MjBlY2NmY2FjNzM1YjM5YjQyMjQ3MTNlYmU1MmQ2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtNTIsNiAr
NTIsNyBAQCBjbGFzcyBTdGFja1Zpc2l0b3IgewogICAgICAgICAgICAgR2xvYmFsLAogICAgICAg
ICAgICAgRXZhbCwKICAgICAgICAgICAgIEZ1bmN0aW9uLAorICAgICAgICAgICAgTW9kdWxlLAog
ICAgICAgICAgICAgTmF0aXZlCiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCBiYmM4NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxLi44NGYzNmQ1
NDBmM2NiYWExYWVjYzU1M2FkZjhjNDYxNGI3YmRlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC00ODYsNiArNDg2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRl
Q29tcGlsZShKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgCiAgICAgc3dpdGNoICht
X2NvZGVCbG9jay0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICBjYXNl
IE1vZHVsZUNvZGU6CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgbV9jb2RlQmxvY2stPm1f
c2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBjNmYxZWY5
ZjdmMGM3Yzg3ZGU5MTY1ZDU1N2M0NWVkMDE3MWYzMDBhLi5kOGI0MDlkNzczOGQyYzI2ODZkNmQx
NTEwZWJiYTI5OTdlYTQ1MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNhbXBsaW5n
VG9vbC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFy
Z3VtZW50c1RhYmxlLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIApAQCAtNzAzLDYgKzcwNCwxMCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAgZW1pdFJl
c29sdmVDbG9zdXJlKGRzdCwgc2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVU
eXBlKSwgZGVwdGgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQo
KSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtNzE2LDcgKzcyMSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAg
UmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xv
YmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09
IENsb3N1cmVWYXIpCisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJl
c29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJl
c29sdmVUeXBlID09IE1vZHVsZVZhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwpAQCAtNzc4LDYgKzc4Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9t
X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWlj
OgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1vZHVsZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC04NTIsNiArODU4LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNv
bHZlVHlwZSkpOwogICAgICAgICBlbWl0UHV0Q2xvc3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90
LCB2YWx1ZSwgY3VycmVudEluc3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAg
YWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC04NzMsNyArODgwLDEyIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAgIHJldHVybjsKICAgICB3aGlsZSAobGlu
a0NvdW50LS0pCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CisKKyAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21v
ZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOworICAgICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRv
U2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9m
cm9tX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBlOTI2ZjUyZGM3NmQ5ZWRlMmYw
ZTNhNWIzZGMyNmIzMzZhOTJmODVkLi4wMjY5YmE0NmIxYmIxZGUyMjA0MzM1YmViOTkzMmEwZGRk
NzNiMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAt
MTMyLDggKzEzMiw4IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAg
IEFTU0VSVChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA2NCk7CiAjZW5kaWYKICAg
ICBBU1NFUlQoU3RyaW5nVHlwZSA9PSA2KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxOCk7
Ci0gICAgQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAxOSk7CisgICAgQVNTRVJUKE9iamVjdFR5
cGUgPT0gMjApOworICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjEpOwogICAgIEFTU0VS
VChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFz
SW5zdGFuY2UgPT0gMik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Ug
PT0gOCk7CkBAIC0xNDEsMTUgKzE0MSwxNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25z
KFZNJiB2bSkKICAgICBBU1NFUlQoR2xvYmFsQ29kZSA9PSAwKTsKICAgICBBU1NFUlQoRXZhbENv
ZGUgPT0gMSk7CiAgICAgQVNTRVJUKEZ1bmN0aW9uQ29kZSA9PSAyKTsKKyAgICBBU1NFUlQoTW9k
dWxlQ29kZSA9PSAzKTsKIAogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHkgPT0gMCwg
IkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHkgUmVzdWx0VHlwZSBpcyA9PSAwIik7CiAgICAg
c3RhdGljX2Fzc2VydChHbG9iYWxWYXIgPT0gMSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyIFJl
c3VsdFR5cGUgaXMgPT0gMSIpOwogICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhciA9PSAyLCAi
TExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyIFJlc3VsdFR5cGUgaXMgPT0gMiIpOwogICAgIHN0YXRp
Y19hc3NlcnQoTG9jYWxDbG9zdXJlVmFyID09IDMsICJMTEludCBhc3N1bWVzIExvY2FsQ2xvc3Vy
ZVZhciBSZXN1bHRUeXBlIGlzID09IDMiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA0LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA0Iik7Ci0gICAgc3Rh
dGljX2Fzc2VydChHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBh
c3N1bWVzIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA1
Iik7Ci0gICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9
PSA2LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1
bHRUeXBlIGlzID09IDYiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KER5bmFtaWMgPT0gNywgIkxMSW50
IGFzc3VtZXMgRHluYW1pYyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KE1vZHVsZVZhciA9PSA0LCAiTExJbnQgYXNzdW1lcyBNb2R1bGVWYXIgUmVzdWx0VHlwZSBpcyA9
PSA0Iik7CisgICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNSIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA2LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNiIpOworICAgIHN0YXRpY19hc3Nl
cnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNywgIkxMSW50IGFzc3VtZXMg
Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA3Iik7Cisg
ICAgc3RhdGljX2Fzc2VydChEeW5hbWljID09IDgsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVz
dWx0VHlwZSBpcyA9PSA4Iik7CiAgICAgCiAgICAgQVNTRVJUKFJlc29sdmVNb2RlQW5kVHlwZTo6
bWFzayA9PSAweGZmZmYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnQuY3BwCmluZGV4IDlkMDAxMDZiOWE4Mjc2ZjQ4NDIwZjZiNTQ2YzMyZDU5MzBh
MzZiNjguLmE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2ZlMmE1NWFiNzgwYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC05Nywx
MiArOTcsMzAgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KSkpOwogfQogCitzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYgdm0s
IENvZGVCbG9jayogY29kZUJsb2NrKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKHZtLmNh
blVzZUpJVCgpKSB7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgICAg
IGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVu
dHJ5VGh1bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuaykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBjb2RlQmxvY2stPnNldEpJVENv
ZGUoCisgICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7Cit9
CisKIHZvaWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewog
ICAgIHN3aXRjaCAoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBHbG9iYWxDb2Rl
OgogICAgICAgICBzZXRQcm9ncmFtRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgTW9kdWxlQ29kZToKKyAgICAgICAgc2V0TW9kdWxlUHJvZ3JhbUVu
dHJ5cG9pbnQodm0sIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEV2YWxD
b2RlOgogICAgICAgICBzZXRFdmFsRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAppbmRleCBhMmE2YjJiMTFjNTY4MWUwYjZlOTcwYzRmZDExYzk2ZTE5
ZGI5M2RhLi43YTFhNzVmNzFmMzNjOWNjYzBlNzg5YThiOTRkNDk2MTM2OWE0M2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNFbnZp
cm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNNb2R1bGVDYWxsZWUuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAppbmRleCA4YWI5
NmIzMDQ3NWZkNTU0ZGVmOGIzMjY2MjQ5NjYzMmVhZjk2ZDlhLi5hZjY4ODRlNWVkZTdiZWJlMDRm
MzdiM2YwMDA5MWVlMTZmOTUxMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBw
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X3Byb2dyYW1f
cHJvbG9ndWUpLCAicHJvZ3JhbSIpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxl
UHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cihsbGludF9tb2R1
bGVfcHJvZ3JhbV9wcm9sb2d1ZSksICJtb2R1bGVfcHJvZ3JhbSIpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBMTEludAogCiAjZWxzZSAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAppbmRleCAwZDFiZTZiZGFlYWRmNzk0ODdjZTkwNjY4MjY0Njg1
MTg4YThiZDEyLi45NWIwZjQ0ODQ4YmNjNTI5ZDE1MDNlMjg5YjkzZWZlMzcwNWM4MzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNDYsNiArNDYsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFs
RW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbW9kdWxlUHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQppbmRleCA1YWQ4MzQ2NWNkMWE0ZThmNGU5NjRhNjdlZDA4YTE1N2U3ZmEzNzVh
Li4yOTg4ZTFlYWJhMjA3M2E3MTQ3NDM1ODIyZTQ1OTZhZGQ0YWM0Mzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0x
NjEsOCArMTYxLDggQEAgY29uc3QgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMzAKIAogIyBU
eXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0cmluZ1R5cGUgPSA2Ci1jb25zdCBPYmplY3RUeXBlID0g
MTgKLWNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDE5Citjb25zdCBPYmplY3RUeXBlID0gMjAKK2Nv
bnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIxCiAKICMgVHlwZSBmbGFncyBjb25zdGFudHMuCiBjb25z
dCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQpAQCAtMTc2LDYgKzE3Niw3IEBAIGNvbnN0IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAogY29uc3QgR2xvYmFsQ29kZSA9
IDAKIGNvbnN0IEV2YWxDb2RlID0gMQogY29uc3QgRnVuY3Rpb25Db2RlID0gMgorY29uc3QgTW9k
dWxlQ29kZSA9IDMKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0
aGUgYXJndW1lbnQgY291bnQuCiBjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldApAQCAtMTkxLDEwICsxOTIsMTEgQEAgY29uc3QgR2xvYmFsUHJvcGVydHkgPSAw
CiBjb25zdCBHbG9iYWxWYXIgPSAxCiBjb25zdCBDbG9zdXJlVmFyID0gMgogY29uc3QgTG9jYWxD
bG9zdXJlVmFyID0gMwotY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
ID0gNAotY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDUKLWNvbnN0IENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNgotY29uc3QgRHluYW1pYyA9IDcKK2Nv
bnN0IE1vZHVsZVZhciA9IDQKK2NvbnN0IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcyA9IDUKK2NvbnN0IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Citjb25z
dCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDcKK2NvbnN0IER5bmFtaWMgPSA4
CiAKIGNvbnN0IFJlc29sdmVNb2RlTWFzayA9IDB4ZmZmZgogCkBAIC04ODQsNiArODg2LDExIEBA
IF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGRpc3BhdGNoKDApCiAKIAorX2xsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2Nr
R2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xs
aW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKwogX2xsaW50X2V2YWxfcHJv
bG9ndWU6CiAgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0
aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9n
dWUpCiAgICAgZGlzcGF0Y2goMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDIxNTJhMmYyNzdhZGU1ODc5NzZh
MWMzZjEyMDIzNzI5YjM4YTU5YS4uNWMwMGU2NDZmNjAxMGU2YmE2ODYxZTM0Y2U5Y2Y3NzRhNWE4
YzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE5MTgsNiArMTkxOCwxMiBAQCBtYWNybyBnZXRHbG9iYWxP
YmplY3QoZHN0KQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCiBlbmQKIAorbWFjcm8gZ2V0
SW1wb3J0ZWRNb2R1bGVTY29wZShkc3QpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDAp
CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGRzdCwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2Zy
LCB0MSwgOF0KK2VuZAorCiBtYWNybyB2YXJJbmplY3Rpb25DaGVjayhzbG93UGF0aCkKICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKQEAgLTE5NTcsMTAgKzE5NjMsMTUgQEAgX2xsaW50X29wX3Jlc29sdmVfc2Nv
cGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgotICAgIGJpbmVxIHQwLCBDbG9z
dXJlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGJpbmVx
IHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29wZSgpCiAgICAgZGlz
cGF0Y2goNykKIAorLnJNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBnZXRJbXBvcnRlZE1vZHVsZVNj
b3BlKDEpCisgICAgZGlzcGF0Y2goNykKKwogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9u
Q2hlY2soLnJEeW5hbWljKQpAQCAtMjE0NCwxMyArMjE1NSwxOCBAQCBfbGxpbnRfb3BfcHV0X3Rv
X3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
cER5bmFtaWMKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Ms
IC5wTW9kdWxlVmFyCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAgIHZhcklu
amVjdGlvbkNoZWNrKC5wRHluYW1pYykKICAgICBsb2FkVmFyaWFibGUoMSwgdDApCiAgICAgcHV0
Q2xvc3VyZVZhcigpCiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1bGVWYXI6CisgICAgYmluZXEg
dDAsIE1vZHVsZVZhciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhy
b3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCisgICAgZGlzcGF0
Y2goNykKKwogLnBEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1
dF90b19zY29wZSkKICAgICBkaXNwYXRjaCg3KQpAQCAtMjIzMyw0ICsyMjQ5LDQgQEAgX2xsaW50
X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAgIGxvYWRwIEpTQXJyb3dGdW5jdGlvbjo6
bV9ib3VuZFRoaXNbdDBdLCB0MAogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAg
ICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IDNkMTc3Y2E3N2I4YjhkODhkODdiNGY0
ZTg1Y2UzZDQ2ODM4YzQ0MWQuLmY2MjM4ZmI5NjgwMmJlNTM3ZTkxYWRjMjZiODJkODkwYjk1NDAz
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIu
Y3BwCkBAIC0zNiwxMSArMzYsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIAotTW9kdWxlQW5hbHl6
ZXI6Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlS2V5LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKK01vZHVsZUFuYWx5emVy
OjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGlj
YWxWYXJpYWJsZXMpCiAgICAgOiBtX3ZtKCZleGVjLT52bSgpKQotICAgICwgbV9tb2R1bGVSZWNv
cmQoZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVyZSgpLCBtb2R1bGVLZXkp
KQotICAgICwgbV9kZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcykKLSAgICAsIG1f
bGV4aWNhbFZhcmlhYmxlcyhsZXhpY2FsVmFyaWFibGVzKQorICAgICwgbV9tb2R1bGVSZWNvcmQo
ZXhlYy0+dm0oKSwgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZVJlY29yZFN0cnVjdHVyZSgpLCBtb2R1bGVLZXksIHNv
dXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFibGVzLCBsZXhpY2FsVmFyaWFibGVzKSkKIHsKIH0KIApA
QCAtODUsNyArODMsNyBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAgICAgfQogCiAgICAgY29u
c3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS0+bG9va1VwSW1wb3J0RW50cnko
bG9jYWxOYW1lKTsKLSAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0oKSkpIHsKKyAg
ICBpZiAodmFyaWFibGUuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKSB7CiAgICAgICAgIC8vIEV4cG9y
dGVkIG5hbWVzcGFjZSBiaW5kaW5nLgogICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2Ug
ZnJvbSAibW9kIgogICAgICAgICAvLyBleHBvcnQgeyBuYW1lc3BhY2UgfQpAQCAtMTQ0LDEwICsx
NDIsMTAgQEAgSlNNb2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVBy
b2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAvLyAgICAgVGhpcyBleHBvcnRzIGFs
bCB0aGUgbmFtZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGV4dGVybmFsIG1vZHVsZSBhcyB0aGUgY3Vy
cmVudCBtb2R1bGUncyBuYW1lLgogICAgIC8vCiAgICAgLy8gICAgIGV4cG9ydCAqIGZyb20gIm1v
ZCIKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2RlY2xhcmVkVmFyaWFibGVzKQorICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fbW9kdWxlUmVjb3JkLT5kZWNsYXJlZFZhcmlhYmxl
cygpKQogICAgICAgICBleHBvcnRWYXJpYWJsZShwYWlyLmtleSwgcGFpci52YWx1ZSk7CiAKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2xleGljYWxWYXJpYWJsZXMpCisgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVSZWNvcmQtPmxleGljYWxWYXJpYWJsZXMoKSkKICAg
ICAgICAgZXhwb3J0VmFyaWFibGUocGFpci5rZXksIHBhaXIudmFsdWUpOwogCiAgICAgaWYgKE9w
dGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCAyMjhhNjlmZWU3NDczNjYyMGQ3ZjZkYTU3MWJiNmFj
YWQ4NDZiNzA2Li43MDgzY2E5MDk5MThlZmQyM2ViYTFhM2Q1YmI5YzNmNjU3MzM4ZTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCkBAIC0zMSwx
MSArMzEsMTIgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU01vZHVsZVJlY29yZDsKK2Ns
YXNzIFNvdXJjZUNvZGU7CiAKIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShNb2R1bGVBbmFseXplcik7CiBwdWJsaWM6Ci0gICAgTW9kdWxlQW5hbHl6ZXIo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
bGV4aWNhbFZhcmlhYmxlcyk7CisgICAgTW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
IGxleGljYWxWYXJpYWJsZXMpOwogCiAgICAgSlNNb2R1bGVSZWNvcmQqIGFuYWx5emUoTW9kdWxl
UHJvZ3JhbU5vZGUmKTsKIApAQCAtNTQsOCArNTUsNiBAQCBjbGFzcyBNb2R1bGVBbmFseXplciB7
CiAKICAgICBWTSogbV92bTsKICAgICBTdHJvbmc8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVj
b3JkOwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9kZWNsYXJlZFZhcmlhYmxlczsKLSAgICBW
YXJpYWJsZUVudmlyb25tZW50IG1fbGV4aWNhbFZhcmlhYmxlczsKICAgICBJZGVudGlmaWVyQWxp
YXNNYXAgbV9hbGlhc01hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCAzMjZiZmQyOTViZDU2MjQ1OTkxMGVhZTg0MmU4YjA4YzE0YjJlY2E3Li45OTYx
ZDIxYmExYjMzMjI5Mzc4M2M1OGIxNTQ2OTZmMDYwYTlkY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMzE4LDcgKzIzMTgsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpJbXBvcnRTcGVjaWZpZXIgUGFy
c2VyPExleGVyVAogICAgIH0KIAogICAgIHNlbWFudGljRmFpbElmVHJ1ZShsb2NhbE5hbWVUb2tl
bi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnLCAiQ2Fubm90IHVzZSBrZXl3b3JkIGFzIGltcG9y
dGVkIGJpbmRpbmcgbmFtZSIpOwotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlv
blJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZShsb2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29u
c3REZWNsYXJhdGlvbiwgRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCk7CisgICAgRGVj
bGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxv
Y2FsTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uLCAoc3BlY2lmaWVyVHlw
ZSA9PSBJbXBvcnRTcGVjaWZpZXJUeXBlOjpOYW1lc3BhY2VJbXBvcnQpID8gRGVjbGFyYXRpb25J
bXBvcnRUeXBlOjpJbXBvcnRlZE5hbWVzcGFjZSA6IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1w
b3J0ZWQpOwogICAgIGlmIChkZWNsYXJhdGlvblJlc3VsdCAhPSBEZWNsYXJhdGlvblJlc3VsdDo6
VmFsaWQpIHsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGRlY2xhcmF0aW9uUmVzdWx0ICYg
RGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRTdHJpY3RNb2RlLCAiQ2Fubm90IGRlY2xhcmUgYW4g
aW1wb3J0ZWQgYmluZGluZyBuYW1lZCAiLCBsb2NhbE5hbWUtPmltcGwoKSwgIiBpbiBzdHJpY3Qg
bW9kZSIpOwogICAgICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3Vs
dDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uKQpAQCAtMjU1OSwxMCArMjU1OSw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAgICAvLyBkb2VzIG5vdCBoYXZlIGVmZmVj
dCBvbiB0aGUgY3VycmVudCBtb2R1bGUncyBzY29wZS4gQnV0LAogICAgICAgICAgICAgLy8gICBl
eHBvcnQgeyBBLCBCLCBDIGFzIEQgfQogICAgICAgICAgICAgLy8gd2lsbCByZWZlcmVuY2UgdGhl
IGN1cnJlbnQgbW9kdWxlJ3MgYmluZGluZ3MuCi0gICAgICAgICAgICBmb3IgKGNvbnN0IElkZW50
aWZpZXIqIGxvY2FsTmFtZSA6IG1heWJlTG9jYWxOYW1lcykgewotICAgICAgICAgICAgICAgIGN1
cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShsb2NhbE5hbWUsIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmV2YWwgPT0gKmxvY2FsTmFtZSk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IElkZW50aWZpZXIq
IGxvY2FsTmFtZSA6IG1heWJlTG9jYWxOYW1lcykKICAgICAgICAgICAgICAgICBjdXJyZW50U2Nv
cGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqbG9jYWxOYW1lKTsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9y
dE5hbWVkRGVjbGFyYXRpb24oZXhwb3J0TG9jYXRpb24sIHNwZWNpZmllckxpc3QsIG1vZHVsZU5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYzJlNmE2NTA0MDg5
OTE1ZGMyODA1N2ZmZTAxZjA0ZWVhZGUwMWYxNC4uZjY5N2JlMzM2YmI4MGM1MjUwNDI4NTZiOGMw
ODc1NTM3MzNhMTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0x
MDAsNiArMTAwLDcgQEAgZW51bSBjbGFzcyBEZWNsYXJhdGlvblR5cGUgewogCiBlbnVtIGNsYXNz
IERlY2xhcmF0aW9uSW1wb3J0VHlwZSB7CiAgICAgSW1wb3J0ZWQsCisgICAgSW1wb3J0ZWROYW1l
c3BhY2UsCiAgICAgTm90SW1wb3J0ZWQKIH07CiAKQEAgLTMzNSw2ICszMzYsMTAgQEAgc3RydWN0
IFNjb3BlIHsKIAogICAgICAgICBpZiAoaW1wb3J0VHlwZSA9PSBEZWNsYXJhdGlvbkltcG9ydFR5
cGU6OkltcG9ydGVkKQogICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJ
c0ltcG9ydGVkKCk7CisgICAgICAgIGVsc2UgaWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25J
bXBvcnRUeXBlOjpJbXBvcnRlZE5hbWVzcGFjZSkgeworICAgICAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVkKCk7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWROYW1lc3BhY2UoKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQgfD0gRGVj
bGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNWVk
MmE2YmRhOTI4MzhlMjk2NDgyZjY2YzA3ODVhMzYxMWFlNjE1Yy4uNzZjNzA5NmU5ZTY0NDdlYmJi
ZGIwZDk2NWEzZWE0YTI0YTUxNzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTGV0KCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNMZXQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNFeHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRXhwb3J0ZWQ7IH0KICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNJbXBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
SW1wb3J0ZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbXBvcnRlZE5hbWVzcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzSW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsg
fQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25z
dDsgfQpAQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNMZXQoKSB7IG1fYml0cyB8PSBJc0xldDsgfQog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0V4cG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNFeHBv
cnRlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0ltcG9ydGVkKCkgeyBtX2JpdHMg
fD0gSXNJbXBvcnRlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0ltcG9ydGVkTmFt
ZXNwYWNlKCkgeyBtX2JpdHMgfD0gSXNJbXBvcnRlZE5hbWVzcGFjZTsgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtNTcs
NyArNTksOCBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICAgICAgSXNW
YXIgPSAxIDw8IDIsCiAgICAgICAgIElzTGV0ID0gMSA8PCAzLAogICAgICAgICBJc0V4cG9ydGVk
ID0gMSA8PCA0LAotICAgICAgICBJc0ltcG9ydGVkID0gMSA8PCA1CisgICAgICAgIElzSW1wb3J0
ZWQgPSAxIDw8IDUsCisgICAgICAgIElzSW1wb3J0ZWROYW1lc3BhY2UgPSAxIDw8IDYKICAgICB9
OwogICAgIHVpbnQ4X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTc5LDYgKzgyLDggQEAgY2xhc3Mg
VmFyaWFibGVFbnZpcm9ubWVudCB7CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNv
bnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9CisgICAgQUxXQVlTX0lO
TElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsg
fQogICAgIHZvaWQgc3dhcChWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcik7CiAgICAgdm9pZCBt
YXJrVmFyaWFibGVBc0NhcHR1cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpOwogICAgIHZvaWQgbWFya1ZhcmlhYmxlQXNDYXB0dXJlZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGFiNzBlYWJiOWUzYTJhMDQ1MGM2
MjllNzA1NjY2ZjRkY2NhMDFlMjguLmQyZWZlY2Q4MjliMmM0NDg1ZGYxMDRiN2ZlNDFjMmM3Njli
ZDhhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApA
QCAtNjcsMTEgKzY3LDE5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ2FjaGVUeXBl
cyB7IH07CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2s+IHsKICAgICB0eXBlZGVmIEpTQzo6UHJvZ3JhbU5vZGUgUm9vdE5vZGU7CiAgICAgc3Rh
dGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtl
eTo6UHJvZ3JhbVR5cGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUgPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOwogfTsKIAogdGVtcGxhdGUgPD4gc3Ry
dWN0IENhY2hlVHlwZXM8VW5saW5rZWRFdmFsQ29kZUJsb2NrPiB7CiAgICAgdHlwZWRlZiBKU0M6
OkV2YWxOb2RlIFJvb3ROb2RlOwogICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2Rl
VHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlOworICAgIHN0YXRpYyBjb25z
dCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZTsKK307CisKK3RlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaz4geworICAgIHR5cGVkZWYgSlNDOjpNb2R1bGVQcm9ncmFtTm9kZSBSb290
Tm9kZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUg
PSBTb3VyY2VDb2RlS2V5OjpQcm9ncmFtVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOwog
fTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0
YWJsZVR5cGU+CkBAIC05NSw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVD
YWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAg
IHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290
Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0g
cGFyc2U8Um9vdE5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWls
dGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAgICAgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwor
ICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZXJy
b3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlm
ICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMzIsNiArMTQwLDEy
IEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29kZUJsb2NrKFZN
JiB2bSwgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1CiAgICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9j
azxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCB0aGlzVERaTW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUs
IGVycm9yLCB2YXJpYWJsZXNVbmRlclREWik7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogQ29kZUNhY2hlOjpnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorewor
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlQYXJlbnRURFpWYXJpYWJsZXM7CisgICAgcmV0
dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZt
LCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGU6OlN0
cmljdCwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBlcnJvciwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKK30KKwogLy8gRklYTUU6IFRo
ZXJlJ3Mgbm8gbmVlZCB0byBhZGQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSB0byB0aGUga2V5IGhlcmUu
IEl0J3MgYWxyZWFkeSBpbiB0aGUgc291cmNlIGNvZGUuCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYg
dm0sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuaAppbmRleCBhZjdkYWM3ZTQ4NzA0MTMxOWM2M2ZlYzk3NTVlMjM5MzE4ODM0Y2I2Li43MTc1
ZmUzOTUxMmM5MzY2ZTYxNjM5ODEzY2I2YzRmODIyNTk4ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3MgSWRlbnRp
ZmllcjsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlOworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKK2NsYXNzIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7
CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jazsKQEAgLTU2LDcgKzU4LDcgQEAgY2xhc3MgU291cmNlUHJvdmlkZXI7CiAKIGNs
YXNzIFNvdXJjZUNvZGVLZXkgewogcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlw
ZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSB9OworICAgIGVudW0gQ29kZVR5cGUgeyBFdmFs
VHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwogCiAgICAgU291
cmNlQ29kZUtleSgpCiAgICAgewpAQCAtMjU3LDYgKzI1OSw3IEBAIGNsYXNzIENvZGVDYWNoZSB7
CiAKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxvY2soVk0m
LCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5N
b2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJz
ZXJFcnJvciYpOwogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhW
TSYsIEV2YWxFeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgVGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmls
ZXJNb2RlLCBQYXJzZXJFcnJvciYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
Vk0mLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJv
bUdsb2JhbENvZGUoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYsIFBh
cnNlckVycm9yJik7CiAKICAgICB2b2lkIGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE2M2IxMTYxMDQxY2NkYjM1
YWQ1Mjk3NmNhZmU2YmQxMWRmYzhiNzcuLjRmZGJkOTMxNDMwOGZiOTk1MTQ1MzY4MzM4M2UxYmE0
ZTJjODJmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMjgzLDYgKzI4Myw3IEBACiAgICAgbWFjcm8oQXJyYXkpIFwKICAg
ICBtYWNybyhTdHJpbmcpIFwKICAgICBtYWNybyhNYXApIFwKKyAgICBtYWNybyhTZXQpIFwKICAg
ICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxQcm9taXNlKSBcCiAgICAgbWFj
cm8oYWJzKSBcCkBAIC0zMDcsNiArMzA4LDcgQEAKICAgICBtYWNybyhJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24pIFwKICAgICBtYWNybyhnZXQpIFwKICAgICBtYWNybyhzZXQpIFwKKyAgICBtYWNy
byhhZGQpIFwKIAogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGFjYmUxNDYyOWQyODRlZTgyNTEx
ZjczYzU2ODA5MWRlZGYzYjQ0NGYuLjEzZTJlNWEzOTc0Y2EzOTVjNGJhNzU3Njk1NjgzMmMzZjRm
YWY2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMjcwLDYgKzI3MCwxMiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
dGhyb3dfdGR6X2Vycm9yKQogICAgIFRIUk9XKGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKIH0KIAor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3Bl
cnR5X3dyaXRlX2Vycm9yKQoreworICAgIEJFR0lOKCk7CisgICAgVEhST1coY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ub3QpCiB7CiAgICAgQkVHSU4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
aW5kZXggMDY3ZGYwYzM4ZTkxMjBiZjcwN2NmZGU0MWMzZWZiZjJhNjg3MmVlMy4uMzAwOTg1NWZm
NmJhMmQxNTI4M2RiOGY4NWYzY2U0NTdkZGIyODY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTE4OSw2ICsxODksNyBAQCBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VudGVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2NhbGxlZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3RvX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJy
b3IpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9y
ZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25vdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VxKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmVxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggMjcxMTc4YzJiNWY2NDM3ZTY4ZGU1OTJkNjE0
YjgxMmZhNTFlZjI1ZC4uYjVmNjIzYWNkYTUyMzA1MTE4N2QwZGI1Njg4NTIxMjYyZDg2MjQ4YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGUKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5hbWUoUHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9u
LCAiRW50cnlQb2ludE1vZHVsZSIpOwotICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVy
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQocHJpdmF0ZU5hbWUpLCBtb2R1bGVQcm9ncmFtTm9k
ZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVz
KCkpOworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIElkZW50aWZpZXI6
OmZyb21VaWQocHJpdmF0ZU5hbWUpLCBzb3VyY2UsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNs
YXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAg
bW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOwogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApp
bmRleCA1ZmZiOGRiN2YwNTA1YjRkMTYyNmEzNjg0N2EyODgxZmI0YTE3NTIzLi42NDAwODFlMGZk
ZjNkYmUxYTVlNmRhMzFhN2FlYTY4OGE1YmRkODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRG
R0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgog
I2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKQEAgLTE1
OSw3ICsxNjAsMTggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShDb2RlQmxv
Y2sqIGdlbmVyaWNDb2RlQmxvY2spCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVC
bG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKworICAg
IGNhc2UgTW9kdWxlQ29kZTogeworICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOworICAgICAg
ICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CisKKyAgICAgICAgQVNTRVJUKGtp
bmQgPT0gQ29kZUZvckNhbGwpOworCisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUt
Pm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIEV2YWxDb2RlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
anNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIEV2YWxDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IHN0YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsK
QEAgLTIyNiw3ICsyMzgsMTcgQEAgUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6
bmV3Q29kZUJsb2NrRm9yKAogICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAogICAgICAgICAgICAgZXhlY3V0
YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRDb2x1
bW4oKSkpOwogICAgIH0KLSAgICAKKworICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0
YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAorICAg
ICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+c291
cmNlKCkuc3RhcnRDb2x1bW4oKSkpOworICAgIH0KKwogICAgIFJFTEVBU0VfQVNTRVJUKGNsYXNz
SW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsKICAgICBSRUxFQVNFX0FTU0VS
VChmdW5jdGlvbik7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwpAQCAtMjgzLDYgKzMwNSwxNyBAQCBQYXNzUmVm
UHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tG
b3IoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgaWYgKGNsYXNzSW5mbygp
ID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7
CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGJhc2VsaW5lID0gc3RhdGljX2Nhc3Q8
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KAorICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisgICAgICAgIFJlZlB0cjxN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFJlZihuZXcgTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaygKKyAgICAgICAgICAgIENvZGVCbG9jazo6Q29weVBhcnNlZEJsb2NrLCAqYmFz
ZWxpbmUpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRBbHRlcm5hdGl2ZShiYXNlbGluZSk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZv
KCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKTsKICAgICBG
dW5jdGlvbkNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9j
ayo+KApAQCAtMzgzLDYgKzQxNiw0MiBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwp
LT5Qcm9ncmFtRXhlY3V0YWJsZTo6flByb2dyYW1FeGVjdXRhYmxlKCk7CiB9CiAKK2NvbnN0IENs
YXNzSW5mbyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSB9OworCitNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFs
c2UpCit7CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOworICAgIG1fdHlwZVBy
b2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CisgICAgaWYgKGV4ZWMtPnZt
KCkudHlwZVByb2ZpbGVyKCkgfHwgZXhlYy0+dm0oKS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpCisg
ICAgICAgIGV4ZWMtPnZtKCkuZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhl
Y3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV90eXBl
UHJvZmlsaW5nRW5kT2Zmc2V0KTsKK30KKworTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAg
ICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKKyAgICBleGVjdXRhYmxlLT5maW5pc2hD
cmVhdGlvbihleGVjLT52bSgpLCBtb2R1bGVSZWNvcmQpOworCisgICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlID0gZ2xvYmFsT2JqZWN0
LT5jcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUpOworICAgIGlm
ICghdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0KGV4ZWMt
PnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpOworCisgICAgcmV0
dXJuIGV4ZWN1dGFibGU7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9tb2R1bGVSZWNvcmQuc2V0KHZtLCB0aGlz
LCBtb2R1bGVSZWNvcmQpOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSo+KGNlbGwpLT5Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6fk1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKCk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9OwogCiBGdW5jdGlvbkV4
ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgCkBAIC01MzUsNiArNjA0LDQ3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFy
Q29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2RlKCk7CiB9CiAKK0pTT2JqZWN0KiBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFBhcnNl
ckVycm9yIGVycm9yOworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUg
PSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCisgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRp
ZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAorICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwg
ZXJyb3IpOworICAgIGlmIChtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CisgICAgcmV0dXJuIGVycm9yLnRvRXJy
b3JPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9zb3VyY2UpOworfQorCit2b2lkIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAg
ICBpZiAoIW1faml0Q29kZUZvckNhbGwpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgIG1fbW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay0+dW5saW5rQ2FsbHMoKTsKKyNlbmRpZgorfQordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOworICAgIGlmICh0aGlzT2JqZWN0LT5tX21vZHVs
ZVByb2dyYW1Db2RlQmxvY2spCisgICAgICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCit7CisgICAgbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
ID0gbnVsbHB0cjsKKyAgICBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jbGVhcigp
OworICAgIEJhc2U6OmNsZWFyQ29kZSgpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rp
b25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdDsKQEAgLTYyMyw2ICs3MzMs
MTUgQEAgdm9pZCBFeGVjdXRhYmxlQmFzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgICAgICAgICAgb3V0LnByaW50KCJQcm9ncmFtRXhlY3V0YWJsZSB3L28gQ29kZUJsb2NrIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoY2xhc3NJbmZvKCkgPT0gTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHJlYWxU
aGlzKTsKKyAgICAgICAgaWYgKENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29k
ZUJsb2NrKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoKmNvZGVCbG9jayk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG91dC5wcmludCgiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgdy9vIENv
ZGVCbG9jayIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIAogICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb24gPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ocmVhbFRoaXMp
OwogICAgIGlmICghZnVuY3Rpb24tPmVpdGhlckNvZGVCbG9jaygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDA0MDUzNzczYzEwNzY0MGViNjZmMmFk
YTMyMTg2OTE5NTA4MTI3NWMuLjU1NzczMzQ2ODU5MGEwYjA2OTdlZWU3NGEzMWJlY2JiZjUyOTg2
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTUy
LDYgKzUyLDggQEAgY2xhc3MgRXZhbENvZGVCbG9jazsKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2Nr
OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsK
K2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKIGNs
YXNzIEpTU2NvcGU7CiAgICAgCiBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRp
b24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwpAQCAtMTA0LDYgKzEwNiwxMSBAQCBjbGFzcyBF
eGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgcmV0dXJuIHR5
cGUoKSA9PSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CiAgICAgfQorICAgIGJvb2wgaXNNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSgpID09IE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlVHlwZTsKKyAgICB9CisKIAogICAgIGJvb2wgaXNIb3N0RnVuY3Rp
b24oKSBjb25zdAogICAgIHsKQEAgLTU0Myw2ICs1NTAsNTYgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1
dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgUmVmUHRyPFByb2dy
YW1Db2RlQmxvY2s+IG1fcHJvZ3JhbUNvZGVCbG9jazsKIH07CiAKK2NsYXNzIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgdHlwZWRlZiBTY3Jp
cHRFeGVjdXRhYmxlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCisgICAg
c3RhdGljIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOworCisgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7CisgICAg
fQorCisgICAgSlNPYmplY3QqIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSopOworCisgICAgUGFzc1Jl
ZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBn
ZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsKKworICAgIHZvaWQgY2xlYXJDb2RlKCk7CisKKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQorICAgIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkg
eyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKKworICAgIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJy
aWVyPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV91bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2s7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVsZVJl
Y29yZDsKKyAgICBSZWZQdHI8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV9tb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOworfTsKKwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTY4OSw2ICs3NDYsOCBAQCBpbmxpbmUgdm9p
ZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGV4ZWN1dGFi
bGUpLT5jbGVhckNvZGUoKTsKICAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU6CiAgICAg
ICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFy
Q29kZSgpOworICAgIGNhc2UgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgorICAgICAgICBy
ZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFy
Q29kZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8TmF0aXZlRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICB9CkBAIC03MDMsNiArNzYyLDgg
QEAgaW5saW5lIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQogICAgICAgICBy
ZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxzKCk7CiAg
ICAgY2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpLT51bmxpbmtDYWxscygpOworICAgIGNhc2UgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgorICAgICAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxzKCk7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOTNlZTFmZDc0Yjk5
MjU5MDQxY2ExZTg2MmY2MzExZjY1MDk4Mzg5YS4uM2M5MTQwMTZjN2Q4NzljMWE1YWU3MjNjMDQw
ZDVmMmM3MGE0ZmVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtODQsNiArODQsOSBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNv
cmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkBA
IC0yNjAsNiArMjYzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAKICAg
ICBtX2Z1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgRnVuY3Rpb25Qcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNO
dWxsKCkpKSk7IC8vIFRoZSByZWFsIHByb3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9iamVjdFBy
b3RvdHlwZSBpcyBjcmVhdGVkLgogICAgIG1fY2FsbGVlU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKKyAgICBtX21v
ZHVsZUNhbGxlZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlQ2FsbGVlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB0
aGUgY2FsbGVlIHN0cnVjdHVyZSAoYWJvdmUpIGJlZm9yZSBjcmVhdGluZyB0aGUgY2FsbGVlLgog
ICAgIG1fZ2xvYmFsQ2FsbGVlLnNldCh2bSwgdGhpcywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgdGhp
cywgdGhpcykpOwpAQCAtMzEwLDYgKzMxNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5zdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0RhdGFWaWV3OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
dHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCkpKTsKICAg
ICAKICAgICBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTGV4
aWNhbEVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX21vZHVs
ZUVudmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVFbnZpcm9ubWVudDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnNl
dChtX3ZtLCB0aGlzLCBEZWJ1Z2dlclNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUobV92bSwgdGhpcykp
OwogICAgIG1fd2l0aFNjb3BlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXaXRoU2NvcGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKQEAgLTM0Niw2ICszNTEsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSh2bSwgKnRoaXMpKTsKIAogICAgIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKTsKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIGpzTnVsbCgpKSk7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2Fz
bU1vZHVsZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzKSk7CkBAIC01MjAsNiArNTI2LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1
Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9u
OjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29s
dmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUo
KSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRl
TmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlNldFByaXZhdGVO
YW1lLCBzZXRDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAog
ICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVO
R1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTc4OSw2ICs3OTYsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbGV4aWNhbEVu
dmlyb25tZW50U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSk7CkBAIC04MTYsNiAr
ODI0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fY29uc29sZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwpAQCAtOTMwLDYgKzkzOSwy
NSBAQCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29k
ZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLAogICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9j
azsKIH0KIAorVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6
Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCit7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7
CisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0RlYnVnZ2VyKCkgPyBEZWJ1Z2dl
ck9uIDogRGVidWdnZXJPZmY7CisgICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGhhc1By
b2ZpbGVyKCkgPyBQcm9maWxlck9uIDogUHJvZmlsZXJPZmY7CisgICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdl
dE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworCisgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCisg
ICAgICAgIGRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKKworICAg
IGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwg
ZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7
Cit9CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjYxMzE2ZTg1ZDJi
YWZiZGVkNzg0MzBiNmY4ZjhlYmE1YWQ4Nzc2ZS4uOGM3MDE0ODA0ZmI5YzViMTRmYTcxNWZhY2Ey
NWFjMDNmYTE3MjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBNb2R1bGVMb2FkZXJP
YmplY3Q7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I7CiBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CkBAIC04NSw2ICs4Niw3IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3Mg
UmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CiBjbGFzcyBTb3VyY2VD
b2RlOworY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgTnVsbEdl
dHRlckZ1bmN0aW9uOwogY2xhc3MgTnVsbFNldHRlckZ1bmN0aW9uOwogZW51bSBjbGFzcyBUaGlz
VERaTW9kZTsKQEAgLTIzMCw2ICsyMzIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmU7CkBAIC0yNDksNiArMjUyLDcgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAjZW5kaWYKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bGxQcm90b3R5cGVPYmpl
Y3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsZWVTdHJ1Y3R1
cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVDYWxsZWVTdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlOwpAQCAtMjYyLDYg
KzI2Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRT
dHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VP
YmplY3RTdHJ1Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNDQ2LDYgKzQ1
MSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBtb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJndW1l
bnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTQ4Miw2ICs0
ODgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIG51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGVlU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsZWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUNh
bGxlZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlQ2FsbGVlU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTQ5OSw2ICs1MDYsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBzdGF0aWMgcHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlT2Zmc2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJhdG9yUmVzdWx0
U3RydWN0dXJlKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtb2R1bGVOYW1l
c3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9i
amVjdFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBTdHJ1
Y3R1cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc21Nb2R1bGVT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNjQxLDYgKzY0OSw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSos
IFByb2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgIFVubGlua2Vk
RXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBFdmFsRXhlY3V0
YWJsZSosIFRoaXNURFpNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KENhbGxGcmFtZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7CiAKIHByb3RlY3RlZDoKICAg
ICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDk1MTYzMThkNzAxNjll
M2RkOGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5ODI2MmQ0MTBiZjAxZjg0
OTM3MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IGNsYXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJs
aWMgSlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIEpTTGV4
aWNhbEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7
CiAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUNhbGxlZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUNhbGxlZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVkY2JlZGE1MTY1Y2JmZjA4MWE0MGJhNTQ2NGFj
N2JlZTczYTYzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlQ2FsbGVlLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTTW9kdWxlQ2FsbGVlLmgiCisKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5j
bHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlQ2FsbGVlOjpzX2luZm8g
PSB7ICJKU01vZHVsZUNhbGxlZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNNb2R1bGVDYWxsZWUpIH07CisKK0pTTW9kdWxlQ2FsbGVlOjpKU01vZHVsZUNh
bGxlZShWTSYgdm0sIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHNjb3BlLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNNb2R1bGVDYWxsZWU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOworICAgIG1fbW9kdWxlUmVjb3JkLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKK30K
Kwordm9pZCBKU01vZHVsZUNhbGxlZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlQ2FsbGVlKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTW9kdWxlQ2FsbGVlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVS
ZWNvcmQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUNhbGxlZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNzgxYTAwY2UyOWNiNTFl
N2UwNzQ3NWZlYjhlMmJlYjNiYzkyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUNhbGxlZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxl
Q2FsbGVlX2gKKyNkZWZpbmUgSlNNb2R1bGVDYWxsZWVfaAorCisjaW5jbHVkZSAiSlNDYWxsZWUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKKworY2xhc3MgSlNN
b2R1bGVDYWxsZWUgOiBwdWJsaWMgSlNDYWxsZWUgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7Cisj
aWYgRU5BQkxFKERGR19KSVQpCisgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7
CisgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CisjZW5kaWYKKyAgICBmcmllbmQg
Y2xhc3MgVk07CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7CisgICAgY29u
c3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisKKyAgICBzdGF0aWMgSlNNb2R1bGVDYWxsZWUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLCBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkKQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlQ2FsbGVlPih2bS5oZWFwKSkgSlNNb2R1bGVDYWxs
ZWUodm0sIHNjb3BlLCBnbG9iYWxPYmplY3QtPm1vZHVsZUNhbGxlZVN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSwgbW9kdWxlUmVjb3JkKTsKKyAgICAgICAg
cmV0dXJuIGNhbGxlZTsKKyAgICB9CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDYWxsZWVUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0
T2ZNb2R1bGVSZWNvcmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U01vZHVsZUNhbGxlZSwgbV9tb2R1bGVSZWNvcmQpOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IEpTTW9kdWxlQ2FsbGVlKFZNJiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIFdyaXRlQmFycmllcjxKU01v
ZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEpTTW9kdWxlQ2FsbGVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI0ZmNhYWE5
MWI5MWE2ZjI2YmEwYzllNmRlMGIyZmEzNzZiMGRmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0wLDAg
KzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisK
KyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVFbnZpcm9ubWVudDo6c19pbmZvID0geyAi
SlNNb2R1bGVFbnZpcm9ubWVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNNb2R1bGVFbnZpcm9ubWVudCkgfTsKKworSlNNb2R1bGVFbnZpcm9ubWVudCogSlNNb2R1
bGVFbnZpcm9ubWVudDo6Y3JlYXRlKAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVl
IGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICAvLyBK
U0xleGljYWxFbnZpcm9ubWVudCAocHJlY2lzZWx5LCBKU0Vudmlyb25tZW50UmVjb3JkKSBoYXMg
dGhlIHN0b3JhZ2UgdG8gc3RvcmUgdGhlIHZhcmlhYmxlIHNsb3RzIGFmdGVyIHRoZSBpdHMgY2xh
c3Mgc3RvcmFnZS4KKyAgICAvLyBCZWNhdXNlIHRoZSBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIHNs
b3RzIGFyZSBmaXhlZCBpbiB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCwgaW5oZXJpdHRpbmcgdGhl
c2UgY2xhc3MgYW5kIGFkZGluZyBuZXcgbWVtYmVyIGZpZWxkIGlzIG5vdCBhbGxvd2VkLAorICAg
IC8vIHRoZSBuZXcgbWVtYmVyIHdpbGwgb3ZlcmxhcCB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAg
Ly8gVG8ga2VlcCB0aGUgSlNNb2R1bGVFbnZpcm9ubWVudCBjb21wYXRpYmxlIHRvIHRoZSBKU0xl
eGljYWxFbnZpcm9ubWVudCBidXQgYWRkIHRoZSBuZXcgbWVtYmVyIHRvIHN0b3JlIHRoZSBKU01v
ZHVsZVJlY29yZCwgd2UgYWRkaXRpb25hbGx5IGFsbG9jYXRlCisgICAgLy8gdGhlIHN0b3JhZ2Ug
YWZ0ZXIgdGhlIHZhcmlhYmxlIHNsb3RzLgorICAgIC8vCisgICAgLy8gSlNMZXhpY2FsRW52aXJv
bm1lbnQ6CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xv
dHMgXQorICAgIC8vCisgICAgLy8gSlNNb2R1bGVFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBK
U0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBdWyBhZGRpdGlvbmFsIHNsb3Rz
IGZvciBKU01vZHVsZUVudmlyb25tZW50IF0KKyAgICBKU01vZHVsZUVudmlyb25tZW50KiByZXN1
bHQgPQorICAgICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFs
bG9jYXRlQ2VsbDxKU01vZHVsZUVudmlyb25tZW50Pih2bS5oZWFwLCBKU01vZHVsZUVudmlyb25t
ZW50OjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQorICAgICAgICBKU01vZHVsZUVudmly
b25tZW50KHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpOworICAgIHJl
c3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1
bGVSZWNvcmQpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSk7
CisgICAgdGhpcy0+bW9kdWxlUmVjb3JkU2xvdCgpLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3Jk
KTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+c3ltYm9sVGFibGUo
KS0+c2NvcGVTaXplKCkpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tb2R1bGVS
ZWNvcmRTbG90KCkpOworfQorCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVu
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAg
Y29uc3QgYXV0byByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29s
dmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlk
KCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0
aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBv
cnRlZE1vZHVsZUVudmlyb25tZW50ID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQtPm1vZHVsZUVu
dmlyb25tZW50KCk7CisgICAgICAgIFByb3BlcnR5U2xvdCByZWRpcmVjdFNsb3QoaW1wb3J0ZWRN
b2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgIGlmIChpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KGltcG9ydGVkTW9k
dWxlRW52aXJvbm1lbnQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgcmVkaXJlY3RTbG90KSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHJlZGlyZWN0U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgcmVkaXJlY3RTbG90LmF0dHJpYnV0ZXMoKSwgdmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit2b2lk
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
c0FycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBp
ZiAocHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPmlt
cG9ydEVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBw
YWlyLnZhbHVlOworICAgICAgICAgICAgaWYgKCFpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVj
LT52bSgpKSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQXJyYXkuYWRkKGltcG9ydEVu
dHJ5LmxvY2FsTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJhc2U6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJy
YXksIG1vZGUpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8v
IEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgorICAgIGNvbnN0IGF1dG8gcmVz
b2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMs
IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYg
KHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01v
ZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFy
ZSBpbW11dGFibGUuCisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9k
dWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVj
LCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9k
dWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZTVlMTJlZWZjNTQ4YjllZTZlYmYzMTNmYTdhOGQ0YzcxNjkxNGYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBA
IC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisjZGVmaW5lIEpTTW9kdWxlRW52
aXJvbm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVnaXN0ZXI7
CisKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhpY2FsRW52aXJvbm1l
bnQgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTGV4aWNhbEVudmlyb25tZW50IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQ
cm9wZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEpTVmFsdWUgaW5pdGlhbFZh
bHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1
cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1
ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAgICB7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgp
OworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3lt
Ym9sVGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIHNp
emVfdCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAg
eworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJh
cnJpZXI8SlNNb2R1bGVSZWNvcmQ+KT4oQmFzZTo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZk1vZHVsZVJlY29y
ZChzeW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPik7Cisg
ICAgfQorCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgpCisgICAgeworICAgICAg
ICByZXR1cm4gbW9kdWxlUmVjb3JkU2xvdCgpLmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisKK3ByaXZh
dGU6CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBT
eW1ib2xUYWJsZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTVmFsdWUgaW5p
dGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxKU01v
ZHVsZVJlY29yZD4mIG1vZHVsZVJlY29yZFNsb3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICpi
aXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29yZD4qPihiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUoKSkpOwor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKK307CisKK2lubGluZSBKU01vZHVsZUVudmlyb25tZW50OjpKU01vZHVsZUVudmlyb25t
ZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwg
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjdXJy
ZW50U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkMjczZmNhYzc0ZWYwZGYyZGQwMWNmODQ1MDI1OTY3ZWU1ZWY1YzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaCIKKworI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNs
dWRlICJKU01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSopOworCitj
b25zdCBDbGFzc0luZm8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnNfaW5mbyA9IHsgIk1vZHVs
ZU5hbWVzcGFjZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpIH07CisKKworSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgLCBtX2V4cG9ydHMoZXhwb3J0cykKK3sKK30KKwordm9pZCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgbV9tb2R1
bGVSZWNvcmQuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQpOworICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIG1vZHVsZU5hbWVzcGFjZU9i
amVjdFN5bWJvbEl0ZXJhdG9yLCBEb250RW51bSwgMCk7CisKKyAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1l
eG90aWMtb2JqZWN0cy1nZXRwcm90b3R5cGVvZgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1v
YmplY3RzLXNldHByb3RvdHlwZW9mLXYKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0
cy1pc2V4dGVuc2libGUKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1wcmV2ZW50
ZXh0ZW5zaW9ucworICAgIHByZXZlbnRFeHRlbnNpb25zKHZtKTsKK30KKwordm9pZCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6fkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29y
ZCk7Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtZ2V0b3ducHJvcGVydHktcAorCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKworICAg
IGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
KworICAgIGlmICghdGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51
aWQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1
bGVSZWNvcmQgPSB0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZC5nZXQoKTsKKworICAgIEpTTW9k
dWxlUmVjb3JkOjpSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgSWRlbnRpZmllclNldCBleHBv
cnRTdGFyU2V0OworICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVz
b2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51
aWQoKSksIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQpOworICAgIEFTU0VSVChyZXNvbHV0aW9u
LnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kICYmIHJl
c29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1
b3VzKTsKKyAgICBKU01vZHVsZVJlY29yZCogdGFyZ2V0TW9kdWxlID0gcmVzb2x1dGlvbi5tb2R1
bGVSZWNvcmQ7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0RW52aXJvbm1lbnQgPSB0
YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgUHJvcGVydHlTbG90IHRyYW1w
b2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50KTsKKyAgICBpZiAoIXRhcmdldEVudmlyb25tZW50
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldEVudmly
b25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3QpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gdHJhbXBvbGluZVNsb3Qu
Z2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKTsKKyAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnREZWxldGUsIHZhbHVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90JikKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJl
Y2VpdmVyCisgICAgcmV0dXJuOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVsZXRlLXAK
KyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIHJldHVybiAhdGhpc09iamVjdC0+bV9leHBv
cnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLW93bnByb3BlcnR5
a2V5cworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBuYW1l
IDogdGhpc09iamVjdC0+bV9leHBvcnRzKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChuYW1l
LmdldCgpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBz
aG91bGRUaHJvdykKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWZpbmVv
d25wcm9wZXJ0eS1wLWRlc2MKKyAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkg
b24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3BhY2VPYmplY3RT
eW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhbiBvYmplY3QiKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXNPYmpl
Y3QodGhpc1ZhbHVlKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZhZDc3MjExMTY5ZGUwOTQwNzg2ZWZhY2M2Nzg0ZWQ3YjI5ZjZmYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKKyNk
ZWZpbmUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGli
bGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwor
CitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lczsKKworICAgIHN0YXRpYyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXJT
ZXQmIGV4cG9ydHMpCisgICAgeworICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+
KGV4ZWMtPnZtKCkuaGVhcCkpIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KGV4ZWMtPnZtKCksIHN0
cnVjdHVyZSwgZXhwb3J0cyk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+
dm0oKSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVSZWNvcmQpOworICAgICAgICByZXR1cm4gb2JqZWN0
OworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOworCisg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlUmVjb3JkKik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoVk0mLCBTdHJ1
Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKTsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIElkZW50aWZpZXJTZXQgbV9leHBvcnRz
OworICAgIFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAppbmRleCBlNzAyZmFmYTQ0ZTUwNmY5ZDQ3ZmVkZTYzMzY2NGE3MzhjMTliNDBiLi5iYjVjNDJh
M2UyMWQwZGY0YjU0OTY0ZDM1M2I2MGYwYmMzOWM1Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0yMCwxNSArMjAsMjEgQEAK
ICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpT
TW9kdWxlUmVjb3JkLmgiCiAKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTWFw
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQxLDEyICs0
NywyNiBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICB0
aGlzT2JqZWN0LT5KU01vZHVsZVJlY29yZDo6fkpTTW9kdWxlUmVjb3JkKCk7CiB9CiAKLQogdm9p
ZCBKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJyZWdp
c3RyeUVudHJ5IikpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImV2YWx1YXRlZCIpKSwganNCb29sZWFu
KGZhbHNlKSk7CisKKyAgICBtX2RlcGVuZGVuY2llc01hcC5zZXQodm0sIHRoaXMsIEpTTWFwOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKSkpOworICAgIHB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgiZGVwZW5kZW5j
aWVzTWFwIikpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVS
ZWNvcmQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBKU01vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29y
ZCo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnQpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7
CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9saW5rZWRNb2R1bGVzLmRh
dGEoKSwgdGhpc09iamVjdC0+bV9saW5rZWRNb2R1bGVzLnNpemUoKSk7CiB9CiAKIGF1dG8gSlNN
b2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBl
eHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5CkBAIC02NCw2ICs4NCwyNTkg
QEAgYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0
IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGMKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBl
OjpJbmRpcmVjdCwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwgSWRlbnRpZmll
cigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwogfQogCitzdGF0aWMgSlNWYWx1ZSBp
ZGVudGlmaWVyVG9KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcikKK3sKKyAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQorICAgICAgICByZXR1
cm4gU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCpp
ZGVudGlmaWVyLmltcGwoKSkpOworICAgIHJldHVybiBqc1N0cmluZygmZXhlYy0+dm0oKSwgaWRl
bnRpZmllci5pbXBsKCkpOworfQorCitKU01vZHVsZVJlY29yZCogSlNNb2R1bGVSZWNvcmQ6Omhv
c3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVOYW1lKQoreworICAgIEpTVmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmll
clRvSlNWYWx1ZShleGVjLCBtb2R1bGVOYW1lKTsKKyAgICBKU1ZhbHVlIHBhaXIgPSBtX2RlcGVu
ZGVuY2llc01hcC0+SlNNYXA6OmdldChleGVjLCBtb2R1bGVOYW1lVmFsdWUpOworICAgIHJldHVy
biBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihwYWlyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJ2YWx1ZSIpKSk7Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29s
dmVJbXBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpIC0+
IFJlc29sdXRpb24KK3sKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9pbXBvcnRFbnRyaWVz
LmZpbmQobG9jYWxOYW1lLmltcGwoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50
cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBl
OjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRoaXMsIElkZW50aWZpZXIoKSB9OworCisgICAgY29u
c3QgYXV0byYgaW1wb3J0RW50cnkgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKGltcG9ydEVu
dHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7
IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmll
cigpIH07CisKKyAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2
ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgIFJl
c29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7Cisg
ICAgcmV0dXJuIGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5
LmltcG9ydE5hbWUsIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQpOworfQorCithdXRvIEpTTW9k
dWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgZXhwb3J0TmFtZSwgUmVzb2x2ZVNldCYgcmVzb2x2ZVNldCwgSWRlbnRpZmllclNldCYgc3Rh
clNldCkgLT4gUmVzb2x1dGlvbgoreworICAgIGlmICghcmVzb2x2ZVNldC5hZGQoUmVzb2x2ZVF1
ZXJ5KG1vZHVsZUtleSgpLCBleHBvcnROYW1lKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJu
IFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbW9kdWxlS2V5KCksIHRo
aXMsIElkZW50aWZpZXIoKSB9OworCisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0
RW50cmllcy5maW5kKGV4cG9ydE5hbWUuaW1wbCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9l
eHBvcnRFbnRyaWVzLmVuZCgpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0g
aXRlcmF0b3ItPnZhbHVlOworICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAg
ICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgor
ICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZl
ZCwgbW9kdWxlS2V5KCksIHRoaXMsIGV4cG9ydEVudHJ5LmxvY2FsTmFtZSB9OworCisgICAgICAg
IGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDogeworICAg
ICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gaG9zdFJlc29s
dmVJbXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRFbnRyeS5tb2R1bGVOYW1lKTsKKyAgICAgICAg
ICAgIGNvbnN0IGF1dG8gaW5kaXJlY3RSZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGVSZWNvcmQt
PnJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0TmFtZSwgcmVzb2x2ZVNldCwgc3RhclNldCk7Cisg
ICAgICAgICAgICBpZiAoaW5kaXJlY3RSZXNvbHV0aW9uLnR5cGUgIT0gUmVzb2x1dGlvbjo6VHlw
ZTo6Tm90Rm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGlyZWN0UmVzb2x1dGlvbjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZXhwb3J0TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQpCisg
ICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3IsIG1vZHVs
ZUtleSgpLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKworICAgIGlmICghc3RhclNldC5hZGQobW9k
dWxlS2V5KCkuaW1wbCgpKS5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7
IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmll
cigpIH07CisKKyAgICBhdXRvIHN0YXJSZXNvbHV0aW9uID0gUmVzb2x1dGlvbiB7IFJlc29sdXRp
b246OlR5cGU6Ok5vdEZvdW5kLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBzdGFyTW9kdWxlTmFtZSA6IG1fc3RhckV4cG9ydEVudHJpZXMp
IHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gaG9zdFJl
c29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0YXJN
b2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IGltcG9y
dGVkTW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydE5hbWUsIHJlc29sdmVT
ZXQsIHN0YXJTZXQpOworICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246
OlR5cGU6OkFtYmlndW91cyB8fCByZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcmVzb2x1dGlvbjsKKyAgICAgICAgaWYgKHJlc29s
dXRpb24udHlwZSAhPSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAg
aWYgKHN0YXJSZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpCisg
ICAgICAgICAgICAgICAgc3RhclJlc29sdXRpb24gPSByZXNvbHV0aW9uOworICAgICAgICAgICAg
ZWxzZSBpZiAoc3RhclJlc29sdXRpb24ubW9kdWxlS2V5ICE9IHJlc29sdXRpb24ubW9kdWxlS2V5
IHx8IHN0YXJSZXNvbHV0aW9uLmxvY2FsTmFtZSAhPSByZXNvbHV0aW9uLmxvY2FsTmFtZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkFtYmln
dW91cywgSWRlbnRpZmllcigpLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBzdGFyUmVzb2x1dGlvbjsKK30KKwordm9pZCBKU01vZHVsZVJl
Y29yZDo6Z2V0RXhwb3J0ZWROYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXJTZXQmIGV4
cG9ydFN0YXJTZXQsIElkZW50aWZpZXJTZXQmIGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVEZWZhdWx0
TW9kZSBtb2RlKQoreworICAgIGlmIChleHBvcnRTdGFyU2V0LmNvbnRhaW5zKG1vZHVsZUtleSgp
LmltcGwoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBleHBvcnRTdGFyU2V0LmFkZChtb2R1bGVL
ZXkoKS5pbXBsKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmll
cykgeworICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAg
ICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAgICAgICBjYXNlIEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNv
cmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKKyAgICAgICAgICAgIGlmIChtb2RlID09
IEluY2x1ZGVEZWZhdWx0TW9kZTo6SW5jbHVkZSB8fCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVm
YXVsdEtleXdvcmQgIT0gZXhwb3J0RW50cnkuZXhwb3J0TmFtZSkKKyAgICAgICAgICAgICAgICBl
eHBvcnRlZE5hbWVzLmFkZChleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6
VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmll
cykgeworICAgICAgICBKU01vZHVsZVJlY29yZCogcmVxdWVzdGVkTW9kdWxlUmVjb3JkID0gaG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0
YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgIHJlcXVlc3RlZE1vZHVsZVJlY29yZC0+Z2V0
RXhwb3J0ZWROYW1lcyhleGVjLCBleHBvcnRTdGFyU2V0LCBleHBvcnRlZE5hbWVzLCBJbmNsdWRl
RGVmYXVsdE1vZGU6OkV4Y2x1ZGUpOworICAgIH0KK30KKworSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIEpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIGlmIChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG1fbW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBJZGVudGlmaWVyU2V0IGV4
cG9ydGVkTmFtZXM7CisgICAgeworICAgICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7
CisgICAgICAgIGdldEV4cG9ydGVkTmFtZXMoZXhlYywgZXhwb3J0U3RhclNldCwgZXhwb3J0ZWRO
YW1lcywgSW5jbHVkZURlZmF1bHRNb2RlOjpJbmNsdWRlKTsKKyAgICB9CisKKyAgICBJZGVudGlm
aWVyU2V0IHVuYW1iaWd1b3VzTmFtZXM7CisgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZXhw
b3J0ZWROYW1lcykgeworICAgICAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgICAgIElk
ZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9u
ID0gcmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUuZ2V0
KCkpLCByZXNvbHZlU2V0LCBleHBvcnRTdGFyU2V0KTsKKyAgICAgICAgc3dpdGNoIChyZXNvbHV0
aW9uLnR5cGUpIHsKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBj
YXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICB1bmFt
YmlndW91c05hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Quc2V0KGV4ZWMtPnZtKCksIHRoaXMs
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmln
dW91c05hbWVzKSk7CisgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOwor
fQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgpLCB0aGlzKTsKKyAgICBpZiAoIWV4ZWN1dGFi
bGUpIHsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBleGVjdXRhYmxlKTsKK30K
Kworc2l6ZV90IEpTTW9kdWxlUmVjb3JkOjpsaW5rTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNN
b2R1bGVSZWNvcmQqIGltcG9ydGVkKQoreworICAgIHNpemVfdCBjYW5kaWRhdGVJbmRleCA9IG1f
bGlua2VkTW9kdWxlcy5zaXplKCk7CisgICAgY29uc3QgYXV0byBhZGRSZXN1bHQgPSBtX2xpbmtl
ZE1vZHVsZU1hcC5hZGQoaW1wb3J0ZWQtPm1vZHVsZUVudmlyb25tZW50KCksIGNhbmRpZGF0ZUlu
ZGV4KTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgbV9saW5rZWRN
b2R1bGVzLmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7CisgICAgICAgIG1fbGlua2Vk
TW9kdWxlcy5sYXN0KCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGltcG9ydGVkKTsKKyAgICAgICAg
cmV0dXJuIGNhbmRpZGF0ZUluZGV4OworICAgIH0KKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJh
dGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpCit7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jayA9IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2soKTsKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSB1bmxp
bmtlZENvZGVCbG9jay0+c3ltYm9sVGFibGUoKTsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBt
b2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXpl
IG5vbi1sZXhpY2FsIHZhcmlhYmxlcyB3aXRoIHVuZGVmaW5lZC4KKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHZhcmlhYmxlIDogbV9kZWNsYXJlZFZhcmlhYmxlcykgeworICAgICAgICBjb25zdCBhdXRv
JiBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodmFyaWFibGUua2V5LmdldCgpKTsKKyAgICAgICAg
VmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOworICAgICAgICBpZiAoIW9mZnNl
dC5pc1N0YWNrKCkpCisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVu
dCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0KCkpLCBq
c1VuZGVmaW5lZCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KworICAgIC8vIEluaXRpYWxpemUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgorICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBudW1iZXJPZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkZ1bmN0aW9uRGVjbHMoKTsgaSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kpIHsKKyAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0g
dW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKKyAgICAgICAgY29uc3QgYXV0byYg
ZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1l
KCkuaW1wbCgpKTsKKyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgp
OworICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5pc0VtcHR5KCkpOworICAgICAgICAg
ICAgaWYgKHZtLnR5cGVQcm9maWxlcigpIHx8IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgewor
ICAgICAgICAgICAgICAgIHZtLmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4
ZWN1dGVkUmFuZ2UobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJjZUlEKCksCisgICAgICAg
ICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUtPmxpbmsodm0sIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3Vy
Y2UoKSksIG1vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1v
ZHVsZUVudmlyb25tZW50LCBleGVjLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgp
LCBmdW5jdGlvbiwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChjb25zdCBh
dXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9y
dEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgaWYgKGV4cG9ydEVudHJ5LnR5cGUgPT0gSlNN
b2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdCkgeworICAgICAgICAgICAg
UmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgICAgICAgICAgSWRlbnRpZmllclNldCBleHBvcnRT
dGFyU2V0OworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9y
dChleGVjLCBleHBvcnRFbnRyeS5leHBvcnROYW1lLCByZXNvbHZlU2V0LCBleHBvcnRTdGFyU2V0
KTsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBj
YXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1i
aWd1b3VzOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJl
c29sdmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAg
ICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgSlNNb2R1
bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVj
LCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAgaWYgKGltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKGV4ZWMtPnZtKCkpKSB7CisgICAgICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCogbmFtZXNwYWNlT2JqZWN0ID0gaW1wb3J0ZWRNb2R1bGUtPmdldE1vZHVsZU5hbWVzcGFj
ZShleGVjKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBzeW1ib2xUYWJsZS0+aW5saW5lR2V0KGxvY2tlciwgaW1wb3J0RW50cnkubG9jYWxOYW1lLmlt
cGwoKSk7CisgICAgICAgICAgICBTY29wZU9mZnNldCBvZmZzZXQgPSBlbnRyeS5zY29wZU9mZnNl
dCgpOworICAgICAgICAgICAgQVNTRVJUKG1vZHVsZUVudmlyb25tZW50LT5pc1ZhbGlkKG9mZnNl
dCkpOworICAgICAgICAgICAgbW9kdWxlRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQob2Zmc2V0KS5z
ZXQoZXhlYy0+dm0oKSwgbW9kdWxlRW52aXJvbm1lbnQsIG5hbWVzcGFjZU9iamVjdCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgICAg
ICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0YXJTZXQ7CisgICAgICAgICAgICBjb25zdCBhdXRv
IHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRF
bnRyeS5pbXBvcnROYW1lLCByZXNvbHZlU2V0LCBleHBvcnRTdGFyU2V0KTsKKyAgICAgICAgICAg
IHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246
OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJp
Z3VvdXM6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAg
ICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
bV9tb2R1bGVFbnZpcm9ubWVudC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbW9kdWxlRW52aXJvbm1l
bnQpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KGV4ZWMtPnZtKCksIHRoaXMs
IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKK30KKworSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6
ZXhlY3V0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFtX21vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5nZXQoKSwgZXhlYywgdGhpcywgbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKSk7CisgICAgbV9t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jbGVhcigpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiB1aWQpCiB7CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKQEAgLTc2LDcgKzM0OSw2IEBA
IHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAg
ICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkpOwogfQogCi0KIHZvaWQgSlNNb2R1
bGVSZWNvcmQ6OmR1bXAoKQogewogICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29y
ZCBrZXkoIiwgcHJpbnRhYmxlTmFtZShtX21vZHVsZUtleSksICIpXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDA1ZDY5NGQzZTNm
ZTU1YTUyMWFmMzVkZTgyNjE1OTgwZjA4MGUyZTAuLjBhYmRlZGE4MGYwMjY5ODJkZTc0N2M0NGVl
Mzk4NTNkYmM3NDc1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuaApAQCAtMjgsMTUgKzI4LDIyIEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKK2NsYXNzIEpTTW9kdWxlRW52aXJv
bm1lbnQ7CitjbGFzcyBKU01hcDsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOworCiAv
LyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAogLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVs
ZS1yZWNvcmRzCiBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKQEAgLTgxLDE4ICs4OCwx
MyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAgc3RhdGljIEpT
TW9kdWxlUmVjb3JkKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICB7Ci0gICAgICAgIEpTTW9kdWxlUmVj
b3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlUmVjb3Jk
Pih2bS5oZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5KTsKKyAg
ICAgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01vZHVsZVJlY29yZCh2bSwgc3RydWN0dXJl
LCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFibGVzLCBsZXhpY2FsVmFyaWFi
bGVzKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3Ry
dWN0dXJlLCBtb2R1bGVLZXkpOwotICAgIH0KLQogICAgIHZvaWQgYXBwZW5kUmVxdWVzdGVkTW9k
dWxlKGNvbnN0IElkZW50aWZpZXImKTsKICAgICB2b2lkIGFkZFN0YXJFeHBvcnRFbnRyeShjb25z
dCBJZGVudGlmaWVyJik7CiAgICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRy
eSYpOwpAQCAtMTAwLDI0ICsxMDIsMTIwIEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGlj
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJ
bXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOwog
CisgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlQ29kZTsgfQorICAgIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlS2V5OyB9CiAgICAgY29uc3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHJlcXVl
c3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZE1vZHVsZXM7IH0KKyAgICBj
b25zdCBFeHBvcnRNYXAmIGV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydEVu
dHJpZXM7IH0KKyAgICBjb25zdCBJbXBvcnRNYXAmIGltcG9ydEVudHJpZXMoKSBjb25zdCB7IHJl
dHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKworICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
IGRlY2xhcmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWNsYXJlZFZhcmlhYmxlczsg
fQorICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBtX2xleGljYWxWYXJpYWJsZXM7IH0KIAogICAgIHZvaWQgZHVtcCgpOwogCisg
ICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICByZXR1cm4gbV9tb2R1bGVF
bnZpcm9ubWVudC5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKik7Cisg
ICAgSlNWYWx1ZSBleGVjdXRlKEV4ZWNTdGF0ZSopOworCisgICAgc3RydWN0IFJlc29sdmVRdWVy
eSB7CisgICAgICAgIFJlc29sdmVRdWVyeShVbmlxdWVkU3RyaW5nSW1wbCogbW9kdWxlS2V5LCBV
bmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgICAgIDogbW9kdWxlS2V5KG1v
ZHVsZUtleSkKKyAgICAgICAgICAgICwgZXhwb3J0TmFtZShleHBvcnROYW1lKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBSZXNvbHZlUXVlcnkoY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlS2V5LCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKQorICAgICAgICAgICAgOiBSZXNv
bHZlUXVlcnkobW9kdWxlS2V5LmltcGwoKSwgZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsK
KyAgICAgICAgUmVzb2x2ZVF1ZXJ5KEVtcHR5VmFsdWVUYWcpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07CisgICAg
ICAgIFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVUYWcpCisgICAgICAgICAgICA6IG1vZHVsZUtl
eShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgICAgICwgZXhwb3J0TmFtZShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gIW1vZHVsZUtleTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaXNEZWxldGVkVmFsdWUo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbW9kdWxlS2V5LmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+IG1vZHVsZUtleTsKKyAgICAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBl
eHBvcnROYW1lOworICAgIH07CisKKyAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYpOworICAgICAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmLCBjb25zdCBSZXNvbHZlUXVlcnkm
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SGFzaFNldDxSZXNvbHZlUXVl
cnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxSZXNvbHZlUXVlcnk+
PiBSZXNvbHZlU2V0OworCisgICAgc3RydWN0IFJlc29sdXRpb24geworICAgICAgICBlbnVtIGNs
YXNzIFR5cGUgeyBSZXNvbHZlZCwgTm90Rm91bmQsIEFtYmlndW91cywgRXJyb3IgfTsKKworICAg
ICAgICBUeXBlIHR5cGU7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlS2V5OworICAgICAgICBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFt
ZTsKKyAgICB9OworCisgICAgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIFJlc29sdmVTZXQmLCBJZGVudGlmaWVyU2V0JiBl
eHBvcnRTdGFyU2V0KTsKKworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
Z2V0KCk7IH0KKworICAgIFJlc29sdXRpb24gcmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpOworCisgICAgc2l6ZV90IGxpbmtNb2R1bGUoRXhlY1N0
YXRlKiwgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkKTsKKwogcHJpdmF0ZToKLSAgICBKU01vZHVs
ZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVLZXkpCisgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9tb2R1bGVLZXkobW9kdWxlS2V5KQorICAgICAgICAs
IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1fZGVjbGFyZWRWYXJpYWJsZXMo
ZGVjbGFyZWRWYXJpYWJsZXMpCisgICAgICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxW
YXJpYWJsZXMpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
IAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0
YXRlKik7CisgICAgZW51bSBjbGFzcyBJbmNsdWRlRGVmYXVsdE1vZGUgeyBJbmNsdWRlLCBFeGNs
dWRlIH07CisgICAgdm9pZCBnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSosIElkZW50aWZpZXJT
ZXQmIGV4cG9ydFN0YXJTZXQsIElkZW50aWZpZXJTZXQmIGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVE
ZWZhdWx0TW9kZSk7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAorICAgIHZv
aWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqKTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxl
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworCiAgICAgLy8gVGhl
IGxvYWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXku
IFRoZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9k
dWxlLgogICAgIElkZW50aWZpZXIgbV9tb2R1bGVLZXk7CiAKKyAgICBTb3VyY2VDb2RlIG1fc291
cmNlQ29kZTsKKworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9kZWNsYXJlZFZhcmlhYmxlczsK
KyAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fbGV4aWNhbFZhcmlhYmxlczsKKwogICAgIC8vIE1h
cCBsb2NhbE5hbWUgLT4gSW1wb3J0RW50cnkuCiAgICAgSW1wb3J0TWFwIG1faW1wb3J0RW50cmll
czsKIApAQCAtMTI5LDYgKzIyNywxNSBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBz
aW5jZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlz
IG9yZGVyLgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9y
ZXF1ZXN0ZWRNb2R1bGVzOworCisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+
IG1fbW9kdWxlRW52aXJvbm1lbnQ7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CisgICAgV3JpdGVC
YXJyaWVyPEpTTWFwPiBtX2RlcGVuZGVuY2llc01hcDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxK
U01vZHVsZUVudmlyb25tZW50Kiwgc2l6ZV90PiBMaW5rZWRNb2R1bGVNYXA7CisgICAgTGlua2Vk
TW9kdWxlTWFwIG1fbGlua2VkTW9kdWxlTWFwOworICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5r
bm93bj4+IG1fbGlua2VkTW9kdWxlczsKIH07CiAKIGlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKQEAg
LTE1Niw2ICsyNjMsMTYgQEAgaW5saW5lIGF1dG8gSlNNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9y
dEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGwKICAgICByZXR1cm4gKCpt
X2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKIH0KIAoraW5saW5lIHVuc2ln
bmVkIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNoOjpoYXNoKGNvbnN0IEpTTW9kdWxl
UmVjb3JkOjpSZXNvbHZlUXVlcnkmIHF1ZXJ5KQoreworICAgIHJldHVybiBJZGVudGlmaWVyUmVw
SGFzaDo6aGFzaChxdWVyeS5tb2R1bGVLZXkpICsgSWRlbnRpZmllclJlcEhhc2g6Omhhc2gocXVl
cnkuZXhwb3J0TmFtZSk7Cit9CisKK2lubGluZSBib29sIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZl
UXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmIGxocywgY29uc3QgUmVzb2x2ZVF1
ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVLZXkgPT0gcmhzLm1vZHVsZUtleSAm
JiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBKU01vZHVsZVJlY29yZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IGJiMmVmZGQwNjMxY2QxOGVhOTc1NDI2NzRhMmNlNzE4
MTUwNzJjOGYuLjBiZWMwZDg2MWE3NDhkZDc4MDU0ZWU5ZjI5M2FjYjllMmIzMmMxZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw4IEBA
CiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmly
b25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAKQEAgLTY1LDYgKzY3LDIxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFj
dEFjY2VzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChKU01vZHVs
ZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVF
bnZpcm9ubWVudCo+KHNjb3BlKSkgeworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVs
ZVJlY29yZCA9IG1vZHVsZUVudmlyb25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAgICAgICAgICAg
IGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUltcG9ydChleGVj
LCBpZGVudCk7CisgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICAgICAgICAgIEpTTW9k
dWxlUmVjb3JkKiBpbXBvcnRlZFJlY29yZCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkOworICAg
ICAgICAgICAgICAgIG1vZHVsZVJlY29yZC0+bGlua01vZHVsZShleGVjLCBpbXBvcnRlZFJlY29y
ZCk7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZpcm9u
bWVudCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgICAgICAgICAg
ICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1ib2xU
YWJsZSgpLT5nZXQocmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAvLyBNb2R1bGUgZXhl
Y3V0aW9uIGlzIGFsd2F5cyBkb25lIHVuZGVyIHRoZSBzdHJpY3QgbW9kZS4gU28gdGhlcmUgaXMg
bm8gd2F5IHRvIGluamVjdCB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgb3AgPSBSZXNvbHZl
T3AoTW9kdWxlVmFyLCBkZXB0aCwgMCwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hw
b2ludFNldCgpLCBlbnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2Fs
TmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKICAgICAgICAgaWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFi
bGUoKS0+dXNlc05vblN0cmljdEV2YWwoKSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDYgKzI0OSw3IEBA
IGNvbnN0IGNoYXIqIHJlc29sdmVUeXBlTmFtZShSZXNvbHZlVHlwZSB0eXBlKQogICAgICAgICAi
R2xvYmFsVmFyIiwKICAgICAgICAgIkNsb3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9zdXJl
VmFyIiwKKyAgICAgICAgIk1vZHVsZVZhciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MiLAogICAgICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyIsCiAgICAgICAgICJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYTY1MzE2NzQ5MGY2ODIyM2Y1
MTFkZDI4OTA4OTI5ZmM0NmExOTczYy4uMDI2YTI3MTRkYzhkOTIyYTk4Mjg4NWU1NDZiNTc4YmE5
NjM0ODBhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtNDUs
NiArNDUsNyBAQCBlbnVtIFJlc29sdmVUeXBlIHsKICAgICBHbG9iYWxWYXIsCiAgICAgQ2xvc3Vy
ZVZhciwKICAgICBMb2NhbENsb3N1cmVWYXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8gRGl0
dG8sIGJ1dCBhdCBsZWFzdCBvbmUgaW50ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0IGV2
YWwsIHdoaWNoCiAgICAgLy8gY2FuIGluamVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNhcmF0
aW9uIGF0IHJ1bnRpbWUuCkBAIC03Miw2ICs3Myw3IEBAIGlubGluZSBSZXNvbHZlVHlwZSBtYWtl
VHlwZShSZXNvbHZlVHlwZSB0eXBlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogICAg
IGNhc2UgQ2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgcmV0
dXJuIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxlVmFy
OgogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNh
c2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAtOTAsNiArOTIsNyBAQCBpbmxpbmUgYm9vbCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogICAgIGNhc2UgR2xvYmFsVmFy
OgogICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKKyAgICBj
YXNlIE1vZHVsZVZhcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczoKQEAgLTEwMywxMyArMTA2LDE0IEBAIGlubGluZSBib29sIG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3Ag
ewotICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBSZXNv
bHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bXBvcnRlZE5hbWUgPSBudWxscHRyKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBk
ZXB0aChkZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAsIGxl
eGljYWxFbnZpcm9ubWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAgICAgICAgICwgd2F0Y2hwb2lu
dFNldCh3YXRjaHBvaW50U2V0KQogICAgICAgICAsIG9wZXJhbmQob3BlcmFuZCkKKyAgICAgICAg
LCBpbXBvcnRlZE5hbWUoaW1wb3J0ZWROYW1lKQogICAgIHsKICAgICB9CiAKQEAgLTExOSw2ICsx
MjMsNyBAQCBzdHJ1Y3QgUmVzb2x2ZU9wIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4
aWNhbEVudmlyb25tZW50OwogICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAgICAg
dWludHB0cl90IG9wZXJhbmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBvcnRl
ZE5hbWU7CiB9OwogCiBjbGFzcyBSZXNvbHZlTW9kZUFuZFR5cGUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA0MDMyNmNlMGYzMjlmYTdjN2JiYzk5ZjQ0NjQyOGZl
OTZjOTEyNGIzLi5mY2UwNjFkMWY4ZDYxZGFiMDYzNjBhZThkN2FhNDQ4ZjJmMThjNzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtNDEsMTAgKzQxLDEyIEBAIGVu
dW0gSlNUeXBlIDogdWludDhfdCB7CiAKICAgICBFdmFsRXhlY3V0YWJsZVR5cGUsCiAgICAgUHJv
Z3JhbUV4ZWN1dGFibGVUeXBlLAorICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLAogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVUeXBlLAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1R5cGUsCisgICAgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrVHlwZSwKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2tUeXBl
LAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tUeXBlLAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCAxZDY3
YTRjYWRlOGI0N2NjMThjZjU4NjQyZDY0NDZkMDMyZjVlNzkzLi5lNmMyMmQyZDNjMzUyNTA5YzVj
ODU3MjU1M2E5ZmE2YzJiZGI5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFuYWx5
emVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTQ1LDYgKzQ2LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9i
amVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEV2
YWx1YXRlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2Jq
ZWN0UmVzb2x2ZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlck9iamVjdEZldGNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0
ZSopOwpAQCAtNjIsMjggKzY1LDM0IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJPYmpl
Y3Q6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sICZtCiAKIC8qIFNv
dXJjZSBmb3IgTW9kdWxlTG9hZGVyT2JqZWN0Lmx1dC5oCiBAYmVnaW4gbW9kdWxlTG9hZGVyT2Jq
ZWN0VGFibGUKLSAgICBzZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RTZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgbmV3
UmVnaXN0cnlFbnRyeSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRy
eSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKLSAgICBmb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RGb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0g
ICAgZnVsZmlsbEZldGNoICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZl
dGNoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxUcmFuc2xh
dGUgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RGdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCi0gICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29t
bWl0SW5zdGFudGlhdGVkICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwotICAgIGluc3RhbnRp
YXRpb24gICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRpb24gICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKLSAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCi0gICAgcmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0UmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJl
cXVlc3RJbnN0YW50aWF0ZSAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50
aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0UmVzb2x2ZURlcGVu
ZGVuY2llcyBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBEb250
RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgRG9udEVudW18RnVuY3Rpb24gMQot
ICAgIGxvYWRNb2R1bGUgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdExvYWRNb2R1
bGUgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBwcm92aWRlICAgICAg
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQcm92aWRlICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAzCi0gICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgotICAgIHJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RlZE1vZHVsZXMgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXNvbHZl
ICAgICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgZmV0Y2ggICAgICAgICAgICAgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2ggICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQotICAgIHRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdFRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBp
bnN0YW50aWF0ZSAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZSAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgc2V0U3RhdGVUb01heCAgICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdE5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdEVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgICAgZm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdEZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisg
ICAgZnVsZmlsbEZldGNoICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZp
bGxGZXRjaCAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmls
bFRyYW5zbGF0ZSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxUcmFuc2xh
dGUgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEluc3RhbnRp
YXRlICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdENvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAzCisgICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRpb24gICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAzCisgICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdFJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgICAgcmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RUcmFuc2xhdGUgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVx
dWVzdEluc3RhbnRpYXRlICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0
YW50aWF0ZSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFJlc29s
dmVEZXBlbmRlbmNpZXMgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5k
ZW5jaWVzICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlQWxs
ICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RMaW5rICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdFJlcXVlc3RSZWFkeSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgICAgbGluayAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dExpbmsgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
bW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURl
Y2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbW9kdWxlRXZh
bHVhdGlvbiAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZUV2YWx1YXRpb24g
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZXZhbHVhdGUgICAgICAgICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlICAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdExvYWRNb2R1bGUgICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCisgICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdFByb3ZpZGUgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAzCisgICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdFBhcnNlTW9kdWxlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisg
ICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVl
c3RlZE1vZHVsZXMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVzb2x2
ZSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZmV0Y2ggICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgdHJhbnNsYXRlICAgICAgICAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCisgICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAyCiBAZW5kCiAqLwogCkBAIC0xMzcsMTkgKzE0Niw2IEBAIEpTVmFsdWUgTW9kdWxl
TG9hZGVyT2JqZWN0Ojpwcm92aWRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0YXR1
cyBzdGF0dXMsCiAgICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpcywgYXJndW1lbnRzKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxv
YWRlck9iamVjdDo6cmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBrZXkpCi17Ci0gICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5yZXF1ZXN0SW5zdGFu
dGlhdGVBbGxQdWJsaWNOYW1lKCkpKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGtleSk7Ci0KLSAgICByZXR1
cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKLX0KLQogSlNJbnRlcm5hbFByb21pc2Uq
IE1vZHVsZUxvYWRlck9iamVjdDo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
bW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlcikKIHsKICAgICBKU09iamVjdCogZnVuY3Rpb24g
PSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmxvYWRNb2R1bGVQdWJsaWNOYW1lKCkpKTsKQEAgLTI0OSwxNCArMjQ1LDE1IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1
bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUp
OwogCi0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5LCBt
b2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5s
ZXhpY2FsVmFyaWFibGVzKCkpOworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4
ZWMsIG1vZHVsZUtleSwgc291cmNlQ29kZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0
aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBKU01v
ZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxl
UHJvZ3JhbU5vZGUpOworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGVSZWNvcmQp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTTW9kdWxlUmVjb3JkKiBt
b2R1bGVSZWNvcmQgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1
bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBu
dWxscHRyKSk7CiAKQEAgLTI2OCw2ICsyNjUsMzYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50
aWF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVj
b3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsK
KyAgICBpZiAoIW1vZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRl
KCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbbGlua10gIiwgbW9kdWxlUmVjb3JkLT5tb2R1
bGVLZXkoKSwgIlxuIik7CisKKyAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYyk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RF
dmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgaWYgKCFtb2R1bGVSZWNvcmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0
ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBtb2R1bGVSZWNvcmQt
Pm1vZHVsZUtleSgpLCAiXG4iKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gbW9kdWxlUmVjb3Jk
LT5leGVjdXRlKGV4ZWMpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCmluZGV4IDQ1Yjkz
MmFjNTgwYWY2MGFiNTJmZDE1MDE5MzkwOTU5YWJlMDUxMDMuLjEyY2ZlNTZlZWJiNmM0MjdjMGVm
NzkwMjFmOTk3YzZiMGQzODRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCkBAIC02NCw3ICs2NCw2IEBAIGNsYXNzIE1vZHVs
ZUxvYWRlck9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIC8vIEFQSXMg
dG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KICAgICBKU1ZhbHVlIHByb3ZpZGUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBrZXksIFN0YXR1cywgY29uc3QgU3RyaW5nJik7Ci0gICAgSlNJbnRlcm5h
bFByb21pc2UqIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7
CiAgICAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBt
b2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyKTsKIAogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVu
dCBob29rZWQgQVBJcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCmluZGV4IGU4M2UzODMyNThmOTliYjA1YmJlMTFlMGM2NWRlMDRiOGUwNDllMGEu
LjRjNDNjNmFmZjJmNjdmZjM1NzU3M2FlY2EyZGY0M2JkMzcxMTNiNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCisjaW5j
bHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgogI2luY2x1ZGUg
IkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNjUsNiArNjYsMTAg
QEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmhhcywgc2V0UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBE
b250RW51bSwgMCk7CiAKKyAgICAvLyBQcml2YXRlIGFkZCAvIGhhcyBvcGVyYXRpb25zLgorICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YWRkUHJpdmF0ZU5hbWUsIHNl
dFByb3RvRnVuY0FkZCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9G
dW5jSGFzLCBEb250RW51bSwgMSk7CisKICAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVz
LnN0cmluZygpLCBzZXRQcm90b0Z1bmNWYWx1ZXMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHZhbHVlcywgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5rZXlz
LCB2YWx1ZXMsIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCA5M2M5NmZiZWMwNDRmN2Y3NGU5Nzg0NzNiNmJmOThjMDcyMWI4ZWQzLi4wNTZjZDkxZmU1OWMx
ODA2NDU4NWEzNDAzNGM4OWIxMWNkOGM5NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC0yMjEsNiArMjIxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9n
cmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1FeGVjdXRhYmxlOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJlZ0V4
cDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5bWJvbFN0cnVj
dHVyZS5zZXQoKnRoaXMsIFN5bWJvbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHN5bWJvbFRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFibGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKQEAgLTIzMiw2ICsyMzMsNyBAQCBW
TTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRFdmFs
Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICB1bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9w
ZXJ0eVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgUHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYWtNYXBEYXRhU3RydWN0dXJlLnNldCgq
dGhpcywgV2Vha01hcERhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBpbmZlcnJlZFZhbHVlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRWYWx1ZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKaW5kZXggOWFmZTlhNWEyZmY0MWQ5YzFmYzY1MWZkYzA2YmI2YTUwZjc0OWY2MS4uY2Rh
YjliMjI0NDEwZjQzMGM2MDU2NjlhYTE4ZjBiMTk5YmYyNzQyMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC0xMDMsNiArMTAzLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7
CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKIGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZN
RW50cnlTY29wZTsKIGNsYXNzIFdhdGNoZG9nOwpAQCAtMjc5LDYgKzI4MCw3IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvZ3Jh
bUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVj
dXRhYmxlU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBzeW1ib2xTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gc3ltYm9sVGFibGVTdHJ1Y3R1cmU7CkBAIC0yOTAsNiArMjkyLDcgQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHByb3BlcnR5VGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
d2Vha01hcERhdGFTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRWYWx1
ZVN0cnVjdHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260028</attachid>
            <date>2015-08-26 21:03:08 -0700</date>
            <delta_ts>2015-08-27 21:14:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148172-20150826210257.patch</filename>
            <type>text/plain</type>
            <size>30379</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTcyNTg1YWEyNmRlZGFhZGMwOTZkY2MwZmE3NjAzYTE1OTEzNDA1Li5kYWU0YTk5ZTljNDAxNGMx
MTZlYWZjMGUwYTc0YzVkODBiNTU1MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTW9kdWxlIGV4ZWN1dGlvbiBhbmQgTG9h
ZGVyJ3MgcmVhZHkgLyBsaW5rIHBoYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDgxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGxpbmsgLyByZWFkeSBwaGFzZXMg
dG8gdGhlIGV4aXN0aW5nIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIFRoZXkgYXJlIGp1c3QgdGhl
IHN0dWJzIGFuZCB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9ucyB3aWxsIGJlCisgICAgICAgIGZv
cnRoY29taW5nIGluIHRoZSBzdWJzZXF1bnQgcGF0Y2guCisKKyAgICAgICAgQW5kIHRoaXMgcGF0
Y2ggcGF2ZXMgdGhlIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGFu
ZAorICAgICAgICBjb21waWxlIHRoZSBleGVjdXRhYmxlIGNvZGUgaW4gdGhlIGxpbmsgcGhhc2Uu
IE1vdmUgZGVjbGFyZWRWYXJpYWJsZXMgLworICAgICAgICBsZXhpY2FsVmFyaWFibGVzIGZyb20g
TW9kdWxlQW5hbHl6ZXIgdG8gSlNNb2R1bGVSZWNvcmQgdG8gdXNlIHRoZW0gd2hlbgorICAgICAg
ICBpbnN0YW50aWF0aW5nIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIEhvbGQgdGhlIHNvdXJjZSBj
b2RlIGluCisgICAgICAgIEpTTW9kdWxlUmVjb3JkIHRvIGNvbnN0cnVjdCB0aGUgZXhlY3V0YWJs
ZSBpbiB0aGUgbGluayBwaGFzZS4gQW5kIHRvCisgICAgICAgIHVzZSBIb3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlIG9wZXJhdGlvbiBmcm9tIHRoZSBDKysgc2lkZSwgd2UgZXhwb3NlCisgICAgICAg
IHRoZSBKU01hcCBmcm9tIEMrKyB0byBKUyBhbmQgdXNlIGl0IGluIHRoZSBidWlsdGluIEpTIG1v
ZHVsZSBsb2FkZXIKKyAgICAgICAgY29kZS4KKworICAgICAgICAqIGJ1aWx0aW5zL01vZHVsZUxv
YWRlck9iamVjdC5qczoKKyAgICAgICAgKHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzLnJlc29s
dmVEZXBlbmRlbmNpZXNQcm9taXNlLnRoaXMucmVxdWVzdEluc3RhbnRpYXRlLnRoZW4uKToKKyAg
ICAgICAgKHJlcXVlc3RMaW5rKToKKyAgICAgICAgKHJlcXVlc3RSZWFkeSk6CisgICAgICAgIChs
aW5rKToKKyAgICAgICAgKG1vZHVsZUV2YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZSk6
CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9k
dWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6
ZXI6OmFuYWx5emUpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrTW9kdWxlU3lu
dGF4KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjppZGVudGlmaWVyVG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRN
b2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjptb2R1bGVLZXkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhw
b3J0RW50cmllcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVz
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmRlY2xhcmVkVmFyaWFibGVzKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAo
SlNDOjpKU01vZHVsZVJlY29yZDo6SlNNb2R1bGVSZWNvcmQpOgorICAgICAgICAqIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0
UGFyc2VNb2R1bGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRN
b2R1bGVzKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRp
b25JbnN0YW50aWF0aW9uKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVh
dGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnJlcXVlc3RJbnN0YW50aWF0
ZUFsbCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaDoK
KwogMjAxNS0wOC0yNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCB0cmFja2luZyBvZiBhY3RpdmUgc3R5bGVz
aGVldHMgaW4gdGhlIGZyb250ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwppbmRleCA2NWEwNTM5NjRkZjQ4NzczNWU2NzVm
NGI5MTc4MzY4MTBjZGQ5YTMyLi41ZDkxNzA4OTViMDMzMWIxMzI4NmNkYjg1NWVhNGM5M2E3OGNm
MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9h
ZGVyT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVM
b2FkZXJPYmplY3QuanMKQEAgLTE5Miw3ICsxOTIsNyBAQCBmdW5jdGlvbiBjb21taXRJbnN0YW50
aWF0ZWQoZW50cnksIG9wdGlvbmFsSW5zdGFuY2UsIHNvdXJjZSkKICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vd2hhdHdnL2xvYWRlci9wdWxsLzY3CiAKICAgICB2YXIgZGVwZW5kZW5jaWVzID0g
W107Ci0gICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG5ldyBATWFwKCk7CisgICAgdmFyIGRlcGVu
ZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7CiAgICAgbW9kdWxlUmVj
b3JkLnJlZ2lzdHJ5RW50cnkgPSBlbnRyeTsKICAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRo
aXMucmVxdWVzdGVkTW9kdWxlcyhtb2R1bGVSZWNvcmQpOwogICAgIGZvciAodmFyIGkgPSAwLCBs
ZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC0z
NDksNyArMzQ5LDcgQEAgZnVuY3Rpb24gcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KQog
ICAgIHZhciByZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRp
YXRlKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKICAgICAgICAgdmFyIGRlcExvYWRzID0g
W107CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbnRyeS5kZXBlbmRlbmNpZXMu
bGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBwYWlyID0gZW50cnku
ZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAgICAgbGV0IHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNp
ZXNbaV07CiAKICAgICAgICAgICAgIC8vIEhvb2sgcG9pbnQuCiAgICAgICAgICAgICAvLyAxLiBM
b2FkZXIucmVzb2x2ZS4KQEAgLTM2MSwxNSArMzYxLDIxIEBAIGZ1bmN0aW9uIHJlcXVlc3RSZXNv
bHZlRGVwZW5kZW5jaWVzKGtleSkKIAogICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSByZXNv
bHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBpcyBiZWluZyByZXNvbHZlZCBv
ciBhbHJlYWR5IHJlc29sdmVkLgogICAgICAgICAgICAgICAgIC8vIFN0b3AgdHJhY2luZyB0aGUg
Y2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIC8vIEJ1dCB0byByZXRyaWV2
ZSB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSByZWNvcmQgY29ycmVjdGx5LAorICAgICAgICAgICAg
ICAgIC8vIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGluc3RhbnRpYXRpb24gZm9yIHRoZSBkZXBl
bmRlbnQgbW9kdWxlLgorICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCByZWFjaGluZyBo
ZXJlLCB0aGUgbW9kdWxlIGlzIHN0YXJ0aW5nIHJlc29sdmluZyB0aGUgZGVwZW5kZW5jaWVzLgor
ICAgICAgICAgICAgICAgIC8vIEJ1dCB0aGUgbW9kdWxlIG1heSBvciBtYXkgbm90IHJlYWNoIHRo
ZSBpbnN0YW50aWF0aW9uIHBoYXNlIGluIHRoZSBsb2FkZXIncyBwaXBlbGluZS4KKyAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSB3YWl0IGZvciB0aGUgUmVzb2x2ZURlcGVuZGVuY2llcyBmb3IgdGhp
cyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUgY2lyY3VsYXIgcHJvbWlzZSBjaGFpbiBhbmQKKyAg
ICAgICAgICAgICAgICAvLyByZWplY3RlZCBieSB0aGUgUHJvbWlzZXMgcnVudGltZS4gU2luY2Ug
b25seSB3ZSBuZWVkIGlzIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlLCBpbnN0ZWFkIG9mIHdhaXRp
bmcKKyAgICAgICAgICAgICAgICAvLyB0aGUgUmVzb2x2ZURlcGVuZGVuY2llcyBmb3IgdGhpcyBt
b2R1bGUsIHdlIGp1c3Qgd2FpdCBJbnN0YW50aWF0ZSBmb3IgdGhpcy4KICAgICAgICAgICAgICAg
ICBpZiAoZGVwRW50cnkucmVzb2x2ZURlcGVuZGVuY2llcykgewotICAgICAgICAgICAgICAgICAg
ICBwYWlyLnZhbHVlID0gZGVwRW50cnkubW9kdWxlOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZGVwRW50cnk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBFbnRyeS5pbnN0YW50
aWF0ZS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFp
ci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bnRyeTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhkZXBL
ZXkpLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGUgcmVzdWx0IHByb21pc2Ugb2YgdGhlIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCBzaG91bGQg
YmUgZnVsZmlsbGVkIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2lzdHJ5IGVu
dHJ5LgotICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xv
YWRlci9wdWxsLzY2CiAgICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1
bGU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICB9
KTsKQEAgLTM5Niw2ICs0MDIsOTAgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlQWxsKGtl
eSkKICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyhrZXkpOwogfQog
CitmdW5jdGlvbiByZXF1ZXN0TGluayhrZXkpCit7CisgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0
aHViLmlvL2xvYWRlci8jcmVxdWVzdC1saW5rCisKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KTsKKyAgICBpZiAoZW50cnkuc3Rh
dGUgPiB0aGlzLkxpbmspIHsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gQG5ld1Byb21pc2VDYXBh
YmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOworICAgICAgICBkZWZlcnJlZC5AcmVzb2x2ZS5AY2Fs
bCh1bmRlZmluZWQsIGVudHJ5Lm1vZHVsZSk7CisgICAgICAgIHJldHVybiBkZWZlcnJlZC5AcHJv
bWlzZTsKKyAgICB9CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICByZXR1cm4gdGhpcy5y
ZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAg
ICBsb2FkZXIubGluayhlbnRyeSk7CisgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9KTsKK30K
KworZnVuY3Rpb24gcmVxdWVzdFJlYWR5KGtleSkKK3sKKyAgICAvLyBodHRwczovL3doYXR3Zy5n
aXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LXJlYWR5CisKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0TGluayhrZXkpLnRo
ZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIGxvYWRlci5tb2R1bGVFdmFsdWF0aW9uKGVu
dHJ5Lm1vZHVsZSk7CisgICAgfSk7Cit9CisKKy8vIExpbmtpbmcgc2VtYW50aWNzLgorCitmdW5j
dGlvbiBsaW5rKGVudHJ5KQoreworICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2xpbmsKKworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIEZJWE1FOiBDdXJyZW50IGlt
cGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgb3B0aW9uYWxJbnN0YW5jZS4KKyAgICAvLyBT
byBMaW5rJ3Mgc3RlcCAzIGlzIHNraXBwZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODE3MQorCisgICAgaWYgKGVudHJ5LnN0YXRlID09PSB0aGlz
LlJlYWR5KQorICAgICAgICByZXR1cm47CisgICAgZW50cnkuc3RhdGUgPSB0aGlzLlJlYWR5Owor
CisgICAgLy8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSAiZGVwZW5kZW5jaWVzIiBmaWVsZCwK
KyAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gd2l0aCB0
aGUgY29ycmVjdCBvcmRlcgorICAgIC8vIHdpdGhvdXQgY29uc3RydWN0aW5nIHRoZSBkZXBlbmRl
bmN5IGdyYXBoIGJ5IGNhbGxpbmcgZGVwZW5kZW5jeUdyYXBoLgorICAgIHZhciBkZXBlbmRlbmNp
ZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRl
cGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcGFpciA9
IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgdGhpcy5saW5rKHBhaXIudmFsdWUucmVnaXN0cnlF
bnRyeSk7CisgICAgfQorCisgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24o
ZW50cnkubW9kdWxlKTsKK30KKworLy8gTW9kdWxlIHNlbWFudGljcy4KKworZnVuY3Rpb24gbW9k
dWxlRXZhbHVhdGlvbihtb2R1bGVSZWNvcmQpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChtb2R1bGVSZWNvcmQuZXZhbHVhdGVkKQorICAgICAg
ICByZXR1cm47CisgICAgbW9kdWxlUmVjb3JkLmV2YWx1YXRlZCA9IHRydWU7CisKKyAgICB2YXIg
ZW50cnkgPSBtb2R1bGVSZWNvcmQucmVnaXN0cnlFbnRyeTsKKworICAgIC8vIFRoZSBjb250ZW50
cyBvZiB0aGUgW1tSZXF1ZXN0ZWRNb2R1bGVzXV0gaXMgY2xvbmVkIGludG8gZW50cnkuZGVwZW5k
ZW5jaWVzLgorICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7CisgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICB2YXIgcGFpciA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgdmFy
IHJlcXVpcmVkTW9kdWxlUmVjb3JkID0gcGFpci52YWx1ZTsKKyAgICAgICAgdGhpcy5tb2R1bGVF
dmFsdWF0aW9uKHJlcXVpcmVkTW9kdWxlUmVjb3JkKTsKKyAgICB9CisgICAgdGhpcy5ldmFsdWF0
ZShtb2R1bGVSZWNvcmQpOworfQorCiBmdW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHJl
ZmVycmVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKQEAgLTQwNiwxMSArNDk2LDcgQEAgZnVuY3Rp
b24gbG9hZE1vZHVsZShtb2R1bGVOYW1lLCByZWZlcnJlcikKICAgICAvLyBUYWtlIHRoZSBuYW1l
IGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNl
IGxvY2F0aW9uLgogICAgIC8vIEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0
dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4KICAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1v
ZHVsZU5hbWUsIHJlZmVycmVyKS50aGVuKGZ1bmN0aW9uIChrZXkpIHsKLSAgICAgICAgLy8gRklY
TUU6IE5vdywgd2UgZG9uJ3QgaW1wbGVtZW50IHRoZSBsaW5raW5nIHBoYXNlIHlldC4KLSAgICAg
ICAgLy8gU28gaGVyZSwgd2UganVzdCBjYWxsIHJlcXVlc3RJbnN0YW50aWF0ZUFsbCB0byBvbmx5
IHBlcmZvcm0gdGhlIG1vZHVsZSBsb2FkaW5nLgotICAgICAgICAvLyBBdCBsYXN0LCBpdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCByZXF1ZXN0UmVhZHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNzIKLSAgICAgICAgcmV0dXJuIGxvYWRl
ci5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KTsKKyAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1
ZXN0UmVhZHkoa2V5KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCAzZDE3N2NhNzdiOGI4ZDg4ZDg3YjRmNGU4
NWNlM2Q0NjgzOGM0NDFkLi4yZmE4MWFhY2ZjMWY4ZjJiZDc2NDJmMzgzOWIzYjEyNjA1ODdmMmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cApAQCAtMzYsMTEgKzM2LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAKLU1vZHVsZUFuYWx5emVy
OjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZUtleSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCitNb2R1bGVBbmFseXplcjo6
TW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVL
ZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2Fs
VmFyaWFibGVzKQogICAgIDogbV92bSgmZXhlYy0+dm0oKSkKLSAgICAsIG1fbW9kdWxlUmVjb3Jk
KGV4ZWMtPnZtKCksIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSwgbW9kdWxlS2V5KSkK
LSAgICAsIG1fZGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpCi0gICAgLCBtX2xl
eGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcykKKyAgICAsIG1fbW9kdWxlUmVjb3JkKGV4
ZWMtPnZtKCksIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSwgbW9kdWxlS2V5LCBzb3Vy
Y2VDb2RlLCBkZWNsYXJlZFZhcmlhYmxlcywgbGV4aWNhbFZhcmlhYmxlcykpCiB7CiB9CiAKQEAg
LTE0NCwxMCArMTQyLDEwIEBAIEpTTW9kdWxlUmVjb3JkKiBNb2R1bGVBbmFseXplcjo6YW5hbHl6
ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgLy8gICAgIFRoaXMg
ZXhwb3J0cyBhbGwgdGhlIG5hbWVzIGZyb20gdGhlIHNwZWNpZmllZCBleHRlcm5hbCBtb2R1bGUg
YXMgdGhlIGN1cnJlbnQgbW9kdWxlJ3MgbmFtZS4KICAgICAvLwogICAgIC8vICAgICBleHBvcnQg
KiBmcm9tICJtb2QiCi0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9kZWNsYXJlZFZhcmlh
YmxlcykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX21vZHVsZVJlY29yZC0+ZGVjbGFy
ZWRWYXJpYWJsZXMoKSkKICAgICAgICAgZXhwb3J0VmFyaWFibGUocGFpci5rZXksIHBhaXIudmFs
dWUpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9sZXhpY2FsVmFyaWFibGVzKQor
ICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fbW9kdWxlUmVjb3JkLT5sZXhpY2FsVmFyaWFi
bGVzKCkpCiAgICAgICAgIGV4cG9ydFZhcmlhYmxlKHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKIAog
ICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlUmVjb3JkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKaW5kZXggMjI4YTY5ZmVlNzQ3MzY2MjBkN2Y2
ZGE1NzFiYjZhY2FkODQ2YjcwNi4uNzA4M2NhOTA5OTE4ZWZkMjNlYmExYTNkNWJiOWMzZjY1NzMz
OGUwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIu
aApAQCAtMzEsMTEgKzMxLDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNNb2R1bGVS
ZWNvcmQ7CitjbGFzcyBTb3VyY2VDb2RlOwogCiBjbGFzcyBNb2R1bGVBbmFseXplciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlQW5hbHl6ZXIpOwogcHVibGljOgotICAgIE1vZHVs
ZUFuYWx5emVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpOworICAgIE1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKTsKIAogICAgIEpTTW9kdWxlUmVjb3JkKiBhbmFs
eXplKE1vZHVsZVByb2dyYW1Ob2RlJik7CiAKQEAgLTU0LDggKzU1LDYgQEAgY2xhc3MgTW9kdWxl
QW5hbHl6ZXIgewogCiAgICAgVk0qIG1fdm07CiAgICAgU3Ryb25nPEpTTW9kdWxlUmVjb3JkPiBt
X21vZHVsZVJlY29yZDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fZGVjbGFyZWRWYXJpYWJs
ZXM7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJsZXM7CiAgICAgSWRl
bnRpZmllckFsaWFzTWFwIG1fYWxpYXNNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDI3MTE3OGMyYjVmNjQzN2U2OGRlNTkyZDYx
NGI4MTJmYTUxZWYyNWQuLmI1ZjYyM2FjZGE1MjMwNTExODdkMGRiNTY4ODUyMTI2MmQ4NjI0OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC03
OCw3ICs3OCw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFByaXZhdGVOYW1lIHByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlv
biwgIkVudHJ5UG9pbnRNb2R1bGUiKTsKLSAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXpl
cihleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByaXZhdGVOYW1lKSwgbW9kdWxlUHJvZ3JhbU5v
ZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxl
cygpKTsKKyAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHByaXZhdGVOYW1lKSwgc291cmNlLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVj
bGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAg
IG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcAppbmRleCBlNzAyZmFmYTQ0ZTUwNmY5ZDQ3ZmVkZTYzMzY2NGE3MzhjMTliNDBiLi41
ZDE1ZWJjMzZjODQyMGVmNmVjZDU0ZWUwNTNkOWEzMzE1ZjZhYjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0yMCw3ICsyMCw3
IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTI5LDYg
KzI5LDggQEAKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
TWFwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQxLDEyICs0MywyMiBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5K
U01vZHVsZVJlY29yZDo6fkpTTW9kdWxlUmVjb3JkKCk7CiB9CiAKLQogdm9pZCBKU01vZHVsZVJl
Y29yZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgcHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5Iikp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCBBU0NJSUxpdGVyYWwoImV2YWx1YXRlZCIpKSwganNCb29sZWFuKGZhbHNlKSk7CisK
KyAgICBtX2RlcGVuZGVuY2llc01hcC5zZXQodm0sIHRoaXMsIEpTTWFwOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKSkpOworICAgIHB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgiZGVwZW5kZW5jaWVzTWFwIikpLCBt
X2RlcGVuZGVuY2llc01hcC5nZXQoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01v
ZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsKIH0KIAogYXV0byBKU01v
ZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKQEAgLTY0LDYgKzc2LDI5IEBA
IGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnROYW1lLCBjCiAgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6
SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIo
KSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKIH0KIAorc3RhdGljIEpTVmFsdWUgaWRl
bnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpCit7CisgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJu
IFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRl
bnRpZmllci5pbXBsKCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoJmV4ZWMtPnZtKCksIGlkZW50
aWZpZXIuaW1wbCgpKTsKK30KKworSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0
UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlTmFtZSkKK3sKKyAgICBKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSA9IGlkZW50aWZpZXJU
b0pTVmFsdWUoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgSlNWYWx1ZSBwYWlyID0gbV9kZXBlbmRl
bmNpZXNNYXAtPkpTTWFwOjpnZXQoZXhlYywgbW9kdWxlTmFtZVZhbHVlKTsKKyAgICByZXR1cm4g
anNDYXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAidmFsdWUiKSkpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4
ZWNTdGF0ZSopCit7Cit9CisKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0
YXRlKikKK3sKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogc3RhdGljIFN0cmluZyBw
cmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKIHsKICAg
ICBpZiAodWlkLT5pc1N5bWJvbCgpKQpAQCAtNzYsNyArMTExLDYgQEAgc3RhdGljIFN0cmluZyBw
cmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHJldHVybiBwcmludGFi
bGVOYW1lKGlkZW50LmltcGwoKSk7CiB9CiAKLQogdm9pZCBKU01vZHVsZVJlY29yZDo6ZHVtcCgp
CiB7CiAgICAgZGF0YUxvZygiXG5BbmFseXppbmcgTW9kdWxlUmVjb3JkIGtleSgiLCBwcmludGFi
bGVOYW1lKG1fbW9kdWxlS2V5KSwgIilcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggMDVkNjk0ZDNlM2ZlNTVhNTIxYWYzNWRlODI2
MTU5ODBmMDgwZTJlMC4uOTM2MjYzY2NmMzEyOWRhOTVlMzFlOTFhMjE5NDBkZDBhOTU1MjY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBA
IC0yOCwxNSArMjgsMjIgQEAKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJK
U0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRl
ICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKK2NsYXNzIEpT
TWFwOworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CisKIC8vIEJhc2VkIG9uIHRoZSBT
b3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCiAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKIGNsYXNz
IEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKKyAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHR5cGVkZWYgSlNE
ZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIApAQCAtODEsMTggKzg4LDEzIEBAIGNsYXNzIEpTTW9k
dWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRp
YyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZUtleSkKKyAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhp
Y2FsVmFyaWFibGVzKQogICAgIHsKLSAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01v
ZHVsZVJlY29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXkpOworICAgICAgICBKU01vZHVsZVJl
Y29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZVJlY29y
ZD4odm0uaGVhcCkpIEpTTW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVsZUtleSwgc291
cmNlQ29kZSwgZGVjbGFyZWRWYXJpYWJsZXMsIGxleGljYWxWYXJpYWJsZXMpOwogICAgICAgICBp
bnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAg
ICAgfQogCi0gICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG1vZHVsZUtl
eSk7Ci0gICAgfQotCiAgICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRp
ZmllciYpOwogICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImKTsK
ICAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CkBAIC0xMDAsMjQg
KzEwMiw0NiBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiAKICAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKIAorICAgIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KKyAgICBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtleTsg
fQogICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9CisgICAgY29uc3QgRXhwb3J0TWFwJiBl
eHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9CisgICAgY29u
c3QgSW1wb3J0TWFwJiBpbXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRy
aWVzOyB9CisKKyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KKyAgICBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhp
Y2FsVmFyaWFibGVzOyB9CiAKICAgICB2b2lkIGR1bXAoKTsKIAorCisgICAgdm9pZCBsaW5rKEV4
ZWNTdGF0ZSopOworICAgIEpTVmFsdWUgZXhlY3V0ZShFeGVjU3RhdGUqKTsKKwogcHJpdmF0ZToK
LSAgICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlh
YmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9tb2R1bGVLZXkobW9kdWxlS2V5
KQorICAgICAgICAsIG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1fZGVjbGFy
ZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpCisgICAgICAgICwgbV9sZXhpY2FsVmFyaWFi
bGVzKGxleGljYWxWYXJpYWJsZXMpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKIAorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgSlNN
b2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKICAgICAvLyBUaGUgbG9hZGVyIHJlc29sdmVzIHRo
ZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1vZHVsZSBrZXkgaXMg
dGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAgICAgSWRlbnRpZmll
ciBtX21vZHVsZUtleTsKIAorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2RlOworCisgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOworICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOworCiAgICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBv
cnRFbnRyeS4KICAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOwogCkBAIC0xMjksNiArMTUz
LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2Fk
ZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KICAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZh
bHVhdGlvbgogICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKKwor
ICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNNYXA7CiB9OwogCiBpbmxpbmUg
dm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCAxZDY3YTRjYWRlOGI0N2NjMThjZjU4NjQyZDY0
NDZkMDMyZjVlNzkzLi5lNjdmYTM4NWJmZjc3MWM0ZTNkOGEyZDc5MTE3YjEzYTU3MjM4ZWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9i
amVjdC5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlKEV4ZWNTdGF0ZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0
TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9i
amVjdEZldGNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSopOwpAQCAtNjIsMjggKzY0
LDM0IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJPYmplY3Q6OnNfaW5mbyA9IHsgIk1v
ZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sICZtCiAKIC8qIFNvdXJjZSBmb3IgTW9kdWxlTG9h
ZGVyT2JqZWN0Lmx1dC5oCiBAYmVnaW4gbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUKLSAgICBzZXRT
dGF0ZVRvTWF4ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRvTWF4ICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgbmV3UmVnaXN0cnlFbnRyeSAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQotICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdEVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAg
ICBmb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGb3JjZUZ1bGZp
bGxQcm9taXNlICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbEZldGNoICAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKLSAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxm
aWxsSW5zdGFudGlhdGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgY29tbWl0SW5z
dGFudGlhdGVkICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMwotICAgIGluc3RhbnRpYXRpb24gICAgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRpb24gICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDMKLSAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RSZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVx
dWVzdFRyYW5zbGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRyYW5zbGF0
ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBtb2R1bGVMb2Fk
ZXJPYmplY3RSZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBEb250RW51bXxGdW5jdGlvbiAxCi0g
ICAgcmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdElu
c3RhbnRpYXRlQWxsICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIGxvYWRNb2R1bGUgICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdExvYWRNb2R1bGUgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RQcm92aWRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAzCi0gICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFy
c2VNb2R1bGUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHJlcXVlc3Rl
ZE1vZHVsZXMgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXNvbHZlICAgICAgICAgICAgICAgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCi0gICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0RmV0Y2ggICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHRy
YW5zbGF0ZSAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0ZSAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBpbnN0YW50aWF0ZSAgICAgICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZSAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCisgICAgc2V0U3RhdGVUb01heCAgICAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCisgICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdE5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
ICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEVuc3Vy
ZVJlZ2lzdGVyZWQgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZm9yY2VG
dWxmaWxsUHJvbWlzZSAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZvcmNlRnVsZmlsbFBy
b21pc2UgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEZldGNoICAg
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxGZXRjaCAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5zbGF0ZSAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdENvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAz
CisgICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdElu
c3RhbnRpYXRpb24gICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgcmVx
dWVzdEZldGNoICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RGZXRj
aCAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFRyYW5z
bGF0ZSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RUcmFuc2xhdGUgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMgICAg
IG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgICAgcmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dFJlcXVlc3RMaW5rICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
cmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RS
ZWFkeSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgbGluayAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdExpbmsgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgbW9kdWxlRGVjbGFyYXRpb25J
bnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlh
dGlvbiBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZUV2YWx1YXRpb24gICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCisgICAgZXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdEV2YWx1YXRlICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCisgICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdExvYWRNb2R1bGUgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisg
ICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFByb3Zp
ZGUgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgcGFyc2VN
b2R1bGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdGVkTW9kdWxl
cyAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdFRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAy
CisgICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdElu
c3RhbnRpYXRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiBAZW5kCiAq
LwogCkBAIC0xMzcsMTkgKzE0NSw2IEBAIEpTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0Ojpwcm92
aWRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0YXR1cyBzdGF0dXMsCiAgICAgcmV0
dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1l
bnRzKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6cmVxdWVz
dEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCi17Ci0gICAgSlNP
YmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5yZXF1ZXN0SW5zdGFudGlhdGVBbGxQdWJsaWNOYW1l
KCkpKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpT
Qzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUg
IT0gQ2FsbFR5cGVOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKGtleSk7Ci0KLSAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJu
YWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
LCBhcmd1bWVudHMpKTsKLX0KLQogSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRlck9iamVj
dDo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1
ZSByZWZlcnJlcikKIHsKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3Qq
PihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmxvYWRNb2R1
bGVQdWJsaWNOYW1lKCkpKTsKQEAgLTI0OSwxNCArMjQ0LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVj
KQogICAgIH0KICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUpOwogCi0gICAgTW9kdWxlQW5h
bHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5LCBtb2R1bGVQcm9ncmFtTm9kZS0+
dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkp
OworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZUtleSwgc291
cmNlQ29kZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1bGVQcm9n
cmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0gbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOworCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGVSZWNvcmQpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0Nh
c3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5h
cmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKSk7CiAKQEAgLTI2
OCw2ICsyNjQsMzEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJP
YmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2Fz
dDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIW1vZHVsZVJl
Y29yZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKwor
ICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFM
b2coIkxvYWRlciBbbGlua10gIiwgbW9kdWxlUmVjb3JkLT5tb2R1bGVLZXkoKSwgIlxuIik7CisK
KyAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVMb2FkZXJPYmplY3RFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNNb2R1bGVS
ZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVj
LT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1bGVSZWNvcmQpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1v
ZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAi
LCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobW9kdWxlUmVjb3JkLT5leGVjdXRlKGV4ZWMpKTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVj
dFJlc29sdmUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaAppbmRleCA0NWI5MzJhYzU4MGFmNjBhYjUyZmQx
NTAxOTM5MDk1OWFiZTA1MTAzLi4xMmNmZTU2ZWViYjZjNDI3YzBlZjc5MDIxZjk5N2M2YjBkMzg0
YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuaApAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICAvLyBBUElzIHRvIGNvbnRyb2wgdGhlIG1v
ZHVsZSBsb2FkZXIuCiAgICAgSlNWYWx1ZSBwcm92aWRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5
LCBTdGF0dXMsIGNvbnN0IFN0cmluZyYpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXF1ZXN0
SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXkpOwogICAgIEpTSW50ZXJuYWxQ
cm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1
ZSByZWZlcnJlcik7CiAKICAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCg==
</data>
<flag name="review"
          id="285220"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>