<?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>150536</bug_id>
          
          <creation_ts>2015-10-24 16:11:12 -0700</creation_ts>
          <short_desc>Builtins generator should emit ENABLE(FEATURE) guards based on @conditional annotation</short_desc>
          <delta_ts>2015-10-28 13:01:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>lforschler</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136297</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-24 16:11:12 -0700</bug_when>
    <thetext>patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136299</commentid>
    <comment_count>1</comment_count>
      <attachid>263985</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-24 16:16:43 -0700</bug_when>
    <thetext>Created attachment 263985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136300</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 16:18:50 -0700</bug_when>
    <thetext>This patch modifies the JS builtins code generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-builtins-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136301</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 16:19:04 -0700</bug_when>
    <thetext>Attachment 263985 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:64:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_primary_header_includes&apos; member  [pylint/E1101] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136380</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-25 01:46:42 -0700</bug_when>
    <thetext>Just a quick note that I used @optional in streams built-in js, but maybe this is a poor name.
WebIDL is using &quot;Conditional&quot; keyword.
Generated code is using &quot;ENABLE&quot; macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136400</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-25 10:23:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Just a quick note that I used @optional in streams built-in js, but maybe
&gt; this is a poor name.
&gt; WebIDL is using &quot;Conditional&quot; keyword.
&gt; Generated code is using &quot;ENABLE&quot; macro.

In other code generators, it is along the lines of 

// @conditional=ENABLE(STREAMS)

so that files can be conditionalized on PLATFORM(), USE(), etc.
It is easy to change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136493</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-26 00:17:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Just a quick note that I used @optional in streams built-in js, but maybe
&gt; &gt; this is a poor name.
&gt; &gt; WebIDL is using &quot;Conditional&quot; keyword.
&gt; &gt; Generated code is using &quot;ENABLE&quot; macro.
&gt; 
&gt; In other code generators, it is along the lines of 
&gt; 
&gt; // @conditional=ENABLE(STREAMS)
&gt; 
&gt; so that files can be conditionalized on PLATFORM(), USE(), etc.
&gt; It is easy to change this.

Sounds good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136550</commentid>
    <comment_count>7</comment_count>
      <attachid>263985</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-10-26 10:39:21 -0700</bug_when>
    <thetext>Comment on attachment 263985
Patch

r=me, annotation looks nice ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136563</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-26 11:05:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 263985 [details]
&gt; Patch
&gt; 
&gt; r=me, annotation looks nice ;)

Before landing, as discussed above, I&apos;ll change @optional to @conditional and include ENABLE() in all the existing guards. I&apos;ll put up another patch for EWS to catch any mistakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136573</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-10-26 11:38:39 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Comment on attachment 263985 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; r=me, annotation looks nice ;)
&gt; 
&gt; Before landing, as discussed above, I&apos;ll change @optional to @conditional
&gt; and include ENABLE() in all the existing guards. I&apos;ll put up another patch
&gt; for EWS to catch any mistakes.

@conditional looks preferable!
So your revised patch will include the existing stream JS code, right? (replacing @optional to @conditional)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136576</commentid>
    <comment_count>10</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-26 11:40:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Comment on attachment 263985 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; r=me, annotation looks nice ;)
&gt; &gt; 
&gt; &gt; Before landing, as discussed above, I&apos;ll change @optional to @conditional
&gt; &gt; and include ENABLE() in all the existing guards. I&apos;ll put up another patch
&gt; &gt; for EWS to catch any mistakes.
&gt; 
&gt; @conditional looks preferable!
&gt; So your revised patch will include the existing stream JS code, right?
&gt; (replacing @optional to @conditional)

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136760</commentid>
    <comment_count>11</comment_count>
      <attachid>264119</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-26 21:41:48 -0700</bug_when>
    <thetext>Created attachment 264119
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136761</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-26 21:45:04 -0700</bug_when>
    <thetext>Attachment 264119 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:64:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_primary_header_includes&apos; member  [pylint/E1101] [5]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136985</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-27 16:45:04 -0700</bug_when>
    <thetext>LGTM.
Just wondering whether we also want to test &quot;@conditional=ENABLE(STREAMS_API) || USE(CF)&quot; annotation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137063</commentid>
    <comment_count>14</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-27 22:41:31 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; LGTM.
&gt; Just wondering whether we also want to test
&gt; &quot;@conditional=ENABLE(STREAMS_API) || USE(CF)&quot; annotation?

Sure. The regex should accept any non &apos;=&apos; character as the annotation&apos;s value. But would be good to verify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137066</commentid>
    <comment_count>15</comment_count>
      <attachid>264197</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-27 23:03:02 -0700</bug_when>
    <thetext>Created attachment 264197
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137067</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-27 23:05:04 -0700</bug_when>
    <thetext>Attachment 264197 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:64:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_primary_header_includes&apos; member  [pylint/E1101] [5]
Total errors found: 1 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137146</commentid>
    <comment_count>17</comment_count>
      <attachid>264197</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-28 09:45:07 -0700</bug_when>
    <thetext>Comment on attachment 264197
Proposed Fix

Setting cq+ with additional changes as discussed in bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137148</commentid>
    <comment_count>18</comment_count>
      <attachid>264197</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-28 09:48:24 -0700</bug_when>
    <thetext>Comment on attachment 264197
Proposed Fix

Rejecting attachment 264197 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 264197, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/349230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137229</commentid>
    <comment_count>19</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-28 13:01:23 -0700</bug_when>
    <thetext>Committed r191687: &lt;http://trac.webkit.org/changeset/191687&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263985</attachid>
            <date>2015-10-24 16:16:43 -0700</date>
            <delta_ts>2015-10-26 21:41:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150536-20151024161558.patch</filename>
            <type>text/plain</type>
            <size>42552</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NWVhNDdiNDU1NmExM2Q5ZTE0MjJiMjM1YjM2ZTM0MDhjMDg2NjhlLi5iMGYxMTNhZTRlYTY3YWUz
NjNhYTkxMzFlZWI4MDc5ZDBhOTMyMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1OSBAQAogMjAxNS0xMC0yNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBCdWlsdGlucyBnZW5lcmF0b3Igc2hvdWxkIGVtaXQgRU5BQkxFKEZFQVRVUkUpIGd1
YXJkcyBiYXNlZCBvbiBAb3B0aW9uYWwgYW5ub3RhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NhbiBKUyBidWlsdGluIGZpbGVzIGZvciBAa2V5
PXZhbHVlIGFuZCBAZmxhZyBhbm5vdGF0aW9ucyBpbiBzaW5nbGUtbGluZSBjb21tZW50cy4KKyAg
ICAgICAgRm9yIEBvcHRpb25hbD1GRUFUVVJFLCBlbWl0IEVOQUJMRShGRUFUVVJFKSBndWFyZHMg
YXJvdW5kIHRoZSByZWxldmFudCBvYmplY3QncyBjb2RlLgorCisgICAgICAgIEdlbmVyYXRlIHBy
aW1hcnkgaGVhZGVyIGluY2x1ZGVzIHNlcGFyYXRlbHkgZnJvbSBzZWNvbmRhcnkgaGVhZGVyIGlu
Y2x1ZGVzIHNvIHdlIGNhbgorICAgICAgICBwdXQgdGhlIGd1YXJkIGJldHdlZW4gdGhlIHR3byBo
ZWFkZXIgZ3JvdXBzLCBhcyBpcyBjdXN0b21hcnkgaW4gV2ViS2l0IEMrKyBjb2RlLgorCisgICAg
ICAgIE5ldyB0ZXN0czoKKworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUt
RHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3RhdGlvbi1TZXBhcmF0ZS5q
cworCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5l
ZF9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5l
ZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVk
ZXMpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdl
bmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHk6CisgICAgICAgIChCdWls
dGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChn
ZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKGdlbmVyYXRlX2hl
YWRlcl9pbmNsdWRlcyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKEJ1aWx0
aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAg
ICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX3Nl
Y29uZGFyeV9oZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6IERlbGV0ZWQuCisg
ICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5OgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IuZ2VuZXJh
dGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLmdl
bmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAoQnVpbHRpbnNTZXBh
cmF0ZVdyYXBwZXJHZW5lcmF0b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weToKKyAgICAg
ICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyk6Cisg
ICAgICAgIChCdWlsdGluc0dlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5n
ZW5lcmF0ZV9wcmltYXJ5X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19tb2RlbC5weToKKyAgICAgICAgKEJ1aWx0aW5PYmplY3QuX19pbml0X18p
OgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLnBhcnNlX2J1aWx0aW5zX2ZpbGUpOgorICAg
ICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9hbm5vdGF0aW9ucyk6CisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUR1cGxpY2F0ZUZsYWdBbm5vdGF0aW9uLVNl
cGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJh
dGUuanM6IFNpbXBsaWZ5LgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29y
ZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBTaW1wbGlmeS4KKyAgICAgICAg
KiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qczogU2ltcGxpZnkuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLUR1cGxpY2F0ZUZsYWdBbm5vdGF0aW9uLVNlcGFyYXRlLmpzLWVycm9yOiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtRHVw
bGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNlcGFyYXRlLmpzLWVycm9yOiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3Vs
dDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5n
dWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVz
dWx0OgorCisyMDE1LTEwLTI0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCiAgICAg
ICAgIFRlYWNoIGNyZWF0ZV9oYXNoX3RhYmxlIHRvIG9taXQgYnVpbHRpbnMgbWFjcm9zIHdoZW4g
Z2VuZXJhdGluZyB0YWJsZXMgZm9yIG5hdGl2ZS1vbmx5IG9iamVjdHMKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDQ5MQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9j
b21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cmlu
ZGV4IGIyODc4ZDM2MTBiYzNkMTM5N2RjMTE1ODNiNGQzOWI4MmY0MjZkODguLjA5NDQzNGI2NDY4
YTE1M2YwZjg2Y2E4NWQxNzlmZjZjNmYzYzhiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CkBAIC01Myw3ICs1
Myw4IEBAIGNsYXNzIEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWls
dGluc0dlbmVyYXRvcik6CiAgICAgICAgIHNlY3Rpb25zID0gW10KICAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
VGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCi0g
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9wcmltYXJ5X2hlYWRlcl9pbmNs
dWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWNvbmRhcnlf
aGVhZGVyX2luY2x1ZGVzKCkpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBmb3IgZnVuY3Rp
b24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKICAgICAgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1
bmN0aW9uKGZ1bmN0aW9uKSkKQEAgLTY1LDcgKzY2LDcgQEAgY2xhc3MgQnVpbHRpbnNDb21iaW5l
ZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKIAogICAgICAgICBy
ZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCiAKLSAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2lu
Y2x1ZGVzKHNlbGYpOgorICAgIGRlZiBnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVz
KHNlbGYpOgogICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCiAgICAgICAgICAgICAoWyJKYXZh
U2NyaXB0Q29yZSJdLAogICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgiKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2hlYWRlci5weQppbmRleCA1YjFlYjdkNjcxY2ExMWMzNThhNTE5N2RhZGFk
ZTc5NTE5MGQwMDMwLi42NjhmOGQ0ODZkZTMzMDgxMTMxY2M0YWVhOTMxZDgyMjQ4OTk2NjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlu
c19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CkBA
IC01NSwxMSArNTUsMTUgQEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihC
dWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2JqZWN0
Lm9iamVjdF9uYW1lLnVwcGVyKCksCiAgICAgICAgIH0KIAorICAgICAgICBmZWF0dXJlX2d1YXJk
ID0gc2VsZi5vYmplY3QuYW5ub3RhdGlvbnMuZ2V0KCdvcHRpb25hbCcpCisKICAgICAgICAgc2Vj
dGlvbnMgPSBbXQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNl
KCkpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0
V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCi0g
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQor
ICAgICAgICBpZiBmZWF0dXJlX2d1YXJkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKCIjaWYgRU5BQkxFKCVzKSIgJSBmZWF0dXJlX2d1YXJkKQorICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKCkpCiAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25z
KCkpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNl
VG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZi5vYmplY3QpKQpAQCAtNjcsNiArNzEsOCBAQCBj
bGFzcyBCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToK
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9u
YW1lX21hY3JvKCkpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
U2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0
dXRlKGFyZ3MpKQorICAgICAgICBpZiBmZWF0dXJlX2d1YXJkIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKCIjZW5kaWYgLy8gRU5BQkxFKCVzKSIgJSBmZWF0dXJlX2d1
YXJkKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlcklu
Y2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKIAogICAgICAgICByZXR1cm4gIlxu
XG4iLmpvaW4oc2VjdGlvbnMpCkBAIC03Niw3ICs4Miw3IEBAIGNsYXNzIEJ1aWx0aW5zU2VwYXJh
dGVIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgogY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOwogfSIiIgogCi0gICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToK
KyAgICBkZWYgZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKICAgICAg
ICAgaGVhZGVyX2luY2x1ZGVzID0gWwogICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAogICAgICAg
ICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVt
ZW50YXRpb24ucHkKaW5kZXggNmMyMjkwNGI1Y2UwMjVkNzg2ZWM5MzM1MTA1ZWY5YmQ1Y2VkNjQ0
Ny4uOThlMjdiZmQwMzgzMWUyYzJmZDNkOTdiOTMzZTdiZGNjMWI3MjY5OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24u
cHkKQEAgLTU2LDEwICs1NiwxNSBAQCBjbGFzcyBCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgogICAgICAgICAgICAgJ29iamVjdE5hbWVM
Qyc6IFdLX2xjZmlyc3Qoc2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAogICAgICAgICB9CiAKKyAg
ICAgICAgZmVhdHVyZV9ndWFyZCA9IHNlbGYub2JqZWN0LmFubm90YXRpb25zLmdldCgnb3B0aW9u
YWwnKQorCiAgICAgICAgIHNlY3Rpb25zID0gW10KICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNl
bGYuZ2VuZXJhdGVfbGljZW5zZSgpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUo
VGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCi0gICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9wcmltYXJ5X2hlYWRlcl9pbmNsdWRlcygpKQor
ICAgICAgICBpZiBmZWF0dXJlX2d1YXJkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKCIjaWYgRU5BQkxFKCVzKSIgJSBmZWF0dXJlX2d1YXJkKQorICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKCkpCiAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5z
dWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVu
Y3Rpb25zOgogICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZW1iZWRk
ZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rpb24pKQpAQCAtNjgsMTAg
KzczLDEyIEBAIGNsYXNzIEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihC
dWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBp
cyBGcmFtZXdvcmtzLldlYkNvcmU6CiAgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxh
dGUoVGVtcGxhdGVzLlNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5z
dWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgaWYgZmVhdHVy
ZV9ndWFyZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgiI2VuZGlm
IC8vIEVOQUJMRSglcylcbiIgJSBmZWF0dXJlX2d1YXJkKQogCiAgICAgICAgIHJldHVybiAiXG5c
biIuam9pbihzZWN0aW9ucykKIAotICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2Vs
Zik6CisgICAgZGVmIGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAg
ICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKICAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3Jl
Il0sCiAgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaCIpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFy
YXRlX3dyYXBwZXIucHkKaW5kZXggZGFhODhjZjc2MjBjZGExMzcxODZiOTkxNjQzN2JjNmQwYjQ4
MWQ5ZS4uMjU3ODdmZWI2ZjI4MmE3ZGJlMWNhNThkMDZkMzJjZTA4NDE4ODk4MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dGVfc2VwYXJhdGVfd3JhcHBlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CkBAIC01Niwx
OSArNTYsMjUgQEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IoQnVpbHRp
bnNHZW5lcmF0b3IpOgogICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2Jq
ZWN0X25hbWUudXBwZXIoKSwKICAgICAgICAgfQogCisgICAgICAgIGZlYXR1cmVfZ3VhcmQgPSBz
ZWxmLm9iamVjdC5hbm5vdGF0aW9ucy5nZXQoJ29wdGlvbmFsJykKKwogICAgICAgICBzZWN0aW9u
cyA9IFtdCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkK
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJu
aW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUo
VGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKLSAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAg
ICAgIGlmIGZlYXR1cmVfZ3VhcmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoIiNpZiBFTkFCTEUoJXMpIiAlIGZlYXR1cmVfZ3VhcmQpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoKSkKICAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0
aXR1dGUoYXJncykpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
U2VwYXJhdGVXcmFwcGVySGVhZGVyQm9pbGVycGxhdGUpLnN1YnN0aXR1dGUoYXJncykpCiAgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBpZiBmZWF0dXJlX2d1YXJkIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCIjZW5kaWYgLy8gRU5BQkxFKCVzKSIgJSBmZWF0
dXJlX2d1YXJkKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhl
YWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKIAogICAgICAgICByZXR1
cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCiAKLSAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1
ZGVzKHNlbGYpOgorICAgIGRlZiBnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKHNl
bGYpOgogICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCiAgICAgICAgICAgICAoWyJXZWJDb3Jl
Il0sCiAgICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgIiVzQnVpbHRpbnMuaCIgJSBzZWxmLm9i
amVjdC5vYmplY3RfbmFtZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkKaW5kZXggNTg0ODNlMGMy
MjMxNWY3N2RiYWE5NzZkNGJhZGNmNzdkZTJkM2YxOS4uN2Y0NjlkM2I0NmI5MmZjN2ZlMDMwMGJm
MzRmMWRjOGY5M2M0NDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpAQCAtMTAxLDE3ICsx
MDEsMTQgQEAgY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3I6CiAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgIGluY2x1ZGVzLmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFz
ZW5hbWUoaGVhZGVyX3BhdGgpKQogCi0gICAgICAgIHNvcnRlZF9pbmNsdWRlcyA9IHNvcnRlZChs
aXN0KGluY2x1ZGVzKSkKLSAgICAgICAgIyBBbHdheXMgaW5jbHVkZSBjb25maWcuaCBhbmQgdGhl
IGNvdW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUgb3RoZXIgaGVhZGVycy4KLSAgICAgICAgbmFtZSwg
ZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1dF9maWxlbmFtZSgpKQotICAgICAgICBp
ZiBleHQgIT0gJy5oJzoKLSAgICAgICAgICAgIHNvcnRlZF9pbmNsdWRlc1s6MF0gPSBbCi0gICAg
ICAgICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhcIiIsCi0gICAgICAgICAgICAgICAgIiNp
bmNsdWRlIFwiJXMuaFwiIiAlIG5hbWUsCi0gICAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAg
ICBdCi0KLSAgICAgICAgcmV0dXJuIHNvcnRlZF9pbmNsdWRlcworICAgICAgICByZXR1cm4gc29y
dGVkKGxpc3QoaW5jbHVkZXMpKQorCisgICAgZGVmIGdlbmVyYXRlX3ByaW1hcnlfaGVhZGVyX2lu
Y2x1ZGVzKHNlbGYpOgorICAgICAgICBuYW1lLCBfID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91
dHB1dF9maWxlbmFtZSgpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKFsKKyAgICAgICAgICAg
ICIjaW5jbHVkZSBcImNvbmZpZy5oXCIiLAorICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwi
IiAlIG5hbWUsCisgICAgICAgIF0pCiAKICAgICBkZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9z
dHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oc2VsZiwgZnVuY3Rpb24pOgogICAgICAgICB0ZXh0
ID0gZnVuY3Rpb24uZnVuY3Rpb25fc291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IGI1ZDRiZGU2
NGQ2YmE2Y2QxZDA3MzUzZDRmMmJkNWVhMTQ1MGFhM2YuLmYxYTMwMGYyN2E5ZjIxYjI5ODc4OGYz
MTFmOTFkOWEzNGI5MTlmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC00Nyw3ICs0Nyw4IEBAIGZ1
bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1
Y3RvcilccysoPzpcdyspXHMqXCgoCiAKIG11bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21w
aWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQogc2luZ2xlTGluZUNvbW1l
bnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykK
LQora2V5VmFsdWVBbm5vdGF0aW9uQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJeXC9cLyBA
KFx3Kyk9KFtePV0rPylcbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmbGFnQW5ub3RhdGlvbkNv
bW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXlwvXC8gQChcdyspW149XSo/XG4iLCByZS5NVUxU
SUxJTkUgfCByZS5TKQogCiBjbGFzcyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgIHBh
c3MKQEAgLTc4LDggKzc5LDkgQEAgY2xhc3MgRnJhbWV3b3JrczoKIAogCiBjbGFzcyBCdWlsdGlu
T2JqZWN0OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmplY3RfbmFtZSwgZnVuY3Rpb25zKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqZWN0X25hbWUsIGFubm90YXRpb25zLCBmdW5jdGlv
bnMpOgogICAgICAgICBzZWxmLm9iamVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAgICAgICAgc2Vs
Zi5hbm5vdGF0aW9ucyA9IGFubm90YXRpb25zCiAgICAgICAgIHNlbGYuZnVuY3Rpb25zID0gZnVu
Y3Rpb25zCiAgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IE5vbmUgICMgU2V0IGJ5IHRoZSBvd25p
bmcgQnVpbHRpbnNDb2xsZWN0aW9uCiAKQEAgLTEzMiw2ICsxMzQsOCBAQCBjbGFzcyBCdWlsdGlu
c0NvbGxlY3Rpb246CiAgICAgICAgICAgICBsb2cuZGVidWcobGluZSkKICAgICAgICAgbG9nLmRl
YnVnKCIiKQogCisgICAgICAgIG9iamVjdF9hbm5vdGF0aW9ucyA9IHNlbGYuX3BhcnNlX2Fubm90
YXRpb25zKHRleHQpCisKICAgICAgICAgb2JqZWN0X25hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRl
eHQob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCiAgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2lu
ZyBvYmplY3Q6ICVzIiAlIG9iamVjdF9uYW1lKQogCkBAIC0xNDQsNyArMTQ4LDcgQEAgY2xhc3Mg
QnVpbHRpbnNDb2xsZWN0aW9uOgogICAgICAgICAgICAgbG9nLmRlYnVnKGZ1bmMpCiAgICAgICAg
IGxvZy5kZWJ1ZygiIikKIAotICAgICAgICBuZXdfb2JqZWN0ID0gQnVpbHRpbk9iamVjdChvYmpl
Y3RfbmFtZSwgcGFyc2VkX2Z1bmN0aW9ucykKKyAgICAgICAgbmV3X29iamVjdCA9IEJ1aWx0aW5P
YmplY3Qob2JqZWN0X25hbWUsIG9iamVjdF9hbm5vdGF0aW9ucywgcGFyc2VkX2Z1bmN0aW9ucykK
ICAgICAgICAgbmV3X29iamVjdC5jb2xsZWN0aW9uID0gc2VsZgogICAgICAgICBzZWxmLm9iamVj
dHMuYXBwZW5kKG5ld19vYmplY3QpCiAKQEAgLTIwNSw2ICsyMDksMjcgQEAgY2xhc3MgQnVpbHRp
bnNDb2xsZWN0aW9uOgogCiAgICAgICAgIHJldHVybiBjb3B5cmlnaHRMaW5lcwogCisgICAgZGVm
IF9wYXJzZV9hbm5vdGF0aW9ucyhzZWxmLCB0ZXh0KToKKyAgICAgICAgYW5ub3RhdGlvbnMgPSB7
fQorCisgICAgICAgIGZvciBtYXRjaCBpbiBrZXlWYWx1ZUFubm90YXRpb25Db21tZW50UmVnRXhw
LmZpbmRpdGVyKHRleHQpOgorICAgICAgICAgICAgKGtleSwgdmFsdWUpID0gbWF0Y2guZ3JvdXAo
MSwgMikKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgYW5ub3RhdGlvbjogJyVzJyA9PiAn
JXMnIiAlIChrZXksIHZhbHVlKSkKKyAgICAgICAgICAgIGlmIGtleSBpbiBhbm5vdGF0aW9uczoK
KyAgICAgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiRHVwbGljYXRlIGFubm90YXRp
b24gZm91bmQ6ICVzIiAlIGtleSkKKworICAgICAgICAgICAgYW5ub3RhdGlvbnNba2V5XSA9IHZh
bHVlCisKKyAgICAgICAgZm9yIG1hdGNoIGluIGZsYWdBbm5vdGF0aW9uQ29tbWVudFJlZ0V4cC5m
aW5kaXRlcih0ZXh0KToKKyAgICAgICAgICAgIGtleSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAg
ICAgICBsb2cuZGVidWcoIkZvdW5kIGFubm90YXRpb246ICclcycgPT4gJ1RSVUUnIiAlIGtleSkK
KyAgICAgICAgICAgIGlmIGtleSBpbiBhbm5vdGF0aW9uczoKKyAgICAgICAgICAgICAgICByYWlz
ZSBQYXJzZUV4Y2VwdGlvbigiRHVwbGljYXRlIGFubm90YXRpb24gZm91bmQ6ICVzIiAlIGtleSkK
KworICAgICAgICAgICAgYW5ub3RhdGlvbnNba2V5XSA9IFRydWUKKworICAgICAgICByZXR1cm4g
YW5ub3RhdGlvbnMKKwogICAgIGRlZiBfcGFyc2VfZnVuY3Rpb25zKHNlbGYsIHRleHQpOgogICAg
ICAgICB0ZXh0ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5l
Q29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCB0ZXh0KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1EdXBsaWNhdGVGbGFn
QW5ub3RhdGlvbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtRHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzNlN2M3MWI5OTc2MzY1N2Q0MThiNjdiOWNkZjBmZWNkMmMzZGU3NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtRHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUuanMKQEAgLTAsMCAr
MSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IEBpbnRlcm5hbAorLy8gQGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3Rh
dGlvbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL1dlYkNvcmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNlcGFyYXRlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUxZDBhMmU5NzljYjQ3ZTc4MzY4MmE3NTAzM2JlZGEzMDE2OGY2ODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcwpAQCAtMCww
ICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAb3B0aW9uYWw9QVBJX1NUUkVBTVMKKworZnVu
Y3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCmluZGV4IDQ2ODg3ZTdlZGNh
ZDZiMmE4N2VmNWU3ODI5ZDI5M2NlZjAxZTM3MjIuLjJkOTAxY2NlZDQxZjQ0NjJjNGJmMWI2NWEw
ZmRiMjI1OGRlZjc5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpAQCAtMzEsMzQgKzMxLDMgQEAgZnVuY3Rpb24gaXNSZWFk
YWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCiAKICAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsK
IH0KLQotCi1mdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKLXsK
LSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxl
U3RyZWFtQ2xvc2VkKQotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCi0gICAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKLSAgICBzdHJlYW0uQHF1ZXVl
ID0gW107Ci0gICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOwotICAgIHJl
dHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5j
ZWwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Ci19Ci0KLQotZnVuY3Rpb24gcHJv
bWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKLXsKLSAgICAidXNlIHN0cmljdCI7
Ci0KLSAgICB0cnkgewotICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07Ci0gICAgICAg
IGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2Jq
ZWN0LCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOwotICAg
IH0KLSAgICBjYXRjaChlcnJvcikgewotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJy
b3IpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUt
R3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcwppbmRleCA0ZjVlN2IzYjg0MWQ1MTBh
MjlmNTc2Zjk0MzYwOTllOGUyNzYyNjU3Li5iMThlMjgyMDQ2ZTExNWEwYTZmZGU5YzQ1NGViODlm
ZWM0MDU4NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1H
dWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0zMiwzNCArMzIsMyBAQCBmdW5j
dGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKIAogICAgIHJldHVybiAhIXN0cmVh
bS5AcmVhZGVyOwogfQotCi0KLWZ1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwg
cmVhc29uKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKLSAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKLSAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOwotICAgIHN0
cmVhbS5AcXVldWUgPSBbXTsKLSAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVh
bSk7Ci0gICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1Nv
dXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKLX0KLQotCi1m
dW5jdGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQotewotICAgICJ1
c2Ugc3RyaWN0IjsKLQotICAgIHRyeSB7Ci0gICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5
XTsKLSAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQotICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9k
LkBhcHBseShvYmplY3QsIGFyZ3MpOwotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJl
c3VsdCk7Ci0gICAgfQotICAgIGNhdGNoKGVycm9yKSB7Ci0gICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChlcnJvcik7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFy
YXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2Vi
Q29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCmluZGV4IDliZGM4ZDNiN2U5YmUyOTgw
YWZkZDZiNjEzOGMwNDg4ZmViMjZhMGYuLjk2NDdmMmJkZDc4N2U2NDhlNjlmMGQ0M2I4NmU2NzFk
ZTcwNTg5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRl
ZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTI5LDM0ICsyOSwzIEBAIGZ1bmN0aW9uIGlzUmVhZGFi
bGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQogCiAgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7CiB9
Ci0KLQotZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCi17Ci0g
ICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0
cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgIGlmIChz
dHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7Ci0gICAgc3RyZWFtLkBxdWV1ZSA9
IFtdOwotICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKLSAgICByZXR1
cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2Vs
IiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOwotfQotCi0KLWZ1bmN0aW9uIHByb21p
c2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCi17Ci0gICAgInVzZSBzdHJpY3QiOwot
Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOwotICAgICAgICBp
ZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKCk7Ci0gICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVj
dCwgYXJncyk7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKLSAgICB9
Ci0gICAgY2F0Y2goZXJyb3IpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9y
KTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUZsYWdBbm5vdGF0aW9uLVNl
cGFyYXRlLmpzLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBhcmF0ZS5q
cy1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMTUxNTJlNjNjODcwYTVhNWFkMjdjOTRkM2UzZTAzYThkNTgw
NmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBh
cmF0ZS5qcy1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogRHVwbGljYXRlIGFubm90YXRpb24g
Zm91bmQ6IGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3Rh
dGlvbi1TZXBhcmF0ZS5qcy1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9u
LVNlcGFyYXRlLmpzLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5NWJkZjgyMjQzNzY1ODI1OTE3NWJmNTZi
MDMwOWY4YjJhZGU3NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVl
QW5ub3RhdGlvbi1TZXBhcmF0ZS5qcy1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogRHVwbGlj
YXRlIGFubm90YXRpb24gZm91bmQ6IG9wdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0CmluZGV4IDU1YTIxZDQ2NTY4NjZmZThmNzM3ZjE4MzA3YjEyNjI0YTc0NDgyYWEu
LmJlYTdhZDMxMWI1ODFlZWNjNmZjOTZlMTI2MDEyZGU1MTg4ZTgxYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIEd1YXJk
ZWRCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKIAor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGls
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQzLDMxICs0NSwxNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJl
YW1Mb2NrZWRDb2RlOwogZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CiBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFi
aWxpdHk7Ci1leHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxl
U3RyZWFtQ29kZTsKLWV4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRh
YmxlU3RyZWFtQ29kZUxlbmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHk7
Ci1leHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlOwotZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9v
cENvZGVMZW5ndGg7Ci1leHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRl
ZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CiAKICNkZWZp
bmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykgXAog
ICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBndWFy
ZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCi0gICAgbWFjcm8ocHJvbWlzZUlu
dm9rZU9yTm9vcCwgZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCiAKICNk
ZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NL
RUQgMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fQ0FOQ0VMUkVBREFC
TEVTVFJFQU0gMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fUFJPTUlT
RUlOVk9LRU9STk9PUCAxCiAKICNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fQ09ERShtYWNybykgXAogICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRlZEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAotICAgIG1hY3JvKGd1YXJkZWRC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVhbSwgc19n
dWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAotICAgIG1hY3Jv
KGd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VPck5v
b3AsIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAj
ZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05B
TUUobWFjcm8pIFwKLSAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3Jv
KGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKLSAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29w
KSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcCiAgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwpAQCAtNzksNiArNjcsOCBAQCBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1T
X0FQSSkKKwogI2VuZGlmIC8vIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAogCiAjIyMgRW5kIEZp
bGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaApAQCAtMTE2LDYgKzEwNiw4IEBAIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zLmgiCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgpAQCAtMTM2LDQzICsxMjgsNiBAQCBjb25zdCBj
aGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogICAgICJ9
KVxuIiBcCiA7CiAKLWNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGlu
Q2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA0MDI7Ci1jb25zdCBjaGFyKiBzX2d1YXJkZWRC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlID0KLSAgICAiKGZ1bmN0aW9uIChzdHJlYW0s
IHJlYXNvbilcbiIgXAotICAgICJ7XG4iIFwKLSAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBc
Ci0gICAgIlxuIiBcCi0gICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKVxuIiBcCi0gICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xu
IiBcCi0gICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3Jl
ZClcbiIgXAotICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3Jl
ZEVycm9yKTtcbiIgXAotICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCi0gICAgIiAg
ICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKLSAgICAiICAgIHJl
dHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2Fu
Y2VsXCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAotICAgICJ9KVxuIiBc
Ci07Ci0KLWNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZv
a2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4OwotY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlID0KLSAgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJn
cylcbiIgXAotICAgICJ7XG4iIFwKLSAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAg
IlxuIiBcCi0gICAgIiAgICB0cnkge1xuIiBcCi0gICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9i
amVjdFtrZXldO1xuIiBcCi0gICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5k
ZWZpbmVkXCIpXG4iIFwKLSAgICAiICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
O1xuIiBcCi0gICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBh
cmdzKTtcbiIgXAotICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtc
biIgXAotICAgICIgICAgfVxuIiBcCi0gICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCi0gICAg
IiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAotICAgICIgICAgfVxu
IiBcCi0gICAgIn0pXG4iIFwKLTsKLQogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXApAQCAtMTg1LDYg
KzE0MCw5IEBAIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVpbHRp
bkJ1aWx0aW5zLmNwcAogCiAjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dy
YXBwZXIuaApAQCAtMjIwLDYgKzE3OCw4IEBAIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI2lmbmRlZiBHdWFyZGVk
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCiAjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyX2gKIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogI2luY2x1ZGUgIkd1YXJkZWRC
dWlsdGluQnVpbHRpbnMuaCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KICNp
bmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgpAQCAtMzEzLDYg
KzI3Myw4IEBAIGlubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlz
aXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXJfaAogCiAjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBh
cmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMt
cmVzdWx0CmluZGV4IDM0OGExY2ZjNDQ4NGFlZjNmNzYwZTg3OTQ2NmVmYmFiOTY2ZTUwZjQuLjhk
OTg4ODkzY2RkZjdkNWQ3MzcwMjMzYjg0ZWI5ZGVkYTZkYzdhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
R3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFy
ZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzEsNiArMzEsOCBAQAog
I2lmbmRlZiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAj
aW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDMsMzEgKzQ1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGV4dGVybiBjb25zdCBjaGFyKiBz
X2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKIGV4dGVy
biBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVMZW5ndGg7CiBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0
eTsKLWV4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGU7Ci1leHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKLWV4dGVybiBjb25zdCBpbnQgc19ndWFy
ZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGg7Ci1leHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKIAogI2RlZmluZSBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8pIFwKICAgICBt
YWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBn
dWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKLSAgICBtYWNy
byhwcm9taXNlSW52b2tlT3JOb29wLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9r
ZU9yTm9vcCwgMykgXAogCiAjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxC
VUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NLRUQgMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5f
R1VBUkRFRElOVEVSTkFMQlVJTFRJTl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCi0jZGVmaW5lIFdF
QkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1Ag
MQogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxU
SU5fQ09ERShtYWNybykgXAogICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgpIFwKLSAgICBtYWNy
byhndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxS
ZWFkYWJsZVN0cmVhbSwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlTGVuZ3RoKSBcCi0gICAgbWFjcm8oZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJ
bnZva2VPck5vb3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX2d1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAjZGVmaW5lIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNy
bykgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oaXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCkgXAotICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKIAog
I2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKICAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CkBAIC03OSw2ICs2Nyw4IEBAIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFN
U19BUEkpCisKICNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogCiAj
IyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oCkBAIC0xMTYsNiAr
MTA2LDggQEAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAKKyNpZiBFTkFCTEUoU1RS
RUFNU19BUEkpCisKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9FeGVjdXRhYmxlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgpAQCAtMTM2LDQzICsxMjgsNiBAQCBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAgICAgIn0pXG4iIFwKIDsKIAotY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKLWNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA0MDI7Ci1jb25zdCBjaGFyKiBzX2d1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQotICAgICIoZnVuY3Rpb24g
KHN0cmVhbSwgcmVhc29uKVxuIiBcCi0gICAgIntcbiIgXAotICAgICIgICAgXCJ1c2Ugc3RyaWN0
XCI7XG4iIFwKLSAgICAiXG4iIFwKLSAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKLSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7XG4iIFwKLSAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJl
YW1FcnJvcmVkKVxuIiBcCi0gICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVh
bS5Ac3RvcmVkRXJyb3IpO1xuIiBcCi0gICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwK
LSAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAotICAg
ICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJj
ZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCi0gICAg
In0pXG4iIFwKLTsKLQotY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVy
bmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4OwotY29uc3Qg
Y2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQot
ICAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCi0gICAgIntcbiIgXAotICAg
ICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKLSAgICAiICAgIHRyeSB7XG4i
IFwKLSAgICAiICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKLSAgICAiICAg
ICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAotICAgICIgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKLSAgICAiICAgICAgICB2YXIg
cmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCi0gICAgIiAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCi0gICAgIiAgICB9XG4iIFwKLSAg
ICAiICAgIGNhdGNoKGVycm9yKSB7XG4iIFwKLSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoZXJyb3IpO1xuIiBcCi0gICAgIiAgICB9XG4iIFwKLSAgICAifSlcbiIgXAotOwotCiAK
ICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCkBAIC0xODUsNiArMTQwLDkgQEAgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1RS
RUFNU19BUEkpCisKICMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
LmNwcAogCiAjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlci5oCkBAIC0yMjAsNiArMTc4LDggQEAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5B
TEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICNpZm5kZWYg
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCiAjZGVmaW5lIEd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJ
KQorCiAjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAjaW5jbHVk
ZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CiAjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaD4KQEAgLTMxMyw2ICsyNzMsOCBAQCBpbmxpbmUgdm9pZCBHdWFy
ZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRv
ciYgdmlzaQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RS
RUFNU19BUEkpCisKICNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFw
cGVyX2gKIAogIyMjIEVuZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFw
cGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDU4ZWUy
ZGFiYmFjOWMxYTZiNjU5YWIxMzJiMGE2YzQ3MWU2M2U0NTguLjJkOGEwYWIzY2Y2MmExNDQ5Njg3
NDNlNmM5ZmE3NDc1MmRiYjc5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpz
LXJlc3VsdApAQCAtNDMsMzEgKzQzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGV4dGVybiBj
b25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsK
IGV4dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVMZW5ndGg7CiBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFy
ZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4
dGVybiBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNv
ZGU7Ci1leHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3Ry
ZWFtQ29kZUxlbmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1
YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4
dGVybiBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZTsKLWV4dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9v
cENvZGVMZW5ndGg7Ci1leHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFy
ZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKIAogI2Rl
ZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8p
IFwKICAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCB1bmd1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFt
LCB1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKLSAgICBtYWNybyhw
cm9taXNlSW52b2tlT3JOb29wLCB1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwg
MykgXAogCiAjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0lTUkVBREFC
TEVTVFJFQU1MT0NLRUQgMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJ
Tl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCi0jZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJE
RURCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFD
SF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAogICAgIG1hY3JvKHVuZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCwgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgp
IFwKLSAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBj
YW5jZWxSZWFkYWJsZVN0cmVhbSwgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlTGVuZ3RoKSBcCi0gICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdV
QVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAotICAgIG1hY3JvKGNh
bmNlbFJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkg
XAotICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKIAogI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwK
ICAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
Jik7CkBAIC0xMzYsNDMgKzEyMiw2IEBAIGNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KICAgICAifSlcbiIgXAogOwogCi1jb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3Ry
dWN0OwotY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29k
ZUxlbmd0aCA9IDQwMjsKLWNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRh
YmxlU3RyZWFtQ29kZSA9Ci0gICAgIihmdW5jdGlvbiAoc3RyZWFtLCByZWFzb24pXG4iIFwKLSAg
ICAie1xuIiBcCi0gICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAotICAg
ICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAot
ICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAotICAgICIgICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpXG4iIFwKLSAgICAiICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKLSAg
ICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAotICAgICIgICAgQGZpbmlzaENsb3NpbmdS
ZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCi0gICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZv
a2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSku
dGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKLSAgICAifSlcbiIgXAotOwotCi1jb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Ci1jb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVM
ZW5ndGggPSAzMzg7Ci1jb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tl
T3JOb29wQ29kZSA9Ci0gICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKLSAg
ICAie1xuIiBcCi0gICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAotICAg
ICIgICAgdHJ5IHtcbiIgXAotICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtc
biIgXAotICAgICIgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxu
IiBcCi0gICAgIiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAotICAg
ICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwK
LSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKLSAgICAi
ICAgIH1cbiIgXAotICAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAotICAgICIgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwKLSAgICAiICAgIH1cbiIgXAotICAgICJ9
KVxuIiBcCi07Ci0KIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1s
Q2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJh
dGUuanMtcmVzdWx0CmluZGV4IDg2OGZjNmZjNmZiZjg1ZWRkN2I4ZDNjODhlYzZkMjI2NjdlMWU3
N2QuLjg5OWNjNGU0ZDAzODQzMzg3OTUwNzJlMTk5ZmNkNmNhNjQ2MmI0NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNp
bmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiB4bWxD
YXNpbmdUZXN0QnVpbHRpbnNfaAogI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAogCisj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzksNiArODEsOCBAQCBXRUJDT1JFX0ZPUkVBQ0hf
WE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQor
CiAjZW5kaWYgLy8geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zX2gKIAogIyMjIEVuZCBGaWxlOiB4bWxD
YXNpbmdUZXN0QnVpbHRpbnMuaApAQCAtMTE2LDYgKzEyMCw4IEBAIFdFQkNPUkVfRk9SRUFDSF9Y
TUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInhtbENhc2luZ1Rlc3RCdWlsdGlucy5oIgogCisj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaD4KQEAgLTE4NSw2ICsxOTEsOSBAQCBXRUJDT1JFX0ZPUkVBQ0hfWE1M
Q0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKwog
IyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuY3BwCiAKICMjIyBCZWdpbiBGaWxl
OiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgKQEAgLTIyMCw2ICsyMjksOCBAQCBXRUJD
T1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKQogI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKICNkZWZpbmUg
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CisKICNpbmNsdWRlICJ4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaCIKICNpbmNsdWRlIDxidWlsdGlu
cy9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oPgpAQCAtMzEzLDYgKzMyNCw4IEBAIGlubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RC
dWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNl
bmRpZiAvLyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKIAogIyMjIEVuZCBGaWxlOiB4
bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264119</attachid>
            <date>2015-10-26 21:41:48 -0700</date>
            <delta_ts>2015-10-27 23:02:59 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-150536-20151026214059.patch</filename>
            <type>text/plain</type>
            <size>49673</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ODYxZWZhYzQwYmZkOTkyNzNiMjllZWZlNWE1OGNlMDA1MjhjOGRhLi42N2Y0YmU3M2RmYzQwM2Rk
YmE0MWZjOTRlNDg5MDZiOTMzYmQwYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNS0xMC0yNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBCdWlsdGlucyBnZW5lcmF0b3Igc2hvdWxkIGVtaXQgRU5BQkxFKEZFQVRVUkUpIGd1
YXJkcyBiYXNlZCBvbiBAY29uZGl0aW9uYWwgYW5ub3RhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBTY2FuIEpTIGJ1aWx0aW4gZmlsZXMgZm9yIEBr
ZXk9dmFsdWUgYW5kIEBmbGFnIGFubm90YXRpb25zIGluIHNpbmdsZS1saW5lIGNvbW1lbnRzLgor
ICAgICAgICBGb3IgQGNvbmRpdGlvbmFsPUNPTkRJVElPTkFMLCBlbWl0IENPTkRJVElPTkFMIGd1
YXJkcyBhcm91bmQgdGhlIHJlbGV2YW50IG9iamVjdCdzIGNvZGUuCisKKyAgICAgICAgR2VuZXJh
dGUgcHJpbWFyeSBoZWFkZXIgaW5jbHVkZXMgc2VwYXJhdGVseSBmcm9tIHNlY29uZGFyeSBoZWFk
ZXIgaW5jbHVkZXMgc28gd2UgY2FuCisgICAgICAgIHB1dCB0aGUgZ3VhcmQgYmV0d2VlbiB0aGUg
dHdvIGhlYWRlciBncm91cHMsIGFzIGlzIGN1c3RvbWFyeSBpbiBXZWJLaXQgQysrIGNvZGUuCisK
KyAgICAgICAgTmV3IHRlc3RzOgorCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2Vi
Q29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNlcGFy
YXRlLmpzCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2Nv
bWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0Nv
bWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9p
bmNsdWRlcyk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0
b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAoZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6
CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJh
dGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRl
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X3dyYXBwZXIucHk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5n
ZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0
b3IuZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgIChCdWlsdGlu
c1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Ogor
ICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVz
KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJh
dG9yLmdlbmVyYXRlX3ByaW1hcnlfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKiBTY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAgICAoQnVpbHRpbk9iamVjdC5fX2lu
aXRfXyk6CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24ucGFyc2VfYnVpbHRpbnNfZmlsZSk6
CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24uX3BhcnNlX2Fubm90YXRpb25zKToKKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtRHVwbGljYXRlRmxhZ0Fubm90YXRp
b24tU2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
V2ViQ29yZS1EdXBsaWNhdGVLZXlWYWx1ZUFubm90YXRpb24tU2VwYXJhdGUuanM6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qczogU2ltcGxpZnkuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9X
ZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanM6IFNpbXBsaWZ5LgorICAg
ICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNl
cGFyYXRlLmpzOiBTaW1wbGlmeS4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtRHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUuanMtZXJyb3I6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1EdXBsaWNhdGVLZXlWYWx1ZUFubm90YXRpb24tU2VwYXJhdGUuanMtZXJyb3I6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVk
QnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMt
cmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5q
cy1yZXN1bHQ6CisKIDIwMTUtMTAtMjYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBsb2dnaW5nIHRvIHdhcm4gYWJvdXQgdW5kZXItZXN0aW1hdGVkIEZUTCBp
bmxpbmUgY2FjaGUgc2l6ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY1N2VkZWQzZGYzMWI0ZDgwYzVhY2Fm
NmI4MTBkMmU2OWE0ZTgwZS4uOWU0ZDA0MzE3MWZlZjY3ZDIxZGFjMDJjYTdhN2JhMGVhMzNjNzAz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEwLTI2ICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIEJ1aWx0aW5zIGdlbmVyYXRvciBzaG91bGQgZW1p
dCBFTkFCTEUoRkVBVFVSRSkgZ3VhcmRzIGJhc2VkIG9uIEBjb25kaXRpb25hbCBhbm5vdGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IEBvcHRpb25hbD1GRUFUVVJFIHdpdGggQGNvbmRpdGlvbmFsPUVOQUJMRShGRUFUVVJFKSBpbiBi
dWlsdGlucyBmaWxlcy4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LmpzOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdT
dHJhdGVneS5qczoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qczoK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM6Cisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbUludGVybmFscy5qczoKKwogMjAxNS0xMC0yNiAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZsb2F0aW5nIGJveCBpcyBtaXNwbGFjZWQgYWZ0
ZXIgY29udGVudCBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGIyODc4ZDM2MTBiYzNkMTM5N2Rj
MTE1ODNiNGQzOWI4MmY0MjZkODguLjA5NDQzNGI2NDY4YTE1M2YwZjg2Y2E4NWQxNzlmZjZjNmYz
YzhiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJp
bmVkX2ltcGxlbWVudGF0aW9uLnB5CkBAIC01Myw3ICs1Myw4IEBAIGNsYXNzIEJ1aWx0aW5zQ29t
YmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAg
IHNlY3Rpb25zID0gW10KICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGlj
ZW5zZSgpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90
RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5nZW5lcmF0ZV9wcmltYXJ5X2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKCkpCiAgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJz
dGl0dXRlKGFyZ3MpKQogICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9m
dW5jdGlvbnMoKToKICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2Vt
YmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0aW9uKGZ1bmN0aW9uKSkKQEAgLTY1
LDcgKzY2LDcgQEAgY2xhc3MgQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KEJ1aWx0aW5zR2VuZXJhdG9yKToKIAogICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlv
bnMpCiAKLSAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgIGRlZiBn
ZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgogICAgICAgICBoZWFkZXJf
aW5jbHVkZXMgPSBbCiAgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAogICAgICAgICAg
ICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgi
KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQpp
bmRleCA1YjFlYjdkNjcxY2ExMWMzNThhNTE5N2RhZGFkZTc5NTE5MGQwMDMwLi5mODFhOWU1YmFl
ODkwYmU5ZDRjYWFmYTQ4Y2U1ZjRiYjUxYzczNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFk
ZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CkBAIC01NSwxMSArNTUsMTUgQEAgY2xhc3Mg
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAg
ICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCiAg
ICAgICAgIH0KIAorICAgICAgICBjb25kaXRpb25hbF9ndWFyZCA9IHNlbGYub2JqZWN0LmFubm90
YXRpb25zLmdldCgnY29uZGl0aW9uYWwnKQorCiAgICAgICAgIHNlY3Rpb25zID0gW10KICAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQogICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1
dGUoYXJncykpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVh
ZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQotICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgaWYgY29uZGl0
aW9uYWxfZ3VhcmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoIiNp
ZiAlcyIgJSBjb25kaXRpb25hbF9ndWFyZCkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYu
Z2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcygpKQogICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoc2VsZi5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpKQogICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShh
cmdzKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jf
b2JqZWN0KHNlbGYub2JqZWN0KSkKQEAgLTY3LDYgKzcxLDggQEAgY2xhc3MgQnVpbHRpbnNTZXBh
cmF0ZUhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQogICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVhZGVyU3Rh
dGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAg
ICAgaWYgY29uZGl0aW9uYWxfZ3VhcmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoIiNlbmRpZiAvLyAlcyIgJSBjb25kaXRpb25hbF9ndWFyZCkKICAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20p
LnN1YnN0aXR1dGUoYXJncykpCiAKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25z
KQpAQCAtNzYsNyArODIsNyBAQCBjbGFzcyBCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9y
KEJ1aWx0aW5zR2VuZXJhdG9yKToKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0iIiIKIAot
ICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CisgICAgZGVmIGdlbmVyYXRl
X3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhlYWRlcl9pbmNsdWRl
cyA9IFsKICAgICAgICAgICAgIChbIldlYkNvcmUiXSwKICAgICAgICAgICAgICAgICAoIkphdmFT
Y3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oIiksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBh
cmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4
IDZjMjI5MDRiNWNlMDI1ZDc4NmVjOTMzNTEwNWVmOWJkNWNlZDY0NDcuLjA0NDM5NzVkYWRmMWIz
N2E2M2MxOGZlZWY1NWE4NTUzODJmNDFkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CkBAIC01NiwxMCArNTYs
MTUgQEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0
aW5zR2VuZXJhdG9yKToKICAgICAgICAgICAgICdvYmplY3ROYW1lTEMnOiBXS19sY2ZpcnN0KHNl
bGYub2JqZWN0Lm9iamVjdF9uYW1lKSwKICAgICAgICAgfQogCisgICAgICAgIGNvbmRpdGlvbmFs
X2d1YXJkID0gc2VsZi5vYmplY3QuYW5ub3RhdGlvbnMuZ2V0KCdjb25kaXRpb25hbCcpCisKICAg
ICAgICAgc2VjdGlvbnMgPSBbXQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0
ZV9saWNlbnNlKCkpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
RG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKLSAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLmdlbmVyYXRlX3ByaW1hcnlfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIGlm
IGNvbmRpdGlvbmFsX2d1YXJkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKCIjaWYgJXMiICUgY29uZGl0aW9uYWxfZ3VhcmQpCisgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChzZWxmLmdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoKSkKICAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUo
YXJncykpCiAgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CiAg
ICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0
cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbihmdW5jdGlvbikpCkBAIC02OCwxMCArNzMsMTIgQEAg
Y2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2Vu
ZXJhdG9yKToKICAgICAgICAgZWxpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29y
a3MuV2ViQ29yZToKICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0
ZXMuU2VwYXJhdGVXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUo
YXJncykpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNw
YWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBpZiBjb25kaXRpb25hbF9ndWFy
ZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgiI2VuZGlmIC8vICVz
XG4iICUgY29uZGl0aW9uYWxfZ3VhcmQpCiAKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNl
Y3Rpb25zKQogCi0gICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICBk
ZWYgZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKICAgICAgICAgaGVh
ZGVyX2luY2x1ZGVzID0gWwogICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKICAgICAg
ICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5oIiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBl
ci5weQppbmRleCBkYWE4OGNmNzYyMGNkYTEzNzE4NmI5OTE2NDM3YmM2ZDBiNDgxZDllLi4zMmJj
MzM2NGMwZWZmMGJiOTk3YjY1NGJkMGQ5Njk3ZmRkMGMyMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV93cmFwcGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkKQEAgLTU2LDE5ICs1NiwyNSBA
QCBjbGFzcyBCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRv
cik6CiAgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51
cHBlcigpLAogICAgICAgICB9CiAKKyAgICAgICAgY29uZGl0aW9uYWxfZ3VhcmQgPSBzZWxmLm9i
amVjdC5hbm5vdGF0aW9ucy5nZXQoJ2NvbmRpdGlvbmFsJykKKwogICAgICAgICBzZWN0aW9ucyA9
IFtdCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKICAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5n
KS5zdWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVt
cGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKLSAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAg
IGlmIGNvbmRpdGlvbmFsX2d1YXJkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKCIjaWYgJXMiICUgY29uZGl0aW9uYWxfZ3VhcmQpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLmdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoKSkKICAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1
dGUoYXJncykpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2Vw
YXJhdGVXcmFwcGVySGVhZGVyQm9pbGVycGxhdGUpLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJz
dGl0dXRlKGFyZ3MpKQorICAgICAgICBpZiBjb25kaXRpb25hbF9ndWFyZCBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgiI2VuZGlmIC8vICVzIiAlIGNvbmRpdGlvbmFs
X2d1YXJkKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRl
ckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKIAogICAgICAgICByZXR1cm4g
IlxuXG4iLmpvaW4oc2VjdGlvbnMpCiAKLSAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVz
KHNlbGYpOgorICAgIGRlZiBnZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKHNlbGYp
OgogICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCiAgICAgICAgICAgICAoWyJXZWJDb3JlIl0s
CiAgICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgIiVzQnVpbHRpbnMuaCIgJSBzZWxmLm9iamVj
dC5vYmplY3RfbmFtZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkKaW5kZXggNTg0ODNlMGMyMjMx
NWY3N2RiYWE5NzZkNGJhZGNmNzdkZTJkM2YxOS4uN2Y0NjlkM2I0NmI5MmZjN2ZlMDMwMGJmMzRm
MWRjOGY5M2M0NDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpAQCAtMTAxLDE3ICsxMDEs
MTQgQEAgY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3I6CiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIGluY2x1ZGVzLmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5h
bWUoaGVhZGVyX3BhdGgpKQogCi0gICAgICAgIHNvcnRlZF9pbmNsdWRlcyA9IHNvcnRlZChsaXN0
KGluY2x1ZGVzKSkKLSAgICAgICAgIyBBbHdheXMgaW5jbHVkZSBjb25maWcuaCBhbmQgdGhlIGNv
dW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUgb3RoZXIgaGVhZGVycy4KLSAgICAgICAgbmFtZSwgZXh0
ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1dF9maWxlbmFtZSgpKQotICAgICAgICBpZiBl
eHQgIT0gJy5oJzoKLSAgICAgICAgICAgIHNvcnRlZF9pbmNsdWRlc1s6MF0gPSBbCi0gICAgICAg
ICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhcIiIsCi0gICAgICAgICAgICAgICAgIiNpbmNs
dWRlIFwiJXMuaFwiIiAlIG5hbWUsCi0gICAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBd
Ci0KLSAgICAgICAgcmV0dXJuIHNvcnRlZF9pbmNsdWRlcworICAgICAgICByZXR1cm4gc29ydGVk
KGxpc3QoaW5jbHVkZXMpKQorCisgICAgZGVmIGdlbmVyYXRlX3ByaW1hcnlfaGVhZGVyX2luY2x1
ZGVzKHNlbGYpOgorICAgICAgICBuYW1lLCBfID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1
dF9maWxlbmFtZSgpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKFsKKyAgICAgICAgICAgICIj
aW5jbHVkZSBcImNvbmZpZy5oXCIiLAorICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAl
IG5hbWUsCisgICAgICAgIF0pCiAKICAgICBkZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJp
bmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oc2VsZiwgZnVuY3Rpb24pOgogICAgICAgICB0ZXh0ID0g
ZnVuY3Rpb24uZnVuY3Rpb25fc291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IGI1ZDRiZGU2NGQ2
YmE2Y2QxZDA3MzUzZDRmMmJkNWVhMTQ1MGFhM2YuLmYxYTMwMGYyN2E5ZjIxYjI5ODc4OGYzMTFm
OTFkOWEzNGI5MTlmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC00Nyw3ICs0Nyw4IEBAIGZ1bmN0
aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1Y3Rv
cilccysoPzpcdyspXHMqXCgoCiAKIG11bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxl
KHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQogc2luZ2xlTGluZUNvbW1lbnRS
ZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLQor
a2V5VmFsdWVBbm5vdGF0aW9uQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJeXC9cLyBAKFx3
Kyk9KFtePV0rPylcbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmbGFnQW5ub3RhdGlvbkNvbW1l
bnRSZWdFeHAgPSByZS5jb21waWxlKHIiXlwvXC8gQChcdyspW149XSo/XG4iLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQogCiBjbGFzcyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgIHBhc3MK
QEAgLTc4LDggKzc5LDkgQEAgY2xhc3MgRnJhbWV3b3JrczoKIAogCiBjbGFzcyBCdWlsdGluT2Jq
ZWN0OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmplY3RfbmFtZSwgZnVuY3Rpb25zKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgb2JqZWN0X25hbWUsIGFubm90YXRpb25zLCBmdW5jdGlvbnMp
OgogICAgICAgICBzZWxmLm9iamVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAgICAgICAgc2VsZi5h
bm5vdGF0aW9ucyA9IGFubm90YXRpb25zCiAgICAgICAgIHNlbGYuZnVuY3Rpb25zID0gZnVuY3Rp
b25zCiAgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IE5vbmUgICMgU2V0IGJ5IHRoZSBvd25pbmcg
QnVpbHRpbnNDb2xsZWN0aW9uCiAKQEAgLTEzMiw2ICsxMzQsOCBAQCBjbGFzcyBCdWlsdGluc0Nv
bGxlY3Rpb246CiAgICAgICAgICAgICBsb2cuZGVidWcobGluZSkKICAgICAgICAgbG9nLmRlYnVn
KCIiKQogCisgICAgICAgIG9iamVjdF9hbm5vdGF0aW9ucyA9IHNlbGYuX3BhcnNlX2Fubm90YXRp
b25zKHRleHQpCisKICAgICAgICAgb2JqZWN0X25hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQo
b3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCiAgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2luZyBv
YmplY3Q6ICVzIiAlIG9iamVjdF9uYW1lKQogCkBAIC0xNDQsNyArMTQ4LDcgQEAgY2xhc3MgQnVp
bHRpbnNDb2xsZWN0aW9uOgogICAgICAgICAgICAgbG9nLmRlYnVnKGZ1bmMpCiAgICAgICAgIGxv
Zy5kZWJ1ZygiIikKIAotICAgICAgICBuZXdfb2JqZWN0ID0gQnVpbHRpbk9iamVjdChvYmplY3Rf
bmFtZSwgcGFyc2VkX2Z1bmN0aW9ucykKKyAgICAgICAgbmV3X29iamVjdCA9IEJ1aWx0aW5PYmpl
Y3Qob2JqZWN0X25hbWUsIG9iamVjdF9hbm5vdGF0aW9ucywgcGFyc2VkX2Z1bmN0aW9ucykKICAg
ICAgICAgbmV3X29iamVjdC5jb2xsZWN0aW9uID0gc2VsZgogICAgICAgICBzZWxmLm9iamVjdHMu
YXBwZW5kKG5ld19vYmplY3QpCiAKQEAgLTIwNSw2ICsyMDksMjcgQEAgY2xhc3MgQnVpbHRpbnND
b2xsZWN0aW9uOgogCiAgICAgICAgIHJldHVybiBjb3B5cmlnaHRMaW5lcwogCisgICAgZGVmIF9w
YXJzZV9hbm5vdGF0aW9ucyhzZWxmLCB0ZXh0KToKKyAgICAgICAgYW5ub3RhdGlvbnMgPSB7fQor
CisgICAgICAgIGZvciBtYXRjaCBpbiBrZXlWYWx1ZUFubm90YXRpb25Db21tZW50UmVnRXhwLmZp
bmRpdGVyKHRleHQpOgorICAgICAgICAgICAgKGtleSwgdmFsdWUpID0gbWF0Y2guZ3JvdXAoMSwg
MikKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgYW5ub3RhdGlvbjogJyVzJyA9PiAnJXMn
IiAlIChrZXksIHZhbHVlKSkKKyAgICAgICAgICAgIGlmIGtleSBpbiBhbm5vdGF0aW9uczoKKyAg
ICAgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiRHVwbGljYXRlIGFubm90YXRpb24g
Zm91bmQ6ICVzIiAlIGtleSkKKworICAgICAgICAgICAgYW5ub3RhdGlvbnNba2V5XSA9IHZhbHVl
CisKKyAgICAgICAgZm9yIG1hdGNoIGluIGZsYWdBbm5vdGF0aW9uQ29tbWVudFJlZ0V4cC5maW5k
aXRlcih0ZXh0KToKKyAgICAgICAgICAgIGtleSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgICAg
ICBsb2cuZGVidWcoIkZvdW5kIGFubm90YXRpb246ICclcycgPT4gJ1RSVUUnIiAlIGtleSkKKyAg
ICAgICAgICAgIGlmIGtleSBpbiBhbm5vdGF0aW9uczoKKyAgICAgICAgICAgICAgICByYWlzZSBQ
YXJzZUV4Y2VwdGlvbigiRHVwbGljYXRlIGFubm90YXRpb24gZm91bmQ6ICVzIiAlIGtleSkKKwor
ICAgICAgICAgICAgYW5ub3RhdGlvbnNba2V5XSA9IFRydWUKKworICAgICAgICByZXR1cm4gYW5u
b3RhdGlvbnMKKwogICAgIGRlZiBfcGFyc2VfZnVuY3Rpb25zKHNlbGYsIHRleHQpOgogICAgICAg
ICB0ZXh0ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29t
bWVudFJlZ0V4cC5zdWIoIi8vXG4iLCB0ZXh0KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1EdXBsaWNhdGVGbGFnQW5u
b3RhdGlvbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL1dlYkNvcmUtRHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzNlN2M3MWI5OTc2MzY1N2Q0MThiNjdiOWNkZjBmZWNkMmMzZGU3NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L1dlYkNvcmUtRHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUuanMKQEAgLTAsMCArMSwy
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBp
bnRlcm5hbAorLy8gQGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3RhdGlv
bi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNlcGFyYXRlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZkNmZlNjA0Y2FmZDE4ZTlkOTljZGNiNzI2NmU1YWE3YmQxYjNkMjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9X
ZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcwpAQCAtMCwwICsx
LDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
QGNvbmRpdGlvbmFsPUVOQUJMRShTVFJFQU1TX0FQSSkKKy8vIEBjb25kaXRpb25hbD1VU0UoQ0Yp
CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQoreworICAgInVzZSBz
dHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJk
ZWRCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwppbmRleCA0Njg4
N2U3ZWRjYWQ2YjJhODdlZjVlNzgyOWQyOTNjZWYwMWUzNzIyLi4yYWNlYzU4OWRkOTkxNzQyYzM1
NTEzOTc4YzFlZjkwOTFjYmEwZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAY29uZGl0aW9uYWw9
RU5BQkxFKFNUUkVBTVNfQVBJKQogCiBmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0
cmVhbSkKIHsKQEAgLTMxLDM0ICszMSwzIEBAIGZ1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWQoc3RyZWFtKQogCiAgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7CiB9Ci0KLQotZnVuY3Rp
b24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCi17Ci0gICAgInVzZSBzdHJp
Y3QiOwotCi0gICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkK
LSAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgIGlmIChzdHJlYW0uQHN0YXRl
ID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7Ci0gICAgc3RyZWFtLkBxdWV1ZSA9IFtdOwotICAgIEBm
aW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKLSAgICByZXR1cm4gQHByb21pc2VJ
bnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0p
LnRoZW4oZnVuY3Rpb24oKSB7IH0pOwotfQotCi0KLWZ1bmN0aW9uIHByb21pc2VJbnZva2VPck5v
b3Aob2JqZWN0LCBrZXksIGFyZ3MpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgdHJ5IHsK
LSAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOwotICAgICAgICBpZiAodHlwZW9mIG1l
dGhvZCA9PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7Ci0gICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7Ci0g
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKLSAgICB9Ci0gICAgY2F0Y2go
ZXJyb3IpIHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKLSAgICB9Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW4tU2VwYXJhdGUuanMKaW5kZXggNGY1ZTdiM2I4NDFkNTEwYTI5ZjU3NmY5NDM2MDk5
ZThlMjc2MjY1Ny4uODBkNTNjZDFhYmY2NDhlOTNkYjY0OTRhMmFkNWIyMjM4MWU1Y2YxYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2Vi
Q29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFs
QnVpbHRpbi1TZXBhcmF0ZS5qcwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0vLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBjb25kaXRpb25hbD1FTkFCTEUoU1RS
RUFNU19BUEkpCiAvLyBAaW50ZXJuYWwKIAogZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZChzdHJlYW0pCkBAIC0zMiwzNCArMzIsMyBAQCBmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9j
a2VkKHN0cmVhbSkKIAogICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOwogfQotCi0KLWZ1bmN0
aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQotewotICAgICJ1c2Ugc3Ry
aWN0IjsKLQotICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQp
Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICBpZiAoc3RyZWFtLkBzdGF0
ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOwotICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKLSAgICBA
ZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7Ci0gICAgcmV0dXJuIEBwcm9taXNl
SW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25d
KS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKLX0KLQotCi1mdW5jdGlvbiBwcm9taXNlSW52b2tlT3JO
b29wKG9iamVjdCwga2V5LCBhcmdzKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHRyeSB7
Ci0gICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKLSAgICAgICAgaWYgKHR5cGVvZiBt
ZXRob2QgPT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOwotICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwot
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7Ci0gICAgfQotICAgIGNhdGNo
KGVycm9yKSB7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7Ci0gICAgfQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNl
cGFyYXRlLmpzCmluZGV4IDliZGM4ZDNiN2U5YmUyOTgwYWZkZDZiNjEzOGMwNDg4ZmViMjZhMGYu
Ljk2NDdmMmJkZDc4N2U2NDhlNjlmMGQ0M2I4NmU2NzFkZTcwNTg5YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAg
LTI5LDM0ICsyOSwzIEBAIGZ1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQog
CiAgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7CiB9Ci0KLQotZnVuY3Rpb24gY2FuY2VsUmVh
ZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAg
aWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBz
dG9yZWRFcnJvcik7Ci0gICAgc3RyZWFtLkBxdWV1ZSA9IFtdOwotICAgIEBmaW5pc2hDbG9zaW5n
UmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKLSAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Ao
c3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rp
b24oKSB7IH0pOwotfQotCi0KLWZ1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBr
ZXksIGFyZ3MpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgdHJ5IHsKLSAgICAgICAgdmFy
IG1ldGhvZCA9IG9iamVjdFtrZXldOwotICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVu
ZGVmaW5lZCIpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgICAg
IHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7Ci0gICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKLSAgICB9Ci0gICAgY2F0Y2goZXJyb3IpIHsKLSAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKLSAgICB9Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXht
bENhc2luZ1Rlc3QtU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKaW5kZXggZGUz
OTNiYzU5ODE0MjgyODdlMGYwNDMxOWRiNmU0MjAyYjU1ZTI2OC4uNTUwYzg5ZTAyNjE2ZTU2YzU1
NmE0MTkwYmY5ZjYxMTdkOGYxYjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0vLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBjb25kaXRpb25hbD1F
TkFCTEUoU1RSRUFNU19BUEkpCiAvLyBAaW50ZXJuYWwKIAogZnVuY3Rpb24geG1sQ2FzaW5nVGVz
dChzdHJlYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUZsYWdBbm5vdGF0aW9uLVNlcGFy
YXRlLmpzLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvV2ViQ29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcy1l
cnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMTUxNTJlNjNjODcwYTVhNWFkMjdjOTRkM2UzZTAzYThkNTgwNmU3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBhcmF0
ZS5qcy1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogRHVwbGljYXRlIGFubm90YXRpb24gZm91
bmQ6IGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3RhdGlv
bi1TZXBhcmF0ZS5qcy1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNl
cGFyYXRlLmpzLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxYjQyOWUyNzBiZjIzNGM4ZjZjY2IwZDYwNjg1
ZDViMzJmOGE0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5u
b3RhdGlvbi1TZXBhcmF0ZS5qcy1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogRHVwbGljYXRl
IGFubm90YXRpb24gZm91bmQ6IGNvbmRpdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0CmluZGV4IDU1YTIxZDQ2NTY4NjZmZThmNzM3ZjE4MzA3YjEyNjI0YTc0NDgyYWEu
LmJlYTdhZDMxMWI1ODFlZWNjNmZjOTZlMTI2MDEyZGU1MTg4ZTgxYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIEd1YXJk
ZWRCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKIAor
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGls
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQzLDMxICs0NSwxNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJl
YW1Mb2NrZWRDb2RlOwogZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CiBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFi
aWxpdHk7Ci1leHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxl
U3RyZWFtQ29kZTsKLWV4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRh
YmxlU3RyZWFtQ29kZUxlbmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHk7
Ci1leHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlOwotZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9v
cENvZGVMZW5ndGg7Ci1leHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRl
ZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CiAKICNkZWZp
bmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykgXAog
ICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBndWFy
ZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCi0gICAgbWFjcm8ocHJvbWlzZUlu
dm9rZU9yTm9vcCwgZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCiAKICNk
ZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NL
RUQgMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fQ0FOQ0VMUkVBREFC
TEVTVFJFQU0gMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fUFJPTUlT
RUlOVk9LRU9STk9PUCAxCiAKICNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fQ09ERShtYWNybykgXAogICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRlZEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAotICAgIG1hY3JvKGd1YXJkZWRC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVhbSwgc19n
dWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAotICAgIG1hY3Jv
KGd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VPck5v
b3AsIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAj
ZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05B
TUUobWFjcm8pIFwKLSAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3Jv
KGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKLSAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29w
KSBcCiAKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcCiAgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwpAQCAtNzksNiArNjcsOCBAQCBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1T
X0FQSSkKKwogI2VuZGlmIC8vIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAogCiAjIyMgRW5kIEZp
bGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaApAQCAtMTE2LDYgKzEwNiw4IEBAIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zLmgiCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgpAQCAtMTM2LDQzICsxMjgsNiBAQCBjb25zdCBj
aGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogICAgICJ9
KVxuIiBcCiA7CiAKLWNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGlu
Q2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA0MDI7Ci1jb25zdCBjaGFyKiBzX2d1YXJkZWRC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlID0KLSAgICAiKGZ1bmN0aW9uIChzdHJlYW0s
IHJlYXNvbilcbiIgXAotICAgICJ7XG4iIFwKLSAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBc
Ci0gICAgIlxuIiBcCi0gICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKVxuIiBcCi0gICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xu
IiBcCi0gICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3Jl
ZClcbiIgXAotICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3Jl
ZEVycm9yKTtcbiIgXAotICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCi0gICAgIiAg
ICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKLSAgICAiICAgIHJl
dHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2Fu
Y2VsXCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAotICAgICJ9KVxuIiBc
Ci07Ci0KLWNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZv
a2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4OwotY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlID0KLSAgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJn
cylcbiIgXAotICAgICJ7XG4iIFwKLSAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAg
IlxuIiBcCi0gICAgIiAgICB0cnkge1xuIiBcCi0gICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9i
amVjdFtrZXldO1xuIiBcCi0gICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5k
ZWZpbmVkXCIpXG4iIFwKLSAgICAiICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
O1xuIiBcCi0gICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBh
cmdzKTtcbiIgXAotICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtc
biIgXAotICAgICIgICAgfVxuIiBcCi0gICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCi0gICAg
IiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAotICAgICIgICAgfVxu
IiBcCi0gICAgIn0pXG4iIFwKLTsKLQogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXApAQCAtMTg1LDYg
KzE0MCw5IEBAIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVpbHRp
bkJ1aWx0aW5zLmNwcAogCiAjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dy
YXBwZXIuaApAQCAtMjIwLDYgKzE3OCw4IEBAIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI2lmbmRlZiBHdWFyZGVk
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCiAjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyX2gKIAorI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogI2luY2x1ZGUgIkd1YXJkZWRC
dWlsdGluQnVpbHRpbnMuaCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KICNp
bmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgpAQCAtMzEzLDYg
KzI3Myw4IEBAIGlubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlz
aXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXJfaAogCiAjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBh
cmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMt
cmVzdWx0CmluZGV4IDM0OGExY2ZjNDQ4NGFlZjNmNzYwZTg3OTQ2NmVmYmFiOTY2ZTUwZjQuLjhk
OTg4ODkzY2RkZjdkNWQ3MzcwMjMzYjg0ZWI5ZGVkYTZkYzdhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
R3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFy
ZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzEsNiArMzEsOCBAQAog
I2lmbmRlZiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAj
aW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDMsMzEgKzQ1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGV4dGVybiBjb25zdCBjaGFyKiBz
X2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKIGV4dGVy
biBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVMZW5ndGg7CiBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0
eTsKLWV4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGU7Ci1leHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKLWV4dGVybiBjb25zdCBpbnQgc19ndWFy
ZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGg7Ci1leHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKIAogI2RlZmluZSBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8pIFwKICAgICBt
YWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBn
dWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKLSAgICBtYWNy
byhwcm9taXNlSW52b2tlT3JOb29wLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9r
ZU9yTm9vcCwgMykgXAogCiAjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxC
VUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NLRUQgMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5f
R1VBUkRFRElOVEVSTkFMQlVJTFRJTl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCi0jZGVmaW5lIFdF
QkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1Ag
MQogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxU
SU5fQ09ERShtYWNybykgXAogICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgpIFwKLSAgICBtYWNy
byhndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxS
ZWFkYWJsZVN0cmVhbSwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlTGVuZ3RoKSBcCi0gICAgbWFjcm8oZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJ
bnZva2VPck5vb3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX2d1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAjZGVmaW5lIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNy
bykgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oaXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCkgXAotICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKIAog
I2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKICAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CkBAIC03OSw2ICs2Nyw4IEBAIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFN
U19BUEkpCisKICNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogCiAj
IyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oCkBAIC0xMTYsNiAr
MTA2LDggQEAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAKKyNpZiBFTkFCTEUoU1RS
RUFNU19BUEkpCisKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9FeGVjdXRhYmxlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgpAQCAtMTM2LDQzICsxMjgsNiBAQCBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAgICAgIn0pXG4iIFwKIDsKIAotY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKLWNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA0MDI7Ci1jb25zdCBjaGFyKiBzX2d1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQotICAgICIoZnVuY3Rpb24g
KHN0cmVhbSwgcmVhc29uKVxuIiBcCi0gICAgIntcbiIgXAotICAgICIgICAgXCJ1c2Ugc3RyaWN0
XCI7XG4iIFwKLSAgICAiXG4iIFwKLSAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKLSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7XG4iIFwKLSAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJl
YW1FcnJvcmVkKVxuIiBcCi0gICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVh
bS5Ac3RvcmVkRXJyb3IpO1xuIiBcCi0gICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwK
LSAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAotICAg
ICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJj
ZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCi0gICAg
In0pXG4iIFwKLTsKLQotY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVy
bmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4OwotY29uc3Qg
Y2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQot
ICAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCi0gICAgIntcbiIgXAotICAg
ICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKLSAgICAiICAgIHRyeSB7XG4i
IFwKLSAgICAiICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKLSAgICAiICAg
ICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAotICAgICIgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKLSAgICAiICAgICAgICB2YXIg
cmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCi0gICAgIiAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCi0gICAgIiAgICB9XG4iIFwKLSAg
ICAiICAgIGNhdGNoKGVycm9yKSB7XG4iIFwKLSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoZXJyb3IpO1xuIiBcCi0gICAgIiAgICB9XG4iIFwKLSAgICAifSlcbiIgXAotOwotCiAK
ICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCkBAIC0xODUsNiArMTQwLDkgQEAgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1RS
RUFNU19BUEkpCisKICMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
LmNwcAogCiAjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlci5oCkBAIC0yMjAsNiArMTc4LDggQEAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5B
TEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICNpZm5kZWYg
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCiAjZGVmaW5lIEd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJ
KQorCiAjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAjaW5jbHVk
ZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CiAjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaD4KQEAgLTMxMyw2ICsyNzMsOCBAQCBpbmxpbmUgdm9pZCBHdWFy
ZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRv
ciYgdmlzaQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RS
RUFNU19BUEkpCisKICNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFw
cGVyX2gKIAogIyMjIEVuZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFw
cGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDU4ZWUy
ZGFiYmFjOWMxYTZiNjU5YWIxMzJiMGE2YzQ3MWU2M2U0NTguLjJkOGEwYWIzY2Y2MmExNDQ5Njg3
NDNlNmM5ZmE3NDc1MmRiYjc5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpz
LXJlc3VsdApAQCAtNDMsMzEgKzQzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGV4dGVybiBj
b25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsK
IGV4dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVMZW5ndGg7CiBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFy
ZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4
dGVybiBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNv
ZGU7Ci1leHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3Ry
ZWFtQ29kZUxlbmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1
YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4
dGVybiBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZTsKLWV4dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9v
cENvZGVMZW5ndGg7Ci1leHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFy
ZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKIAogI2Rl
ZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8p
IFwKICAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCB1bmd1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFt
LCB1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKLSAgICBtYWNybyhw
cm9taXNlSW52b2tlT3JOb29wLCB1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwg
MykgXAogCiAjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0lTUkVBREFC
TEVTVFJFQU1MT0NLRUQgMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJ
Tl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCi0jZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJE
RURCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFD
SF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAogICAgIG1hY3JvKHVuZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCwgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgp
IFwKLSAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBj
YW5jZWxSZWFkYWJsZVN0cmVhbSwgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlTGVuZ3RoKSBcCi0gICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdV
QVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAotICAgIG1hY3JvKGNh
bmNlbFJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkg
XAotICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKIAogI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwK
ICAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
Jik7CkBAIC0xMzYsNDMgKzEyMiw2IEBAIGNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KICAgICAifSlcbiIgXAogOwogCi1jb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3Ry
dWN0OwotY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29k
ZUxlbmd0aCA9IDQwMjsKLWNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRh
YmxlU3RyZWFtQ29kZSA9Ci0gICAgIihmdW5jdGlvbiAoc3RyZWFtLCByZWFzb24pXG4iIFwKLSAg
ICAie1xuIiBcCi0gICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAotICAg
ICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAot
ICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAotICAgICIgICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpXG4iIFwKLSAgICAiICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKLSAg
ICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAotICAgICIgICAgQGZpbmlzaENsb3NpbmdS
ZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCi0gICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZv
a2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSku
dGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKLSAgICAifSlcbiIgXAotOwotCi1jb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Ci1jb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVM
ZW5ndGggPSAzMzg7Ci1jb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tl
T3JOb29wQ29kZSA9Ci0gICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKLSAg
ICAie1xuIiBcCi0gICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAotICAg
ICIgICAgdHJ5IHtcbiIgXAotICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtc
biIgXAotICAgICIgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxu
IiBcCi0gICAgIiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAotICAg
ICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwK
LSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKLSAgICAi
ICAgIH1cbiIgXAotICAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAotICAgICIgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwKLSAgICAiICAgIH1cbiIgXAotICAgICJ9
KVxuIiBcCi07Ci0KIAogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1s
Q2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJh
dGUuanMtcmVzdWx0CmluZGV4IDg2OGZjNmZjNmZiZjg1ZWRkN2I4ZDNjODhlYzZkMjI2NjdlMWU3
N2QuLjg5OWNjNGU0ZDAzODQzMzg3OTUwNzJlMTk5ZmNkNmNhNjQ2MmI0NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNp
bmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiB4bWxD
YXNpbmdUZXN0QnVpbHRpbnNfaAogI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAogCisj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzksNiArODEsOCBAQCBXRUJDT1JFX0ZPUkVBQ0hf
WE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQor
CiAjZW5kaWYgLy8geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zX2gKIAogIyMjIEVuZCBGaWxlOiB4bWxD
YXNpbmdUZXN0QnVpbHRpbnMuaApAQCAtMTE2LDYgKzEyMCw4IEBAIFdFQkNPUkVfRk9SRUFDSF9Y
TUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInhtbENhc2luZ1Rlc3RCdWlsdGlucy5oIgogCisj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaD4KQEAgLTE4NSw2ICsxOTEsOSBAQCBXRUJDT1JFX0ZPUkVBQ0hfWE1M
Q0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKwog
IyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuY3BwCiAKICMjIyBCZWdpbiBGaWxl
OiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgKQEAgLTIyMCw2ICsyMjksOCBAQCBXRUJD
T1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKQogI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKICNkZWZpbmUg
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CisKICNpbmNsdWRlICJ4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaCIKICNpbmNsdWRlIDxidWlsdGlu
cy9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oPgpAQCAtMzEzLDYgKzMyNCw4IEBAIGlubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RC
dWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNl
bmRpZiAvLyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKIAogIyMjIEVuZCBGaWxlOiB4
bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKaW5kZXgg
Zjk0ODEyNThhMDUxMTIwMTJlZjBkNDE2ZTljYzQ2YjA5NDExZjVlZS4uNTllYTJkNzFkOTY5ZjIy
NWYxMTcyMTc0NTBkNWI5ZWRkMWU1M2ZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKQEAgLTI0
LDcgKzI0LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gQG9wdGlvbmFsPVNUUkVBTVNf
QVBJCisvLyBAY29uZGl0aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJKQogCiBmdW5jdGlvbiBzaXpl
KGNodW5rKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0Nv
dW50UXVldWluZ1N0cmF0ZWd5LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0Nv
dW50UXVldWluZ1N0cmF0ZWd5LmpzCmluZGV4IDQ0ZDYzMGI4YjhkYzNmMjI0NjYwZTk4MTJkM2Yx
M2Y2MWM2ODJhZjMuLjNhZTkyM2U1ZjBjMzViYTBjOGM3NjNkNDU2ZDhjNDExOWZlMTE3ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJh
dGVneS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5n
U3RyYXRlZ3kuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8g
QG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAY29uZGl0aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJ
KQogCiBmdW5jdGlvbiBzaXplKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwppbmRleCA1ZjU2ZjFlYzJmMDZmZTk4OWMwZjEwNzRjMmVi
YjQ4MWNjMWMwMGIyLi42OTRlOTlmYjY0NGUyZWE2YzVjNDAxZjZmMGY0MjlkOWMyOWYwNjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
anMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpz
CkBAIC0yNCw3ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEBvcHRpb25hbD1T
VFJFQU1TX0FQSQorLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShTVFJFQU1TX0FQSSkKIAogZnVuY3Rp
b24gaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIHN0cmF0ZWd5KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIuanMKaW5kZXggOTlmMzdjOWUyMmYxMDQ4NTYyZjk0NDg1M2M2YWFl
ZWRkYTdkODE1OC4uZTZhODZkMmY5YzI2ZjMwODg0ZjlkNzg3ZTZlMzljZGJjOTcxODAwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLmpzCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLS8vIEBvcHRpb25hbD1TVFJFQU1TX0FQSQorLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShTVFJF
QU1TX0FQSSkKIAogZnVuY3Rpb24gZW5xdWV1ZShjaHVuaykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpp
bmRleCA4YWQxM2E3MDlhMTgyZGQ3NTNiMTdiYzA1NmJiYzczMWUyZDU5NzBmLi5jNzYyZTZkYTAz
M2M2YTljODYzMDUxOTMyMzk4M2JmODgxZjlkMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0y
NCw3ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEBvcHRpb25hbD1TVFJFQU1T
X0FQSQorLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShTVFJFQU1TX0FQSSkKIC8vIEBpbnRlcm5hbHMK
IAogZnVuY3Rpb24gcHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlcihzdHJlYW0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuanMKaW5kZXggY2UyNzNhOGQ5YmUzZmY1NDM0NTkwMzVmNjY1NWZjMTE2ZDE1YzBj
Yi4uMmJkMTA0MTI0YzFhY2NiYjFmNjBkZTA1OTBhNDUwMGZmYzg4YWEzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5q
cwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBAb3B0aW9uYWw9
U1RSRUFNU19BUEkKKy8vIEBjb25kaXRpb25hbD1FTkFCTEUoU1RSRUFNU19BUEkpCiAKIGZ1bmN0
aW9uIGNhbmNlbChyZWFzb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1N0cmVhbUludGVybmFscy5qcwppbmRleCA2MzUzN2Y3ZGFhYjdlNzQyZTAxOTdlYzM3ZjYz
YzU4MzQxNmI2YjQxLi5jODg4MTFlYzJmNTNkZDBhN2U2YzhmOTQ5ODdmOGQyOWZkZjA1ZTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxz
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMu
anMKQEAgLTI0LDcgKzI0LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gQG9wdGlvbmFs
PVNUUkVBTVNfQVBJCisvLyBAY29uZGl0aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJKQogLy8gQGlu
dGVybmFscwogCiBmdW5jdGlvbiBpbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKaW5kZXgg
ZDVjMWQzMTJiZjE0ZjNkMjBjNjAxNDBmZmRlMzMyYWRlNWEzMGE4Yi4uMjcxYWY2YzVjYzFjMjBj
YzMyODRkOWRkMzYzY2Q2NzFjNGJhZTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwpAQCAtMjQsNyArMjQsNyBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0vLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBjb25kaXRpb25hbD1F
TkFCTEUoU1RSRUFNU19BUEkpCiAKIGZ1bmN0aW9uIGluaXRpYWxpemVXcml0YWJsZVN0cmVhbSh1
bmRlcmx5aW5nU2luaywgc3RyYXRlZ3kpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggOTE1MWZl
ZGZmMGViODI3YzgwZDI1NmM2MWE3NmUyMjY4MTVlOGZhMS4uODQxM2I4MTFhOTU0Zjk5ZDM1NmVj
ZTA5Y2I5YmFiZDZjZjdhNzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtMjQsNyArMjQsNyBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBj
b25kaXRpb25hbD1FTkFCTEUoU1RSRUFNU19BUEkpCiAvLyBAaW50ZXJuYWxzCiAKIGZ1bmN0aW9u
IGlzV3JpdGFibGVTdHJlYW0oc3RyZWFtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264197</attachid>
            <date>2015-10-27 23:03:02 -0700</date>
            <delta_ts>2015-10-28 09:48:24 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-150536-20151027230213.patch</filename>
            <type>text/plain</type>
            <size>64535</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NDY0OTE4YTFlZmI5YjMwOTdjYjZmMWE1ZjJiMDlhYzJlNjlhZDU0Li5iMjY3Mzc2YWY5ZDAxMmQ4
Nzk3MTViY2M1MWE2OTgzYmM1OGExZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNS0xMC0yNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBCdWlsdGlucyBnZW5lcmF0b3Igc2hvdWxkIGVtaXQgRU5BQkxFKEZFQVRVUkUpIGd1
YXJkcyBiYXNlZCBvbiBAY29uZGl0aW9uYWwgYW5ub3RhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBTY2FuIEpTIGJ1aWx0aW4gZmlsZXMgZm9yIEBr
ZXk9dmFsdWUgYW5kIEBmbGFnIGFubm90YXRpb25zIGluIHNpbmdsZS1saW5lIGNvbW1lbnRzLgor
ICAgICAgICBGb3IgQGNvbmRpdGlvbmFsPUNPTkRJVElPTkFMLCBlbWl0IENPTkRJVElPTkFMIGd1
YXJkcyBhcm91bmQgdGhlIHJlbGV2YW50IG9iamVjdCdzIGNvZGUuCisKKyAgICAgICAgR2VuZXJh
dGUgcHJpbWFyeSBoZWFkZXIgaW5jbHVkZXMgc2VwYXJhdGVseSBmcm9tIHNlY29uZGFyeSBoZWFk
ZXIgaW5jbHVkZXMgc28gd2UgY2FuCisgICAgICAgIHB1dCB0aGUgZ3VhcmQgYmV0d2VlbiB0aGUg
dHdvIGhlYWRlciBncm91cHMsIGFzIGlzIGN1c3RvbWFyeSBpbiBXZWJLaXQgQysrIGNvZGUuCisK
KyAgICAgICAgTmV3IHRlc3RzOgorCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2Vi
Q29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzCisgICAgICAgIFNjcmlw
dHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBhcmF0
ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtRHVwbGljYXRlS2V5
VmFsdWVBbm5vdGF0aW9uLVNlcGFyYXRlLmpzCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAo
QnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJh
dGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVk
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuZ2Vu
ZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJfaW5jbHVk
ZXMpOgorICAgICAgICAoZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5OgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50
YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRlcyk6CisgICAg
ICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVh
ZGVyX2luY2x1ZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHk6CisgICAgICAgIChCdWlsdGluc1NlcGFy
YXRlV3JhcHBlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNT
ZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IuZ2VuZXJhdGVfc2Vjb25kYXJ5X2hlYWRlcl9pbmNsdWRl
cyk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5nZW5lcmF0ZV9o
ZWFkZXJfaW5jbHVkZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVf
aW5jbHVkZXNfZnJvbV9lbnRyaWVzKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAg
ICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX3ByaW1hcnlfaGVhZGVyX2luY2x1ZGVz
KToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5OgorICAgICAg
ICAoQnVpbHRpbk9iamVjdC5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24u
cGFyc2VfYnVpbHRpbnNfZmlsZSk6CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24uX3BhcnNl
X2Fubm90YXRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUt
QXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUR1cGxpY2F0ZUZsYWdBbm5vdGF0aW9uLVNl
cGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJh
dGUuanM6IFNpbXBsaWZ5LgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29y
ZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBTaW1wbGlmeS4KKyAgICAgICAg
KiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qczogU2ltcGxpZnkuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLUFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2VwYXJhdGUuanMtcmVzdWx0OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
RHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUuanMtZXJyb3I6IEFkZGVkLgorICAgICAg
ICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1EdXBsaWNhdGVLZXlW
YWx1ZUFubm90YXRpb24tU2VwYXJhdGUuanMtZXJyb3I6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAg
ICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQ6CisKIDIw
MTUtMTAtMjcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgVGltZWxpbmUgTWFya0RPTUNvbnRlbnQgYW5kIE1hcmtM
b2FkLCBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRhNmYxYmIzMmI0
YzhjYWIwY2U4YzhhMjdkZmI1MmEyOGNhMTlhZS4uMTJjYTE0YTQ1YWExNDk3YjhlMmVmZmZiN2Fl
NWM3YTcyYTgyMTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTEwLTI2ICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIEJ1aWx0aW5zIGdlbmVyYXRv
ciBzaG91bGQgZW1pdCBFTkFCTEUoRkVBVFVSRSkgZ3VhcmRzIGJhc2VkIG9uIEBjb25kaXRpb25h
bCBhbm5vdGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTA1MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZXBsYWNlIEBvcHRpb25hbD1GRUFUVVJFIHdpdGggQGNvbmRpdGlvbmFsPUVOQUJMRShG
RUFUVVJFKSBpbiBidWlsdGlucyBmaWxlcy4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9C
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9D
b3VudFF1ZXVpbmdTdHJhdGVneS5qczoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uanM6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5qczoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRl
cm5hbHMuanM6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmpzOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanM6CisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAqIE1vZHVs
ZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qczoKKwogMjAxNS0xMC0yNyAgSHVu
c2VvcCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NhaXJvXSBJ
bmNvcnJlY3QgZGFzaGVkIGFuZCBkb3R0ZWQgYm9yZGVyIHBhaW50aW5nIGFmdGVyIHIxNzc2ODYu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5CmluZGV4IGIyODc4ZDM2MTBiYzNkMTM5N2RjMTE1ODNiNGQzOWI4MmY0MjZk
ODguLjA5NDQzNGI2NDY4YTE1M2YwZjg2Y2E4NWQxNzlmZjZjNmYzYzhiOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9u
LnB5CkBAIC01Myw3ICs1Myw4IEBAIGNsYXNzIEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgIHNlY3Rpb25zID0gW10KICAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQogICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0
aXR1dGUoYXJncykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRl
cl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9wcmlt
YXJ5X2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5l
cmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKCkpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQogICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKICAgICAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5n
X3NlY3Rpb25fZm9yX2Z1bmN0aW9uKGZ1bmN0aW9uKSkKQEAgLTY1LDcgKzY2LDcgQEAgY2xhc3Mg
QnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9y
KToKIAogICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCiAKLSAgICBkZWYgZ2Vu
ZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgIGRlZiBnZW5lcmF0ZV9zZWNvbmRhcnlf
aGVhZGVyX2luY2x1ZGVzKHNlbGYpOgogICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCiAgICAg
ICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAogICAgICAgICAgICAgICAgICgiSmF2YVNjcmlw
dENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgiKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQppbmRleCA1YjFlYjdkNjcxY2Ex
MWMzNThhNTE5N2RhZGFkZTc5NTE5MGQwMDMwLi5mODFhOWU1YmFlODkwYmU5ZDRjYWFmYTQ4Y2U1
ZjRiYjUxYzczNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJh
dGVfaGVhZGVyLnB5CkBAIC01NSwxMSArNTUsMTUgQEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUhl
YWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgICAgICAnb2JqZWN0TmFt
ZSc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCiAgICAgICAgIH0KIAorICAgICAg
ICBjb25kaXRpb25hbF9ndWFyZCA9IHNlbGYub2JqZWN0LmFubm90YXRpb25zLmdldCgnY29uZGl0
aW9uYWwnKQorCiAgICAgICAgIHNlY3Rpb25zID0gW10KICAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxh
dGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkVG9w
KS5zdWJzdGl0dXRlKGFyZ3MpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0
ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgaWYgY29uZGl0aW9uYWxfZ3VhcmQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoIiNpZiAlcyIgJSBjb25kaXRpb25h
bF9ndWFyZCkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2Vjb25kYXJ5
X2hlYWRlcl9pbmNsdWRlcygpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0
ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxh
dGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKICAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYub2JqZWN0
KSkKQEAgLTY3LDYgKzcxLDggQEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRv
cihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVy
YXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQogICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVhZGVyU3RhdGljTWFjcm9zKS5zdWJzdGl0
dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5h
bWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgaWYgY29uZGl0aW9uYWxf
Z3VhcmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoIiNlbmRpZiAv
LyAlcyIgJSBjb25kaXRpb25hbF9ndWFyZCkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJncykp
CiAKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQpAQCAtNzYsNyArODIsNyBA
QCBjbGFzcyBCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9y
KToKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0iIiIKIAotICAgIGRlZiBnZW5lcmF0ZV9o
ZWFkZXJfaW5jbHVkZXMoc2VsZik6CisgICAgZGVmIGdlbmVyYXRlX3NlY29uZGFyeV9oZWFkZXJf
aW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKICAgICAgICAgICAg
IChbIldlYkNvcmUiXSwKICAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0
aW5zL0J1aWx0aW5VdGlscy5oIiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlv
bi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDZjMjI5MDRiNWNlMDI1ZDc4
NmVjOTMzNTEwNWVmOWJkNWNlZDY0NDcuLjA0NDM5NzVkYWRmMWIzN2E2M2MxOGZlZWY1NWE4NTUz
ODJmNDFkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CkBAIC01NiwxMCArNTYsMTUgQEAgY2xhc3MgQnVpbHRp
bnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKICAg
ICAgICAgICAgICdvYmplY3ROYW1lTEMnOiBXS19sY2ZpcnN0KHNlbGYub2JqZWN0Lm9iamVjdF9u
YW1lKSwKICAgICAgICAgfQogCisgICAgICAgIGNvbmRpdGlvbmFsX2d1YXJkID0gc2VsZi5vYmpl
Y3QuYW5ub3RhdGlvbnMuZ2V0KCdjb25kaXRpb25hbCcpCisKICAgICAgICAgc2VjdGlvbnMgPSBb
XQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCiAgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZyku
c3Vic3RpdHV0ZShhcmdzKSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVf
aGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRl
X3ByaW1hcnlfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIGlmIGNvbmRpdGlvbmFsX2d1YXJk
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCIjaWYgJXMiICUgY29u
ZGl0aW9uYWxfZ3VhcmQpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3Nl
Y29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAgIGZv
ciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CiAgICAgICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9m
dW5jdGlvbihmdW5jdGlvbikpCkBAIC02OCwxMCArNzMsMTIgQEAgY2xhc3MgQnVpbHRpbnNTZXBh
cmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKICAgICAgICAg
ZWxpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29yZToKICAgICAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVXZWJDb3Jl
SW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0
dXRlKGFyZ3MpKQorICAgICAgICBpZiBjb25kaXRpb25hbF9ndWFyZCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgiI2VuZGlmIC8vICVzXG4iICUgY29uZGl0aW9uYWxf
Z3VhcmQpCiAKICAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQogCi0gICAgZGVm
IGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICBkZWYgZ2VuZXJhdGVfc2Vjb25k
YXJ5X2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKICAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWwog
ICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKICAgICAgICAgICAgICAgICAoIkphdmFT
Y3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIiksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQppbmRleCBkYWE4OGNm
NzYyMGNkYTEzNzE4NmI5OTE2NDM3YmM2ZDBiNDgxZDllLi4zMmJjMzM2NGMwZWZmMGJiOTk3YjY1
NGJkMGQ5Njk3ZmRkMGMyMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX3dyYXBwZXIucHkKQEAgLTU2LDE5ICs1NiwyNSBAQCBjbGFzcyBCdWlsdGluc1Nl
cGFyYXRlV3JhcHBlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CiAgICAgICAgICAgICAn
b2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAogICAgICAgICB9
CiAKKyAgICAgICAgY29uZGl0aW9uYWxfZ3VhcmQgPSBzZWxmLm9iamVjdC5hbm5vdGF0aW9ucy5n
ZXQoJ2NvbmRpdGlvbmFsJykKKwogICAgICAgICBzZWN0aW9ucyA9IFtdCiAgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKICAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3Mp
KQogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1
ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNl
bGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIGlmIGNvbmRpdGlvbmFsX2d1
YXJkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCIjaWYgJXMiICUg
Y29uZGl0aW9uYWxfZ3VhcmQpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRl
X3NlY29uZGFyeV9oZWFkZXJfaW5jbHVkZXMoKSkKICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVXcmFwcGVySGVhZGVy
Qm9pbGVycGxhdGUpLnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChU
ZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAg
ICAgICBpZiBjb25kaXRpb25hbF9ndWFyZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlY3Rp
b25zLmFwcGVuZCgiI2VuZGlmIC8vICVzIiAlIGNvbmRpdGlvbmFsX2d1YXJkKQogICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRv
bSkuc3Vic3RpdHV0ZShhcmdzKSkKIAogICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlv
bnMpCiAKLSAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgIGRlZiBn
ZW5lcmF0ZV9zZWNvbmRhcnlfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgogICAgICAgICBoZWFkZXJf
aW5jbHVkZXMgPSBbCiAgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCiAgICAgICAgICAgICAgICAg
KCJXZWJDb3JlIiwgIiVzQnVpbHRpbnMuaCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlu
c19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc19nZW5lcmF0b3IucHkKaW5kZXggNTg0ODNlMGMyMjMxNWY3N2RiYWE5NzZkNGJhZGNm
NzdkZTJkM2YxOS4uN2Y0NjlkM2I0NmI5MmZjN2ZlMDMwMGJmMzRmMWRjOGY5M2M0NDFjNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
Z2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRvci5weQpAQCAtMTAxLDE3ICsxMDEsMTQgQEAgY2xhc3MgQnVpbHRp
bnNHZW5lcmF0b3I6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGluY2x1ZGVz
LmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5hbWUoaGVhZGVyX3BhdGgpKQog
Ci0gICAgICAgIHNvcnRlZF9pbmNsdWRlcyA9IHNvcnRlZChsaXN0KGluY2x1ZGVzKSkKLSAgICAg
ICAgIyBBbHdheXMgaW5jbHVkZSBjb25maWcuaCBhbmQgdGhlIGNvdW50ZXJwYXJ0IGhlYWRlciBi
ZWZvcmUgb3RoZXIgaGVhZGVycy4KLSAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4
dChzZWxmLm91dHB1dF9maWxlbmFtZSgpKQotICAgICAgICBpZiBleHQgIT0gJy5oJzoKLSAgICAg
ICAgICAgIHNvcnRlZF9pbmNsdWRlc1s6MF0gPSBbCi0gICAgICAgICAgICAgICAgIiNpbmNsdWRl
IFwiY29uZmlnLmhcIiIsCi0gICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAlIG5h
bWUsCi0gICAgICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBdCi0KLSAgICAgICAgcmV0dXJu
IHNvcnRlZF9pbmNsdWRlcworICAgICAgICByZXR1cm4gc29ydGVkKGxpc3QoaW5jbHVkZXMpKQor
CisgICAgZGVmIGdlbmVyYXRlX3ByaW1hcnlfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAg
ICBuYW1lLCBfID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1dF9maWxlbmFtZSgpKQorICAg
ICAgICByZXR1cm4gJ1xuJy5qb2luKFsKKyAgICAgICAgICAgICIjaW5jbHVkZSBcImNvbmZpZy5o
XCIiLAorICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAlIG5hbWUsCisgICAgICAgIF0p
CiAKICAgICBkZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVu
Y3Rpb24oc2VsZiwgZnVuY3Rpb24pOgogICAgICAgICB0ZXh0ID0gZnVuY3Rpb24uZnVuY3Rpb25f
c291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX21vZGVsLnB5CmluZGV4IGI1ZDRiZGU2NGQ2YmE2Y2QxZDA3MzUzZDRmMmJk
NWVhMTQ1MGFhM2YuLmYxYTMwMGYyN2E5ZjIxYjI5ODc4OGYzMTFmOTFkOWEzNGI5MTlmZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5z
X21vZGVsLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX21vZGVsLnB5CkBAIC00Nyw3ICs0Nyw4IEBAIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVy
ID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgo
CiAKIG11bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQogc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxl
KHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLQora2V5VmFsdWVBbm5vdGF0aW9u
Q29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJeXC9cLyBAKFx3Kyk9KFtePV0rPylcbiIsIHJl
Lk1VTFRJTElORSB8IHJlLlMpCitmbGFnQW5ub3RhdGlvbkNvbW1lbnRSZWdFeHAgPSByZS5jb21w
aWxlKHIiXlwvXC8gQChcdyspW149XSo/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQogCiBjbGFz
cyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTc4LDggKzc5LDkgQEAg
Y2xhc3MgRnJhbWV3b3JrczoKIAogCiBjbGFzcyBCdWlsdGluT2JqZWN0OgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBvYmplY3RfbmFtZSwgZnVuY3Rpb25zKToKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgb2JqZWN0X25hbWUsIGFubm90YXRpb25zLCBmdW5jdGlvbnMpOgogICAgICAgICBzZWxmLm9i
amVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAgICAgICAgc2VsZi5hbm5vdGF0aW9ucyA9IGFubm90
YXRpb25zCiAgICAgICAgIHNlbGYuZnVuY3Rpb25zID0gZnVuY3Rpb25zCiAgICAgICAgIHNlbGYu
Y29sbGVjdGlvbiA9IE5vbmUgICMgU2V0IGJ5IHRoZSBvd25pbmcgQnVpbHRpbnNDb2xsZWN0aW9u
CiAKQEAgLTEzMiw2ICsxMzQsOCBAQCBjbGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CiAgICAgICAg
ICAgICBsb2cuZGVidWcobGluZSkKICAgICAgICAgbG9nLmRlYnVnKCIiKQogCisgICAgICAgIG9i
amVjdF9hbm5vdGF0aW9ucyA9IHNlbGYuX3BhcnNlX2Fubm90YXRpb25zKHRleHQpCisKICAgICAg
ICAgb2JqZWN0X25hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShm
aWxlbmFtZSkpCiAgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2luZyBvYmplY3Q6ICVzIiAlIG9iamVj
dF9uYW1lKQogCkBAIC0xNDQsNyArMTQ4LDcgQEAgY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgog
ICAgICAgICAgICAgbG9nLmRlYnVnKGZ1bmMpCiAgICAgICAgIGxvZy5kZWJ1ZygiIikKIAotICAg
ICAgICBuZXdfb2JqZWN0ID0gQnVpbHRpbk9iamVjdChvYmplY3RfbmFtZSwgcGFyc2VkX2Z1bmN0
aW9ucykKKyAgICAgICAgbmV3X29iamVjdCA9IEJ1aWx0aW5PYmplY3Qob2JqZWN0X25hbWUsIG9i
amVjdF9hbm5vdGF0aW9ucywgcGFyc2VkX2Z1bmN0aW9ucykKICAgICAgICAgbmV3X29iamVjdC5j
b2xsZWN0aW9uID0gc2VsZgogICAgICAgICBzZWxmLm9iamVjdHMuYXBwZW5kKG5ld19vYmplY3Qp
CiAKQEAgLTIwNSw2ICsyMDksMjcgQEAgY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgogCiAgICAg
ICAgIHJldHVybiBjb3B5cmlnaHRMaW5lcwogCisgICAgZGVmIF9wYXJzZV9hbm5vdGF0aW9ucyhz
ZWxmLCB0ZXh0KToKKyAgICAgICAgYW5ub3RhdGlvbnMgPSB7fQorCisgICAgICAgIGZvciBtYXRj
aCBpbiBrZXlWYWx1ZUFubm90YXRpb25Db21tZW50UmVnRXhwLmZpbmRpdGVyKHRleHQpOgorICAg
ICAgICAgICAgKGtleSwgdmFsdWUpID0gbWF0Y2guZ3JvdXAoMSwgMikKKyAgICAgICAgICAgIGxv
Zy5kZWJ1ZygiRm91bmQgYW5ub3RhdGlvbjogJyVzJyA9PiAnJXMnIiAlIChrZXksIHZhbHVlKSkK
KyAgICAgICAgICAgIGlmIGtleSBpbiBhbm5vdGF0aW9uczoKKyAgICAgICAgICAgICAgICByYWlz
ZSBQYXJzZUV4Y2VwdGlvbigiRHVwbGljYXRlIGFubm90YXRpb24gZm91bmQ6ICVzIiAlIGtleSkK
KworICAgICAgICAgICAgYW5ub3RhdGlvbnNba2V5XSA9IHZhbHVlCisKKyAgICAgICAgZm9yIG1h
dGNoIGluIGZsYWdBbm5vdGF0aW9uQ29tbWVudFJlZ0V4cC5maW5kaXRlcih0ZXh0KToKKyAgICAg
ICAgICAgIGtleSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBsb2cuZGVidWcoIkZvdW5k
IGFubm90YXRpb246ICclcycgPT4gJ1RSVUUnIiAlIGtleSkKKyAgICAgICAgICAgIGlmIGtleSBp
biBhbm5vdGF0aW9uczoKKyAgICAgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiRHVw
bGljYXRlIGFubm90YXRpb24gZm91bmQ6ICVzIiAlIGtleSkKKworICAgICAgICAgICAgYW5ub3Rh
dGlvbnNba2V5XSA9IFRydWUKKworICAgICAgICByZXR1cm4gYW5ub3RhdGlvbnMKKwogICAgIGRl
ZiBfcGFyc2VfZnVuY3Rpb25zKHNlbGYsIHRleHQpOgogICAgICAgICB0ZXh0ID0gbXVsdGlsaW5l
Q29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8v
XG4iLCB0ZXh0KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29y
ZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MDhi
M2M3ZjM0YWJhM2NiYzEyNTc1YWMxZmRlMjUyNTlkOGJhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUFyYml0
cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2VwYXJhdGUuanMKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBjb25kaXRpb25hbD1F
TkFCTEUoU1RSRUFNU19BUEkpIHx8IFVTRShDRikKKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVh
bUxvY2tlZChzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJl
YW0uQHJlYWRlcjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtRHVwbGljYXRlRmxhZ0Fubm90YXRpb24tU2VwYXJhdGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3Jl
LUR1cGxpY2F0ZUZsYWdBbm5vdGF0aW9uLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczZTdjNzFi
OTk3NjM2NTdkNDE4YjY3YjljZGYwZmVjZDJjM2RlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUR1cGxpY2F0
ZUZsYWdBbm5vdGF0aW9uLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAaW50ZXJuYWwKKy8vIEBpbnRl
cm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS1EdXBsaWNhdGVLZXlWYWx1ZUFubm90YXRpb24tU2VwYXJhdGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUR1cGxp
Y2F0ZUtleVZhbHVlQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDZmZTYwNGNh
ZmQxOGU5ZDk5Y2RjYjcyNjZlNWFhN2JkMWIzZDIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1EdXBsaWNhdGVL
ZXlWYWx1ZUFubm90YXRpb24tU2VwYXJhdGUuanMKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBjb25kaXRpb25hbD1FTkFC
TEUoU1RSRUFNU19BUEkpCisvLyBAY29uZGl0aW9uYWw9VVNFKENGKQorCitmdW5jdGlvbiBpc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJl
dHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKaW5kZXggNDY4ODdlN2VkY2FkNmIyYTg3ZWY1
ZTc4MjlkMjkzY2VmMDFlMzcyMi4uMmFjZWM1ODlkZDk5MTc0MmMzNTUxMzk3OGMxZWY5MDkxY2Jh
MGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGlu
LVNlcGFyYXRlLmpzCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8v
IEBvcHRpb25hbD1TVFJFQU1TX0FQSQorLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShTVFJFQU1TX0FQ
SSkKIAogZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCiB7CkBAIC0zMSwz
NCArMzEsMyBAQCBmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKIAogICAg
IHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOwogfQotCi0KLWZ1bmN0aW9uIGNhbmNlbFJlYWRhYmxl
U3RyZWFtKHN0cmVhbSwgcmVhc29uKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmIChz
dHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKLSAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVk
RXJyb3IpOwotICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKLSAgICBAZmluaXNoQ2xvc2luZ1JlYWRh
YmxlU3RyZWFtKHN0cmVhbSk7Ci0gICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVh
bS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkg
eyB9KTsKLX0KLQotCi1mdW5jdGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBh
cmdzKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHRyeSB7Ci0gICAgICAgIHZhciBtZXRo
b2QgPSBvYmplY3Rba2V5XTsKLSAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmlu
ZWQiKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICB2YXIg
cmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwotICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKHJlc3VsdCk7Ci0gICAgfQotICAgIGNhdGNoKGVycm9yKSB7Ci0gICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVk
SW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRl
LmpzCmluZGV4IDRmNWU3YjNiODQxZDUxMGEyOWY1NzZmOTQzNjA5OWU4ZTI3NjI2NTcuLjgwZDUz
Y2QxYWJmNjQ4ZTkzZGI2NDk0YTJhZDViMjIzODFlNWNmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVy
bmFsQnVpbHRpbi1TZXBhcmF0ZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUu
anMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gQG9wdGlvbmFs
PVNUUkVBTVNfQVBJCisvLyBAY29uZGl0aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJKQogLy8gQGlu
dGVybmFsCiAKIGZ1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQpAQCAtMzIs
MzQgKzMyLDMgQEAgZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCiAKICAg
ICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKIH0KLQotCi1mdW5jdGlvbiBjYW5jZWxSZWFkYWJs
ZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAo
c3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQotICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0
cmVhbUVycm9yZWQpCi0gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3Jl
ZEVycm9yKTsKLSAgICBzdHJlYW0uQHF1ZXVlID0gW107Ci0gICAgQGZpbmlzaENsb3NpbmdSZWFk
YWJsZVN0cmVhbShzdHJlYW0pOwotICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJl
YW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigp
IHsgfSk7Ci19Ci0KLQotZnVuY3Rpb24gcHJvbWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleSwg
YXJncykKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICB0cnkgewotICAgICAgICB2YXIgbWV0
aG9kID0gb2JqZWN0W2tleV07Ci0gICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZp
bmVkIikKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgdmFy
IHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZShyZXN1bHQpOwotICAgIH0KLSAgICBjYXRjaChlcnJvcikgewotICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwppbmRleCA5
YmRjOGQzYjdlOWJlMjk4MGFmZGQ2YjYxMzhjMDQ4OGZlYjI2YTBmLi45NjQ3ZjJiZGQ3ODdlNjQ4
ZTY5ZjBkNDNiODZlNjcxZGU3MDU4OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJh
dGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
V2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0yOSwzNCArMjksMyBAQCBm
dW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKIAogICAgIHJldHVybiAhIXN0
cmVhbS5AcmVhZGVyOwogfQotCi0KLWZ1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVh
bSwgcmVhc29uKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmIChzdHJlYW0uQHN0YXRl
ID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKTsKLSAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkK
LSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOwotICAg
IHN0cmVhbS5AcXVldWUgPSBbXTsKLSAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0
cmVhbSk7Ci0gICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWlu
Z1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKLX0KLQot
Ci1mdW5jdGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQotewotICAg
ICJ1c2Ugc3RyaWN0IjsKLQotICAgIHRyeSB7Ci0gICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rb
a2V5XTsKLSAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQotICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICB2YXIgcmVzdWx0ID0gbWV0
aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KHJlc3VsdCk7Ci0gICAgfQotICAgIGNhdGNoKGVycm9yKSB7Ci0gICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChlcnJvcik7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFy
YXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2Vi
Q29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzCmluZGV4IGRlMzkzYmM1OTgxNDI4Mjg3ZTBm
MDQzMTlkYjZlNDIwMmI1NWUyNjguLjU1MGM4OWUwMjYxNmU1NmM1NTZhNDE5MGJmOWY2MTE3ZDhm
MWI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3Qt
U2VwYXJhdGUuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8g
QG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAY29uZGl0aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJ
KQogLy8gQGludGVybmFsCiAKIGZ1bmN0aW9uIHhtbENhc2luZ1Rlc3Qoc3RyZWFtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOThjMWYzY2Q2ZWE5NThmNmM1NDQ2MzkzY2FjMDlhYjViZTRmNTY0OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1
bHQKQEAgLTAsMCArMSwyODAgQEAKKyMjIyBCZWdpbiBGaWxlOiBBcmJpdHJhcnlDb25kaXRpb25h
bEd1YXJkQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxl
cyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgQXJiaXRyYXJ5Q29uZGl0
aW9uYWxHdWFyZEJ1aWx0aW5zX2gKKyNkZWZpbmUgQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1
aWx0aW5zX2gKKworI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkgfHwgVVNFKENGKQorCisjaW5jbHVk
ZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIEFyYml0cmFy
eUNvbmRpdGlvbmFsR3VhcmQgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2FyYml0cmFyeUNvbmRp
dGlvbmFsR3VhcmRJc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4dGVybiBjb25zdCBpbnQg
c19hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5n
dGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJiaXRyYXJ5Q29uZGl0
aW9uYWxHdWFyZElzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKKwor
I2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRSQVJZQ09ORElUSU9OQUxHVUFSRF9CVUlMVElO
X0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBhcmJpdHJh
cnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorCisjZGVmaW5l
IFdFQkNPUkVfQlVJTFRJTl9BUkJJVFJBUllDT05ESVRJT05BTEdVQVJEX0lTUkVBREFCTEVTVFJF
QU1MT0NLRUQgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9BUkJJVFJBUllDT05ESVRJT05B
TEdVQVJEX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGFyYml0cmFyeUNvbmRpdGlv
bmFsR3VhcmRJc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZCwgc19hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVM
ZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRSQVJZQ09ORElUSU9OQUxH
VUFSRF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxl
U3RyZWFtTG9ja2VkKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVB
Q0hfQVJCSVRSQVJZQ09ORElUSU9OQUxHVUFSRF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUg
V0VCQ09SRV9CVUlMVElOX0FSQklUUkFSWUNPTkRJVElPTkFMR1VBUkRfRVhJU1RTKG9iamVjdCwg
ZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKSB8
fCBVU0UoQ0YpCisKKyNlbmRpZiAvLyBBcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnNf
aAorCisjIyMgRW5kIEZpbGU6IEFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRCdWlsdGlucy5oCisK
KyMjIyBCZWdpbiBGaWxlOiBBcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMuY3BwCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMg
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFyYml0cmFyeUNv
bmRpdGlvbmFsR3VhcmRCdWlsdGlucy5oIgorCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKSB8fCBV
U0UoQ0YpCisKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVu
dGltZS9FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hcmJpdHJhcnlDb25k
aXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0g
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19hcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGggPSA3
MTsKK2NvbnN0IGNoYXIqIHNfYXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZElzUmVhZGFibGVTdHJl
YW1Mb2NrZWRDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXR1
cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVu
dERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRp
bnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkuYXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUj
I1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9GT1JFQUNIX0FSQklUUkFSWUNPTkRJVElPTkFMR1VB
UkRfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1RSRUFNU19BUEkpIHx8IFVTRShDRikKKworIyMjIEVuZCBGaWxlOiBBcmJpdHJh
cnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBBcmJpdHJh
cnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKwor
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZu
ZGVmIEFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRCdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBB
cmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnNXcmFwcGVyX2gKKworI2lmIEVOQUJMRShT
VFJFQU1TX0FQSSkgfHwgVVNFKENGKQorCisjaW5jbHVkZSAiQXJiaXRyYXJ5Q29uZGl0aW9uYWxH
dWFyZEJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5j
bHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVp
bHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zV3JhcHBlcihKU0M6
OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0FS
QklUUkFSWUNPTkRJVElPTkFMR1VBUkRfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVf
QlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtl
U291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkK
KyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0FSQklUUkFSWUNPTkRJVElPTkFMR1VBUkRfQlVJTFRJ
Tl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFM
SVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAg
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisg
ICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
XyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX0FSQklUUkFSWUNPTkRJVElP
TkFMR1VBUkRfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVm
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRS
QVJZQ09ORElUSU9OQUxHVUFSRF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElO
X0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZh
dGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9BUkJJVFJBUllD
T05ESVRJT05BTEdVQVJEX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFN
RVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7
XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFt
ZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRSQVJZQ09ORElUSU9OQUxH
VUFSRF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUg
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFy
ZEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMj
bmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpX
ZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1l
KCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRh
YmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNP
UkVfRk9SRUFDSF9BUkJJVFJBUllDT05ESVRJT05BTEdVQVJEX0JVSUxUSU5fQ09ERShERUZJTkVf
QlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwor
CitpbmxpbmUgdm9pZCBBcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnNXcmFwcGVyOjpl
eHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0u
cHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFt
ZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0FSQklUUkFSWUNPTkRJVElP
TkFMR1VBUkRfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3Vu
ZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIEFyYml0cmFyeUNvbmRpdGlvbmFs
R3VhcmRCdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBBcmJpdHJhcnlD
b25kaXRpb25hbEd1YXJkQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7
IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNp
dChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9BUkJJVFJBUllDT05ESVRJT05BTEdVQVJEX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5k
ZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBBcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9u
LnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5G
dW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7
CisgICAgV0VCQ09SRV9GT1JFQUNIX0FSQklUUkFSWUNPTkRJVElPTkFMR1VBUkRfQlVJTFRJTl9D
T0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5l
IHZvaWQgQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUp
IHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFD
SF9BUkJJVFJBUllDT05ESVRJT05BTEdVQVJEX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9G
VU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkgfHwgVVNFKENGKQorCisjZW5k
aWYgLy8gQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zV3JhcHBlcl9oCisKKyMjIyBF
bmQgRmlsZTogQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zV3JhcHBlci5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUZsYWdBbm5vdGF0aW9uLVNlcGFyYXRlLmpzLWVycm9yIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcy1lcnJvcgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMTUxNTJlNjNjODcwYTVhNWFkMjdjOTRkM2UzZTAzYThkNTgwNmU3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS1EdXBsaWNhdGVGbGFnQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcy1lcnJvcgpAQCAt
MCwwICsxIEBACitFUlJPUjogRHVwbGljYXRlIGFubm90YXRpb24gZm91bmQ6IGludGVybmFsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3RhdGlvbi1TZXBhcmF0ZS5qcy1l
cnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUtRHVwbGljYXRlS2V5VmFsdWVBbm5vdGF0aW9uLVNlcGFyYXRlLmpzLWVycm9y
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYxYjQyOWUyNzBiZjIzNGM4ZjZjY2IwZDYwNjg1ZDViMzJmOGE0ZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLUR1cGxpY2F0ZUtleVZhbHVlQW5ub3RhdGlvbi1TZXBhcmF0
ZS5qcy1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogRHVwbGljYXRlIGFubm90YXRpb24gZm91
bmQ6IGNvbmRpdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRl
LmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4
IDU1YTIxZDQ2NTY4NjZmZThmNzM3ZjE4MzA3YjEyNjI0YTc0NDgyYWEuLmJlYTdhZDMxMWI1ODFl
ZWNjNmZjOTZlMTI2MDEyZGU1MTg4ZTgxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0CkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNfaAogI2RlZmluZSBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKIAorI2lmIEVOQUJMRShTVFJF
QU1TX0FQSSkKKwogI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTQzLDMxICs0NSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBleHRlcm4g
Y29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlOwog
ZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENv
ZGVMZW5ndGg7CiBleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHk7Ci1leHRlcm4g
Y29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKLWV4
dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxl
bmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHk7Ci1leHRlcm4gY29uc3Qg
Y2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOwotZXh0ZXJuIGNv
bnN0IGludCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGg7Ci1l
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CiAKICNkZWZpbmUgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykgXAogICAgIG1hY3JvKGlzUmVh
ZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwg
MSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBndWFyZGVkQnVpbHRpbkNhbmNl
bFJlYWRhYmxlU3RyZWFtLCAyKSBcCi0gICAgbWFjcm8ocHJvbWlzZUludm9rZU9yTm9vcCwgZ3Vh
cmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCiAKICNkZWZpbmUgV0VCQ09SRV9C
VUlMVElOX0dVQVJERURCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NLRUQgMQotI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fQ0FOQ0VMUkVBREFCTEVTVFJFQU0gMQotI2Rl
ZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fUFJPTUlTRUlOVk9LRU9STk9PUCAx
CiAKICNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERSht
YWNybykgXAogICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENv
ZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3Ry
ZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAotICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluQ2FuY2VsUmVh
ZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVhbSwgc19ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAotICAgIG1hY3JvKGd1YXJkZWRCdWlsdGlu
UHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VPck5vb3AsIHNfZ3VhcmRlZEJ1
aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAjZGVmaW5lIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKLSAg
ICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKGlzUmVhZGFibGVTdHJl
YW1Mb2NrZWQpIFwKLSAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wKSBcCiAKICNkZWZpbmUg
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVu
dENvdW50KSBcCiAgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0
b3IoSlNDOjpWTSYpOwpAQCAtNzksNiArNjcsOCBAQCBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogI2VuZGlm
IC8vIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAogCiAjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWls
dGluQnVpbHRpbnMuaApAQCAtMTE2LDYgKzEwNiw4IEBAIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVE
QlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCiAKKyNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCisKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oPgpAQCAtMTM2LDQzICsxMjgsNiBAQCBjb25zdCBjaGFyKiBzX2d1YXJkZWRC
dWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogICAgICJ9KVxuIiBcCiA7CiAKLWNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVT
dHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OwotY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVh
bUNvZGVMZW5ndGggPSA0MDI7Ci1jb25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVh
ZGFibGVTdHJlYW1Db2RlID0KLSAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilcbiIgXAot
ICAgICJ7XG4iIFwKLSAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAgIlxuIiBcCi0g
ICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKVxuIiBc
Ci0gICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCi0gICAgIiAgICBp
ZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAotICAgICIg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtcbiIgXAot
ICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCi0gICAgIiAgICBAZmluaXNoQ2xvc2lu
Z1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKLSAgICAiICAgIHJldHVybiBAcHJvbWlzZUlu
dm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFtyZWFzb25d
KS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAotICAgICJ9KVxuIiBcCi07Ci0KLWNvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Ci1jb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVu
Z3RoID0gMzM4OwotY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5v
b3BDb2RlID0KLSAgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIgXAotICAgICJ7
XG4iIFwKLSAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCi0gICAgIlxuIiBcCi0gICAgIiAg
ICB0cnkge1xuIiBcCi0gICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBc
Ci0gICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwK
LSAgICAiICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCi0gICAgIiAg
ICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAotICAg
ICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiIgXAotICAgICIgICAg
fVxuIiBcCi0gICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCi0gICAgIiAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAotICAgICIgICAgfVxuIiBcCi0gICAgIn0pXG4i
IFwKLTsKLQogCiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXApAQCAtMTg1LDYgKzE0MCw5IEBAIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKQogCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
VFJFQU1TX0FQSSkKKwogIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAog
CiAjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApAQCAtMjIw
LDYgKzE3OCw4IEBAIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI2lmbmRlZiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcl9oCiAjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKIAorI2lm
IEVOQUJMRShTVFJFQU1TX0FQSSkKKwogI2luY2x1ZGUgIkd1YXJkZWRCdWlsdGluQnVpbHRpbnMu
aCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KICNpbmNsdWRlIDxieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgpAQCAtMzEzLDYgKzI3Myw4IEBAIGlubGlu
ZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90Vmlz
aXRvciYgdmlzaXRvcikKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5B
QkxFKFNUUkVBTVNfQVBJKQorCiAjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBw
ZXJfaAogCiAjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDM0
OGExY2ZjNDQ4NGFlZjNmNzYwZTg3OTQ2NmVmYmFiOTY2ZTUwZjQuLjhkOTg4ODkzY2RkZjdkNWQ3
MzcwMjMzYjg0ZWI5ZGVkYTZkYzdhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFs
QnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWls
dGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGlu
QnVpbHRpbnNfaAogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjaW5jbHVkZSA8YnVpbHRp
bnMvQnVpbHRpblV0aWxzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDMsMzEgKzQ1LDE3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGV4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKIGV4dGVybiBjb25zdCBpbnQgc19n
dWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CiBl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRp
bklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4dGVybiBjb25z
dCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7
Ci1leHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxl
U3RyZWFtQ29kZUxlbmd0aDsKLWV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19n
dWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJp
bGl0eTsKLWV4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wQ29kZTsKLWV4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGg7Ci1leHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlQ29uc3RydWN0QWJpbGl0eTsKIAogI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElO
VEVSTkFMQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8pIFwKICAgICBtYWNybyhpc1JlYWRhYmxl
U3RyZWFtTG9ja2VkLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBndWFyZGVkSW50ZXJuYWxC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKLSAgICBtYWNybyhwcm9taXNlSW52b2tl
T3JOb29wLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwgMykgXAog
CiAjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0lTUkVBREFC
TEVTVFJFQU1MT0NLRUQgMQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFM
QlVJTFRJTl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCi0jZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9H
VUFSREVESU5URVJOQUxCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQogCiAjZGVmaW5lIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykg
XAogICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
Q29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgpIFwKLSAgICBtYWNybyhndWFyZGVkSW50ZXJu
YWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVhbSwg
c19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoKSBc
Ci0gICAgbWFjcm8oZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2Rl
LCBwcm9taXNlSW52b2tlT3JOb29wLCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52
b2tlT3JOb29wQ29kZUxlbmd0aCkgXAogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVE
SU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAotICAgIG1hY3Jv
KGNhbmNlbFJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZCkgXAotICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKIAogI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFwKICAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJik7CkBAIC03OSw2ICs2Nyw4IEBAIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxC
VUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNlbmRp
ZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAogCiAjIyMgRW5kIEZpbGU6IEd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oCkBAIC0xMTYsNiArMTA2LDggQEAgV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRh
YmxlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgpAQCAtMTM2LDQz
ICsxMjgsNiBAQCBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxl
U3RyZWFtTG9ja2VkQ29kZSA9CiAgICAgIn0pXG4iIFwKIDsKIAotY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29k
ZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVj
dDsKLWNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVh
bUNvZGVMZW5ndGggPSA0MDI7Ci1jb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5D
YW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQotICAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29u
KVxuIiBcCi0gICAgIntcbiIgXAotICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKLSAgICAi
XG4iIFwKLSAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9z
ZWQpXG4iIFwKLSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKLSAg
ICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBc
Ci0gICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3Ip
O1xuIiBcCi0gICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwKLSAgICAiICAgIEBmaW5p
c2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAotICAgICIgICAgcmV0dXJuIEBw
cm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwg
W3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCi0gICAgIn0pXG4iIFwKLTsKLQot
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4OwotY29uc3QgY2hhciogc19ndWFyZGVk
SW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQotICAgICIoZnVuY3Rpb24g
KG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCi0gICAgIntcbiIgXAotICAgICIgICAgXCJ1c2Ugc3Ry
aWN0XCI7XG4iIFwKLSAgICAiXG4iIFwKLSAgICAiICAgIHRyeSB7XG4iIFwKLSAgICAiICAgICAg
ICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKLSAgICAiICAgICAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAotICAgICIgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKLSAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9k
LkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCi0gICAgIiAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZShyZXN1bHQpO1xuIiBcCi0gICAgIiAgICB9XG4iIFwKLSAgICAiICAgIGNhdGNoKGVy
cm9yKSB7XG4iIFwKLSAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xu
IiBcCi0gICAgIiAgICB9XG4iIFwKLSAgICAifSlcbiIgXAotOwotCiAKICNkZWZpbmUgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCkBAIC0xODUsNiArMTQwLDkgQEAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5B
TEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKIAogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCisKICMj
IyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmNwcAogCiAjIyMgQmVn
aW4gRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCkBAIC0yMjAs
NiArMTc4LDggQEAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJ
Tl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICNpZm5kZWYgR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCiAjZGVmaW5lIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXJfaAogCisjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjaW5jbHVkZSAi
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAjaW5jbHVkZSA8YnVpbHRpbnMvQnVp
bHRpblV0aWxzLmg+CiAjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaD4KQEAgLTMxMyw2ICsyNzMsOCBAQCBpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNl
bmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKIAogIyMjIEVu
ZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3Vh
cmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDU4ZWUyZGFiYmFjOWMxYTZiNjU5
YWIxMzJiMGE2YzQ3MWU2M2U0NTguLjJkOGEwYWIzY2Y2MmExNDQ5Njg3NDNlNmM5ZmE3NDc1MmRi
Yjc5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtNDMs
MzEgKzQzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGV4dGVybiBjb25zdCBjaGFyKiBzX3Vu
Z3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKIGV4dGVybiBjb25zdCBp
bnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CiBl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpbklzUmVh
ZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4dGVybiBjb25zdCBjaGFy
KiBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7Ci1leHRlcm4gY29u
c3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsK
LWV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluQ2Fu
Y2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKLWV4dGVybiBjb25zdCBjaGFy
KiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKLWV4dGVybiBjb25z
dCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGg7Ci1l
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKIAogI2RlZmluZSBXRUJDT1JFX0ZP
UkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8pIFwKICAgICBtYWNybyhp
c1JlYWRhYmxlU3RyZWFtTG9ja2VkLCB1bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCwgMSkgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCB1bmd1YXJkZWRCdWls
dGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKLSAgICBtYWNybyhwcm9taXNlSW52b2tlT3JO
b29wLCB1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwgMykgXAogCiAjZGVmaW5l
IFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NLRUQg
MQotI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9DQU5DRUxSRUFEQUJM
RVNUUkVBTSAxCi0jZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX1BST01J
U0VJTlZPS0VPUk5PT1AgMQogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlM
VElOX0JVSUxUSU5fQ09ERShtYWNybykgXAogICAgIG1hY3JvKHVuZ3VhcmRlZEJ1aWx0aW5Jc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgc191bmd1YXJk
ZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgpIFwKLSAgICBtYWNybyh1
bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0
cmVhbSwgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoKSBc
Ci0gICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlLCBwcm9t
aXNlSW52b2tlT3JOb29wLCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZUxlbmd0aCkgXAogCiAjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAotICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3Ry
ZWFtKSBcCiAgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAotICAgIG1hY3JvKHBy
b21pc2VJbnZva2VPck5vb3ApIFwKIAogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKICAgICBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CkBAIC0xMzYsNDMg
KzEyMiw2IEBAIGNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWRDb2RlID0KICAgICAifSlcbiIgXAogOwogCi1jb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJp
bGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwotY29uc3QgaW50
IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCA9IDQwMjsK
LWNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9
Ci0gICAgIihmdW5jdGlvbiAoc3RyZWFtLCByZWFzb24pXG4iIFwKLSAgICAie1xuIiBcCi0gICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAotICAgICIgICAgaWYgKHN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAotICAgICIgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAotICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpXG4iIFwKLSAgICAiICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKLSAgICAiICAgIHN0cmVhbS5A
cXVldWUgPSBbXTtcbiIgXAotICAgICIgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShz
dHJlYW0pO1xuIiBcCi0gICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFt
LkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigp
IHsgfSk7XG4iIFwKLSAgICAifSlcbiIgXAotOwotCi1jb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmls
aXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Ci1jb25zdCBpbnQg
c191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSAzMzg7Ci1j
b25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9Ci0g
ICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKLSAgICAie1xuIiBcCi0gICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAotICAgICJcbiIgXAotICAgICIgICAgdHJ5IHtcbiIg
XAotICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAotICAgICIgICAg
ICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCi0gICAgIiAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAotICAgICIgICAgICAgIHZhciBy
ZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwKLSAgICAiICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKLSAgICAiICAgIH1cbiIgXAotICAg
ICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAotICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChlcnJvcik7XG4iIFwKLSAgICAiICAgIH1cbiIgXAotICAgICJ9KVxuIiBcCi07Ci0KIAog
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
YXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBh
cmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0Cmlu
ZGV4IDg2OGZjNmZjNmZiZjg1ZWRkN2I4ZDNjODhlYzZkMjI2NjdlMWU3N2QuLjg5OWNjNGU0ZDAz
ODQzMzg3OTUwNzJlMTk5ZmNkNmNhNjQ2MmI0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5n
VGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRl
LmpzLXJlc3VsdApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRp
bnNfaAogI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAogCisjaWYgRU5BQkxFKFNUUkVB
TVNfQVBJKQorCiAjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtNzksNiArODEsOCBAQCBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9C
VUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKFNUUkVBTVNfQVBJKQorCiAjZW5kaWYgLy8geG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zX2gKIAogIyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRp
bnMuaApAQCAtMTE2LDYgKzEyMCw4IEBAIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgInhtbENhc2luZ1Rlc3RCdWlsdGlucy5oIgogCisjaWYgRU5BQkxFKFNUUkVB
TVNfQVBJKQorCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXhlY3V0YWJsZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aD4KQEAgLTE4NSw2ICsxOTEsOSBAQCBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlM
VElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKKwogIyMjIEVuZCBGaWxlOiB4
bWxDYXNpbmdUZXN0QnVpbHRpbnMuY3BwCiAKICMjIyBCZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0
QnVpbHRpbnNXcmFwcGVyLmgKQEAgLTIyMCw2ICsyMjksOCBAQCBXRUJDT1JFX0ZPUkVBQ0hfWE1M
Q0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI2lmbmRl
ZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKICNkZWZpbmUgeG1sQ2FzaW5nVGVzdEJ1
aWx0aW5zV3JhcHBlcl9oCiAKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNpbmNsdWRlICJ4
bWxDYXNpbmdUZXN0QnVpbHRpbnMuaCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMu
aD4KICNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgpAQCAt
MzEzLDYgKzMyNCw4IEBAIGlubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25z
Ojp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU1RSRUFNU19BUEkpCisKICNlbmRpZiAvLyB4bWxDYXNp
bmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKIAogIyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVp
bHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKaW5kZXggZjk0ODEyNThhMDUxMTIw
MTJlZjBkNDE2ZTljYzQ2YjA5NDExZjVlZS4uNTllYTJkNzFkOTY5ZjIyNWYxMTcyMTc0NTBkNWI5
ZWRkMWU1M2ZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0J5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKQEAgLTI0LDcgKzI0LDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAY29uZGl0
aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJKQogCiBmdW5jdGlvbiBzaXplKGNodW5rKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0
ZWd5LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0
ZWd5LmpzCmluZGV4IDQ0ZDYzMGI4YjhkYzNmMjI0NjYwZTk4MTJkM2YxM2Y2MWM2ODJhZjMuLjNh
ZTkyM2U1ZjBjMzViYTBjOGM3NjNkNDU2ZDhjNDExOWZlMTE3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gQG9wdGlvbmFsPVNUUkVB
TVNfQVBJCisvLyBAY29uZGl0aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJKQogCiBmdW5jdGlvbiBz
aXplKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5qcwppbmRleCA1ZjU2ZjFlYzJmMDZmZTk4OWMwZjEwNzRjMmViYjQ4MWNjMWMwMGIyLi42
OTRlOTlmYjY0NGUyZWE2YzVjNDAxZjZmMGY0MjlkOWMyOWYwNjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBAIC0yNCw3ICsyNCw3
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEBvcHRpb25hbD1TVFJFQU1TX0FQSQorLy8g
QGNvbmRpdGlvbmFsPUVOQUJMRShTVFJFQU1TX0FQSSkKIAogZnVuY3Rpb24gaW5pdGlhbGl6ZVJl
YWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIHN0cmF0ZWd5KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5q
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuanMKaW5kZXggOTlmMzdjOWUyMmYxMDQ4NTYyZjk0NDg1M2M2YWFlZWRkYTdkODE1OC4uZTZh
ODZkMmY5YzI2ZjMwODg0ZjlkNzg3ZTZlMzljZGJjOTcxODAwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LmpzCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEBvcHRpb25h
bD1TVFJFQU1TX0FQSQorLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShTVFJFQU1TX0FQSSkKIAogZnVu
Y3Rpb24gZW5xdWV1ZShjaHVuaykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwppbmRleCA4YWQxM2E3MDlh
MTgyZGQ3NTNiMTdiYzA1NmJiYzczMWUyZDU5NzBmLi5jNzYyZTZkYTAzM2M2YTljODYzMDUxOTMy
Mzk4M2JmODgxZjlkMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0yNCw3ICsyNCw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEBvcHRpb25hbD1TVFJFQU1TX0FQSQorLy8gQGNvbmRp
dGlvbmFsPUVOQUJMRShTVFJFQU1TX0FQSSkKIC8vIEBpbnRlcm5hbHMKIAogZnVuY3Rpb24gcHJp
dmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlcihzdHJlYW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKaW5k
ZXggY2UyNzNhOGQ5YmUzZmY1NDM0NTkwMzVmNjY1NWZjMTE2ZDE1YzBjYi4uMmJkMTA0MTI0YzFh
Y2NiYjFmNjBkZTA1OTBhNDUwMGZmYzg4YWEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwpAQCAtMjMsNyArMjMs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8v
IEBjb25kaXRpb25hbD1FTkFCTEUoU1RSRUFNU19BUEkpCiAKIGZ1bmN0aW9uIGNhbmNlbChyZWFz
b24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFt
SW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVy
bmFscy5qcwppbmRleCA2MzAxZmZkNDBjNjllYjE4NWNiZjIzZTE4YzkxNjM2MGUzY2U0YmRmLi5j
YjIzYWYzNzc5ZDY0YzFmNjBhMGI2ZGZkNTA0Y2M3MTMyZTQ5ODBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKQEAgLTI0LDcgKzI0
LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisv
LyBAY29uZGl0aW9uYWw9RU5BQkxFKFNUUkVBTVNfQVBJKQogLy8gQGludGVybmFscwogCiBmdW5j
dGlvbiBpbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKaW5kZXggZmVlZTNmY2FjODA3ZmNh
ODljMGU2Mjc5NTQ5ZmEwZDhhNmVkODJmYi4uNjg1NDU3NjY4MzhjODJhYWRhMzQ1M2JhNWEzMDE3
NjI5ZGMxMDVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dy
aXRhYmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0
YWJsZVN0cmVhbS5qcwpAQCAtMjQsNyArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0v
LyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBjb25kaXRpb25hbD1FTkFCTEUoU1RSRUFNU19B
UEkpCiAKIGZ1bmN0aW9uIGluaXRpYWxpemVXcml0YWJsZVN0cmVhbSh1bmRlcmx5aW5nU2luaywg
c3RyYXRlZ3kpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggYTlhZWUzNDQ2MGYwZDk2Yjc0ODMx
NDU2MThjMTA4Y2QwNmQ5NGQ3MS4uYjBhZTBjY2FkYTdiYjdmZWVkN2MwNWU1MjAxZjViNDdmNTli
YzdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtMjQsNyArMjQsNyBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0vLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBjb25kaXRpb25hbD1FTkFC
TEUoU1RSRUFNU19BUEkpCiAvLyBAaW50ZXJuYWxzCiAKIGZ1bmN0aW9uIGlzV3JpdGFibGVTdHJl
YW0oc3RyZWFtKQo=
</data>
<flag name="commit-queue"
          id="289331"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>