<?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>160499</bug_id>
          
          <creation_ts>2016-08-03 05:10:46 -0700</creation_ts>
          <short_desc>[ES6] Modules&apos; `export default function/class` should be declaration</short_desc>
          <delta_ts>2016-08-23 11:16:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216889</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-03 05:10:46 -0700</bug_when>
    <thetext>[ES6] Use FunctionDeclaration and ClassDeclaration under export default context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216892</commentid>
    <comment_count>1</comment_count>
      <attachid>285220</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-03 05:24:51 -0700</bug_when>
    <thetext>Created attachment 285220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216893</commentid>
    <comment_count>2</comment_count>
      <attachid>285220</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-03 05:27:58 -0700</bug_when>
    <thetext>Comment on attachment 285220
Patch

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

Add notes.

&gt; Source/JavaScriptCore/parser/ModuleScopeData.h:51
&gt; +        m_exportedBindings.add(localName.impl(), Vector&lt;RefPtr&lt;UniquedStringImpl&gt;&gt;()).iterator-&gt;value.append(exportedName.impl());

Since this uniqueness is guaranteed by m_exportedNames set, we can just use the vector here.

&gt; Source/JavaScriptCore/parser/Parser.cpp:3710
&gt; +    info.className = &amp;m_vm-&gt;propertyNames-&gt;nullIdentifier;

Initializing the default value in the caller side. This is the same in the parseFunctionInfo case (see parseFunctionExpression).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222084</commentid>
    <comment_count>3</comment_count>
      <attachid>286659</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-22 20:32:18 -0700</bug_when>
    <thetext>Created attachment 286659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222088</commentid>
    <comment_count>4</comment_count>
      <attachid>286659</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-22 20:40:01 -0700</bug_when>
    <thetext>Comment on attachment 286659
Patch

Fixing issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222091</commentid>
    <comment_count>5</comment_count>
      <attachid>286663</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-22 20:57:48 -0700</bug_when>
    <thetext>Created attachment 286663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222256</commentid>
    <comment_count>6</comment_count>
      <attachid>286663</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-23 10:07:37 -0700</bug_when>
    <thetext>Comment on attachment 286663
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/parser/Parser.cpp:2321
&gt; +        ASSERT_WITH_MESSAGE(declarationDefaultContext != DeclarationDefaultContext::ExportDefault, &quot;Export default case will export name and binding in caller side.&quot;);

&quot;export name and binding in caller side&quot; =&gt; &quot;export the name and binding in the caller&quot;

&gt; Source/JavaScriptCore/parser/Parser.cpp:2348
&gt; +    ASSERT_WITH_MESSAGE(!(requirements == FunctionRequirements::NoRequirements &amp;&amp; !info.className), &quot;When specifying FunctionRequirements::NoRequirements, we need to initialize info.className with the default value in the caller side.&quot;);

&quot;caller side&quot; =&gt; &quot;caller&quot;

&gt; Source/JavaScriptCore/parser/Parser.h:73
&gt; +enum class FunctionRequirements { NoRequirements, Named, Unnamed };

Suggestion on better names for this:

enum class FunctionNameRequirements { None, NeedsName, MustNotHaveName }
or
enum class FunctionNameRequirements { None, Named, Unnamed }

&gt; JSTests/modules/export-default-function-name-in-assignment-expression.js:7
&gt; +shouldBe(func.name, &apos;default&apos;);

What about toString()?

&gt; JSTests/modules/export-default-function-name-in-class-declaration.js:7
&gt; +shouldBe(cls.name, &apos;default&apos;);

Ditto

&gt; JSTests/stress/method-name.js:27
&gt; +class Hello {
&gt; +    hello hello() { }
&gt; +}

It might also be worth adding tests like this to the parser-syntax-check file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222290</commentid>
    <comment_count>7</comment_count>
      <attachid>286663</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-23 11:06:42 -0700</bug_when>
    <thetext>Comment on attachment 286663
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2321
&gt;&gt; +        ASSERT_WITH_MESSAGE(declarationDefaultContext != DeclarationDefaultContext::ExportDefault, &quot;Export default case will export name and binding in caller side.&quot;);
&gt; 
&gt; &quot;export name and binding in caller side&quot; =&gt; &quot;export the name and binding in the caller&quot;

Thanks! Fixed.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2348
&gt;&gt; +    ASSERT_WITH_MESSAGE(!(requirements == FunctionRequirements::NoRequirements &amp;&amp; !info.className), &quot;When specifying FunctionRequirements::NoRequirements, we need to initialize info.className with the default value in the caller side.&quot;);
&gt; 
&gt; &quot;caller side&quot; =&gt; &quot;caller&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:73
&gt;&gt; +enum class FunctionRequirements { NoRequirements, Named, Unnamed };
&gt; 
&gt; Suggestion on better names for this:
&gt; 
&gt; enum class FunctionNameRequirements { None, NeedsName, MustNotHaveName }
&gt; or
&gt; enum class FunctionNameRequirements { None, Named, Unnamed }

`enum class FunctionNameRequirements { None, Named, Unnamed }` sounds very nice. I&apos;ll change it.

&gt;&gt; JSTests/modules/export-default-function-name-in-assignment-expression.js:7
&gt;&gt; +shouldBe(func.name, &apos;default&apos;);
&gt; 
&gt; What about toString()?

Nice catch. It becomes `function () { }`. It is expected result.
I&apos;ve added the test.

&gt;&gt; JSTests/modules/export-default-function-name-in-class-declaration.js:7
&gt;&gt; +shouldBe(cls.name, &apos;default&apos;);
&gt; 
&gt; Ditto

Added the test.

&gt; JSTests/modules/export-default-function-name-in-function-declaration.js:7
&gt; +shouldBe(func.name, &apos;default&apos;);

Nice catch. It shows &quot;star default&quot; value for func.toString().
However, I think it is due to the current Function#toString() implementation.
Currently, we use the func-&gt;name(). However, as per the latest `Function#toString()` draft, it should use the original source text[1].
In the meantime, I introduce the similar hook to the reifyName to JSFunction::name.

[1]: http://tc39.github.io/Function-prototype-toString-revision/#sec-function-definitions-runtime-semantics-instantiatefunctionobject

&quot;NOTE: An anonymous FunctionDeclaration can only occur as part of an export default declaration.&quot;.

&gt; JSTests/modules/export-default-function-name-in-generator-declaration.js:7
&gt; +shouldBe(func.name, &apos;default&apos;);

It should be `function * () { }`. But currently, the result is `function () { }`.
Once Function#toString() draft is introduced, we need to refactor the Function#toString.

&gt;&gt; JSTests/stress/method-name.js:27
&gt;&gt; +}
&gt; 
&gt; It might also be worth adding tests like this to the parser-syntax-check file

Sounds nice. I&apos;ll add the new directory and runParserSyntaxCheck fund in run-esc-stress-tests for that.
https://bugs.webkit.org/show_bug.cgi?id=161094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222307</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-23 11:16:17 -0700</bug_when>
    <thetext>Committed r204842: &lt;http://trac.webkit.org/changeset/204842&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285220</attachid>
            <date>2016-08-03 05:24:51 -0700</date>
            <delta_ts>2016-08-22 20:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160499-20160803212327.patch</filename>
            <type>text/plain</type>
            <size>28363</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGY4ODA1MWFiMjI1NmE1ZTk0N2VmMzM4YmI0OTVkNWU1NjI4OTMyLi45Yjg1NmM1MzUzZmQ1YjZh
NmNjZDUyNmZiNjE2ZWI1Yjg4YjBmZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNi0wOC0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBVc2UgRnVuY3Rpb25EZWNsYXJhdGlvbiBhbmQgQ2xhc3NE
ZWNsYXJhdGlvbiB1bmRlciBleHBvcnQgZGVmYXVsdCBjb250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBwYXJzZWQgdGhl
IGZvbGxvd2luZyBjYXNlcyBhcyBGdW5jdGlvbkV4cHJlc3Npb24gYW5kIENsYXNzRXhwcmVzc2lv
bi4KKworICAgICAgICAgICAgYGBgCisgICAgICAgICAgICBleHBvcnQgZGVmYXVsdCBmdW5jdGlv
biAoKSB7IH0KKyAgICAgICAgICAgIGV4cG9ydCBkZWZhdWx0IGNsYXNzIHsgfQorICAgICAgICAg
ICAgYGBgCisKKyAgICAgICAgQnV0LCBhcyBwZXIgRVM2IHNwZWMsIHRoZSBhYm92ZSBgZnVuY3Rp
b24gLi4uYCBhbmQgYGNsYXNzIC4uLmAgcGFydHMgc2hvdWxkIGJlIHBhcnNlZAorICAgICAgICBh
cyBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgY2xhc3MgZGVjbGFyYXRpb24uIFRoaXMgaGFzIGJp
ZyBkaWZmZXJlbmNlOyB0aGUgaW5zdGFudGlhdGlvbgorICAgICAgICBvZiB0aGUgZnVuY3Rpb24g
ZGVjbGFyYXRpb25zIGFyZSBkb25lIGluIHRoZSBmdW5jdGlvbiBwcm9sb2d1ZS4KKworICAgICAg
ICBJbiB0aGlzIHBhdGNoLCB3ZSBjb3JyZWN0bHkgcGFyc2UgdGhlIGFib3ZlIGNhc2VzIGFzIGRl
Y2xhcmF0aW9uLiBUbyBoYW5kbGUgbm8tbmFtZWQKKyAgICAgICAgZGVjbGFyYXRpb25zLCB3ZSBh
ZGQgYSBuZXcgZmxhZywgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dC4gVGhpcyBpbmRpY2F0ZXMg
W0RlZmF1bHRdCisgICAgICAgIGZsYWcgaW4gdGhlIEVTNiBzcGVjJ3MgQk5GLgorCisgICAgICAg
IEZ1cnRoZXJtb3JlLCB0aGlzIHBhdGNoIGFsc28gZml4ZXMgdGhlIGJ1ZyByZWxhdGVkIHRvICJl
eHBvcnQgZGVmYXVsdCIncyBmdW5jdGlvbiBuYW1lLgorICAgICAgICBJZiB0aGUgbmFtZSBpcyBu
b3QgcHJvdmlkZWQgKGxpa2UgdGhlIGFib3ZlIGNhc2UpLCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rp
b24gYmVjb21lcworICAgICAgICAiZGVmYXVsdCIsIG5vdCAiKmRlZmF1bHQqIi4gVGhpcyBpcyBz
cGVjaWFsIGhhbmRsaW5nIGluIEVTNiBzcGVjLiBXZSBoYW5kbGUgdGhpcyBpbgorICAgICAgICBK
U0Z1bmN0aW9uJ3MgcmVpZnlOYW1lLgorCisgICAgICAgICogcGFyc2VyL01vZHVsZVNjb3BlRGF0
YS5oOgorICAgICAgICAoSlNDOjpNb2R1bGVTY29wZURhdGE6OmV4cG9ydEJpbmRpbmcpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRXhwb3J0RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDbGFzc0V4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OnJlaWZ5TmFtZSk6CisKIDIwMTYtMDgtMDMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IG5lc3RlZCByZXN0IGRlc3RydWN0dXJpbmcgdy5yLnQg
dGhlIEVTNyBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZVNjb3BlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVTY29w
ZURhdGEuaAppbmRleCA4MjIxYWY0ODM4ZjE4MzJhMmFkMmRhMTM1MzY4ZTEzZjk1ZjE2Yzc4Li4y
YTFlY2EyNjQ1OGQ1MDMyMTJlYjNkZjBkMTUyZTdhMDU5Njc1YzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVNjb3BlRGF0YS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlU2NvcGVEYXRhLmgKQEAgLTM1LDcgKzM1LDcgQEAg
Y2xhc3MgTW9kdWxlU2NvcGVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlU2NvcGVEYXRh
PiB7CiBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVTY29wZURhdGEpOwogV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIElkZW50aWZpZXJTZXQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJZGVudGlmaWVyQWxpYXNNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZlY3RvcjxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4+IElkZW50aWZpZXJBbGlhc01hcDsKIAogICAgIHN0YXRpYyBSZWY8
TW9kdWxlU2NvcGVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVNj
b3BlRGF0YSk7IH0KIApAQCAtNDgsNyArNDgsNyBAQCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IAogICAgIHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIGV4cG9ydGVkTmFtZSkKICAgICB7Ci0gICAgICAgIG1fZXhwb3J0ZWRC
aW5kaW5ncy5hZGQobG9jYWxOYW1lLmltcGwoKSwgSWRlbnRpZmllclNldCgpKS5pdGVyYXRvci0+
dmFsdWUuYWRkKGV4cG9ydGVkTmFtZS5pbXBsKCkpOworICAgICAgICBtX2V4cG9ydGVkQmluZGlu
Z3MuYWRkKGxvY2FsTmFtZS5pbXBsKCksIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PigpKS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGV4cG9ydGVkTmFtZS5pbXBsKCkpOwogICAgIH0K
IAogICAgIHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMGM5NTVlMjM1ZjEyOGVk
NTk4ZWE5YjA0M2NhZjU4Y2ZiZmU0MTNlZS4uZmNmYTQzZDYwNDA5OGI4YjhlNzRjZGIzY2JiYjMz
MDY3ZDFhNGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MjIwNiwxOCArMjIwNiw0NSBAQCBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogZ2V0TWV0YWRhdGEoUGFyc2VyRnVuY3Rpb25Jbgogc3RhdGljIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiBnZXRNZXRhZGF0YShQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRl
cj4mIGluZm8pIHsgcmV0dXJuIGluZm8uYm9keTsgfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIEV4cG9ydFR5cGUgZXhwb3J0VHlwZSkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBFeHBvcnRUeXBlIGV4cG9ydFR5cGUsIERlY2xhcmF0aW9u
RGVmYXVsdENvbnRleHQgZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCkKIHsKICAgICBBU1NFUlQo
bWF0Y2goRlVOQ1RJT04pKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICBuZXh0KCk7Ci0gICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBmdW5j
dGlvbkluZm87CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOwogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKICAgICAgICAg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
OwotICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5l
ZWRzTmFtZSwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5j
dGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVu
Y3Rpb24iKTsKLSAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0
YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOworCisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiBmdW5jdGlvbkluZm87CisgICAgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWly
ZW1lbnRzID0gRnVuY3Rpb25OZWVkc05hbWU7CisgICAgaWYgKGRlY2xhcmF0aW9uRGVmYXVsdENv
bnRleHQgPT0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6RXhwb3J0RGVmYXVsdCkgeworICAg
ICAgICAvLyBVbmRlciB0aGUgImV4cG9ydCBkZWZhdWx0IiBjb250ZXh0LCBmdW5jdGlvbiBkZWNs
YXJhdGlvbiBkb2VzIG5vdCByZXF1aXJlIHRoZSBmdW5jdGlvbiBuYW1lLgorICAgICAgICAvLwor
ICAgICAgICAvLyAgICAgRXhwb3J0RGVjbGFyYXRpb246CisgICAgICAgIC8vICAgICAgICAgLi4u
CisgICAgICAgIC8vICAgICAgICAgZXhwb3J0IGRlZmF1bHQgSG9pc3RhYmxlRGVjbGFyYXRpb25b
fllpZWxkLCArRGVmYXVsdF0KKyAgICAgICAgLy8gICAgICAgICAuLi4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gICAgIEhvaXN0YWJsZURlY2xhcmF0aW9uW1lpZWxkLCBEZWZhdWx0XToKKyAgICAg
ICAgLy8gICAgICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uWz9ZaWVsZCwgP0RlZmF1bHRdCisgICAg
ICAgIC8vICAgICAgICAgR2VuZXJhdG9yRGVjbGFyYXRpb25bP1lpZWxkLCA/RGVmYXVsdF0KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gICAgIEZ1bmN0aW9uRGVjbGFyYXRpb25bWWllbGQsIERlZmF1
bHRdOgorICAgICAgICAvLyAgICAgICAgIC4uLgorICAgICAgICAvLyAgICAgICAgIFsrRGVmYXVs
dF0gZnVuY3Rpb24gKCBGb3JtYWxQYXJhbWV0ZXJzW35ZaWVsZF0gKSB7IEZ1bmN0aW9uQm9keVt+
WWllbGRdIH0KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIEdlbmVyYXRvckRlY2xhcmF0aW9u
W1lpZWxkLCBEZWZhdWx0XToKKyAgICAgICAgLy8gICAgICAgICAuLi4KKyAgICAgICAgLy8gICAg
ICAgICBbK0RlZmF1bHRdIGZ1bmN0aW9uICogKCBGb3JtYWxQYXJhbWV0ZXJzWytZaWVsZF0gKSB7
IEdlbmVyYXRvckJvZHkgfQorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdl
IHVzZSAiKmRlZmF1bHQqIiBhcyB0aGlzIGZ1bmN0aW9uIGRlY2xhcmF0aW9uJ3MgbmFtZS4KKyAg
ICAgICAgcmVxdWlyZW1lbnRzID0gRnVuY3Rpb25Ob1JlcXVpcmVtZW50czsKKyAgICAgICAgZnVu
Y3Rpb25JbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3Rh
ckRlZmF1bHRQcml2YXRlTmFtZSgpOworICAgIH0KKworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbyhjb250ZXh0LCByZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24p
KSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CisgICAgQVNTRVJUKGZ1bmN0aW9uSW5m
by5uYW1lKTsKIAogICAgIHN0ZDo6cGFpcjxEZWNsYXJhdGlvblJlc3VsdE1hc2ssIFNjb3BlUmVm
PiBmdW5jdGlvbkRlY2xhcmF0aW9uID0gZGVjbGFyZUZ1bmN0aW9uKGZ1bmN0aW9uSW5mby5uYW1l
KTsKICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBmdW5jdGlv
bkRlY2xhcmF0aW9uLmZpcnN0OwpAQCAtMjIyNSw2ICsyMjUyLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRGVjbGEKICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6
SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uKQogICAgICAgICBpbnRlcm5hbEZhaWxXaXRoTWVz
c2FnZShmYWxzZSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVuY3Rpb24gdGhhdCBzaGFkb3dzIGEgbGV0
L2NvbnN0L2NsYXNzL2Z1bmN0aW9uIHZhcmlhYmxlICciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1w
bCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwogICAgIGlmIChleHBvcnRUeXBlID09IEV4cG9ydFR5
cGU6OkV4cG9ydGVkKSB7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVjbGFyYXRpb25E
ZWZhdWx0Q29udGV4dCAhPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpFeHBvcnREZWZhdWx0
LCAiRXhwb3J0IGRlZmF1bHQgY2FzZSB3aWxsIGV4cG9ydCBuYW1lIGFuZCBiaW5kaW5nIGluIGNh
bGxlciBzaWRlLiIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmZ1
bmN0aW9uSW5mby5uYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgZnVuY3Rpb24gbmFt
ZTogJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIik7CiAgICAgICAgIG1fbW9kdWxl
U2NvcGVEYXRhLT5leHBvcnRCaW5kaW5nKCpmdW5jdGlvbkluZm8ubmFtZSk7CiAgICAgfQpAQCAt
MjIzNiw3ICsyMjY0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGEKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0RlY2xhcmF0aW9uKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBFeHBvcnRUeXBlIGV4cG9ydFR5cGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNs
YXJhdGlvbihUcmVlQnVpbGRlciYgY29udGV4dCwgRXhwb3J0VHlwZSBleHBvcnRUeXBlLCBEZWNs
YXJhdGlvbkRlZmF1bHRDb250ZXh0IGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQpCiB7CiAgICAg
QVNTRVJUKG1hdGNoKENMQVNTVE9LRU4pKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKQEAgLTIyNDQsMTMgKzIyNzIsMzMgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNz
RGVjbGFyYXQKICAgICB1bnNpZ25lZCBjbGFzc1N0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogCiAg
ICAgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwotICAgIFRyZWVDbGFzc0V4cHJl
c3Npb24gY2xhc3NFeHByID0gcGFyc2VDbGFzcyhjb250ZXh0LCBGdW5jdGlvbk5lZWRzTmFtZSwg
aW5mbyk7CisgICAgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzID0gRnVuY3Rpb25O
ZWVkc05hbWU7CisgICAgaWYgKGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPT0gRGVjbGFyYXRp
b25EZWZhdWx0Q29udGV4dDo6RXhwb3J0RGVmYXVsdCkgeworICAgICAgICAvLyBVbmRlciB0aGUg
ImV4cG9ydCBkZWZhdWx0IiBjb250ZXh0LCBjbGFzcyBkZWNsYXJhdGlvbiBkb2VzIG5vdCByZXF1
aXJlIHRoZSBjbGFzcyBuYW1lLgorICAgICAgICAvLworICAgICAgICAvLyAgICAgRXhwb3J0RGVj
bGFyYXRpb246CisgICAgICAgIC8vICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgZXhw
b3J0IGRlZmF1bHQgQ2xhc3NEZWNsYXJhdGlvblt+WWllbGQsICtEZWZhdWx0XQorICAgICAgICAv
LyAgICAgICAgIC4uLgorICAgICAgICAvLworICAgICAgICAvLyAgICAgQ2xhc3NEZWNsYXJhdGlv
bltZaWVsZCwgRGVmYXVsdF06CisgICAgICAgIC8vICAgICAgICAgLi4uCisgICAgICAgIC8vICAg
ICAgICAgWytEZWZhdWx0XSBjbGFzcyBDbGFzc1RhaWxbP1lpZWxkXQorICAgICAgICAvLworICAg
ICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHVzZSAiKmRlZmF1bHQqIiBhcyB0aGlzIGNsYXNzIGRl
Y2xhcmF0aW9uJ3MgbmFtZS4KKyAgICAgICAgcmVxdWlyZW1lbnRzID0gRnVuY3Rpb25Ob1JlcXVp
cmVtZW50czsKKyAgICAgICAgaW5mby5jbGFzc05hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuc3RhckRlZmF1bHRQcml2YXRlTmFtZSgpOworICAgIH0KKworICAgIFRy
ZWVDbGFzc0V4cHJlc3Npb24gY2xhc3NFeHByID0gcGFyc2VDbGFzcyhjb250ZXh0LCByZXF1aXJl
bWVudHMsIGluZm8pOwogICAgIGZhaWxJZkZhbHNlKGNsYXNzRXhwciwgIkZhaWxlZCB0byBwYXJz
ZSBjbGFzcyIpOworICAgIEFTU0VSVChpbmZvLmNsYXNzTmFtZSk7CiAKICAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNsYXJlVmFyaWFibGUoaW5mby5jbGFz
c05hbWUsIERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24pOwogICAgIGlmIChkZWNsYXJh
dGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRp
b24pCiAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNzYWdlKGZhbHNlLCAiQ2Fubm90IGRlY2xh
cmUgYSBjbGFzcyB0d2ljZTogJyIsIGluZm8uY2xhc3NOYW1lLT5pbXBsKCksICInIik7CiAgICAg
aWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhwb3J0ZWQpIHsKKyAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShkZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0ICE9IERlY2xhcmF0aW9uRGVm
YXVsdENvbnRleHQ6OkV4cG9ydERlZmF1bHQsICJFeHBvcnQgZGVmYXVsdCBjYXNlIHdpbGwgZXhw
b3J0IG5hbWUgYW5kIGJpbmRpbmcgaW4gY2FsbGVyIHNpZGUuIik7CiAgICAgICAgIHNlbWFudGlj
RmFpbElmRmFsc2UoZXhwb3J0TmFtZSgqaW5mby5jbGFzc05hbWUpLCAiQ2Fubm90IGV4cG9ydCBh
IGR1cGxpY2F0ZSBjbGFzcyBuYW1lOiAnIiwgaW5mby5jbGFzc05hbWUtPmltcGwoKSwgIiciKTsK
ICAgICAgICAgbV9tb2R1bGVTY29wZURhdGEtPmV4cG9ydEJpbmRpbmcoKmluZm8uY2xhc3NOYW1l
KTsKICAgICB9CkBAIC0yMjc2LDIwICsyMzI0LDE3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhU
CiAgICAgY2xhc3NTY29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAgIGNsYXNzU2Nv
cGUtPnNldFN0cmljdE1vZGUoKTsKIAotICAgIGNvbnN0IElkZW50aWZpZXIqIGNsYXNzTmFtZSA9
IG51bGxwdHI7CiAgICAgaWYgKG1hdGNoKElERU5UKSkgewotICAgICAgICBjbGFzc05hbWUgPSBt
X3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgaW5mby5jbGFzc05hbWUgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBmYWlsSWZUcnVlKGNsYXNzU2Nv
cGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoY2xhc3NOYW1lLCB0cnVlKSAmIERlY2xhcmF0aW9u
UmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIiciLCBjbGFzc05hbWUtPmltcGwoKSwgIicgaXMg
bm90IGEgdmFsaWQgY2xhc3MgbmFtZSIpOworICAgICAgICBmYWlsSWZUcnVlKGNsYXNzU2NvcGUt
PmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoaW5mby5jbGFzc05hbWUsIHRydWUpICYgRGVjbGFyYXRp
b25SZXN1bHQ6OkludmFsaWRTdHJpY3RNb2RlLCAiJyIsIGluZm8uY2xhc3NOYW1lLT5pbXBsKCks
ICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzIG5hbWUiKTsKICAgICB9IGVsc2UgaWYgKHJlcXVpcmVt
ZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkgewogICAgICAgICBpZiAobWF0Y2goT1BFTkJSQUNF
KSkKICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2xhc3Mgc3RhdGVtZW50cyBtdXN0IGhhdmUg
YSBuYW1lIik7CiAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZCgiY2xhc3MgbmFt
ZSIpOwogICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgY2xhc3NOYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwot
ICAgIEFTU0VSVChjbGFzc05hbWUpOwotICAgIGluZm8uY2xhc3NOYW1lID0gY2xhc3NOYW1lOwor
ICAgIH0KKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGluZm8uY2xhc3NOYW1lLCAiV2hlbiBzcGVj
aWZ5aW5nIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBpbmZv
LmNsYXNzTmFtZSB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSBjYWxsZXIgc2lkZS4iKTsK
IAogICAgIFRyZWVFeHByZXNzaW9uIHBhcmVudENsYXNzID0gMDsKICAgICBpZiAoY29uc3VtZShF
WFRFTkRTKSkgewpAQCAtMjM4Nyw3ICsyNDMyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQK
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQg
J2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNl
TW9kZSwgZmFsc2UsIGlzQ29uc3RydWN0b3IgPyBjb25zdHJ1Y3RvcktpbmQgOiBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5m
bywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBt
ZXRob2QiKTsKLSAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9IGlzQ29uc3RydWN0b3IgPyBj
bGFzc05hbWUgOiBpZGVudDsKKyAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9IGlzQ29uc3Ry
dWN0b3IgPyBpbmZvLmNsYXNzTmFtZSA6IGlkZW50OwogCiAgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBtZXRob2QgPSBjb250ZXh0LmNyZWF0ZU1ldGhvZERlZmluaXRpb24obWV0aG9kTG9jYXRp
b24sIG1ldGhvZEluZm8pOwogICAgICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IpIHsKQEAgLTI4
NDEsMTAgKzI4ODYsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgVHJlZVN0
YXRlbWVudCByZXN1bHQgPSAwOwogICAgICAgICBib29sIGlzRnVuY3Rpb25PckNsYXNzRGVjbGFy
YXRpb24gPSBmYWxzZTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1lID0gbnVs
bHB0cjsKLSAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwog
CiAgICAgICAgIGJvb2wgc3RhcnRzV2l0aEZ1bmN0aW9uID0gbWF0Y2goRlVOQ1RJT04pOwogICAg
ICAgICBpZiAoc3RhcnRzV2l0aEZ1bmN0aW9uIHx8IG1hdGNoKENMQVNTVE9LRU4pKSB7CisgICAg
ICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgICAg
ICAgICBpc0Z1bmN0aW9uT3JDbGFzc0RlY2xhcmF0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIG5l
eHQoKTsKIApAQCAtMjg1NiwxNCArMjkwMSwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQog
ICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKGxvY2FsTmFtZSkgewotICAgICAgICAgICAgaWYgKG1hdGNoKEZVTkNUSU9OKSkg
eworICAgICAgICBpZiAoIWxvY2FsTmFtZSkKKyAgICAgICAgICAgIGxvY2FsTmFtZSA9ICZtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdGFyRGVmYXVsdFByaXZhdGVOYW1lKCk7
CisKKyAgICAgICAgaWYgKGlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24pIHsKKyAgICAgICAg
ICAgIGlmIChzdGFydHNXaXRoRnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobWF0
Y2goRlVOQ1RJT04pKTsKICAgICAgICAgICAgICAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVw
dGgoJm1fc3RhdGVtZW50RGVwdGgpOwogICAgICAgICAgICAgICAgIG1fc3RhdGVtZW50RGVwdGgg
PSAxOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihj
b250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRp
b24oY29udGV4dCwgRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENv
bnRleHQ6OkV4cG9ydERlZmF1bHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQobWF0Y2goQ0xBU1NUT0tFTikpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHBhcnNlQ2xhc3NEZWNsYXJhdGlvbihjb250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBwYXJzZUNsYXNzRGVjbGFyYXRpb24oY29udGV4dCwgRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQs
IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OkV4cG9ydERlZmF1bHQpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgZXhwcjsK
QEAgLTI4ODYsOSArMjkzNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAKICAgICAgICAg
ICAgIFRyZWVFeHByZXNzaW9uIGFzc2lnbm1lbnQgPSBjb250ZXh0LmNyZWF0ZUFzc2lnblJlc29s
dmUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0YXJEZWZh
dWx0UHJpdmF0ZU5hbWUoKSwgZXhwcmVzc2lvbiwgc3RhcnQsIHN0YXJ0LCB0b2tlbkVuZFBvc2l0
aW9uKCksIEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlvbiwg
YXNzaWdubWVudCwgc3RhcnQsIHRva2VuRW5kUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICBpZiAo
IWlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24pCi0gICAgICAgICAgICAgICAgZmFpbElmRmFs
c2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgdGFyZ2V0ZWQg
ZXhwb3J0IGRlY2xhcmF0aW9uIik7Ci0gICAgICAgICAgICBsb2NhbE5hbWUgPSAmbV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RhckRlZmF1bHRQcml2YXRlTmFtZSgpOworICAg
ICAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAnOycgZm9s
bG93aW5nIGEgdGFyZ2V0ZWQgZXhwb3J0IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIH0KICAgICAg
ICAgZmFpbElmRmFsc2UocmVzdWx0LCAiQ2Fubm90IHBhcnNlIHRoZSBkZWNsYXJhdGlvbiIpOwog
CkBAIC0zNjU2LDYgKzM3MDMsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxpdGVyYWwKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0V4cHJlc3Np
b24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgQVNTRVJUKG1hdGNoKENMQVNTVE9LRU4p
KTsKKyAgICBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5jbGFz
c05hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CisgICAgcmV0dXJu
IHBhcnNlQ2xhc3MoY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgaW5mbyk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhwcmVz
c2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRlVOQ1RJT04p
KTsKQEAgLTM3MzYsMTAgKzM3OTIsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgIHN3
aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNlIEZVTkNUSU9OOgogICAgICAgICByZXR1
cm4gcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oY29udGV4dCk7Ci0gICAgY2FzZSBDTEFTU1RPS0VO
OiB7Ci0gICAgICAgIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKLSAgICAgICAg
cmV0dXJuIHBhcnNlQ2xhc3MoY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgaW5mbyk7
Ci0gICAgfQorICAgIGNhc2UgQ0xBU1NUT0tFTjoKKyAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3NF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgIGNhc2UgT1BFTkJSQUNFOgogICAgICAgICBpZiAoc3Ry
aWN0TW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGEwMGI4MDQx
ZDI2NjZhNGMyNmNlYWM3NWNkY2U0MzhiMGI3MTVjOWEuLjdkMzcyNmIzNDdiZDAxODJjNTZiOGVh
YmU3OTY1ZjYzNTkyNzY2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMTAzLDYgKzEwMywxMCBAQCBlbnVtIERlY2xhcmF0aW9uUmVzdWx0IHsKIAogdHlwZWRlZiB1
aW50OF90IERlY2xhcmF0aW9uUmVzdWx0TWFzazsKIAorZW51bSBjbGFzcyBEZWNsYXJhdGlvbkRl
ZmF1bHRDb250ZXh0IHsKKyAgICBTdGFuZGFyZCwKKyAgICBFeHBvcnREZWZhdWx0LAorfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGlzRXZhbE5vZGUoKSB7IHJldHVybiBm
YWxzZTsgfQogdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFdmFsTm9kZTxFdmFsTm9kZT4oKSB7
IHJldHVybiB0cnVlOyB9CkBAIC0xMzUwLDggKzEzNTQsOCBAQCBjbGFzcyBQYXJzZXIgewogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVu
dExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5z
aWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0
IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3Ro
ID0gMCk7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQsIE5vdEV4cG9ydGVk
IH07Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNl
Q2xhc3NEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpO
b3RFeHBvcnRlZCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEV4cG9ydFR5cGUgPSBF
eHBvcnRUeXBlOjpOb3RFeHBvcnRlZCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IHBhcnNlQ2xhc3NEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEV4cG9y
dFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4
dCA9IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5kYXJkKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
KFRyZWVCdWlsZGVyJiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNs
YXJhdGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRh
cmQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJz
ZVZhcmlhYmxlRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBEZWNsYXJhdGlvblR5cGUsIEV4cG9y
dFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRG9XaGlsZVN0YXRlbWVudChUcmVlQnVpbGRl
ciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJz
ZVdoaWxlU3RhdGVtZW50KFRyZWVCdWlsZGVyJik7CkBAIC0xMzgzLDYgKzEzODcsNyBAQCBjbGFz
cyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElO
RSBUcmVlRXhwcmVzc2lvbiBwYXJzZUFycmF5TGl0ZXJhbChUcmVlQnVpbGRlciYpOwogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBw
YXJzZU9iamVjdExpdGVyYWwoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZVN0cmljdE9iamVjdExp
dGVyYWwoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzRXhwcmVzc2lvbihUcmVl
QnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElO
RSBUcmVlRXhwcmVzc2lvbiBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlQXJndW1l
bnRzIHBhcnNlQXJndW1lbnRzKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlQXJndW1lbnQoVHJl
ZUJ1aWxkZXImLCBBcmd1bWVudFR5cGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZWFlNzljNTgxZDMyNzg5NWQ3NmZiOWQzZDkyZDYyODQ4
YTMyN2NhOS4uODJhMWRjMjEwYTVmY2MwY2FlY2EwZTZhMzBjOTAxYmUwNDljYjU1NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTYwNSw3ICs2
MDUsMTUgQEAgdm9pZCBKU0Z1bmN0aW9uOjpyZWlmeUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiAK
IHZvaWQgSlNGdW5jdGlvbjo6cmVpZnlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBTdHJp
bmcgbmFtZSA9IGpzRXhlY3V0YWJsZSgpLT5lY21hTmFtZSgpLnN0cmluZygpOworICAgIGNvbnN0
IElkZW50aWZpZXImIGVjbWFOYW1lID0ganNFeGVjdXRhYmxlKCktPmVjbWFOYW1lKCk7CisgICAg
U3RyaW5nIG5hbWU7CisgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMt
ZXhwb3J0cy1ydW50aW1lLXNlbWFudGljcy1ldmFsdWF0aW9uCisgICAgLy8gV2hlbiB0aGUgaWRl
bnQgaXMgIipkZWZhdWx0KiIsIHdlIG5lZWQgdG8gc2V0ICJkZWZhdWx0IiBmb3IgdGhlIGVjbWEg
bmFtZS4KKyAgICAvLyBUaGlzICIqZGVmYXVsdCoiIG5hbWUgaXMgbmV2ZXIgc2hvd24gdG8gdXNl
cnMuCisgICAgaWYgKGVjbWFOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5zdGFyRGVmYXVsdFByaXZhdGVOYW1lKCkpCisgICAgICAgIG5hbWUgPSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQuc3RyaW5nKCk7CisgICAgZWxzZQorICAgICAgICBu
YW1lID0gZWNtYU5hbWUuc3RyaW5nKCk7CiAgICAgcmVpZnlOYW1lKGV4ZWMsIG5hbWUpOwogfQog
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGJjYTYwMDY3ZmJkMzBiOTA4ZjA2MDRhYWZiNzRlN2UzMGIyNjU5MGEuLmIwODMyYjA2NzE0YzE3
MTQwYWU4ZDgxNWJjYzhmYjFmMmRlMDEwZmEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMDgtMDMgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gVXNl
IEZ1bmN0aW9uRGVjbGFyYXRpb24gYW5kIENsYXNzRGVjbGFyYXRpb24gdW5kZXIgZXhwb3J0IGRl
ZmF1bHQgY29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYwNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHNldmVyYWwgbW9kdWxlIHRlc3RzLiBBbmQgZmxpcCB0aGUgZmFpbGVkIHRlc3Rz
IGZsYWdzIGluIHRlc3QyNjIuCisKKyAgICAgICAgKiBtb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1
bmN0aW9uLW5hbWUtaW4tYXNzaWdubWVudC1leHByZXNzaW9uLmpzOiBBZGRlZC4KKyAgICAgICAg
KGV4cG9ydC5kZWZhdWx0KToKKyAgICAgICAgKiBtb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0
aW9uLW5hbWUtaW4tY2xhc3MtZGVjbGFyYXRpb24uanM6IEFkZGVkLgorICAgICAgICAqIG1vZHVs
ZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi5q
czogQWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdCk6CisgICAgICAgICogbW9kdWxlcy9l
eHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWdlbmVyYXRvci1kZWNsYXJhdGlvbi5qczog
QWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdCk6CisgICAgICAgICogdGVzdDI2Mi55YW1s
OgorCiAyMDE2LTA4LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBuZXN0ZWQgcmVzdCBkZXN0cnVjdHVyaW5nIHcuci50IHRoZSBFUzcgc3Bl
YwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5h
bWUtaW4tYXNzaWdubWVudC1leHByZXNzaW9uLmpzIGIvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1k
ZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tYXNzaWdubWVudC1leHByZXNzaW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmNzI0ZDVkOWFkZGFhMTdlYjFhZTk4YjY0YjZhY2Q4NDA3YTRiMzYKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1h
c3NpZ25tZW50LWV4cHJlc3Npb24uanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgZnVuYyBmcm9t
ICIuL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tYXNzaWdubWVudC1leHByZXNzaW9u
LmpzIgoraW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuL3Jlc291cmNlcy9hc3NlcnQuanMiOwor
CitleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkgeyB9KTsKKworLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtZXhwb3J0cy1ydW50aW1lLXNlbWFudGljcy1ldmFsdWF0aW9u
CitzaG91bGRCZShmdW5jLm5hbWUsICdkZWZhdWx0Jyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21v
ZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1jbGFzcy1kZWNsYXJhdGlvbi5q
cyBiL0pTVGVzdHMvbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWNsYXNz
LWRlY2xhcmF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4ZDZlMGZiMGIyZDk4NTk3MGNiYTVhODZhMDNk
YjE4YTZjMGIwNzcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRl
ZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1jbGFzcy1kZWNsYXJhdGlvbi5qcwpAQCAtMCwwICsxLDcg
QEAKK2ltcG9ydCBjbHMgZnJvbSAiLi9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWNs
YXNzLWRlY2xhcmF0aW9uLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuL3Jlc291cmNl
cy9hc3NlcnQuanMiOworCitleHBvcnQgZGVmYXVsdCBjbGFzcyB7IH0KKworLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZXhwb3J0cy1ydW50aW1lLXNlbWFudGljcy1ldmFs
dWF0aW9uCitzaG91bGRCZShjbHMubmFtZSwgJ2RlZmF1bHQnKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWZ1bmN0aW9uLWRlY2xh
cmF0aW9uLmpzIGIvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUt
aW4tZnVuY3Rpb24tZGVjbGFyYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI3NTQyMTgxY2YxMmRmNWFi
MjVhMzcyNjEyMTk1YWVmNTg1MGRlZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxl
cy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpz
CkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGZ1bmMgZnJvbSAiLi9leHBvcnQtZGVmYXVsdC1mdW5j
dGlvbi1uYW1lLWluLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUg
fSBmcm9tICIuL3Jlc291cmNlcy9hc3NlcnQuanMiOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlv
biAoKSB7IH0KKworLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZXhwb3J0
cy1ydW50aW1lLXNlbWFudGljcy1ldmFsdWF0aW9uCitzaG91bGRCZShmdW5jLm5hbWUsICdkZWZh
dWx0Jyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rp
b24tbmFtZS1pbi1nZW5lcmF0b3ItZGVjbGFyYXRpb24uanMgYi9KU1Rlc3RzL21vZHVsZXMvZXhw
b3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1nZW5lcmF0b3ItZGVjbGFyYXRpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmI1MDY3NGJlNWI4YWMzODYzNDc0YTFiZTc2ZWRmNjU2MzRlZWFjYwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1l
LWluLWdlbmVyYXRvci1kZWNsYXJhdGlvbi5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBmdW5j
IGZyb20gIi4vZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1nZW5lcmF0b3ItZGVjbGFy
YXRpb24uanMiCitpbXBvcnQgeyBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5q
cyI7CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICogKCkgeyB9CisKKy8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1zZW1hbnRpY3MtZXZhbHVh
dGlvbgorc2hvdWxkQmUoZnVuYy5uYW1lLCAnZGVmYXVsdCcpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy90ZXN0MjYyLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIueWFtbAppbmRleCA0NzE0YzMzY2IzYjBj
Y2Y5Yjg1MjY0YWJkODkzZGQ1ZjdkODE0ZThiLi44NzE1YTg4Y2ExNGY4NzA5ZTZmMzEwNzM2YTFk
OWRhMTUxOTNkNDQ5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIueWFtbAorKysgYi9KU1Rl
c3RzL3Rlc3QyNjIueWFtbApAQCAtNzA4NjgsNyArNzA4NjgsNyBAQAogLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQtZGZsdC1jbHMtYW5vbi1zZW1p
LmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxl
XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQt
ZGZsdC1jbHMtYW5vbi5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZh
bC1leHBvcnQtZGZsdC1jbHMtbmFtZS1tZXRoLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQtZGZsdC1jbHMtbmFtZWQtc2VtaS5qcwpAQCAtNzA4
NzYsNyArNzA4NzYsNyBAQAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNv
ZGUvZXZhbC1leHBvcnQtZGZsdC1jbHMtbmFtZWQuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1kZmx0LWV4cHItY2xzLWFub24uanMKLSAgY21k
OiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtZXhwci1jbHMt
bmFtZS1tZXRoLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZh
bC1leHBvcnQtZGZsdC1leHByLWNscy1uYW1lZC5qcwpAQCAtNzA4ODYsMTEgKzcwODg2LDExIEBA
CiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1k
Zmx0LWV4cHItZXJyLWdldC12YWx1ZS5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlJl
ZmVyZW5jZUVycm9yIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtZXhwci1mbi1hbm9uLmpzCi0gIGNtZDogcnVu
VGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1kZmx0LWV4cHItZm4tbmFtZWQu
anMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVd
CiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1k
Zmx0LWV4cHItZ2VuLWFub24uanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2Rl
L2V2YWwtZXhwb3J0LWRmbHQtZXhwci1nZW4tbmFtZWQuanMKICAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1kZmx0LWV4cHItaW4uanMKQEAgLTcxMDcy
LDExICs3MTA3MiwxMSBAQAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNv
ZGUvaW5zdG4tbmFtZWQtYm5kbmctZGZsdC1leHByLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4tbmFtZWQtYm5kbmctZGZsdC1mdW4tYW5vbi5qcwotICBj
bWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4tbmFtZWQtYm5kbmctZGZsdC1m
dW4tbmFtZWQuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
Wzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9pbnN0
bi1uYW1lZC1ibmRuZy1kZmx0LWdlbi1hbm9uLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9t
b2R1bGUtY29kZS9pbnN0bi1uYW1lZC1ibmRuZy1kZmx0LWdlbi1uYW1lZC5qcwogICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3RuLW5hbWVkLWJuZG5nLWRmbHQtbmFt
ZWQuanMKQEAgLTcxNTA0LDkgKzcxNTA0LDkgQEAKIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL21vZHVsZS1jb2RlL3BhcnNlLWVyci1ob2lzdC1sZXgtZ2VuLmpzCiAgIGNtZDogcnVuVGVz
dDI2MiA6ZmFpbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL3BhcnNlLWVyci1pbnZva2UtYW5vbi1mdW4tZGVjbC5q
cwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvcGFyc2UtZXJyLWludm9rZS1h
bm9uLWdlbi1kZWNsLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlN5bnRheEVycm9yIiwg
WyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
Wzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9wYXJz
ZS1lcnItcmVmZXJlbmNlLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiUmVmZXJlbmNl
RXJyb3IiLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxl
LWNvZGUvcGFyc2UtZXJyLXNlbWktZGZsdC1leHByLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286659</attachid>
            <date>2016-08-22 20:32:18 -0700</date>
            <delta_ts>2016-08-22 20:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160499-20160823123020.patch</filename>
            <type>text/plain</type>
            <size>38765</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjVjM2Q5YWY5NTA0NGE2Mzk2MGY1MGQ5MTU5NjNiYzA0MzRhYjU3Li5mZGRhNjg5YWM4ODg2YzQ5
Y2M5ZDgyNDc0YzAxY2VhYzVhMDI0NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wOC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBNb2R1bGVzJyBgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24v
Y2xhc3NgIHNob3VsZCBiZSBkZWNsYXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgd2UgcGFyc2VkIHRoZSBmb2xsb3dpbmcg
Y2FzZXMgYXMgRnVuY3Rpb25FeHByZXNzaW9uIGFuZCBDbGFzc0V4cHJlc3Npb24uCisKKyAgICAg
ICAgICAgIGBgYAorICAgICAgICAgICAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkgeyB9Cisg
ICAgICAgICAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyB7IH0KKyAgICAgICAgICAgIGBgYAorCisg
ICAgICAgIEJ1dCwgYXMgcGVyIEVTNiBzcGVjLCB0aGUgYWJvdmUgYGZ1bmN0aW9uIC4uLmAgYW5k
IGBjbGFzcyAuLi5gIHBhcnRzIHNob3VsZCBiZSBwYXJzZWQKKyAgICAgICAgYXMgZnVuY3Rpb24g
ZGVjbGFyYXRpb24gYW5kIGNsYXNzIGRlY2xhcmF0aW9uLiBUaGlzIGhhcyBiaWcgZGlmZmVyZW5j
ZTsgdGhlIGluc3RhbnRpYXRpb24KKyAgICAgICAgb2YgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9u
cyBhcmUgZG9uZSBpbiB0aGUgZnVuY3Rpb24gcHJvbG9ndWUuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgY29ycmVjdGx5IHBhcnNlIHRoZSBhYm92ZSBjYXNlcyBhcyBkZWNsYXJhdGlvbi4g
VG8gaGFuZGxlIG5vLW5hbWVkCisgICAgICAgIGRlY2xhcmF0aW9ucywgd2UgYWRkIGEgbmV3IGZs
YWcsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQuIFRoaXMgaW5kaWNhdGVzIFtEZWZhdWx0XQor
ICAgICAgICBmbGFnIGluIHRoZSBFUzYgc3BlYydzIEJORi4KKworICAgICAgICBGdXJ0aGVybW9y
ZSwgdGhpcyBwYXRjaCBhbHNvIGZpeGVzIHRoZSBmb2xsb3dpbmcgbmFtZSByZWxhdGVkIGJ1Z3Mu
CisKKyAgICAgICAgMS4gVGhlIGJ1ZyByZWxhdGVkIHRvICJleHBvcnQgZGVmYXVsdCIncyBmdW5j
dGlvbiBuYW1lLiBJZiB0aGUgbmFtZSBpcyBub3QgcHJvdmlkZWQgKGxpa2UgdGhlIGFib3ZlIGNh
c2UpLCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVjb21lcworICAgICAgICAiZGVmYXVsdCIs
IG5vdCAiKmRlZmF1bHQqIi4gVGhpcyBpcyBzcGVjaWFsIGhhbmRsaW5nIGluIEVTNiBzcGVjLiBX
ZSBoYW5kbGUgdGhpcyBpbiBKU0Z1bmN0aW9uJ3MgcmVpZnlOYW1lLgorCisgICAgICAgIDIuIGBj
bGFzcyBIZWxsbyB7IGhlbGxvIGhlbGxvKCkgeyB9IH1gIGlzIGFjY2VwdGVkLiBXZSBpbnRyb2R1
Y2VkIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGFuZCBmaXggdGhpcyBidWcuCisKKyAg
ICAgICAgKiBwYXJzZXIvTW9kdWxlU2NvcGVEYXRhLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVNj
b3BlRGF0YTo6ZXhwb3J0QmluZGluZyk6CisgICAgICAgIEV4cG9ydGVkIG5hbWVzIGFyZSBhbHJl
YWR5IGd1cmFudGVlZCB1bmlxdWVuZXNzIGJ5IG1fZXhwb3J0ZWROYW1lcy4gTm90IG5lY2Vzc2Fy
eSB0byB1c2Ugc2V0IGhlcmUuIFVzZSB2ZWN0b3IgaW5zdGVhZC4KKworICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8pOgorICAgICAgICBJZiB3ZSBwYXNzIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOb1Jl
cXVpcmVtZW50cywgd2UgbmVlZCB0byBpbml0aWFsaXplIGZ1bmN0aW9uSW5mby5uYW1lIC8gY2xh
c3NJbmZvLmNsYXNzTmFtZQorICAgICAgICB3aXRoIHRoZSBkZWZhdWx0IGZhbGxiYWNrIG5hbWUu
IEZvciBleGFtcGxlLCBpbiB0aGUgYWJvdmUgYGV4cG9ydCBkZWZhdWx0YCBjYXNlLCB3ZSBpbml0
aWFsaXplIGl0IHdpdGggYCpkZWZhdWx0KmAuCisKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDbGFzc0V4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6cmVpZnlOYW1lKToKKwogMjAxNi0wOC0yMiAgS2VpdGggTWlsbGVyICA8a2Vp
dGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBY3R1YWxseSBlbmFibGUgdGhlIFdBU00g
YnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVNj
b3BlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVTY29wZURhdGEu
aAppbmRleCA4MjIxYWY0ODM4ZjE4MzJhMmFkMmRhMTM1MzY4ZTEzZjk1ZjE2Yzc4Li4yYTFlY2Ey
NjQ1OGQ1MDMyMTJlYjNkZjBkMTUyZTdhMDU5Njc1YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVNjb3BlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlU2NvcGVEYXRhLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3Mg
TW9kdWxlU2NvcGVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlU2NvcGVEYXRhPiB7CiBX
VEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVTY29wZURhdGEpOwogV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJTZXQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJZGVudGlmaWVyQWxpYXNNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+PiwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4+IElkZW50aWZpZXJBbGlhc01hcDsKIAogICAgIHN0YXRpYyBSZWY8TW9kdWxl
U2NvcGVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVNjb3BlRGF0
YSk7IH0KIApAQCAtNDgsNyArNDgsNyBAQCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogICAg
IHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydGVkTmFtZSkKICAgICB7Ci0gICAgICAgIG1fZXhwb3J0ZWRCaW5kaW5n
cy5hZGQobG9jYWxOYW1lLmltcGwoKSwgSWRlbnRpZmllclNldCgpKS5pdGVyYXRvci0+dmFsdWUu
YWRkKGV4cG9ydGVkTmFtZS5pbXBsKCkpOworICAgICAgICBtX2V4cG9ydGVkQmluZGluZ3MuYWRk
KGxvY2FsTmFtZS5pbXBsKCksIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PigpKS5p
dGVyYXRvci0+dmFsdWUuYXBwZW5kKGV4cG9ydGVkTmFtZS5pbXBsKCkpOwogICAgIH0KIAogICAg
IHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMTI0NWY1NDgzNzI3OGJiNThiMjYx
MzcxMjRkNmFmMTlhMzlhOWU5YS4uYjY3MTU4MmQ3NTU1YWQ4OWIyZTU2NmI3YmNlYWVkYjI5MGFi
YTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA3Miwx
OCArMjA3MiwyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICBpZiAoZnVuY3Rp
b25EZWZpbml0aW9uVHlwZSA9PSBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uICYm
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUpCiAgICAgICAgICAg
ICB1cHBlclNjb3BlSXNHZW5lcmF0b3IgPSBmYWxzZTsKIAotICAgICAgICBpZiAobWF0Y2hTcGVj
SWRlbnRpZmllcih1cHBlclNjb3BlSXNHZW5lcmF0b3IpKSB7Ci0gICAgICAgICAgICBmdW5jdGlv
bkluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICAgICAgbV9wYXJzZXJT
dGF0ZS5sYXN0RnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JbmZvLm5hbWU7Ci0gICAgICAgICAgICBu
ZXh0KCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAgICAg
ICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJlQ2FsbGVl
KGZ1bmN0aW9uSW5mby5uYW1lKSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9k
ZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCAiLCBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwotICAg
ICAgICB9IGVsc2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkgewotICAg
ICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikgJiYgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSkKLSAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkZ1bmN0
aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwotICAgICAgICAgICAgc2VtYW50aWNG
YWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7
Ci0gICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHJlcXVpcmVtZW50cyAhPSBGdW5jdGlvblJlcXVpcmVt
ZW50czo6VW5uYW1lZCkgeworICAgICAgICAgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIodXBw
ZXJTY29wZUlzR2VuZXJhdG9yKSkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5uYW1l
ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5s
YXN0RnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JbmZvLm5hbWU7CisgICAgICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICAgICAgICAgIGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUpCisgICAg
ICAgICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJl
Q2FsbGVlKGZ1bmN0aW9uSW5mby5uYW1lKSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3Ry
aWN0TW9kZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxp
ZCAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJpY3QgbW9kZSIp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXF1aXJlbWVudHMgPT0gRnVuY3Rpb25SZXF1aXJl
bWVudHM6Ok5hbWVkKSB7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikgJiYg
bW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAg
ICAgICAgICAgc2VtYW50aWNGYWlsKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5h
bWUiKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoc3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUiKTsKKyAgICAgICAgICAgICAgICBmYWlsRHVl
VG9VbmV4cGVjdGVkVG9rZW4oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZ1bmN0aW9uSW5mby5u
YW1lLCAiV2hlbiBzcGVjaWZ5aW5nIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOb1JlcXVpcmVtZW50
cywgd2UgbmVlZCB0byBpbml0aWFsaXplIGZ1bmN0aW9uSW5mby5uYW1lIHdpdGggdGhlIGRlZmF1
bHQgdmFsdWUgaW4gdGhlIGNhbGxlciBzaWRlLiIpOwogICAgICAgICB9CiAKICAgICAgICAgc3Rh
cnRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKQEAgLTIyMjEsMTggKzIyMjQsNDUgQEAgc3Rh
dGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGdldE1ldGFk
YXRhKFBhcnNlckZ1bmN0aW9uSW4KIHN0YXRpYyBGdW5jdGlvbk1ldGFkYXRhTm9kZSogZ2V0TWV0
YWRhdGEoUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvKSB7IHJldHVybiBpbmZv
LmJvZHk7IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBFeHBvcnRUeXBlIGV4cG9ydFR5
cGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYgY29udGV4dCwg
RXhwb3J0VHlwZSBleHBvcnRUeXBlLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0IGRlY2xhcmF0
aW9uRGVmYXVsdENvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEZVTkNUSU9OKSk7CiAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgbmV4dCgpOwotICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsK
ICAgICBpZiAoY29uc3VtZShUSU1FUykpCiAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKLSAgICBmYWlsSWZGYWxzZSgocGFy
c2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIHBhcnNlTW9kZSwgdHJ1
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVj
bGFyYXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7Ci0gICAgZmFpbElmRmFs
c2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5h
bWUiKTsKKworICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gZnVuY3Rpb25JbmZv
OworICAgIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cyA9IEZ1bmN0aW9uUmVxdWly
ZW1lbnRzOjpOYW1lZDsKKyAgICBpZiAoZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9PSBEZWNs
YXJhdGlvbkRlZmF1bHRDb250ZXh0OjpFeHBvcnREZWZhdWx0KSB7CisgICAgICAgIC8vIFVuZGVy
IHRoZSAiZXhwb3J0IGRlZmF1bHQiIGNvbnRleHQsIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGRvZXMg
bm90IHJlcXVpcmUgdGhlIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgIC8vCisgICAgICAgIC8vICAg
ICBFeHBvcnREZWNsYXJhdGlvbjoKKyAgICAgICAgLy8gICAgICAgICAuLi4KKyAgICAgICAgLy8g
ICAgICAgICBleHBvcnQgZGVmYXVsdCBIb2lzdGFibGVEZWNsYXJhdGlvblt+WWllbGQsICtEZWZh
dWx0XQorICAgICAgICAvLyAgICAgICAgIC4uLgorICAgICAgICAvLworICAgICAgICAvLyAgICAg
SG9pc3RhYmxlRGVjbGFyYXRpb25bWWllbGQsIERlZmF1bHRdOgorICAgICAgICAvLyAgICAgICAg
IEZ1bmN0aW9uRGVjbGFyYXRpb25bP1lpZWxkLCA/RGVmYXVsdF0KKyAgICAgICAgLy8gICAgICAg
ICBHZW5lcmF0b3JEZWNsYXJhdGlvbls/WWllbGQsID9EZWZhdWx0XQorICAgICAgICAvLworICAg
ICAgICAvLyAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbltZaWVsZCwgRGVmYXVsdF06CisgICAgICAg
IC8vICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgWytEZWZhdWx0XSBmdW5jdGlvbiAo
IEZvcm1hbFBhcmFtZXRlcnNbfllpZWxkXSApIHsgRnVuY3Rpb25Cb2R5W35ZaWVsZF0gfQorICAg
ICAgICAvLworICAgICAgICAvLyAgICAgR2VuZXJhdG9yRGVjbGFyYXRpb25bWWllbGQsIERlZmF1
bHRdOgorICAgICAgICAvLyAgICAgICAgIC4uLgorICAgICAgICAvLyAgICAgICAgIFsrRGVmYXVs
dF0gZnVuY3Rpb24gKiAoIEZvcm1hbFBhcmFtZXRlcnNbK1lpZWxkXSApIHsgR2VuZXJhdG9yQm9k
eSB9CisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgdXNlICIqZGVmYXVs
dCoiIGFzIHRoaXMgZnVuY3Rpb24gZGVjbGFyYXRpb24ncyBuYW1lLgorICAgICAgICByZXF1aXJl
bWVudHMgPSBGdW5jdGlvblJlcXVpcmVtZW50czo6Tm9SZXF1aXJlbWVudHM7CisgICAgICAgIGZ1
bmN0aW9uSW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0
YXJEZWZhdWx0UHJpdmF0ZU5hbWUoKTsKKyAgICB9CisKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgcmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9u
KSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOworICAgIEFTU0VSVChmdW5jdGlvbklu
Zm8ubmFtZSk7CiAKICAgICBzdGQ6OnBhaXI8RGVjbGFyYXRpb25SZXN1bHRNYXNrLCBTY29wZVJl
Zj4gZnVuY3Rpb25EZWNsYXJhdGlvbiA9IGRlY2xhcmVGdW5jdGlvbihmdW5jdGlvbkluZm8ubmFt
ZSk7CiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZnVuY3Rp
b25EZWNsYXJhdGlvbi5maXJzdDsKQEAgLTIyNDAsNiArMjI3MCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkRlY2xhCiAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6
OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbikKICAgICAgICAgaW50ZXJuYWxGYWlsV2l0aE1l
c3NhZ2UoZmFsc2UsICJDYW5ub3QgZGVjbGFyZSBhIGZ1bmN0aW9uIHRoYXQgc2hhZG93cyBhIGxl
dC9jb25zdC9jbGFzcy9mdW5jdGlvbiB2YXJpYWJsZSAnIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmlt
cGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKICAgICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRU
eXBlOjpFeHBvcnRlZCkgeworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlY2xhcmF0aW9u
RGVmYXVsdENvbnRleHQgIT0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6RXhwb3J0RGVmYXVs
dCwgIkV4cG9ydCBkZWZhdWx0IGNhc2Ugd2lsbCBleHBvcnQgbmFtZSBhbmQgYmluZGluZyBpbiBj
YWxsZXIgc2lkZS4iKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpm
dW5jdGlvbkluZm8ubmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIGZ1bmN0aW9uIG5h
bWU6ICciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyIpOwogICAgICAgICBtX21vZHVs
ZVNjb3BlRGF0YS0+ZXhwb3J0QmluZGluZygqZnVuY3Rpb25JbmZvLm5hbWUpOwogICAgIH0KQEAg
LTIyNTEsNyArMjI4Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdGlvbihUcmVlQnVp
bGRlciYgY29udGV4dCwgRXhwb3J0VHlwZSBleHBvcnRUeXBlKQordGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVj
bGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEV4cG9ydFR5cGUgZXhwb3J0VHlwZSwgRGVj
bGFyYXRpb25EZWZhdWx0Q29udGV4dCBkZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0KQogewogICAg
IEFTU0VSVChtYXRjaChDTEFTU1RPS0VOKSk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CkBAIC0yMjU5LDEzICsyMjkwLDMzIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
c0RlY2xhcmF0CiAgICAgdW5zaWduZWQgY2xhc3NTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKIAog
ICAgIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKLSAgICBUcmVlQ2xhc3NFeHBy
ZXNzaW9uIGNsYXNzRXhwciA9IHBhcnNlQ2xhc3MoY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUs
IGluZm8pOworICAgIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cyA9IEZ1bmN0aW9u
UmVxdWlyZW1lbnRzOjpOYW1lZDsKKyAgICBpZiAoZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9
PSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpFeHBvcnREZWZhdWx0KSB7CisgICAgICAgIC8v
IFVuZGVyIHRoZSAiZXhwb3J0IGRlZmF1bHQiIGNvbnRleHQsIGNsYXNzIGRlY2xhcmF0aW9uIGRv
ZXMgbm90IHJlcXVpcmUgdGhlIGNsYXNzIG5hbWUuCisgICAgICAgIC8vCisgICAgICAgIC8vICAg
ICBFeHBvcnREZWNsYXJhdGlvbjoKKyAgICAgICAgLy8gICAgICAgICAuLi4KKyAgICAgICAgLy8g
ICAgICAgICBleHBvcnQgZGVmYXVsdCBDbGFzc0RlY2xhcmF0aW9uW35ZaWVsZCwgK0RlZmF1bHRd
CisgICAgICAgIC8vICAgICAgICAgLi4uCisgICAgICAgIC8vCisgICAgICAgIC8vICAgICBDbGFz
c0RlY2xhcmF0aW9uW1lpZWxkLCBEZWZhdWx0XToKKyAgICAgICAgLy8gICAgICAgICAuLi4KKyAg
ICAgICAgLy8gICAgICAgICBbK0RlZmF1bHRdIGNsYXNzIENsYXNzVGFpbFs/WWllbGRdCisgICAg
ICAgIC8vCisgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgdXNlICIqZGVmYXVsdCoiIGFzIHRo
aXMgY2xhc3MgZGVjbGFyYXRpb24ncyBuYW1lLgorICAgICAgICByZXF1aXJlbWVudHMgPSBGdW5j
dGlvblJlcXVpcmVtZW50czo6Tm9SZXF1aXJlbWVudHM7CisgICAgICAgIGluZm8uY2xhc3NOYW1l
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0YXJEZWZhdWx0UHJpdmF0
ZU5hbWUoKTsKKyAgICB9CisKKyAgICBUcmVlQ2xhc3NFeHByZXNzaW9uIGNsYXNzRXhwciA9IHBh
cnNlQ2xhc3MoY29udGV4dCwgcmVxdWlyZW1lbnRzLCBpbmZvKTsKICAgICBmYWlsSWZGYWxzZShj
bGFzc0V4cHIsICJGYWlsZWQgdG8gcGFyc2UgY2xhc3MiKTsKKyAgICBBU1NFUlQoaW5mby5jbGFz
c05hbWUpOwogCiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0g
ZGVjbGFyZVZhcmlhYmxlKGluZm8uY2xhc3NOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xh
cmF0aW9uKTsKICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6
SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uKQogICAgICAgICBpbnRlcm5hbEZhaWxXaXRoTWVz
c2FnZShmYWxzZSwgIkNhbm5vdCBkZWNsYXJlIGEgY2xhc3MgdHdpY2U6ICciLCBpbmZvLmNsYXNz
TmFtZS0+aW1wbCgpLCAiJyIpOwogICAgIGlmIChleHBvcnRUeXBlID09IEV4cG9ydFR5cGU6OkV4
cG9ydGVkKSB7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVjbGFyYXRpb25EZWZhdWx0
Q29udGV4dCAhPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpFeHBvcnREZWZhdWx0LCAiRXhw
b3J0IGRlZmF1bHQgY2FzZSB3aWxsIGV4cG9ydCBuYW1lIGFuZCBiaW5kaW5nIGluIGNhbGxlciBz
aWRlLiIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmluZm8uY2xh
c3NOYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgY2xhc3MgbmFtZTogJyIsIGluZm8u
Y2xhc3NOYW1lLT5pbXBsKCksICInIik7CiAgICAgICAgIG1fbW9kdWxlU2NvcGVEYXRhLT5leHBv
cnRCaW5kaW5nKCppbmZvLmNsYXNzTmFtZSk7CiAgICAgfQpAQCAtMjI5MSwyMCArMjM0MiwxOCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgIGNsYXNzU2NvcGUtPnByZXZlbnRWYXJEZWNs
YXJhdGlvbnMoKTsKICAgICBjbGFzc1Njb3BlLT5zZXRTdHJpY3RNb2RlKCk7CiAKLSAgICBjb25z
dCBJZGVudGlmaWVyKiBjbGFzc05hbWUgPSBudWxscHRyOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UocmVxdWlyZW1lbnRzICE9IEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCAiQ3VycmVu
dGx5LCB0aGVyZSBpcyBubyBjYWxsZXIgdGhhdCB1c2VzIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpV
bm5hbWVkIGZvciBjbGFzcyBzeW50YXguIik7CiAgICAgaWYgKG1hdGNoKElERU5UKSkgewotICAg
ICAgICBjbGFzc05hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgaW5mby5jbGFz
c05hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBm
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoY2xhc3NOYW1lLCB0
cnVlKSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIiciLCBjbGFzc05h
bWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgY2xhc3MgbmFtZSIpOwotICAgIH0gZWxzZSBp
ZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKSB7CisgICAgICAgIGZhaWxJZlRy
dWUoY2xhc3NTY29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpbmZvLmNsYXNzTmFtZSwgdHJ1
ZSkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICInIiwgaW5mby5jbGFz
c05hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgY2xhc3MgbmFtZSIpOworICAgIH0gZWxz
ZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOYW1lZCkgewogICAg
ICAgICBpZiAobWF0Y2goT1BFTkJSQUNFKSkKICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2xh
c3Mgc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICAgICAgIHNlbWFudGljRmFpbHVy
ZUR1ZVRvS2V5d29yZCgiY2xhc3MgbmFtZSIpOwogICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVk
VG9rZW4oKTsKLSAgICB9IGVsc2UKLSAgICAgICAgY2xhc3NOYW1lID0gJm1fdm0tPnByb3BlcnR5
TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIEFTU0VSVChjbGFzc05hbWUpOwotICAgIGluZm8u
Y2xhc3NOYW1lID0gY2xhc3NOYW1lOworICAgIH0KKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlu
Zm8uY2xhc3NOYW1lLCAiV2hlbiBzcGVjaWZ5aW5nIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOb1Jl
cXVpcmVtZW50cywgd2UgbmVlZCB0byBpbml0aWFsaXplIGluZm8uY2xhc3NOYW1lIHdpdGggdGhl
IGRlZmF1bHQgdmFsdWUgaW4gdGhlIGNhbGxlciBzaWRlLiIpOwogCiAgICAgVHJlZUV4cHJlc3Np
b24gcGFyZW50Q2xhc3MgPSAwOwogICAgIGlmIChjb25zdW1lKEVYVEVORFMpKSB7CkBAIC0yNDAx
LDggKzI0NTAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3RvdHlwZSciKTsKICAgICAg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ2NvbnN0
cnVjdG9yJyIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwg
ZmFsc2UsIGlzQ29uc3RydWN0b3IgPyBjb25zdHJ1Y3RvcktpbmQgOiBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVu
Y3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2Qi
KTsKLSAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9IGlzQ29uc3RydWN0b3IgPyBjbGFzc05h
bWUgOiBpZGVudDsKKyAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9IGlzQ29uc3RydWN0b3Ig
PyBpbmZvLmNsYXNzTmFtZSA6IGlkZW50OworICAgICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBwYXJz
ZU1vZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5kIDogQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZElu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMg
bWV0aG9kIik7CiAKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG1ldGhvZCA9IGNvbnRleHQu
Y3JlYXRlTWV0aG9kRGVmaW5pdGlvbihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CiAgICAg
ICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcikgewpAQCAtMjg1NiwxMCArMjkwNSwxMCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICBUcmVlU3RhdGVtZW50IHJlc3VsdCA9IDA7CiAg
ICAgICAgIGJvb2wgaXNGdW5jdGlvbk9yQ2xhc3NEZWNsYXJhdGlvbiA9IGZhbHNlOwogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgPSBudWxscHRyOwotICAgICAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAKICAgICAgICAgYm9vbCBzdGFydHNX
aXRoRnVuY3Rpb24gPSBtYXRjaChGVU5DVElPTik7CiAgICAgICAgIGlmIChzdGFydHNXaXRoRnVu
Y3Rpb24gfHwgbWF0Y2goQ0xBU1NUT0tFTikpIHsKKyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZl
UG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICAgICAgICAgIGlzRnVuY3Rpb25PckNsYXNz
RGVjbGFyYXRpb24gPSB0cnVlOwogICAgICAgICAgICAgbmV4dCgpOwogCkBAIC0yODcxLDE0ICsy
OTIwLDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAgICByZXN0b3JlU2F2
ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobG9jYWxOYW1lKSB7
Ci0gICAgICAgICAgICBpZiAobWF0Y2goRlVOQ1RJT04pKSB7CisgICAgICAgIGlmICghbG9jYWxO
YW1lKQorICAgICAgICAgICAgbG9jYWxOYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnN0YXJEZWZhdWx0UHJpdmF0ZU5hbWUoKTsKKworICAgICAgICBpZiAoaXNGdW5j
dGlvbk9yQ2xhc3NEZWNsYXJhdGlvbikgeworICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGhGdW5j
dGlvbikgeworICAgICAgICAgICAgICAgIEFTU0VSVChtYXRjaChGVU5DVElPTikpOwogICAgICAg
ICAgICAgICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7
CiAgICAgICAgICAgICAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDE7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0LCBFeHBvcnRUeXBl
OjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6RXhwb3J0RGVmYXVsdCk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChtYXRjaChDTEFT
U1RPS0VOKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VDbGFzc0RlY2xhcmF0aW9u
KGNvbnRleHQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlQ2xhc3NEZWNsYXJhdGlv
bihjb250ZXh0LCBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29u
dGV4dDo6RXhwb3J0RGVmYXVsdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBleHByOwpAQCAtMjkwMSw5ICsyOTU0LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKIAogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXNz
aWdubWVudCA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgbV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RhckRlZmF1bHRQcml2YXRlTmFtZSgpLCBleHBy
ZXNzaW9uLCBzdGFydCwgc3RhcnQsIHRva2VuRW5kUG9zaXRpb24oKSwgQXNzaWdubWVudENvbnRl
eHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwogICAgICAgICAgICAgcmVzdWx0ID0gY29u
dGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBhc3NpZ25tZW50LCBzdGFydCwgdG9r
ZW5FbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGlmICghaXNGdW5jdGlvbk9yQ2xhc3NEZWNs
YXJhdGlvbikKLSAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJF
eHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSB0YXJnZXRlZCBleHBvcnQgZGVjbGFyYXRpb24iKTsK
LSAgICAgICAgICAgIGxvY2FsTmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5zdGFyRGVmYXVsdFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBmYWlsSWZGYWxzZShh
dXRvU2VtaUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSB0YXJnZXRlZCBleHBv
cnQgZGVjbGFyYXRpb24iKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZGYWxzZShyZXN1bHQs
ICJDYW5ub3QgcGFyc2UgdGhlIGRlY2xhcmF0aW9uIik7CiAKQEAgLTM0MjksOSArMzQ4MCw5IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlUHJvcGVydHlNZXRoCiAgICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0
YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwot
ICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZTsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVu
Y3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0
aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7
CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKKyAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CisgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpV
bm5hbWVkLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVNZXRob2REZWZpbml0aW9uKG1ldGhvZExvY2F0aW9uLCBtZXRob2RJbmZv
KTsKIH0KIApAQCAtMzQ2NiwxMCArMzUxNywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAog
ICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBpZiAodHlwZSAm
IFByb3BlcnR5Tm9kZTo6R2V0dGVyKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5Q
QVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBnZXR0ZXIgZGVmaW5pdGlvbiIp
OwotICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rp
b25Ob1JlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlLCBmYWxzZSwgY29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9m
ZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFy
c2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJz
ZU1vZGU6OkdldHRlck1vZGUsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6
TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBnZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3Rl
ZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwotICAgICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50
cywgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBT
dXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVu
Y3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmlu
aXRpb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1v
ZGUsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJP
clNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2Qp
KSwgIkNhbm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgIH0KIAogICAgIGlmIChz
dHJpbmdQcm9wZXJ0eU5hbWUpCkBAIC0zNjcxLDYgKzM3MjIsMTUgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJh
eUxpdGVyYWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDbGFzc0V4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgQVNTRVJU
KG1hdGNoKENMQVNTVE9LRU4pKTsKKyAgICBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+IGlu
Zm87CisgICAgaW5mby5jbGFzc05hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50
aWZpZXI7CisgICAgcmV0dXJuIHBhcnNlQ2xhc3MoY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVu
dHM6Ok5vUmVxdWlyZW1lbnRzLCBpbmZvKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0
KQogewogICAgIEFTU0VSVChtYXRjaChGVU5DVElPTikpOwpAQCAtMzY4Miw3ICszNzQyLDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGdW5jdGlvbkV4cHIKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAgICAgaWYgKGNvbnN1bWUoVElN
RVMpKQogICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGU7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNh
bm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOb1JlcXVpcmVtZW50
cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25E
ZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJl
c3Npb24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24s
IGZ1bmN0aW9uSW5mbyk7CiB9CiAKQEAgLTM3NTEsMTAgKzM4MTEsOCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
aW1hcnlFeHByZQogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNlIEZVTkNU
SU9OOgogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oY29udGV4dCk7Ci0g
ICAgY2FzZSBDTEFTU1RPS0VOOiB7Ci0gICAgICAgIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRl
cj4gaW5mbzsKLSAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3MoY29udGV4dCwgRnVuY3Rpb25Ob1Jl
cXVpcmVtZW50cywgaW5mbyk7Ci0gICAgfQorICAgIGNhc2UgQ0xBU1NUT0tFTjoKKyAgICAgICAg
cmV0dXJuIHBhcnNlQ2xhc3NFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGNhc2UgT1BFTkJSQUNF
OgogICAgICAgICBpZiAoc3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3Ry
aWN0T2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKQEAgLTQwNzgsNyArNDEzNiw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQXJyb3dGdW5jdGlvCiAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgUGFy
c2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlv
biBleHByZXNzaW9uIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGFycm93IGZ1bmN0aW9uIGV4cHJlc3Np
b24iKTsKIAogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGxvY2F0
aW9uLCBpbmZvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDFj
YWQ3Yzk1NTVjMmVkOTkzMTI5OTU1NWE1YmU1NWFhYjJiNDcwOWUuLmZiODdkYWYzYjk2OTA1ZWNj
YzQ0Y2I1MzZkZDVjYTIyYWFmMjUwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtNzAsNyArNzAsNyBAQCBDT01QSUxFX0FTU0VSVChMYXN0VW50YWdnZWRUb2tlbiA8
IDY0LCBMZXNzVGhhbjY0VW50YWdnZWRUb2tlbnMpOwogCiBlbnVtIFNvdXJjZUVsZW1lbnRzTW9k
ZSB7IENoZWNrRm9yU3RyaWN0TW9kZSwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSB9OwogZW51bSBG
dW5jdGlvbkJvZHlUeXBlIHsgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBBcnJvd0Z1bmN0
aW9uQm9keUJsb2NrLCBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIH07Ci1lbnVtIEZ1bmN0aW9u
UmVxdWlyZW1lbnRzIHsgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25OZWVkc05hbWUg
fTsKK2VudW0gY2xhc3MgRnVuY3Rpb25SZXF1aXJlbWVudHMgeyBOb1JlcXVpcmVtZW50cywgTmFt
ZWQsIFVubmFtZWQgfTsKIAogZW51bSBjbGFzcyBEZXN0cnVjdHVyaW5nS2luZCB7CiAgICAgRGVz
dHJ1Y3R1cmVUb1ZhcmlhYmxlcywKQEAgLTEwMSw2ICsxMDEsMTAgQEAgZW51bSBEZWNsYXJhdGlv
blJlc3VsdCB7CiAKIHR5cGVkZWYgdWludDhfdCBEZWNsYXJhdGlvblJlc3VsdE1hc2s7CiAKK2Vu
dW0gY2xhc3MgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCB7CisgICAgU3RhbmRhcmQsCisgICAg
RXhwb3J0RGVmYXVsdCwKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBp
c0V2YWxOb2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KIHRlbXBsYXRlIDw+IGlubGluZSBib29sIGlz
RXZhbE5vZGU8RXZhbE5vZGU+KCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTM1NSw4ICsxMzU5LDgg
QEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50
aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1l
bnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCog
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7
IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBwYXJzZUNsYXNzRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBv
cnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1
aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUNsYXNzRGVjbGFyYXRp
b24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERl
Y2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFu
ZGFyZCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBh
cnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEV4cG9ydFR5cGUgPSBFeHBvcnRU
eXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9u
RGVmYXVsdENvbnRleHQ6OlN0YW5kYXJkKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwg
RGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZURvV2hp
bGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VXaGlsZVN0YXRlbWVudChUcmVlQnVpbGRlciYpOwpAQCAt
MTM4OCw2ICsxMzkyLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VBcnJheUxpdGVyYWwo
VHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19J
TkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VPYmplY3RMaXRlcmFsKFRyZWVCdWlsZGVyJik7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUV4cHJlc3Np
b24gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFy
c2VDbGFzc0V4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VGdW5jdGlvbkV4cHJl
c3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgVHJlZUFyZ3VtZW50cyBwYXJzZUFyZ3VtZW50cyhUcmVlQnVpbGRlciYpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVz
c2lvbiBwYXJzZUFyZ3VtZW50KFRyZWVCdWlsZGVyJiwgQXJndW1lbnRUeXBlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGZhZTFlMzdkNzZm
YTllYTIyNGUxZmNkMjliY2M2YmJhMDYzYmUyYzAuLmQ4ZGM2MzQxYzgxZDEzOGFiODcxNGU5NDgw
MTZjM2ExMDVkZmVjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCkBAIC02MTYsNyArNjE2LDE1IEBAIHZvaWQgSlNGdW5jdGlvbjo6cmVpZnlMZW5n
dGgoRXhlY1N0YXRlKiBleGVjKQogCiB2b2lkIEpTRnVuY3Rpb246OnJlaWZ5TmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgU3RyaW5nIG5hbWUgPSBqc0V4ZWN1dGFibGUoKS0+ZWNtYU5hbWUo
KS5zdHJpbmcoKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSA9IGpzRXhlY3V0YWJs
ZSgpLT5lY21hTmFtZSgpOworICAgIFN0cmluZyBuYW1lOworICAgIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1zZW1hbnRpY3MtZXZhbHVhdGlv
bgorICAgIC8vIFdoZW4gdGhlIGlkZW50IGlzICIqZGVmYXVsdCoiLCB3ZSBuZWVkIHRvIHNldCAi
ZGVmYXVsdCIgZm9yIHRoZSBlY21hIG5hbWUuCisgICAgLy8gVGhpcyAiKmRlZmF1bHQqIiBuYW1l
IGlzIG5ldmVyIHNob3duIHRvIHVzZXJzLgorICAgIGlmIChlY21hTmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc3RhckRlZmF1bHRQcml2YXRlTmFtZSgpKQorICAg
ICAgICBuYW1lID0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1bHRLZXl3b3JkLnN0cmluZygp
OworICAgIGVsc2UKKyAgICAgICAgbmFtZSA9IGVjbWFOYW1lLnN0cmluZygpOwogICAgIHJlaWZ5
TmFtZShleGVjLCBuYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwZmI1MjUxOTE3YTdjZTY0NjI0ZWMxMTgyM2I1MTNlNjQ5
MWZkMmM2Li5hYzNkZGFlYTA3ZDRmYjFkMGJkNDNmZDQxMGI0NDkxNzdkNzE5MGEwIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDMxIEBACiAyMDE2LTA4LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCisgICAgICAgIFtFUzZdIE1vZHVsZXMnIGBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbi9jbGFz
c2Agc2hvdWxkIGJlIGRlY2xhcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjA0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc2V2ZXJhbCBtb2R1bGUgdGVzdHMuIEFuZCBmbGlwIHRoZSBm
YWlsZWQgdGVzdHMgZmxhZ3MgaW4gdGVzdDI2Mi4KKworICAgICAgICAqIG1vZHVsZXMvZXhwb3J0
LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1hc3NpZ25tZW50LWV4cHJlc3Npb24uanM6IEFkZGVk
LgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQpOgorICAgICAgICAqIG1vZHVsZXMvZXhwb3J0LWRl
ZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1jbGFzcy1kZWNsYXJhdGlvbi5qczogQWRkZWQuCisgICAg
ICAgICogbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWZ1bmN0aW9uLWRl
Y2xhcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0KToKKyAgICAgICAg
KiBtb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tZ2VuZXJhdG9yLWRlY2xh
cmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0KToKKyAgICAgICAgKiBz
dHJlc3MvbWV0aG9kLW5hbWUuanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5bnRheCk6CisgICAg
ICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkhlbGxvLnBy
b3RvdHlwZS5oZWxsby5oZWxsbyk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IuSGVsbG8pOgor
ICAgICAgICAoU3ludGF4RXJyb3IuVW5leHBlY3RlZC5pZGVudGlmaWVyLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLkV4cGVjdGVkLmFuLm9wZW5pbmcuc3RyaW5nX2FwcGVhcmVkX2hlcmUuYmVmb3JlLmEu
bWV0aG9kLnRlc3RTeW50YXhFcnJvci5sZXQub2JqLmhlbGxvLmhlbGxvKToKKyAgICAgICAgKHRl
c3RTeW50YXhFcnJvci5IZWxsby5wcm90b3R5cGUuZ2V0IGhlbGxvKToKKyAgICAgICAgKHRlc3RT
eW50YXhFcnJvci5IZWxsby5wcm90b3R5cGUuc2V0IGhlbGxvKToKKyAgICAgICAgKiB0ZXN0MjYy
LnlhbWw6CisKKzIwMTYtMDgtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKICAgICAgICAgW0VTNl0gTW9kdWxlIHNob3VsZCBub3QgYWxsb3cgSFRNTCBjb21tZW50
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDQx
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1u
YW1lLWluLWFzc2lnbm1lbnQtZXhwcmVzc2lvbi5qcyBiL0pTVGVzdHMvbW9kdWxlcy9leHBvcnQt
ZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWFzc2lnbm1lbnQtZXhwcmVzc2lvbi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZjcyNGQ1ZDlhZGRhYTE3ZWIxYWU5OGI2NGI2YWNkODQwN2E0YjM2Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4t
YXNzaWdubWVudC1leHByZXNzaW9uLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGZ1bmMgZnJv
bSAiLi9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWFzc2lnbm1lbnQtZXhwcmVzc2lv
bi5qcyIKK2ltcG9ydCB7IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsK
KworZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHsgfSk7CisKKy8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1zZW1hbnRpY3MtZXZhbHVhdGlv
bgorc2hvdWxkQmUoZnVuYy5uYW1lLCAnZGVmYXVsdCcpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9t
b2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tY2xhc3MtZGVjbGFyYXRpb24u
anMgYi9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1jbGFz
cy1kZWNsYXJhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGQ2ZTBmYjBiMmQ5ODU5NzBjYmE1YTg2YTAz
ZGIxOGE2YzBiMDc3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1k
ZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tY2xhc3MtZGVjbGFyYXRpb24uanMKQEAgLTAsMCArMSw3
IEBACitpbXBvcnQgY2xzIGZyb20gIi4vZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1j
bGFzcy1kZWNsYXJhdGlvbi5qcyIKK2ltcG9ydCB7IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJj
ZXMvYXNzZXJ0LmpzIjsKKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgeyB9CisKKy8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1zZW1hbnRpY3MtZXZh
bHVhdGlvbgorc2hvdWxkQmUoY2xzLm5hbWUsICdkZWZhdWx0Jyk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1mdW5jdGlvbi1kZWNs
YXJhdGlvbi5qcyBiL0pTVGVzdHMvbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1l
LWluLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNzU0MjE4MWNmMTJkZjVh
YjI1YTM3MjYxMjE5NWFlZjU4NTBkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVs
ZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi5q
cwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBmdW5jIGZyb20gIi4vZXhwb3J0LWRlZmF1bHQtZnVu
Y3Rpb24tbmFtZS1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi5qcyIKK2ltcG9ydCB7IHNob3VsZEJl
IH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKKworZXhwb3J0IGRlZmF1bHQgZnVuY3Rp
b24gKCkgeyB9CisKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9y
dHMtcnVudGltZS1zZW1hbnRpY3MtZXZhbHVhdGlvbgorc2hvdWxkQmUoZnVuYy5uYW1lLCAnZGVm
YXVsdCcpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0
aW9uLW5hbWUtaW4tZ2VuZXJhdG9yLWRlY2xhcmF0aW9uLmpzIGIvSlNUZXN0cy9tb2R1bGVzL2V4
cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tZ2VuZXJhdG9yLWRlY2xhcmF0aW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZiNTA2NzRiZTViOGFjMzg2MzQ3NGExYmU3NmVkZjY1NjM0ZWVhY2MKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFt
ZS1pbi1nZW5lcmF0b3ItZGVjbGFyYXRpb24uanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgZnVu
YyBmcm9tICIuL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tZ2VuZXJhdG9yLWRlY2xh
cmF0aW9uLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuL3Jlc291cmNlcy9hc3NlcnQu
anMiOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAqICgpIHsgfQorCisvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1leHBvcnRzLXJ1bnRpbWUtc2VtYW50aWNzLWV2YWx1
YXRpb24KK3Nob3VsZEJlKGZ1bmMubmFtZSwgJ2RlZmF1bHQnKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL21ldGhvZC1uYW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvbWV0aG9kLW5hbWUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDVlZTViYTQ4OTc4MmQ1NzNiZDc3OWUyNDlmMWQ5Y2Y2ZGMxYmQxZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL21ldGhvZC1uYW1lLmpzCkBAIC0wLDAgKzEs
NDYgQEAKK2Z1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7CisgICAgdHJ5IHsKKyAgICAgICAg
ZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciBp
bnN0YW5jZW9mIFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
ZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RTeW50
YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCBzeW50YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAi
ICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK3Rlc3RTeW50YXhFcnJvcihgCitjbGFzcyBIZWxsbyB7
CisgICAgaGVsbG8gaGVsbG8oKSB7IH0KK30KK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBp
ZGVudGlmaWVyICdoZWxsbycuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIG1ldGhv
ZCdzIHBhcmFtZXRlciBsaXN0LmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorbGV0IG9iaiA9IHsK
KyAgICBoZWxsbyBoZWxsbygpIHsgfQorfQorYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlk
ZW50aWZpZXIgJ2hlbGxvJy4gRXhwZWN0ZWQgYSAnOicgZm9sbG93aW5nIHRoZSBwcm9wZXJ0eSBu
YW1lICdoZWxsbycuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitjbGFzcyBIZWxsbyB7CisgICAg
Z2V0IGhlbGxvIGhlbGxvKCkgeyB9Cit9CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRl
bnRpZmllciAnaGVsbG8nLiBFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBnZXR0ZXIgZGVm
aW5pdGlvbi5gKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2NsYXNzIEhlbGxvIHsKKyAgICBzZXQg
aGVsbG8gaGVsbG8odikgeyB9Cit9CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRp
ZmllciAnaGVsbG8nLiBFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5p
dGlvbi5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyLnlhbWwKaW5kZXggNzYwMjIxNTA4ZTgyYmY2YzhmYmE1ZGI2NGM1NzJlYTM1YjdkNzkwMy4u
ZDg4YzgyOWUwNWIyODJlNzNlNmYxYmY5MzE1ZDY4NjVhYzE0YmI3YSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy90ZXN0MjYyLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKQEAgLTcwODY4LDcg
KzcwODY4LDcgQEAKIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2
YWwtZXhwb3J0LWRmbHQtY2xzLWFub24tc2VtaS5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtY2xzLWFub24uanMKLSAgY21kOiBydW5U
ZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtY2xzLW5hbWUtbWV0aC5q
cwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0K
IC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRm
bHQtY2xzLW5hbWVkLXNlbWkuanMKQEAgLTcwODc2LDcgKzcwODc2LDcgQEAKIC0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtY2xzLW5hbWVk
LmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxl
XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQt
ZGZsdC1leHByLWNscy1hbm9uLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29k
ZS9ldmFsLWV4cG9ydC1kZmx0LWV4cHItY2xzLW5hbWUtbWV0aC5qcwogICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtZXhwci1jbHMtbmFtZWQu
anMKQEAgLTcwODg2LDExICs3MDg4NiwxMSBAQAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQtZGZsdC1leHByLWVyci1nZXQtdmFsdWUuanMKICAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJSZWZlcmVuY2VFcnJvciIsIFsiLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAt
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1kZmx0
LWV4cHItZm4tYW5vbi5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZh
bC1leHBvcnQtZGZsdC1leHByLWZuLW5hbWVkLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQtZGZsdC1leHByLWdlbi1hbm9uLmpzCi0gIGNtZDog
cnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1kZmx0LWV4cHItZ2VuLW5h
bWVkLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9k
dWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZhbC1leHBv
cnQtZGZsdC1leHByLWluLmpzCkBAIC03MTA3MiwxMSArNzEwNzIsMTEgQEAKIC0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3RuLW5hbWVkLWJuZG5nLWRmbHQtZXhw
ci5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVs
ZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3RuLW5hbWVk
LWJuZG5nLWRmbHQtZnVuLWFub24uanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNl
cHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1j
b2RlL2luc3RuLW5hbWVkLWJuZG5nLWRmbHQtZnVuLW5hbWVkLmpzCiAgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4tbmFtZWQtYm5kbmctZGZsdC1nZW4tYW5vbi5q
cwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4tbmFtZWQtYm5kbmct
ZGZsdC1nZW4tbmFtZWQuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29k
ZS9pbnN0bi1uYW1lZC1ibmRuZy1kZmx0LW5hbWVkLmpzCkBAIC03MTUwNCw5ICs3MTUwNCw5IEBA
CiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9wYXJzZS1lcnItaG9p
c3QtbGV4LWdlbi5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
Wzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9wYXJz
ZS1lcnItaW52b2tlLWFub24tZnVuLWRlY2wuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAi
U3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21v
ZHVsZS1jb2RlL3BhcnNlLWVyci1pbnZva2UtYW5vbi1nZW4tZGVjbC5qcwotICBjbWQ6IHJ1blRl
c3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvcGFyc2UtZXJyLXJlZmVyZW5jZS5qcwogICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlJlZmVyZW5jZUVycm9yIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL3BhcnNlLWVyci1zZW1pLWRmbHQtZXhw
ci5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286663</attachid>
            <date>2016-08-22 20:57:48 -0700</date>
            <delta_ts>2016-08-23 10:07:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160499-20160823125550.patch</filename>
            <type>text/plain</type>
            <size>40031</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjVjM2Q5YWY5NTA0NGE2Mzk2MGY1MGQ5MTU5NjNiYzA0MzRhYjU3Li5mZGRhNjg5YWM4ODg2YzQ5
Y2M5ZDgyNDc0YzAxY2VhYzVhMDI0NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0wOC0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBNb2R1bGVzJyBgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24v
Y2xhc3NgIHNob3VsZCBiZSBkZWNsYXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgd2UgcGFyc2VkIHRoZSBmb2xsb3dpbmcg
Y2FzZXMgYXMgRnVuY3Rpb25FeHByZXNzaW9uIGFuZCBDbGFzc0V4cHJlc3Npb24uCisKKyAgICAg
ICAgICAgIGBgYAorICAgICAgICAgICAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkgeyB9Cisg
ICAgICAgICAgICBleHBvcnQgZGVmYXVsdCBjbGFzcyB7IH0KKyAgICAgICAgICAgIGBgYAorCisg
ICAgICAgIEJ1dCwgYXMgcGVyIEVTNiBzcGVjLCB0aGUgYWJvdmUgYGZ1bmN0aW9uIC4uLmAgYW5k
IGBjbGFzcyAuLi5gIHBhcnRzIHNob3VsZCBiZSBwYXJzZWQKKyAgICAgICAgYXMgZnVuY3Rpb24g
ZGVjbGFyYXRpb24gYW5kIGNsYXNzIGRlY2xhcmF0aW9uLiBUaGlzIGhhcyBiaWcgZGlmZmVyZW5j
ZTsgdGhlIGluc3RhbnRpYXRpb24KKyAgICAgICAgb2YgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9u
cyBhcmUgZG9uZSBpbiB0aGUgZnVuY3Rpb24gcHJvbG9ndWUuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgY29ycmVjdGx5IHBhcnNlIHRoZSBhYm92ZSBjYXNlcyBhcyBkZWNsYXJhdGlvbi4g
VG8gaGFuZGxlIG5vLW5hbWVkCisgICAgICAgIGRlY2xhcmF0aW9ucywgd2UgYWRkIGEgbmV3IGZs
YWcsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQuIFRoaXMgaW5kaWNhdGVzIFtEZWZhdWx0XQor
ICAgICAgICBmbGFnIGluIHRoZSBFUzYgc3BlYydzIEJORi4KKworICAgICAgICBGdXJ0aGVybW9y
ZSwgdGhpcyBwYXRjaCBhbHNvIGZpeGVzIHRoZSBmb2xsb3dpbmcgbmFtZSByZWxhdGVkIGJ1Z3Mu
CisKKyAgICAgICAgMS4gVGhlIGJ1ZyByZWxhdGVkIHRvICJleHBvcnQgZGVmYXVsdCIncyBmdW5j
dGlvbiBuYW1lLiBJZiB0aGUgbmFtZSBpcyBub3QgcHJvdmlkZWQgKGxpa2UgdGhlIGFib3ZlIGNh
c2UpLCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVjb21lcworICAgICAgICAiZGVmYXVsdCIs
IG5vdCAiKmRlZmF1bHQqIi4gVGhpcyBpcyBzcGVjaWFsIGhhbmRsaW5nIGluIEVTNiBzcGVjLiBX
ZSBoYW5kbGUgdGhpcyBpbiBKU0Z1bmN0aW9uJ3MgcmVpZnlOYW1lLgorCisgICAgICAgIDIuIGBj
bGFzcyBIZWxsbyB7IGhlbGxvIGhlbGxvKCkgeyB9IH1gIGlzIGFjY2VwdGVkLiBXZSBpbnRyb2R1
Y2VkIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGFuZCBmaXggdGhpcyBidWcuCisKKyAg
ICAgICAgKiBwYXJzZXIvTW9kdWxlU2NvcGVEYXRhLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVNj
b3BlRGF0YTo6ZXhwb3J0QmluZGluZyk6CisgICAgICAgIEV4cG9ydGVkIG5hbWVzIGFyZSBhbHJl
YWR5IGd1cmFudGVlZCB1bmlxdWVuZXNzIGJ5IG1fZXhwb3J0ZWROYW1lcy4gTm90IG5lY2Vzc2Fy
eSB0byB1c2Ugc2V0IGhlcmUuIFVzZSB2ZWN0b3IgaW5zdGVhZC4KKworICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8pOgorICAgICAgICBJZiB3ZSBwYXNzIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOb1Jl
cXVpcmVtZW50cywgd2UgbmVlZCB0byBpbml0aWFsaXplIGZ1bmN0aW9uSW5mby5uYW1lIC8gY2xh
c3NJbmZvLmNsYXNzTmFtZQorICAgICAgICB3aXRoIHRoZSBkZWZhdWx0IGZhbGxiYWNrIG5hbWUu
IEZvciBleGFtcGxlLCBpbiB0aGUgYWJvdmUgYGV4cG9ydCBkZWZhdWx0YCBjYXNlLCB3ZSBpbml0
aWFsaXplIGl0IHdpdGggYCpkZWZhdWx0KmAuCisKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDbGFzc0V4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6cmVpZnlOYW1lKToKKwogMjAxNi0wOC0yMiAgS2VpdGggTWlsbGVyICA8a2Vp
dGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBY3R1YWxseSBlbmFibGUgdGhlIFdBU00g
YnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVNj
b3BlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVTY29wZURhdGEu
aAppbmRleCA4MjIxYWY0ODM4ZjE4MzJhMmFkMmRhMTM1MzY4ZTEzZjk1ZjE2Yzc4Li4yYTFlY2Ey
NjQ1OGQ1MDMyMTJlYjNkZjBkMTUyZTdhMDU5Njc1YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVNjb3BlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlU2NvcGVEYXRhLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3Mg
TW9kdWxlU2NvcGVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlU2NvcGVEYXRhPiB7CiBX
VEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVTY29wZURhdGEpOwogV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJTZXQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJZGVudGlmaWVyQWxpYXNNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+PiwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4+IElkZW50aWZpZXJBbGlhc01hcDsKIAogICAgIHN0YXRpYyBSZWY8TW9kdWxl
U2NvcGVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVNjb3BlRGF0
YSk7IH0KIApAQCAtNDgsNyArNDgsNyBAQCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogICAg
IHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydGVkTmFtZSkKICAgICB7Ci0gICAgICAgIG1fZXhwb3J0ZWRCaW5kaW5n
cy5hZGQobG9jYWxOYW1lLmltcGwoKSwgSWRlbnRpZmllclNldCgpKS5pdGVyYXRvci0+dmFsdWUu
YWRkKGV4cG9ydGVkTmFtZS5pbXBsKCkpOworICAgICAgICBtX2V4cG9ydGVkQmluZGluZ3MuYWRk
KGxvY2FsTmFtZS5pbXBsKCksIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PigpKS5p
dGVyYXRvci0+dmFsdWUuYXBwZW5kKGV4cG9ydGVkTmFtZS5pbXBsKCkpOwogICAgIH0KIAogICAg
IHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMTI0NWY1NDgzNzI3OGJiNThiMjYx
MzcxMjRkNmFmMTlhMzlhOWU5YS4uY2YzMGYxNjk0YjQzNDU1MTdmY2JhNDU0MjU1NTAwOWU4ZDYz
NTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA3Miwx
OCArMjA3MiwyMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICBpZiAoZnVuY3Rp
b25EZWZpbml0aW9uVHlwZSA9PSBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uICYm
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUpCiAgICAgICAgICAg
ICB1cHBlclNjb3BlSXNHZW5lcmF0b3IgPSBmYWxzZTsKIAotICAgICAgICBpZiAobWF0Y2hTcGVj
SWRlbnRpZmllcih1cHBlclNjb3BlSXNHZW5lcmF0b3IpKSB7Ci0gICAgICAgICAgICBmdW5jdGlv
bkluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICAgICAgbV9wYXJzZXJT
dGF0ZS5sYXN0RnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JbmZvLm5hbWU7Ci0gICAgICAgICAgICBu
ZXh0KCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAgICAg
ICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJlQ2FsbGVl
KGZ1bmN0aW9uSW5mby5uYW1lKSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9k
ZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCAiLCBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwotICAg
ICAgICB9IGVsc2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkgewotICAg
ICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikgJiYgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSkKLSAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkZ1bmN0
aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwotICAgICAgICAgICAgc2VtYW50aWNG
YWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7
Ci0gICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHJlcXVpcmVtZW50cyAhPSBGdW5jdGlvblJlcXVpcmVt
ZW50czo6VW5uYW1lZCkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKHJlcXVp
cmVtZW50cyA9PSBGdW5jdGlvblJlcXVpcmVtZW50czo6Tm9SZXF1aXJlbWVudHMgJiYgIWZ1bmN0
aW9uSW5mby5uYW1lKSwgIldoZW4gc3BlY2lmeWluZyBGdW5jdGlvblJlcXVpcmVtZW50czo6Tm9S
ZXF1aXJlbWVudHMsIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBmdW5jdGlvbkluZm8ubmFtZSB3aXRo
IHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSBjYWxsZXIgc2lkZS4iKTsKKyAgICAgICAgICAgIGlm
IChtYXRjaFNwZWNJZGVudGlmaWVyKHVwcGVyU2NvcGVJc0dlbmVyYXRvcikpIHsKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbkluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAg
ICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFzdEZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uSW5mby5u
YW1lOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5hbWVJ
c0luQ29udGFpbmluZ1Njb3BlKQorICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJp
Y3QoZnVuY3Rpb25TY29wZS0+ZGVjbGFyZUNhbGxlZShmdW5jdGlvbkluZm8ubmFtZSkgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUt
PmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUp
LCAiIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWly
ZW1lbnRzID09IEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOYW1lZCkgeworICAgICAgICAgICAgICAg
IGlmIChtYXRjaChPUEVOUEFSRU4pICYmIG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiRnVuY3Rpb24g
c3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7
CisgICAgICAgICAgICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRva2VuKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGZ1
bmN0aW9uSW5mby5uYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXJ0TG9jYXRpb24gPSB0
b2tlbkxvY2F0aW9uKCk7CkBAIC0yMTYzLDcgKzIxNjcsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZAogICAgIHJlc3RvcmVQYXJzZXJTdGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2Uo
ZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0
aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwotICAgIGlmIChmdW5jdGlv
blNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKKyAgICBpZiAoZnVu
Y3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIHJlcXVpcmVtZW50cyAhPSBGdW5jdGlvblJlcXVp
cmVtZW50czo6VW5uYW1lZCkgeworICAgICAgICBBU1NFUlQoZnVuY3Rpb25JbmZvLm5hbWUpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVu
Y3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
bV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIici
LCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBu
YW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbklu
Zm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmlj
dCBtb2RlIik7CkBAIC0yMjIxLDE4ICsyMjI2LDQ1IEBAIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBnZXRNZXRhZGF0YShQYXJzZXJGdW5jdGlvbklu
CiBzdGF0aWMgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGdldE1ldGFkYXRhKFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiYgaW5mbykgeyByZXR1cm4gaW5mby5ib2R5OyB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVl
QnVpbGRlciYgY29udGV4dCwgRXhwb3J0VHlwZSBleHBvcnRUeXBlKQordGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEV4cG9ydFR5cGUgZXhwb3J0VHlw
ZSwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCBkZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0KQog
ewogICAgIEFTU0VSVChtYXRjaChGVU5DVElPTikpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
ID0gdG9rZW5TdGFydCgpOwogICAgIG5leHQoKTsKLSAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJl
ZUJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0g
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAgICAgaWYgKGNvbnN1bWUoVElN
RVMpKQogICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGU7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5ub3Qg
cGFyc2UgdGhpcyBmdW5jdGlvbiIpOwotICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1l
LCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CisKKyAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKKyAgICBGdW5jdGlvblJlcXVp
cmVtZW50cyByZXF1aXJlbWVudHMgPSBGdW5jdGlvblJlcXVpcmVtZW50czo6TmFtZWQ7CisgICAg
aWYgKGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPT0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4
dDo6RXhwb3J0RGVmYXVsdCkgeworICAgICAgICAvLyBVbmRlciB0aGUgImV4cG9ydCBkZWZhdWx0
IiBjb250ZXh0LCBmdW5jdGlvbiBkZWNsYXJhdGlvbiBkb2VzIG5vdCByZXF1aXJlIHRoZSBmdW5j
dGlvbiBuYW1lLgorICAgICAgICAvLworICAgICAgICAvLyAgICAgRXhwb3J0RGVjbGFyYXRpb246
CisgICAgICAgIC8vICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgZXhwb3J0IGRlZmF1
bHQgSG9pc3RhYmxlRGVjbGFyYXRpb25bfllpZWxkLCArRGVmYXVsdF0KKyAgICAgICAgLy8gICAg
ICAgICAuLi4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIEhvaXN0YWJsZURlY2xhcmF0aW9u
W1lpZWxkLCBEZWZhdWx0XToKKyAgICAgICAgLy8gICAgICAgICBGdW5jdGlvbkRlY2xhcmF0aW9u
Wz9ZaWVsZCwgP0RlZmF1bHRdCisgICAgICAgIC8vICAgICAgICAgR2VuZXJhdG9yRGVjbGFyYXRp
b25bP1lpZWxkLCA/RGVmYXVsdF0KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIEZ1bmN0aW9u
RGVjbGFyYXRpb25bWWllbGQsIERlZmF1bHRdOgorICAgICAgICAvLyAgICAgICAgIC4uLgorICAg
ICAgICAvLyAgICAgICAgIFsrRGVmYXVsdF0gZnVuY3Rpb24gKCBGb3JtYWxQYXJhbWV0ZXJzW35Z
aWVsZF0gKSB7IEZ1bmN0aW9uQm9keVt+WWllbGRdIH0KKyAgICAgICAgLy8KKyAgICAgICAgLy8g
ICAgIEdlbmVyYXRvckRlY2xhcmF0aW9uW1lpZWxkLCBEZWZhdWx0XToKKyAgICAgICAgLy8gICAg
ICAgICAuLi4KKyAgICAgICAgLy8gICAgICAgICBbK0RlZmF1bHRdIGZ1bmN0aW9uICogKCBGb3Jt
YWxQYXJhbWV0ZXJzWytZaWVsZF0gKSB7IEdlbmVyYXRvckJvZHkgfQorICAgICAgICAvLworICAg
ICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHVzZSAiKmRlZmF1bHQqIiBhcyB0aGlzIGZ1bmN0aW9u
IGRlY2xhcmF0aW9uJ3MgbmFtZS4KKyAgICAgICAgcmVxdWlyZW1lbnRzID0gRnVuY3Rpb25SZXF1
aXJlbWVudHM6Ok5vUmVxdWlyZW1lbnRzOworICAgICAgICBmdW5jdGlvbkluZm8ubmFtZSA9ICZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zdGFyRGVmYXVsdFByaXZhdGVOYW1l
KCk7CisgICAgfQorCisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IHJlcXVpcmVtZW50cywgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRo
aXMgZnVuY3Rpb24iKTsKKyAgICBBU1NFUlQoZnVuY3Rpb25JbmZvLm5hbWUpOwogCiAgICAgc3Rk
OjpwYWlyPERlY2xhcmF0aW9uUmVzdWx0TWFzaywgU2NvcGVSZWY+IGZ1bmN0aW9uRGVjbGFyYXRp
b24gPSBkZWNsYXJlRnVuY3Rpb24oZnVuY3Rpb25JbmZvLm5hbWUpOwogICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGZ1bmN0aW9uRGVjbGFyYXRpb24uZmlyc3Q7
CkBAIC0yMjQwLDYgKzIyNzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogICAgIGlmIChk
ZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVj
bGFyYXRpb24pCiAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNzYWdlKGZhbHNlLCAiQ2Fubm90
IGRlY2xhcmUgYSBmdW5jdGlvbiB0aGF0IHNoYWRvd3MgYSBsZXQvY29uc3QvY2xhc3MvZnVuY3Rp
b24gdmFyaWFibGUgJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGluIHN0cmljdCBt
b2RlIik7CiAgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhwb3J0ZWQpIHsKKyAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0ICE9IERl
Y2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OkV4cG9ydERlZmF1bHQsICJFeHBvcnQgZGVmYXVsdCBj
YXNlIHdpbGwgZXhwb3J0IG5hbWUgYW5kIGJpbmRpbmcgaW4gY2FsbGVyIHNpZGUuIik7CiAgICAg
ICAgIHNlbWFudGljRmFpbElmRmFsc2UoZXhwb3J0TmFtZSgqZnVuY3Rpb25JbmZvLm5hbWUpLCAi
Q2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBmdW5jdGlvbiBuYW1lOiAnIiwgZnVuY3Rpb25JbmZv
Lm5hbWUtPmltcGwoKSwgIiciKTsKICAgICAgICAgbV9tb2R1bGVTY29wZURhdGEtPmV4cG9ydEJp
bmRpbmcoKmZ1bmN0aW9uSW5mby5uYW1lKTsKICAgICB9CkBAIC0yMjUxLDcgKzIyODQsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEV4cG9y
dFR5cGUgZXhwb3J0VHlwZSkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0RlY2xhcmF0aW9uKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBFeHBvcnRUeXBlIGV4cG9ydFR5cGUsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRl
eHQgZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQ0xBU1NU
T0tFTikpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpA
QCAtMjI1OSwxMyArMjI5MiwzMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdAogICAgIHVuc2ln
bmVkIGNsYXNzU3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAKICAgICBQYXJzZXJDbGFzc0luZm88
VHJlZUJ1aWxkZXI+IGluZm87Ci0gICAgVHJlZUNsYXNzRXhwcmVzc2lvbiBjbGFzc0V4cHIgPSBw
YXJzZUNsYXNzKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBpbmZvKTsKKyAgICBGdW5jdGlv
blJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMgPSBGdW5jdGlvblJlcXVpcmVtZW50czo6TmFtZWQ7
CisgICAgaWYgKGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPT0gRGVjbGFyYXRpb25EZWZhdWx0
Q29udGV4dDo6RXhwb3J0RGVmYXVsdCkgeworICAgICAgICAvLyBVbmRlciB0aGUgImV4cG9ydCBk
ZWZhdWx0IiBjb250ZXh0LCBjbGFzcyBkZWNsYXJhdGlvbiBkb2VzIG5vdCByZXF1aXJlIHRoZSBj
bGFzcyBuYW1lLgorICAgICAgICAvLworICAgICAgICAvLyAgICAgRXhwb3J0RGVjbGFyYXRpb246
CisgICAgICAgIC8vICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgZXhwb3J0IGRlZmF1
bHQgQ2xhc3NEZWNsYXJhdGlvblt+WWllbGQsICtEZWZhdWx0XQorICAgICAgICAvLyAgICAgICAg
IC4uLgorICAgICAgICAvLworICAgICAgICAvLyAgICAgQ2xhc3NEZWNsYXJhdGlvbltZaWVsZCwg
RGVmYXVsdF06CisgICAgICAgIC8vICAgICAgICAgLi4uCisgICAgICAgIC8vICAgICAgICAgWytE
ZWZhdWx0XSBjbGFzcyBDbGFzc1RhaWxbP1lpZWxkXQorICAgICAgICAvLworICAgICAgICAvLyBJ
biB0aGlzIGNhc2UsIHdlIHVzZSAiKmRlZmF1bHQqIiBhcyB0aGlzIGNsYXNzIGRlY2xhcmF0aW9u
J3MgbmFtZS4KKyAgICAgICAgcmVxdWlyZW1lbnRzID0gRnVuY3Rpb25SZXF1aXJlbWVudHM6Ok5v
UmVxdWlyZW1lbnRzOworICAgICAgICBpbmZvLmNsYXNzTmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5zdGFyRGVmYXVsdFByaXZhdGVOYW1lKCk7CisgICAgfQorCisg
ICAgVHJlZUNsYXNzRXhwcmVzc2lvbiBjbGFzc0V4cHIgPSBwYXJzZUNsYXNzKGNvbnRleHQsIHJl
cXVpcmVtZW50cywgaW5mbyk7CiAgICAgZmFpbElmRmFsc2UoY2xhc3NFeHByLCAiRmFpbGVkIHRv
IHBhcnNlIGNsYXNzIik7CisgICAgQVNTRVJUKGluZm8uY2xhc3NOYW1lKTsKIAogICAgIERlY2xh
cmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZShpbmZv
LmNsYXNzTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbik7CiAgICAgaWYgKGRl
Y2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNs
YXJhdGlvbikKICAgICAgICAgaW50ZXJuYWxGYWlsV2l0aE1lc3NhZ2UoZmFsc2UsICJDYW5ub3Qg
ZGVjbGFyZSBhIGNsYXNzIHR3aWNlOiAnIiwgaW5mby5jbGFzc05hbWUtPmltcGwoKSwgIiciKTsK
ICAgICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgeworICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgIT0gRGVjbGFyYXRp
b25EZWZhdWx0Q29udGV4dDo6RXhwb3J0RGVmYXVsdCwgIkV4cG9ydCBkZWZhdWx0IGNhc2Ugd2ls
bCBleHBvcnQgbmFtZSBhbmQgYmluZGluZyBpbiBjYWxsZXIgc2lkZS4iKTsKICAgICAgICAgc2Vt
YW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCppbmZvLmNsYXNzTmFtZSksICJDYW5ub3QgZXhw
b3J0IGEgZHVwbGljYXRlIGNsYXNzIG5hbWU6ICciLCBpbmZvLmNsYXNzTmFtZS0+aW1wbCgpLCAi
JyIpOwogICAgICAgICBtX21vZHVsZVNjb3BlRGF0YS0+ZXhwb3J0QmluZGluZygqaW5mby5jbGFz
c05hbWUpOwogICAgIH0KQEAgLTIyOTEsMjAgKzIzNDQsMTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNs
YXNzKFQKICAgICBjbGFzc1Njb3BlLT5wcmV2ZW50VmFyRGVjbGFyYXRpb25zKCk7CiAgICAgY2xh
c3NTY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogCi0gICAgY29uc3QgSWRlbnRpZmllciogY2xhc3NO
YW1lID0gbnVsbHB0cjsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlcXVpcmVtZW50cyAhPSBG
dW5jdGlvblJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJlbnRseSwgdGhlcmUgaXMgbm8gY2Fs
bGVyIHRoYXQgdXNlcyBGdW5jdGlvblJlcXVpcmVtZW50czo6VW5uYW1lZCBmb3IgY2xhc3Mgc3lu
dGF4LiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShyZXF1aXJlbWVudHMgPT0gRnVuY3Rp
b25SZXF1aXJlbWVudHM6Ok5vUmVxdWlyZW1lbnRzICYmICFpbmZvLmNsYXNzTmFtZSksICJXaGVu
IHNwZWNpZnlpbmcgRnVuY3Rpb25SZXF1aXJlbWVudHM6Ok5vUmVxdWlyZW1lbnRzLCB3ZSBuZWVk
IHRvIGluaXRpYWxpemUgaW5mby5jbGFzc05hbWUgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiB0
aGUgY2FsbGVyIHNpZGUuIik7CiAgICAgaWYgKG1hdGNoKElERU5UKSkgewotICAgICAgICBjbGFz
c05hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgaW5mby5jbGFzc05hbWUgPSBt
X3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBmYWlsSWZUcnVl
KGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoY2xhc3NOYW1lLCB0cnVlKSAmIERl
Y2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIiciLCBjbGFzc05hbWUtPmltcGwo
KSwgIicgaXMgbm90IGEgdmFsaWQgY2xhc3MgbmFtZSIpOwotICAgIH0gZWxzZSBpZiAocmVxdWly
ZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKSB7CisgICAgICAgIGZhaWxJZlRydWUoY2xhc3NT
Y29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZShpbmZvLmNsYXNzTmFtZSwgdHJ1ZSkgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICInIiwgaW5mby5jbGFzc05hbWUtPmlt
cGwoKSwgIicgaXMgbm90IGEgdmFsaWQgY2xhc3MgbmFtZSIpOworICAgIH0gZWxzZSBpZiAocmVx
dWlyZW1lbnRzID09IEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpOYW1lZCkgewogICAgICAgICBpZiAo
bWF0Y2goT1BFTkJSQUNFKSkKICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2xhc3Mgc3RhdGVt
ZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5
d29yZCgiY2xhc3MgbmFtZSIpOwogICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgY2xhc3NOYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyOwotICAgIEFTU0VSVChjbGFzc05hbWUpOwotICAgIGluZm8uY2xhc3NOYW1l
ID0gY2xhc3NOYW1lOworICAgIH0KKyAgICBBU1NFUlQoaW5mby5jbGFzc05hbWUpOwogCiAgICAg
VHJlZUV4cHJlc3Npb24gcGFyZW50Q2xhc3MgPSAwOwogICAgIGlmIChjb25zdW1lKEVYVEVORFMp
KSB7CkBAIC0yNDAxLDggKzI0NTMsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3Byb3RvdHlw
ZSciKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3Ig
bmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMs
IHBhcnNlTW9kZSwgZmFsc2UsIGlzQ29uc3RydWN0b3IgPyBjb25zdHJ1Y3RvcktpbmQgOiBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0
aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ug
dGhpcyBtZXRob2QiKTsKLSAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9IGlzQ29uc3RydWN0
b3IgPyBjbGFzc05hbWUgOiBpZGVudDsKKyAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9IGlz
Q29uc3RydWN0b3IgPyBpbmZvLmNsYXNzTmFtZSA6IGlkZW50OworICAgICAgICAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpV
bm5hbWVkLCBwYXJzZU1vZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5k
IDogQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3Rh
cnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90
IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG1ldGhv
ZCA9IGNvbnRleHQuY3JlYXRlTWV0aG9kRGVmaW5pdGlvbihtZXRob2RMb2NhdGlvbiwgbWV0aG9k
SW5mbyk7CiAgICAgICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcikgewpAQCAtMjg1NiwxMCArMjkw
OCwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICBUcmVlU3RhdGVtZW50IHJl
c3VsdCA9IDA7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk9yQ2xhc3NEZWNsYXJhdGlvbiA9IGZh
bHNlOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgPSBudWxscHRyOwotICAg
ICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAKICAgICAgICAg
Ym9vbCBzdGFydHNXaXRoRnVuY3Rpb24gPSBtYXRjaChGVU5DVElPTik7CiAgICAgICAgIGlmIChz
dGFydHNXaXRoRnVuY3Rpb24gfHwgbWF0Y2goQ0xBU1NUT0tFTikpIHsKKyAgICAgICAgICAgIFNh
dmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICAgICAgICAgIGlzRnVu
Y3Rpb25PckNsYXNzRGVjbGFyYXRpb24gPSB0cnVlOwogICAgICAgICAgICAgbmV4dCgpOwogCkBA
IC0yODcxLDE0ICsyOTIzLDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAg
ICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
bG9jYWxOYW1lKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2goRlVOQ1RJT04pKSB7CisgICAgICAg
IGlmICghbG9jYWxOYW1lKQorICAgICAgICAgICAgbG9jYWxOYW1lID0gJm1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnN0YXJEZWZhdWx0UHJpdmF0ZU5hbWUoKTsKKworICAgICAg
ICBpZiAoaXNGdW5jdGlvbk9yQ2xhc3NEZWNsYXJhdGlvbikgeworICAgICAgICAgICAgaWYgKHN0
YXJ0c1dpdGhGdW5jdGlvbikgeworICAgICAgICAgICAgICAgIEFTU0VSVChtYXRjaChGVU5DVElP
TikpOwogICAgICAgICAgICAgICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0
ZW1lbnREZXB0aCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDE7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0
LCBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6RXhw
b3J0RGVmYXVsdCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VS
VChtYXRjaChDTEFTU1RPS0VOKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VDbGFz
c0RlY2xhcmF0aW9uKGNvbnRleHQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlQ2xh
c3NEZWNsYXJhdGlvbihjb250ZXh0LCBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRp
b25EZWZhdWx0Q29udGV4dDo6RXhwb3J0RGVmYXVsdCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBleHByOwpAQCAtMjkwMSw5
ICsyOTU3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKIAogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gYXNzaWdubWVudCA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc3RhckRlZmF1bHRQcml2YXRl
TmFtZSgpLCBleHByZXNzaW9uLCBzdGFydCwgc3RhcnQsIHRva2VuRW5kUG9zaXRpb24oKSwgQXNz
aWdubWVudENvbnRleHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwogICAgICAgICAgICAg
cmVzdWx0ID0gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBhc3NpZ25tZW50
LCBzdGFydCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGlmICghaXNGdW5jdGlv
bk9yQ2xhc3NEZWNsYXJhdGlvbikKLSAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2Vt
aUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSB0YXJnZXRlZCBleHBvcnQgZGVj
bGFyYXRpb24iKTsKLSAgICAgICAgICAgIGxvY2FsTmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5zdGFyRGVmYXVsdFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBm
YWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSB0
YXJnZXRlZCBleHBvcnQgZGVjbGFyYXRpb24iKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZG
YWxzZShyZXN1bHQsICJDYW5ub3QgcGFyc2UgdGhlIGRlY2xhcmF0aW9uIik7CiAKQEAgLTM0Mjks
OSArMzQ4Myw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRoCiAgICAgSlNUb2tlbkxvY2F0aW9u
IG1ldGhvZExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3Rh
cnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBt
ZXRob2RJbmZvOwotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0dlbmVyYXRvciA/
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSA6IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZTsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8o
Y29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhv
ZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRo
aXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKKyAgICBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNHZW5lcmF0b3IgPyBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7
CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVx
dWlyZW1lbnRzOjpVbm5hbWVkLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rp
b25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsK
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVNZXRob2REZWZpbml0aW9uKG1ldGhvZExvY2F0aW9u
LCBtZXRob2RJbmZvKTsKIH0KIApAQCAtMzQ2NiwxMCArMzUyMCwxMCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0
ZXJTZXR0ZXIoVAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAg
ICBpZiAodHlwZSAmIFByb3BlcnR5Tm9kZTo6R2V0dGVyKSB7CiAgICAgICAgIGZhaWxJZkZhbHNl
KG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBnZXR0ZXIg
ZGVmaW5pdGlvbiIpOwotICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
LCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JT
ZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSks
ICJDYW5ub3QgcGFyc2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVk
LCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5j
dGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBnZXR0ZXIgZGVmaW5p
dGlvbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJF
TiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwot
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25O
b1JlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNl
dCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ug
c2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25J
bmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGUsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVl
ZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25U
eXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgIH0K
IAogICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCkBAIC0zNjcxLDYgKzM3MjUsMTUgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBcnJheUxpdGVyYWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
K3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VDbGFzc0V4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7
CisgICAgQVNTRVJUKG1hdGNoKENMQVNTVE9LRU4pKTsKKyAgICBQYXJzZXJDbGFzc0luZm88VHJl
ZUJ1aWxkZXI+IGluZm87CisgICAgaW5mby5jbGFzc05hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1l
cy0+bnVsbElkZW50aWZpZXI7CisgICAgcmV0dXJuIHBhcnNlQ2xhc3MoY29udGV4dCwgRnVuY3Rp
b25SZXF1aXJlbWVudHM6Ok5vUmVxdWlyZW1lbnRzLCBpbmZvKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChGVU5DVElPTikpOwpAQCAtMzY4Miw3
ICszNzQ1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHIKICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAgICAgaWYg
KGNvbnN1bWUoVElNRVMpKQogICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJl
c3Npb24pKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CisgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpO
b1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5m
bywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1
bmN0aW9uIGV4cHJlc3Npb24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4
cHIobG9jYXRpb24sIGZ1bmN0aW9uSW5mbyk7CiB9CiAKQEAgLTM3NTEsMTAgKzM4MTQsOCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAg
ICBjYXNlIEZVTkNUSU9OOgogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24o
Y29udGV4dCk7Ci0gICAgY2FzZSBDTEFTU1RPS0VOOiB7Ci0gICAgICAgIFBhcnNlckNsYXNzSW5m
bzxUcmVlQnVpbGRlcj4gaW5mbzsKLSAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3MoY29udGV4dCwg
RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgaW5mbyk7Ci0gICAgfQorICAgIGNhc2UgQ0xBU1NUT0tF
TjoKKyAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3NFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGNh
c2UgT1BFTkJSQUNFOgogICAgICAgICBpZiAoc3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgcmV0
dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKQEAgLTQwNzgsNyArNDEzOSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvCiAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9u
KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8u
bmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywg
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBh
cnJvdyBmdW5jdGlvbiBleHByZXNzaW9uIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgRnVuY3Rp
b25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGFycm93IGZ1bmN0
aW9uIGV4cHJlc3Npb24iKTsKIAogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycm93RnVuY3Rp
b25FeHByKGxvY2F0aW9uLCBpbmZvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCmluZGV4IDFjYWQ3Yzk1NTVjMmVkOTkzMTI5OTU1NWE1YmU1NWFhYjJiNDcwOWUuLmZiODdk
YWYzYjk2OTA1ZWNjYzQ0Y2I1MzZkZDVjYTIyYWFmMjUwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtNzAsNyArNzAsNyBAQCBDT01QSUxFX0FTU0VSVChMYXN0VW50
YWdnZWRUb2tlbiA8IDY0LCBMZXNzVGhhbjY0VW50YWdnZWRUb2tlbnMpOwogCiBlbnVtIFNvdXJj
ZUVsZW1lbnRzTW9kZSB7IENoZWNrRm9yU3RyaWN0TW9kZSwgRG9udENoZWNrRm9yU3RyaWN0TW9k
ZSB9OwogZW51bSBGdW5jdGlvbkJvZHlUeXBlIHsgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
LCBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrLCBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIH07Ci1l
bnVtIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHsgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rp
b25OZWVkc05hbWUgfTsKK2VudW0gY2xhc3MgRnVuY3Rpb25SZXF1aXJlbWVudHMgeyBOb1JlcXVp
cmVtZW50cywgTmFtZWQsIFVubmFtZWQgfTsKIAogZW51bSBjbGFzcyBEZXN0cnVjdHVyaW5nS2lu
ZCB7CiAgICAgRGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcywKQEAgLTEwMSw2ICsxMDEsMTAgQEAgZW51
bSBEZWNsYXJhdGlvblJlc3VsdCB7CiAKIHR5cGVkZWYgdWludDhfdCBEZWNsYXJhdGlvblJlc3Vs
dE1hc2s7CiAKK2VudW0gY2xhc3MgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCB7CisgICAgU3Rh
bmRhcmQsCisgICAgRXhwb3J0RGVmYXVsdCwKK307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBp
bmxpbmUgYm9vbCBpc0V2YWxOb2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KIHRlbXBsYXRlIDw+IGlu
bGluZSBib29sIGlzRXZhbE5vZGU8RXZhbE5vZGU+KCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTM1
NSw4ICsxMzU5LDggQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYs
IGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFs
TGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZl
LCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogICAgIGVudW0gY2xhc3Mg
RXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwotICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUNsYXNzRGVjbGFyYXRpb24oVHJlZUJ1
aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQpOwotICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUNs
YXNzRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90
RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRD
b250ZXh0OjpTdGFuZGFyZCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEV4cG9ydFR5
cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9
IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5kYXJkKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKFRy
ZWVCdWlsZGVyJiwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90
RXhwb3J0ZWQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBwYXJzZURvV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VXaGlsZVN0YXRlbWVudChUcmVlQnVp
bGRlciYpOwpAQCAtMTM4OCw2ICsxMzkyLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VB
cnJheUxpdGVyYWwoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VPYmplY3RMaXRlcmFsKFRyZWVC
dWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
VHJlZUV4cHJlc3Npb24gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKFRyZWVCdWlsZGVyJik7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVDbGFzc0V4
cHJlc3Npb24gcGFyc2VDbGFzc0V4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VG
dW5jdGlvbkV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUFyZ3VtZW50cyBwYXJzZUFyZ3VtZW50cyhUcmVl
QnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElO
RSBUcmVlRXhwcmVzc2lvbiBwYXJzZUFyZ3VtZW50KFRyZWVCdWlsZGVyJiwgQXJndW1lbnRUeXBl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4
IGZhZTFlMzdkNzZmYTllYTIyNGUxZmNkMjliY2M2YmJhMDYzYmUyYzAuLmQ4ZGM2MzQxYzgxZDEz
OGFiODcxNGU5NDgwMTZjM2ExMDVkZmVjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC02MTYsNyArNjE2LDE1IEBAIHZvaWQgSlNGdW5jdGlv
bjo6cmVpZnlMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogCiB2b2lkIEpTRnVuY3Rpb246OnJlaWZ5
TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgU3RyaW5nIG5hbWUgPSBqc0V4ZWN1dGFibGUo
KS0+ZWNtYU5hbWUoKS5zdHJpbmcoKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSA9
IGpzRXhlY3V0YWJsZSgpLT5lY21hTmFtZSgpOworICAgIFN0cmluZyBuYW1lOworICAgIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1zZW1hbnRp
Y3MtZXZhbHVhdGlvbgorICAgIC8vIFdoZW4gdGhlIGlkZW50IGlzICIqZGVmYXVsdCoiLCB3ZSBu
ZWVkIHRvIHNldCAiZGVmYXVsdCIgZm9yIHRoZSBlY21hIG5hbWUuCisgICAgLy8gVGhpcyAiKmRl
ZmF1bHQqIiBuYW1lIGlzIG5ldmVyIHNob3duIHRvIHVzZXJzLgorICAgIGlmIChlY21hTmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc3RhckRlZmF1bHRQcml2YXRl
TmFtZSgpKQorICAgICAgICBuYW1lID0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1bHRLZXl3
b3JkLnN0cmluZygpOworICAgIGVsc2UKKyAgICAgICAgbmFtZSA9IGVjbWFOYW1lLnN0cmluZygp
OwogICAgIHJlaWZ5TmFtZShleGVjLCBuYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwZmI1MjUxOTE3YTdjZTY0NjI0ZWMx
MTgyM2I1MTNlNjQ5MWZkMmM2Li5hYzNkZGFlYTA3ZDRmYjFkMGJkNDNmZDQxMGI0NDkxNzdkNzE5
MGEwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTA4LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtFUzZdIE1vZHVsZXMnIGBleHBvcnQgZGVmYXVsdCBm
dW5jdGlvbi9jbGFzc2Agc2hvdWxkIGJlIGRlY2xhcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0OTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc2V2ZXJhbCBtb2R1bGUgdGVzdHMuIEFu
ZCBmbGlwIHRoZSBmYWlsZWQgdGVzdHMgZmxhZ3MgaW4gdGVzdDI2Mi4KKworICAgICAgICAqIG1v
ZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1hc3NpZ25tZW50LWV4cHJlc3Np
b24uanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQpOgorICAgICAgICAqIG1vZHVs
ZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1jbGFzcy1kZWNsYXJhdGlvbi5qczog
QWRkZWQuCisgICAgICAgICogbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWlu
LWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0
KToKKyAgICAgICAgKiBtb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tZ2Vu
ZXJhdG9yLWRlY2xhcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0KToK
KyAgICAgICAgKiBzdHJlc3MvbWV0aG9kLW5hbWUuanM6IEFkZGVkLgorICAgICAgICAodGVzdFN5
bnRheCk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IpOgorICAgICAgICAodGVzdFN5bnRheEVy
cm9yLkhlbGxvLnByb3RvdHlwZS5oZWxsby5oZWxsbyk6CisgICAgICAgICh0ZXN0U3ludGF4RXJy
b3IuSGVsbG8pOgorICAgICAgICAoU3ludGF4RXJyb3IuVW5leHBlY3RlZC5pZGVudGlmaWVyLnN0
cmluZ19hcHBlYXJlZF9oZXJlLkV4cGVjdGVkLmFuLm9wZW5pbmcuc3RyaW5nX2FwcGVhcmVkX2hl
cmUuYmVmb3JlLmEubWV0aG9kLnRlc3RTeW50YXhFcnJvci5sZXQub2JqLmhlbGxvLmhlbGxvKToK
KyAgICAgICAgKHRlc3RTeW50YXhFcnJvci5IZWxsby5wcm90b3R5cGUuZ2V0IGhlbGxvKToKKyAg
ICAgICAgKHRlc3RTeW50YXhFcnJvci5IZWxsby5wcm90b3R5cGUuc2V0IGhlbGxvKToKKyAgICAg
ICAgKiB0ZXN0MjYyLnlhbWw6CisKKzIwMTYtMDgtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0VTNl0gTW9kdWxlIHNob3VsZCBub3QgYWxsb3cg
SFRNTCBjb21tZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxMDQxCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9leHBvcnQtZGVmYXVs
dC1mdW5jdGlvbi1uYW1lLWluLWFzc2lnbm1lbnQtZXhwcmVzc2lvbi5qcyBiL0pTVGVzdHMvbW9k
dWxlcy9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWFzc2lnbm1lbnQtZXhwcmVzc2lv
bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZjcyNGQ1ZDlhZGRhYTE3ZWIxYWU5OGI2NGI2YWNkODQwN2E0YjM2
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0
aW9uLW5hbWUtaW4tYXNzaWdubWVudC1leHByZXNzaW9uLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1w
b3J0IGZ1bmMgZnJvbSAiLi9leHBvcnQtZGVmYXVsdC1mdW5jdGlvbi1uYW1lLWluLWFzc2lnbm1l
bnQtZXhwcmVzc2lvbi5qcyIKK2ltcG9ydCB7IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMv
YXNzZXJ0LmpzIjsKKworZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHsgfSk7CisKKy8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1zZW1hbnRp
Y3MtZXZhbHVhdGlvbgorc2hvdWxkQmUoZnVuYy5uYW1lLCAnZGVmYXVsdCcpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tY2xhc3Mt
ZGVjbGFyYXRpb24uanMgYi9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24t
bmFtZS1pbi1jbGFzcy1kZWNsYXJhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGQ2ZTBmYjBiMmQ5ODU5
NzBjYmE1YTg2YTAzZGIxOGE2YzBiMDc3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9tb2R1
bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tY2xhc3MtZGVjbGFyYXRpb24uanMK
QEAgLTAsMCArMSw3IEBACitpbXBvcnQgY2xzIGZyb20gIi4vZXhwb3J0LWRlZmF1bHQtZnVuY3Rp
b24tbmFtZS1pbi1jbGFzcy1kZWNsYXJhdGlvbi5qcyIKK2ltcG9ydCB7IHNob3VsZEJlIH0gZnJv
bSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgeyB9CisK
Ky8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1z
ZW1hbnRpY3MtZXZhbHVhdGlvbgorc2hvdWxkQmUoY2xzLm5hbWUsICdkZWZhdWx0Jyk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1m
dW5jdGlvbi1kZWNsYXJhdGlvbi5qcyBiL0pTVGVzdHMvbW9kdWxlcy9leHBvcnQtZGVmYXVsdC1m
dW5jdGlvbi1uYW1lLWluLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNzU0
MjE4MWNmMTJkZjVhYjI1YTM3MjYxMjE5NWFlZjU4NTBkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1mdW5jdGlvbi1k
ZWNsYXJhdGlvbi5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBmdW5jIGZyb20gIi4vZXhwb3J0
LWRlZmF1bHQtZnVuY3Rpb24tbmFtZS1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi5qcyIKK2ltcG9y
dCB7IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKKworZXhwb3J0IGRl
ZmF1bHQgZnVuY3Rpb24gKCkgeyB9CisKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLWV4cG9ydHMtcnVudGltZS1zZW1hbnRpY3MtZXZhbHVhdGlvbgorc2hvdWxkQmUoZnVu
Yy5uYW1lLCAnZGVmYXVsdCcpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL2V4cG9ydC1k
ZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tZ2VuZXJhdG9yLWRlY2xhcmF0aW9uLmpzIGIvSlNUZXN0
cy9tb2R1bGVzL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tZ2VuZXJhdG9yLWRlY2xh
cmF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNTA2NzRiZTViOGFjMzg2MzQ3NGExYmU3NmVkZjY1NjM0
ZWVhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMvZXhwb3J0LWRlZmF1bHQt
ZnVuY3Rpb24tbmFtZS1pbi1nZW5lcmF0b3ItZGVjbGFyYXRpb24uanMKQEAgLTAsMCArMSw3IEBA
CitpbXBvcnQgZnVuYyBmcm9tICIuL2V4cG9ydC1kZWZhdWx0LWZ1bmN0aW9uLW5hbWUtaW4tZ2Vu
ZXJhdG9yLWRlY2xhcmF0aW9uLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuL3Jlc291
cmNlcy9hc3NlcnQuanMiOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAqICgpIHsgfQorCisv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1leHBvcnRzLXJ1bnRpbWUtc2Vt
YW50aWNzLWV2YWx1YXRpb24KK3Nob3VsZEJlKGZ1bmMubmFtZSwgJ2RlZmF1bHQnKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL21ldGhvZC1uYW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvbWV0
aG9kLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVlZTViYTQ4OTc4MmQ1NzNiZDc3OWUyNDlmMWQ5Y2Y2
ZGMxYmQxZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL21ldGhvZC1uYW1lLmpz
CkBAIC0wLDAgKzEsNDYgQEAKK2Z1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7CisgICAgdHJ5
IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAg
IGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBu
dWxsOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCBzeW50YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK3Rlc3RTeW50YXhFcnJvcihgCitj
bGFzcyBIZWxsbyB7CisgICAgaGVsbG8gaGVsbG8oKSB7IH0KK30KK2AsIGBTeW50YXhFcnJvcjog
VW5leHBlY3RlZCBpZGVudGlmaWVyICdoZWxsbycuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJl
Zm9yZSBhIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LmApOworCit0ZXN0U3ludGF4RXJyb3IoYAor
bGV0IG9iaiA9IHsKKyAgICBoZWxsbyBoZWxsbygpIHsgfQorfQorYCwgYFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIGlkZW50aWZpZXIgJ2hlbGxvJy4gRXhwZWN0ZWQgYSAnOicgZm9sbG93aW5nIHRo
ZSBwcm9wZXJ0eSBuYW1lICdoZWxsbycuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitjbGFzcyBI
ZWxsbyB7CisgICAgZ2V0IGhlbGxvIGhlbGxvKCkgeyB9Cit9CitgLCBgU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiBFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZv
ciBnZXR0ZXIgZGVmaW5pdGlvbi5gKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2NsYXNzIEhlbGxv
IHsKKyAgICBzZXQgaGVsbG8gaGVsbG8odikgeyB9Cit9CitgLCBgU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgaWRlbnRpZmllciAnaGVsbG8nLiBFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBz
ZXR0ZXIgZGVmaW5pdGlvbi5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi55YW1sIGIv
SlNUZXN0cy90ZXN0MjYyLnlhbWwKaW5kZXggNzYwMjIxNTA4ZTgyYmY2YzhmYmE1ZGI2NGM1NzJl
YTM1YjdkNzkwMy4uZDg4YzgyOWUwNWIyODJlNzNlNmYxYmY5MzE1ZDY4NjVhYzE0YmI3YSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwK
QEAgLTcwODY4LDcgKzcwODY4LDcgQEAKIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21v
ZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtY2xzLWFub24tc2VtaS5qcwogICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtY2xzLWFub24uanMK
LSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQorICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtY2xz
LW5hbWUtbWV0aC5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2
YWwtZXhwb3J0LWRmbHQtY2xzLW5hbWVkLXNlbWkuanMKQEAgLTcwODc2LDcgKzcwODc2LDcgQEAK
IC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRm
bHQtY2xzLW5hbWVkLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUv
ZXZhbC1leHBvcnQtZGZsdC1leHByLWNscy1hbm9uLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFp
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1kZmx0LWV4cHItY2xzLW5hbWUtbWV0aC5qcwogICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2V2YWwtZXhwb3J0LWRmbHQtZXhw
ci1jbHMtbmFtZWQuanMKQEAgLTcwODg2LDExICs3MDg4NiwxMSBAQAogLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQtZGZsdC1leHByLWVyci1nZXQt
dmFsdWUuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJSZWZlcmVuY2VFcnJvciIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
Wzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9ldmFs
LWV4cG9ydC1kZmx0LWV4cHItZm4tYW5vbi5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9k
dWxlLWNvZGUvZXZhbC1leHBvcnQtZGZsdC1leHByLWZuLW5hbWVkLmpzCiAgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvZXZhbC1leHBvcnQtZGZsdC1leHByLWdlbi1hbm9u
LmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0K
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAt
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9ldmFsLWV4cG9ydC1kZmx0
LWV4cHItZ2VuLW5hbWVkLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNv
ZGUvZXZhbC1leHBvcnQtZGZsdC1leHByLWluLmpzCkBAIC03MTA3MiwxMSArNzEwNzIsMTEgQEAK
IC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3RuLW5hbWVkLWJu
ZG5nLWRmbHQtZXhwci5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2Rl
L2luc3RuLW5hbWVkLWJuZG5nLWRmbHQtZnVuLWFub24uanMKLSAgY21kOiBydW5UZXN0MjYyIDpm
YWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL21vZHVsZS1jb2RlL2luc3RuLW5hbWVkLWJuZG5nLWRmbHQtZnVuLW5hbWVkLmpzCiAgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4tbmFtZWQtYm5kbmctZGZs
dC1nZW4tYW5vbi5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
Wzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6
bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4t
bmFtZWQtYm5kbmctZGZsdC1nZW4tbmFtZWQuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9tb2R1bGUtY29kZS9pbnN0bi1uYW1lZC1ibmRuZy1kZmx0LW5hbWVkLmpzCkBAIC03MTUwNCw5
ICs3MTUwNCw5IEBACiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9w
YXJzZS1lcnItaG9pc3QtbGV4LWdlbi5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJTeW50
YXhFcnJvciIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1
bGUtY29kZS9wYXJzZS1lcnItaW52b2tlLWFub24tZnVuLWRlY2wuanMKLSAgY21kOiBydW5UZXN0
MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL21vZHVsZS1jb2RlL3BhcnNlLWVyci1pbnZva2UtYW5vbi1nZW4tZGVjbC5qcwot
ICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvcGFyc2UtZXJyLXJlZmVyZW5jZS5q
cwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlJlZmVyZW5jZUVycm9yIiwgWyIuLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVs
ZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL3BhcnNlLWVyci1z
ZW1pLWRmbHQtZXhwci5qcwo=
</data>
<flag name="review"
          id="310181"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>