<?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>211223</bug_id>
          
          <creation_ts>2020-04-29 22:55:17 -0700</creation_ts>
          <short_desc>Some HTML element critical paths include AtomString materialization</short_desc>
          <delta_ts>2020-05-11 11:25:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1647294</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-29 22:55:17 -0700</bug_when>
    <thetext>We should use `static NeverDestroyed&lt;AtomString&gt;`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647605</commentid>
    <comment_count>1</comment_count>
      <attachid>398107</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-30 15:45:40 -0700</bug_when>
    <thetext>Created attachment 398107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647612</commentid>
    <comment_count>2</comment_count>
      <attachid>398108</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-30 15:52:14 -0700</bug_when>
    <thetext>Created attachment 398108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647614</commentid>
    <comment_count>3</comment_count>
      <attachid>398108</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-30 15:58:33 -0700</bug_when>
    <thetext>Comment on attachment 398108
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        `static NeverDestroyed&lt;const AtomString&gt; ...(&quot;...&quot;, AtomString::ConstructFromLiteral)`. Since HTML is in the main thread, we can just use `static NeverDestroyed&lt;&gt;`.

can you add asserts everywhere you did this that we&apos;re on the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647623</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-30 16:10:25 -0700</bug_when>
    <thetext>I spoke to Yusuke and this is done everywhere.

My observation is we should have asserts in all those places.

But this patch doesn&apos;t need to be the thing adding them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647628</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-30 16:17:37 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #4)
&gt; I spoke to Yusuke and this is done everywhere.
&gt; 
&gt; My observation is we should have asserts in all those places.
&gt; 
&gt; But this patch doesn&apos;t need to be the thing adding them.

I think we should introduce `MainThreadNeverDestroyed&lt;const AtomString&gt;` and insert `ASSERT(isMainThread());` in get accessor of that class. And replace existing `NeverDestroyed&lt;const AtomString&gt;` with that. But I think this should be done separately given that we already have so many things like that and this patch&apos;s goal is not fixing / finding an existing bug with a new abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647632</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-30 16:18:49 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #5)
&gt; (In reply to Saam Barati from comment #4)
&gt; &gt; I spoke to Yusuke and this is done everywhere.
&gt; &gt; 
&gt; &gt; My observation is we should have asserts in all those places.
&gt; &gt; 
&gt; &gt; But this patch doesn&apos;t need to be the thing adding them.
&gt; 
&gt; I think we should introduce `MainThreadNeverDestroyed&lt;const AtomString&gt;` and
&gt; insert `ASSERT(isMainThread());` in get accessor of that class. And replace
&gt; existing `NeverDestroyed&lt;const AtomString&gt;` with that. But I think this
&gt; should be done separately given that we already have so many things like
&gt; that and this patch&apos;s goal is not fixing / finding an existing bug with a
&gt; new abstraction.

https://bugs.webkit.org/show_bug.cgi?id=211264</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647641</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-30 16:26:35 -0700</bug_when>
    <thetext>Inserted `ASSERT(isMainThread())` for newly added NeverDestroyed&lt;&gt;. I postpone `isMainThread()` assertion check in the existing places in https://bugs.webkit.org/show_bug.cgi?id=211264.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647647</commentid>
    <comment_count>8</comment_count>
      <attachid>398119</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-30 16:30:53 -0700</bug_when>
    <thetext>Created attachment 398119
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647700</commentid>
    <comment_count>9</comment_count>
      <attachid>398119</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-30 18:44:48 -0700</bug_when>
    <thetext>Comment on attachment 398119
Patch

OK, EWS is green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647701</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-30 18:47:52 -0700</bug_when>
    <thetext>Committed r260977: &lt;https://trac.webkit.org/changeset/260977&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398119.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647702</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-30 18:48:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/62691779&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651135</commentid>
    <comment_count>12</comment_count>
      <attachid>398108</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-10 16:15:33 -0700</bug_when>
    <thetext>Comment on attachment 398108
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        `static NeverDestroyed&lt;const AtomString&gt; ...(&quot;...&quot;, AtomString::ConstructFromLiteral)`. Since HTML is in the main thread, we can just use `static NeverDestroyed&lt;&gt;`.
&gt; 
&gt; can you add asserts everywhere you did this that we&apos;re on the main thread?

If so, please don’t write each one out. Make a class that does it! Even one specific to AtomString would be OK with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651136</commentid>
    <comment_count>13</comment_count>
      <attachid>398119</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-10 16:18:08 -0700</bug_when>
    <thetext>Comment on attachment 398119
Patch

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

&gt; Source/WebCore/html/SearchInputType.cpp:70
&gt; +    ASSERT(isMainThread());

Adding all these asserts like this doesn’t seem good. Tons of DOM code all assumes it’s on the main thread. Adding these assertions everywhere we use an AtomString like this is inelegant and inconsistent with WebKit coding style. The DOM code could be peppered with ASSERT(isMainThread()); that assertion is true/needed throughout.

If we really want these, I suggest we make a class MainThreadAtomStringLiteral:

    static MainThreadAtomStringLiteral webkitSearchResultsButtonName(&quot;-webkit-search-results-button&quot;);

The assertions would go in the &quot;get&quot; function as well as the construction code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651235</commentid>
    <comment_count>14</comment_count>
      <attachid>398119</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-11 03:59:17 -0700</bug_when>
    <thetext>Comment on attachment 398119
Patch

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

&gt;&gt; Source/WebCore/html/SearchInputType.cpp:70
&gt;&gt; +    ASSERT(isMainThread());
&gt; 
&gt; Adding all these asserts like this doesn’t seem good. Tons of DOM code all assumes it’s on the main thread. Adding these assertions everywhere we use an AtomString like this is inelegant and inconsistent with WebKit coding style. The DOM code could be peppered with ASSERT(isMainThread()); that assertion is true/needed throughout.
&gt; 
&gt; If we really want these, I suggest we make a class MainThreadAtomStringLiteral:
&gt; 
&gt;     static MainThreadAtomStringLiteral webkitSearchResultsButtonName(&quot;-webkit-search-results-button&quot;);
&gt; 
&gt; The assertions would go in the &quot;get&quot; function as well as the construction code.

I already landed MainThreadNeverDestroyed :) https://trac.webkit.org/changeset/261013/webkit

See https://bugs.webkit.org/show_bug.cgi?id=211223#c7 and https://bugs.webkit.org/show_bug.cgi?id=211264</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651236</commentid>
    <comment_count>15</comment_count>
      <attachid>398119</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-11 04:05:48 -0700</bug_when>
    <thetext>Comment on attachment 398119
Patch

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

&gt;&gt;&gt; Source/WebCore/html/SearchInputType.cpp:70
&gt;&gt;&gt; +    ASSERT(isMainThread());
&gt;&gt; 
&gt;&gt; Adding all these asserts like this doesn’t seem good. Tons of DOM code all assumes it’s on the main thread. Adding these assertions everywhere we use an AtomString like this is inelegant and inconsistent with WebKit coding style. The DOM code could be peppered with ASSERT(isMainThread()); that assertion is true/needed throughout.
&gt;&gt; 
&gt;&gt; If we really want these, I suggest we make a class MainThreadAtomStringLiteral:
&gt;&gt; 
&gt;&gt;     static MainThreadAtomStringLiteral webkitSearchResultsButtonName(&quot;-webkit-search-results-button&quot;);
&gt;&gt; 
&gt;&gt; The assertions would go in the &quot;get&quot; function as well as the construction code.
&gt; 
&gt; I already landed MainThreadNeverDestroyed :) https://trac.webkit.org/changeset/261013/webkit
&gt; 
&gt; See https://bugs.webkit.org/show_bug.cgi?id=211223#c7 and https://bugs.webkit.org/show_bug.cgi?id=211264

And that patch actually found one tricky usage in GTK/WPE ports https://trac.webkit.org/changeset/261075/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651292</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-11 09:29:15 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #14)
&gt; I already landed MainThreadNeverDestroyed :)
&gt; https://trac.webkit.org/changeset/261013/webkit

Could you use that here instead of adding all these assertions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651335</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-11 11:23:10 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; (In reply to Yusuke Suzuki from comment #14)
&gt; &gt; I already landed MainThreadNeverDestroyed :)
&gt; &gt; https://trac.webkit.org/changeset/261013/webkit
&gt; 
&gt; Could you use that here instead of adding all these assertions?

The patch here is already landed. And https://trac.webkit.org/changeset/261013/webkit is introduced after that, and it replaces inserted `ASSERT(isMainThread())` with `MainThreadNeverDestroyed&lt;&gt;`. So, it is already done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651339</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-11 11:25:54 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #17)
&gt; it replaces inserted `ASSERT(isMainThread())` with
&gt; `MainThreadNeverDestroyed&lt;&gt;`

Great! Sorry I didn’t understand.

I still think that one specifically for AtomString would be nice to make the code less wordy.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398107</attachid>
            <date>2020-04-30 15:45:40 -0700</date>
            <delta_ts>2020-04-30 15:52:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211223-20200430154536.patch</filename>
            <type>text/plain</type>
            <size>34009</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1MjBmMGE2MGNiMjVm
MmM4NjRmN2M0ZmQxNzQ1NTBkOTc0NTdhOC4uY2RjNThiYTljZGQwZjJjZjk5YWI0NjdkNmMwNDE3
OGZmNzIzOTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA0LTMwICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBIVE1MIGVsZW1l
bnQgY3JpdGljYWwgcGF0aHMgaW5jbHVkZSBBdG9tU3RyaW5nIG1hdGVyaWFsaXphdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgbWVhc3Vy
aW5nIFNwZWVkb21ldGVyMiwgSSd2ZSBub3RpY2VkIHRoYXQgZXZlcnkgdGltZSB3ZSBjcmVhdGUg
c29tZSB0eXBlIG9mIGlucHV0IGVsZW1lbnQsIHdlIGNhbGwgQXRvbVN0cmluZyBtdWx0aXBsZSB0
aW1lcyB3aGlsZSBpdCBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICBJdCB0dXJuZWQgb3V0IHRo
YXQgdGhpcyBpcyBiZWNhdXNlIHNvbWUgcGxhY2VzIGFyZSB1c2luZyBgQXRvbVN0cmluZygiLi4u
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpYCBpbnN0ZWFkIG9mCisgICAgICAg
IGBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gLi4uKCIuLi4iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbClgLiBTaW5jZSBIVE1MIGlzIGluIHRoZSBtYWlu
IHRocmVhZCwgd2UgY2FuIGp1c3QgdXNlIGBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8PmAuCisgICAg
ICAgIFRoaXMgcGF0Y2ggZml4ZXMgYEF0b21TdHJpbmcoKWAgY2FsbHMgYnkgY2hhbmdpbmcgdGhl
bSB0byBgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz5gIGlmIGl0IGlzIHVuZGVyIFdl
YkNvcmUvaHRtbCBkaXJlY3RvcnkuCisgICAgICAgIEFuZCBpbiB0aGlzIHBhdGNoLCB3ZSBvbWl0
IEZUUERpcmVjdG9yeURvY3VtZW50LCBNZWRpYURvY3VtZW50LCBhbmQgUGx1Z2luRG9jdW1lbnQn
cyBmaXhlcyBmb3Igbm93IHNpbmNlIHRoZWlyIEF0b21TdHJpbmcgY29udGVudCBoYXMgYSBiaXQg
ZGlmZmVyZW50IG5hdHVyZSAoc29tZQorICAgICAgICBwc2V1ZG8gQ1NTIHZhbHVlICgiLXdlYmtp
dC14eHgiKSB2LnMuIHNvbWUgcGFydGljdWxhciBDU1MgcHJvcGVydHkgdmFsdWUgKCIxMDAlIiku
CisKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0Zp
bGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6
VXBsb2FkQnV0dG9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpmYWxzZU5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhaW50ZXh0T25seU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6c2V0RHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzZXRTcGVsbGNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRBdXRv
Y29ycmVjdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0
cmVlKToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1cGRhdGVSZXN1bHRCdXR0b25Qc2V1ZG9UeXBlKToKKyAgICAgICAgKiBodG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24pOgorICAgICAgICAqIGh0
bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1l
c3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6
OkRldGFpbHNNYXJrZXJDb250cm9sKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzQmFyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlByb2dyZXNzVmFsdWVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJv
Z3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
cm9ncmVzc0JhckVsZW1lbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
cm9ncmVzc1ZhbHVlRWxlbWVudDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3No
YWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9u
RWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbFBs
YWNlaG9sZGVyRWxlbWVudDo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZUVtYmVkU2hhZG93RWxl
bWVudDo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp0cnlDcmVhdGUpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50Ojp0cnlDcmVhdGUpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKToKKwogMjAyMC0wNC0zMCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0LldlYkNvbnRlbnQgcHJvY2VzcyBj
cmFzaGVzIHdoZW4gd2ViIGRldmVsb3BlciB0b29scyBhcmUgb3BlbmVkIGluIFNhZmFyaQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAyMzc4YWQ2MTA5ODgzMzY2ZTBl
NGE3ZjBiYjg5MTFmZDc3ZjkwNzIxLi4yYTllZGVlOGM4YzU2YzE1ZDc4MzNiYTRhMjhkODk1NzQ3
Y2VlNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTQzLDEx
ICsxNDMsMTQgQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAg
ICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgp
KTsKIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRD
b2xvclN3YXRjaE5hbWUoIi13ZWJraXQtY29sb3Itc3dhdGNoIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB3ZWJraXRDb2xvclN3YXRjaFdyYXBwZXJOYW1lKCItd2Via2l0LWNvbG9yLXN3YXRjaC13
cmFwcGVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGF1dG8gd3JhcHBlckVs
ZW1lbnQgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICB3cmFwcGVyRWxl
bWVudC0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXIi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHdyYXBwZXJFbGVtZW50
LT5zZXRQc2V1ZG8od2Via2l0Q29sb3JTd2F0Y2hXcmFwcGVyTmFtZSk7CiAgICAgYXV0byBjb2xv
clN3YXRjaCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbG9yU3dh
dGNoLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1jb2xvci1zd2F0Y2giLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGNvbG9yU3dhdGNoLT5zZXRQc2V1ZG8o
d2Via2l0Q29sb3JTd2F0Y2hOYW1lKTsKICAgICB3cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQo
Y29sb3JTd2F0Y2gpOwogICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBl
bmRDaGlsZCh3cmFwcGVyRWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCmluZGV4IDRlNDFmZDNmODA3ZThmMzRiZmVmM2Y2M2YwYmE2MTE5YTYxOTgyMWUuLmZkMTJj
ZThjZGJlOTc2NDI4ZTczMTZmMmQwMGJhOGE2ZTA3YTNjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcApAQCAtODksOCArODksMTAgQEAgUmVmPFVwbG9hZEJ1dHRvbkVsZW1l
bnQ+IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKERvY3VtZW50JiBkb2N1
bWUKIFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OlVwbG9hZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgIDogSFRNTElucHV0RWxlbWVudChpbnB1dFRhZywgZG9jdW1lbnQsIDAsIGZh
bHNlKQogewotICAgIHNldFR5cGUoQXRvbVN0cmluZygiYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1m
aWxlLXVwbG9hZC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBidXR0b25OYW1lKCJi
dXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdEZpbGVVcGxvYWRCdXR0b25OYW1l
KCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICBzZXRUeXBlKGJ1dHRvbk5hbWUpOworICAgIHNldFBzZXVkbyh3ZWJraXRG
aWxlVXBsb2FkQnV0dG9uTmFtZSk7CiB9CiAKIEZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
aW5kZXggOGUyOTJlMGQwNDBjYThiMjBjNjAzYjkyYjJiZmI1YzY1MmFkZmMzZC4uMzA3NGRmZGU2
MDFjYzdlYWQyYTk5MmQyNmY4YWU0MGU0YTk5ZjgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKQEAgLTY2MCwxNCArNjYwLDMyIEBAIFN0cmluZyBIVE1MRWxlbWVudDo6Y29udGVu
dEVkaXRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gImluaGVyaXQiX3M7CiB9CiAKK3N0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlTmFtZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IHRydWVWYWx1ZSgidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHJ1ZVZhbHVlLmdldCgpOworfQorCitzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgZmFsc2VOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VWYWx1ZSgiZmFsc2UiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGZhbHNlVmFsdWUuZ2V0KCk7Cit9CisKK3N0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5TmFtZSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWludGV4dE9ubHlWYWx1ZSgicGxh
aW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0
dXJuIHBsYWludGV4dE9ubHlWYWx1ZS5nZXQoKTsKK30KKwogRXhjZXB0aW9uT3I8dm9pZD4gSFRN
TEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCi0g
ICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxl
QXR0ciwgQXRvbVN0cmluZygidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVk
aXRhYmxlQXR0ciwgdHJ1ZU5hbWUoKSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZW5hYmxlZCwgImZhbHNlIikpCi0gICAgICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgQXRvbVN0cmluZygiZmFsc2Ui
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIGZhbHNlTmFtZSgp
KTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAi
cGxhaW50ZXh0LW9ubHkiKSkKLSAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihjb250ZW50ZWRpdGFibGVBdHRyLCBBdG9tU3RyaW5nKCJwbGFpbnRleHQtb25seSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgcGxhaW50ZXh0T25seU5h
bWUoKSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5hYmxl
ZCwgImluaGVyaXQiKSkKICAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0
dHIpOwogICAgIGVsc2UKQEAgLTY4Miw5ICs3MDAsNyBAQCBib29sIEhUTUxFbGVtZW50OjpkcmFn
Z2FibGUoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXREcmFnZ2FibGUoYm9vbCB2YWx1
ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRyYWdnYWJsZUF0
dHIsIHZhbHVlCi0gICAgICAgID8gQXRvbVN0cmluZygidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKQotICAgICAgICA6IEF0b21TdHJpbmcoImZhbHNlIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGRyYWdnYWJsZUF0dHIsIHZhbHVlID8gdHJ1ZU5hbWUoKSA6IGZhbHNlTmFtZSgp
KTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6c3BlbGxjaGVjaygpIGNvbnN0CkBAIC02OTQsOSAr
NzEwLDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c3BlbGxjaGVjaygpIGNvbnN0CiAKIHZvaWQgSFRN
TEVsZW1lbnQ6OnNldFNwZWxsY2hlY2soYm9vbCBlbmFibGUpCiB7Ci0gICAgc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzcGVsbGNoZWNrQXR0ciwgZW5hYmxlCi0gICAgICAgID8g
QXRvbVN0cmluZygidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKQotICAg
ICAgICA6IEF0b21TdHJpbmcoImZhbHNlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNwZWxsY2hlY2tB
dHRyLCBlbmFibGUgPyB0cnVlTmFtZSgpIDogZmFsc2VOYW1lKCkpOwogfQogCiB2b2lkIEhUTUxF
bGVtZW50OjpjbGljaygpCkBAIC0xMTAwLDcgKzExMTQsOSBAQCBib29sIEhUTUxFbGVtZW50Ojpz
aG91bGRBdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEF1dG9jb3Jy
ZWN0KGJvb2wgYXV0b2NvcnJlY3QpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihhdXRvY29ycmVjdEF0dHIsIGF1dG9jb3JyZWN0ID8gQXRvbVN0cmluZygib24iLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBBdG9tU3RyaW5nKCJvZmYiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBvblZhbHVlKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
b2ZmVmFsdWUoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBz
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0b2Nv
cnJlY3QgPyBvblZhbHVlLmdldCgpIDogb2ZmVmFsdWUuZ2V0KCkpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggMTM4ZDUxMTVhNTMyMTVlMTJjMTMwYWRjOGRiMmRjNzBiZGQxM2YwYS4uZDA2YjI4ODMy
MjBkM2IxYzJkZWU5ZTRhNTc4MDcxZmIxYjNhMjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTUzNSw3ICs1MzUsOSBA
QCBib29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0lubmVyVGV4dEVsZW1lbnRFZGl0
YWJsZSgpIGNvbnN0CiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVJbm5l
clRleHRFbGVtZW50RWRpdGFiaWxpdHkoKQogewogICAgIGlmIChhdXRvIGlubmVyVGV4dCA9IGlu
bmVyVGV4dEVsZW1lbnQoKSkgewotICAgICAgICBhdXRvIHZhbHVlID0gaXNJbm5lclRleHRFbGVt
ZW50RWRpdGFibGUoKSA/IEF0b21TdHJpbmcgeyAicGxhaW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9IDogQXRvbVN0cmluZyB7ICJmYWxzZSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIH07CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFpblRleHRPbmx5TmFtZSgicGxhaW50ZXh0LW9ubHkiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBmYWxzZU5hbWUoImZhbHNlIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IGlzSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmxlKCkgPyBwbGFpblRleHRPbmx5TmFtZS5nZXQoKSA6IGZhbHNl
TmFtZS5nZXQoKTsKICAgICAgICAgaW5uZXJUZXh0LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIHZhbHVlKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGViNzhjODFhODE5NTQ2NzMwNTY3M2Jl
ODIzMmZhNWFlYzRiNDc3NGQuLjk2N2UyYTlkZTM0YjZlNzE1NTBmNjA2ZjIyNjBjZGI4NzA2ZmJm
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0yNTUsOSArMjU1
LDEwIEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIEFT
U0VSVChlbGVtZW50KCkpOwogICAgIEFTU0VSVChlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKSk7CiAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Vi
a2l0U2xpZGVyUnVubmFibGVUcmFja05hbWUoIi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNr
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKICAgICBhdXRvIHRyYWNrID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgdHJhY2stPnNldFBzZXVkbyhBdG9tU3RyaW5n
KCItd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgdHJhY2stPnNldFBzZXVkbyh3ZWJraXRTbGlkZXJSdW5uYWJsZVRy
YWNrTmFtZSk7CiAgICAgdHJhY2stPmFwcGVuZENoaWxkKFNsaWRlclRodW1iRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KSk7CiAgICAgYXV0byBjb250YWluZXIgPSBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodHJhY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IDJjMzA2YTIwM2Nj
NGQ1ODc0ZDE0ZjdiMzA2OWVmYjJiOGEyZDI2YWMuLmY2YmI0YzkxODFjZjBjNmE3ZjZkMWYwZjEw
YjYyMWZiMWM2NDVhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAK
QEAgLTY0LDEyICs2NCwxNSBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0
KCkKIAogc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZShTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b25FbGVtZW50JiByZXN1bHRCdXR0b24sIGludCBtYXhSZXN1bHRzKQogewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRTZWFyY2hE
ZWNvcmF0aW9uTmFtZSgiLXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gd2Via2l0U2VhcmNoUmVzdWx0c0RlY29yYXRpb25OYW1lKCItd2Via2l0LXNlYXJj
aC1yZXN1bHRzLWRlY29yYXRpb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNlYXJj
aFJlc3VsdHNCdXR0b25OYW1lKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoIW1heFJlc3VsdHMpCi0gICAg
ICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1zZWFyY2gtcmVz
dWx0cy1kZWNvcmF0aW9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICAgICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyh3ZWJraXRTZWFyY2hSZXN1bHRzRGVjb3JhdGlv
bk5hbWUpOwogICAgIGVsc2UgaWYgKG1heFJlc3VsdHMgPCAwKQotICAgICAgICByZXN1bHRCdXR0
b24uc2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICByZXN1bHRCdXR0b24uc2V0
UHNldWRvKHdlYmtpdFNlYXJjaERlY29yYXRpb25OYW1lKTsKICAgICBlbHNlCi0gICAgICAgIHJl
c3VsdEJ1dHRvbi5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1i
dXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICByZXN1
bHRCdXR0b24uc2V0UHNldWRvKHdlYmtpdFNlYXJjaFJlc3VsdHNCdXR0b25OYW1lKTsKIH0KIAog
dm9pZCBTZWFyY2hJbnB1dFR5cGU6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRl
eCA3NDNjMzJhYWZlNjQxMzI4YTI1ODQxYzhkYmVmMWVjYTI4YTc0ZWNiLi42NzVlNGQ5NGY3YjM1
ZTQ3Y2YyMjQwZTM5ZTE0NDY3YTdjMjJhYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0zNDgsOCArMzQ4LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIH0KIAogICAgIGlmIChzaG91bGRIYXZl
Q2Fwc0xvY2tJbmRpY2F0b3IpIHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHdlYmtpdENhcHNMb2NrSW5kaWNhdG9yTmFtZSgiLXdlYmtpdC1jYXBzLWxv
Y2staW5kaWNhdG9yIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgICAg
ICBtX2NhcHNMb2NrSW5kaWNhdG9yID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgICAgIG1fY2Fwc0xvY2tJbmRpY2F0b3ItPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Vi
a2l0LWNhcHMtbG9jay1pbmRpY2F0b3IiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yLT5zZXRQc2V1ZG8od2Via2l0Q2Fwc0xv
Y2tJbmRpY2F0b3JOYW1lKTsKIAogICAgICAgICBib29sIHNob3VsZERyYXdDYXBzTG9ja0luZGlj
YXRvciA9IHRoaXMtPnNob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcigpOwogICAgICAgICBtX2Nh
cHNMb2NrSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxh
eSwgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yID8gQ1NTVmFsdWVCbG9jayA6IENTU1ZhbHVl
Tm9uZSwgdHJ1ZSk7CkBAIC00NTUsMTAgKzQ1NiwxMSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlRGF0YUxpc3REcm9wZG93bkluZGljYXRvcigpCiAgICAgaWYgKCFtX2NvbnRhaW5l
cikKICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0TGlzdEJ1dHRvbk5hbWUoIi13ZWJraXQtbGlzdC1i
dXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKm1fY29udGFpbmVy
KTsKICAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0b3IgPSBEYXRhTGlzdEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCksICp0aGlzKTsKICAgICBtX2NvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoKm1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvcik7Ci0gICAgbV9kYXRh
TGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1saXN0
LWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbV9kYXRh
TGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRQc2V1ZG8od2Via2l0TGlzdEJ1dHRvbk5hbWUpOwog
ICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CiB9CiAKQEAgLTc3OCwxMSAr
NzgwLDEzIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVDb250YWluZXIoKQogICAg
IEFTU0VSVCghbV9jb250YWluZXIpOwogICAgIEFTU0VSVChlbGVtZW50KCkpOwogCisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFRleHRmaWVsZERlY29y
YXRpb25Db250YWluZXJOYW1lKCItd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRhaW5l
ciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKwogICAgIFNjcmlwdERpc2Fs
bG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKCplbGVtZW50KCktPnVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CiAKICAgICBtX2NvbnRhaW5lciA9IFRleHRDb250cm9sSW5u
ZXJDb250YWluZXI6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwogICAgIGVsZW1lbnQo
KS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCgqbV9jb250YWluZXIpOwotICAg
IG1fY29udGFpbmVyLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC10ZXh0ZmllbGQtZGVj
b3JhdGlvbi1jb250YWluZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIG1fY29udGFpbmVyLT5zZXRQc2V1ZG8od2Via2l0VGV4dGZpZWxkRGVjb3JhdGlvbkNvbnRh
aW5lck5hbWUpOwogCiAgICAgbV9pbm5lckJsb2NrID0gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6
OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwogICAgIG1fY29udGFpbmVyLT5hcHBlbmRD
aGlsZCgqbV9pbm5lckJsb2NrKTsKQEAgLTc5NiwxMCArODAwLDExIEBAIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVBdXRvRmlsbEJ1dHRvbihBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0Zp
bGxCdXR0b25UCiAgICAgaWYgKGF1dG9GaWxsQnV0dG9uVHlwZSA9PSBBdXRvRmlsbEJ1dHRvblR5
cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiBidXR0b25OYW1lKCJidXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgbV9hdXRvRmlsbEJ1
dHRvbiA9IEF1dG9GaWxsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQo
KSwgKnRoaXMpOwogICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldFBzZXVkbyhhdXRvRmlsbEJ1dHRv
blR5cGVUb0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1lKGF1dG9GaWxsQnV0dG9uVHlwZSkp
OwotICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24ocm9sZUF0dHIsIEF0b21TdHJpbmcoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihyb2xlQXR0ciwgYnV0dG9uTmFtZSk7CiAgICAgbV9hdXRvRmlsbEJ1dHRv
bi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0ciwgYXV0
b0ZpbGxCdXR0b25UeXBlVG9BY2Nlc3NpYmlsaXR5TGFiZWwoYXV0b0ZpbGxCdXR0b25UeXBlKSk7
CiAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0VGV4dENvbnRlbnQoYXV0b0ZpbGxCdXR0b25UeXBl
VG9BdXRvRmlsbEJ1dHRvblRleHQoYXV0b0ZpbGxCdXR0b25UeXBlKSk7CiAgICAgbV9jb250YWlu
ZXItPmFwcGVuZENoaWxkKCptX2F1dG9GaWxsQnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9W
YWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggMzFhYWI4NTljNmFjZDkzMDEwNjlmYjYxMmU3MTIx
ZWZjNWU0MTViYS4uMGIwZjMyYjk2YmYxNDlkYjdkMmEyMTJjYjI0MmIxYjU2NDY3ODNiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTE4MSw5ICsxODEs
MTggQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKCkKIAogICAgIFNo
YWRvd1Jvb3QmIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQtPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKTsKIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRWYWxpZGF0aW9uQnViYmxlTmFtZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZUFycm93Q2xpcHBlck5hbWUo
Ii13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ctY2xpcHBlciIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZUFycm93TmFtZSgiLXdlYmtpdC12YWxpZGF0
aW9uLWJ1YmJsZS1hcnJvdyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFsaWRhdGlv
bkJ1YmJsZU1lc3NhZ2VOYW1lKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVJY29uTmFtZSgiLXdl
YmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1pY29uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRWYWxpZGF0aW9uQnViYmxlVGV4dEJsb2NrTmFtZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJs
ZS10ZXh0LWJsb2NrIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnVi
YmxlSGVhZGluZ05hbWUoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtaGVhZGluZyIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZUJvZHlOYW1lKCItd2Via2l0
LXZhbGlkYXRpb24tYnViYmxlLWJvZHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCk7CiAg
ICAgbV9idWJibGUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBtX2J1
YmJsZS0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIG1fYnViYmxlLT5zZXRQc2V1
ZG8od2Via2l0VmFsaWRhdGlvbkJ1YmJsZU5hbWUpOwogICAgIC8vIE5lZWQgdG8gZm9yY2UgcG9z
aXRpb246YWJzb2x1dGUgYmVjYXVzZSBSZW5kZXJNZW51TGlzdCBkb2Vzbid0IGFzc3VtZSBpdAog
ICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNvbHV0ZSBvciBub24tZml4ZWQgcmVuZGVyZXJzIGFzIGNo
aWxkcmVuLgogICAgIG1fYnViYmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOwpAQCAtMTk5LDI0ICsyMDgsMjQgQEAgdm9pZCBW
YWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKCkKICAgICBhZGp1c3RCdWJibGVQb3Np
dGlvbihtX2VsZW1lbnQtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCksIG1f
YnViYmxlLmdldCgpKTsKIAogICAgIGF1dG8gY2xpcHBlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgIGNsaXBwZXItPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0
LXZhbGlkYXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIGNsaXBwZXItPnNldFBzZXVkbyh3ZWJraXRWYWxpZGF0aW9uQnVi
YmxlQXJyb3dDbGlwcGVyTmFtZSk7CiAgICAgYXV0byBidWJibGVBcnJvdyA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGJ1YmJsZUFycm93LT5zZXRQc2V1ZG8oQXRvbVN0
cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdyIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgYnViYmxlQXJyb3ctPnNldFBzZXVkbyh3ZWJraXRWYWxp
ZGF0aW9uQnViYmxlQXJyb3dOYW1lKTsKICAgICBjbGlwcGVyLT5hcHBlbmRDaGlsZChidWJibGVB
cnJvdyk7CiAgICAgbV9idWJibGUtPmFwcGVuZENoaWxkKGNsaXBwZXIpOwogCiAgICAgYXV0byBt
ZXNzYWdlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgbWVzc2FnZS0+
c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbWVzc2FnZS0+c2V0UHNl
dWRvKHdlYmtpdFZhbGlkYXRpb25CdWJibGVNZXNzYWdlTmFtZSk7CiAgICAgYXV0byBpY29uID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgaWNvbi0+c2V0UHNldWRvKEF0
b21TdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtaWNvbiIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgaWNvbi0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRp
b25CdWJibGVJY29uTmFtZSk7CiAgICAgbWVzc2FnZS0+YXBwZW5kQ2hpbGQoaWNvbik7CiAgICAg
YXV0byB0ZXh0QmxvY2sgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICB0
ZXh0QmxvY2stPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxl
LXRleHQtYmxvY2siLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHRl
eHRCbG9jay0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRpb25CdWJibGVUZXh0QmxvY2tOYW1lKTsK
ICAgICBtX21lc3NhZ2VIZWFkaW5nID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgbV9tZXNzYWdlSGVhZGluZy0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUtaGVhZGluZyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgbV9tZXNzYWdlSGVhZGluZy0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRpb25CdWJi
bGVIZWFkaW5nTmFtZSk7CiAgICAgdGV4dEJsb2NrLT5hcHBlbmRDaGlsZCgqbV9tZXNzYWdlSGVh
ZGluZyk7CiAgICAgbV9tZXNzYWdlQm9keSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwotICAgIG1fbWVzc2FnZUJvZHktPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXZh
bGlkYXRpb24tYnViYmxlLWJvZHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIG1fbWVzc2FnZUJvZHktPnNldFBzZXVkbyh3ZWJraXRWYWxpZGF0aW9uQnViYmxlQm9k
eU5hbWUpOwogICAgIHRleHRCbG9jay0+YXBwZW5kQ2hpbGQoKm1fbWVzc2FnZUJvZHkpOwogICAg
IG1lc3NhZ2UtPmFwcGVuZENoaWxkKHRleHRCbG9jayk7CiAgICAgbV9idWJibGUtPmFwcGVuZENo
aWxkKG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0
YWlsc01hcmtlckNvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWls
c01hcmtlckNvbnRyb2wuY3BwCmluZGV4IDA0YTlhZTY0NGI4NjUyODY5ZTJhYjQyYzY4ODIwOGJi
YTcwNDhkNDguLjY0ZmRlYjdhNmEwNTkxMTMzMGMwYzUzOTY0YzY5OGNkYzYwYzY0M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5j
cHAKQEAgLTQ5LDcgKzQ5LDggQEAgUmVmPERldGFpbHNNYXJrZXJDb250cm9sPiBEZXRhaWxzTWFy
a2VyQ29udHJvbDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIERldGFpbHNNYXJrZXJDb250
cm9sOjpEZXRhaWxzTWFya2VyQ29udHJvbChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1M
RGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCiB7Ci0gICAgc2V0UHNldWRv
KEF0b21TdHJpbmcoIi13ZWJraXQtZGV0YWlscy1tYXJrZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB3ZWJraXREZXRhaWxzTWFya2VyTmFtZSgiLXdlYmtpdC1kZXRhaWxzLW1hcmtlciIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0RGV0
YWlsc01hcmtlck5hbWUpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0YWlsc01h
cmtlckNvbnRyb2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50LmNwcAppbmRleCBmYzFkZWJjZWUyZjYzZGY2N2QxNDM0NjI3MjI3NTMyZDYwNjVjYjc4Li5l
YjM1MzEyYmVhMzRlYjgwMDIyNDdmYjZjYjRmZDU1YTQ5Y2EwNTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50LmNwcApAQCAtNzcsNyArNzcsOCBAQCBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50KERvYwogICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKICAgICAs
IG1fbWVkaWFFbGVtZW50KG1ha2VXZWFrUHRyKCZlbGVtZW50KSkKIHsKLSAgICBzZXRQc2V1ZG8o
QXRvbVN0cmluZygiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHdlYmtpdE1lZGlhVGV4dFRyYWNrQ29udGFpbmVyTmFtZSgiLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0TWVkaWFUZXh0VHJhY2tDb250YWluZXJOYW1l
KTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKaW5kZXggODM4YjI0NDMyOGUyY2Ez
MTQxNGRlNTVkNmRjYjNjMjk2OWU5ZmU3NC4uNGI0Y2MwMjEwMWE0MjkxZjczNTVjNDcxYTZmZTY3
YzRmZDBhOWQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jl
c3NTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwCkBAIC04OSw0ICs4OSwyOCBAQCB2b2lkIFByb2dyZXNzVmFs
dWVFbGVtZW50OjpzZXRXaWR0aFBlcmNlbnRhZ2UoZG91YmxlIHdpZHRoKQogICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgd2lkdGgsIENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRSk7CiB9CiAKK1JlZjxQcm9ncmVzc0lubmVyRWxlbWVudD4gUHJvZ3Jlc3NJbm5l
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFByb2dyZXNzSW5uZXJFbGVtZW50TmFt
ZSgiLXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIFJlZjxQcm9ncmVzc0lubmVyRWxlbWVudD4gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBQcm9ncmVzc0lubmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJlc3VsdC0+
c2V0UHNldWRvKHdlYmtpdFByb2dyZXNzSW5uZXJFbGVtZW50TmFtZSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworUmVmPFByb2dyZXNzQmFyRWxlbWVudD4gUHJvZ3Jlc3NCYXJFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQcm9ncmVzc0Jhck5hbWUoIi13ZWJraXQtcHJvZ3Jlc3Mt
YmFyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIFJlZjxQcm9ncmVz
c0JhckVsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJvZ3Jlc3NCYXJFbGVtZW50KGRv
Y3VtZW50KSk7CisgICAgcmVzdWx0LT5zZXRQc2V1ZG8od2Via2l0UHJvZ3Jlc3NCYXJOYW1lKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitSZWY8UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ+IFByb2dy
ZXNzVmFsdWVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQcm9ncmVzc1ZhbHVlTmFt
ZSgiLXdlYmtpdC1wcm9ncmVzcy12YWx1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICBSZWY8UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0UmVmKCpu
ZXcgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXN1bHQtPnNldFBzZXVk
byh3ZWJraXRQcm9ncmVzc1ZhbHVlTmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
aAppbmRleCBkMzgyNjQyNDdhYmNkYjkwMjliMjRhMmY4NDU3MWFiYzc0ZDVjZDAwLi5jNTE5Y2Nj
MGMzOGYzNzQ4ZGQ3YmI3MjhhZjAxMWFjMjU3YzI3ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaApAQCAtNjUsMTMgKzY1LDYg
QEAgY2xhc3MgUHJvZ3Jlc3NJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgUHJvZ3Jlc3NTaGFk
b3dFbGVtZW50IHsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihQcm9ncmVzc0lubmVyRWxlbWVu
dCkgPT0gc2l6ZW9mKFByb2dyZXNzU2hhZG93RWxlbWVudCkpOwogCi1pbmxpbmUgUmVmPFByb2dy
ZXNzSW5uZXJFbGVtZW50PiBQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKLXsKLSAgICBSZWY8UHJvZ3Jlc3NJbm5lckVsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgUHJvZ3Jlc3NJbm5lckVsZW1lbnQoZG9jdW1lbnQpKTsKLSAgICByZXN1bHQtPnNl
dFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
IGNsYXNzIFByb2dyZXNzQmFyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBQcm9ncmVzc1NoYWRvd0Vs
ZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UHJvZ3Jlc3NCYXJFbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQmKTsKQEAgLTgxLDEzICs3NCw2IEBAIGNsYXNzIFByb2dyZXNzQmFyRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBQcm9ncmVzc1NoYWRvd0VsZW1lbnQgewogfTsKIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFByb2dyZXNzQmFyRWxlbWVudCkgPT0gc2l6ZW9mKFByb2dyZXNzU2hhZG93RWxl
bWVudCkpOwogCi1pbmxpbmUgUmVmPFByb2dyZXNzQmFyRWxlbWVudD4gUHJvZ3Jlc3NCYXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIFJlZjxQcm9ncmVzc0JhckVs
ZW1lbnQ+IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJvZ3Jlc3NCYXJFbGVtZW50KGRvY3VtZW50
KSk7Ci0gICAgcmVzdWx0LT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1wcm9ncmVzcy1i
YXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KIGNsYXNzIFByb2dyZXNzVmFsdWVFbGVtZW50IGZpbmFsIDogcHVibGljIFByb2dy
ZXNzU2hhZG93RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQcm9ncmVzc1ZhbHVl
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CkBAIC05OCwxMSArODQsNCBAQCBjbGFzcyBQcm9n
cmVzc1ZhbHVlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBQcm9ncmVzc1NoYWRvd0VsZW1lbnQgewog
fTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFByb2dyZXNzVmFsdWVFbGVtZW50KSA9PSBzaXplb2Yo
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50KSk7CiAKLWlubGluZSBSZWY8UHJvZ3Jlc3NWYWx1ZUVsZW1l
bnQ+IFByb2dyZXNzVmFsdWVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQotewot
ICAgIFJlZjxQcm9ncmVzc1ZhbHVlRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm9n
cmVzc1ZhbHVlRWxlbWVudChkb2N1bWVudCkpOwotICAgIHJlc3VsdC0+c2V0UHNldWRvKEF0b21T
dHJpbmcoIi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNw
cAppbmRleCA3ZjIyODg5Njk3NWQyM2U2ZDVjMjU2NjBiZDBmOTAyMzEwZDIzODc1Li4xNTc0NzNi
NWJjYWFkNzBiZGFlMGRiMGU4ODQ3ZjYzNTFjNzM3OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCkBAIC01NSw4ICs1NSw5IEBAIGlu
bGluZSBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTcGluQnV0dG9uT3duZXImCiAgICAgLCBtX3ByZXNzU3RhcnRpbmdTdGF0ZShJbmRldGVy
bWluYXRlKQogICAgICwgbV9yZXBlYXRpbmdUaW1lcigqdGhpcywgJlNwaW5CdXR0b25FbGVtZW50
OjpyZXBlYXRpbmdUaW1lckZpcmVkKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB3ZWJraXRJbm5lclNwaW5CdXR0b25OYW1lKCItd2Via2l0LWlubmVyLXNw
aW4tYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHNldEhh
c0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwotICAgIHNldFBzZXVkbyhBdG9tU3RyaW5n
KCItd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0SW5uZXJTcGluQnV0dG9uTmFtZSk7CiB9CiAK
IFJlZjxTcGluQnV0dG9uRWxlbWVudD4gU3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFNwaW5CdXR0b25Pd25lciYgc3BpbkJ1dHRvbk93bmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAKaW5kZXggZmRkMjAzZmIxMmM0ZGQ2ZTk2OWQxYjY4MDg2ZTYxMTI1ZWRlZTBiNi4uZjRiNWZj
YjQ5Y2Y3NWQzOGI2NTYyZTExNTUzOTJhODUyMzkyY2VjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0x
ODIsNyArMTgyLDggQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY28KIGlubGluZSBUZXh0Q29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudDo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1l
bnQmIGRvY3VtZW50KQogICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKIHsK
LSAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygicGxhY2Vob2xkZXIiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBwbGFjZWhvbGRlck5hbWUoInBsYWNlaG9sZGVyIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHNldFBzZXVkbyhwbGFjZWhvbGRlck5hbWUpOwogICAgIHNl
dEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCkBAIC0yNTQsMTMgKzI1NSwx
NiBAQCBib29sIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkKIGlubGluZSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6
OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
OiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogeworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRTZWFyY2hDYW5jZWxCdXR0b25OYW1lKCIt
d2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBidXR0
b25OYW1lKCJidXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKICAg
ICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIAotICAgIHNldFBzZXVkbyhB
dG9tU3RyaW5nKCItd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0U2VhcmNoQ2FuY2VsQnV0
dG9uTmFtZSk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0ciwgQVhTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblRleHQoKSk7CiAjZW5kaWYKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHJvbGVBdHRyLCBBdG9tU3RyaW5nKCJidXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9s
ZUF0dHIsIGJ1dHRvbk5hbWUpOwogfQogCiBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50PiBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Zb3VUdWJlRW1i
ZWRTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVF
bWJlZFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDg4MDI2MDE0ZmZlZjIwMGE1YjZjMzM4YTEyNzM3
NGE2MGIxYmZmNjMuLmY2NGQzNzIxMTllY2YxYzlmZWUzOGE5NjZiNTk3NGI1MmRmMTgyMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQuY3BwCkBAIC00MSw3ICs0MSw4IEBAIFJlZjxZb3VUdWJlRW1iZWRTaGFkb3dF
bGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvYykK
IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OllvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcs
IGRvY3VtZW50KQogewotICAgIHNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXBsdWdpbi1y
ZXBsYWNlbWVudCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFBsdWdpblJlcGxhY2Vt
ZW50TmFtZSgiLXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgc2V0UHNldWRvKHdlYmtpdFBsdWdpblJlcGxhY2VtZW50TmFt
ZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCmluZGV4IDI2
MDkwZGE2N2VkY2M1MTAxNmVlOTkzMzhhNGMwMmI3N2RiZmUzZmIuLmVkZDk0NWIyMzVlNDE2ZGYy
YmU0NmE1MzE3MzAwNzhmZDA0Y2QzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNw
cApAQCAtOTQsOCArOTQsMTAgQEAgUmVmUHRyPEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFj
PiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6dHJ5Q3JlYXRlKEQKICAgICBpZiAoIWRv
Y3VtZW50LnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geFdlYmtpdEltYWdlQ29udHJvbHNCdXR0b25O
YW1lKCJ4LXdlYmtpdC1pbWFnZS1jb250cm9scy1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisKICAgICBhdXRvIGJ1dHRvbiA9IGFkb3B0UmVmKCpuZXcgSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWMoZG9jdW1lbnQpKTsKLSAgICBidXR0b24tPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEF0b21TdHJp
bmcoIngtd2Via2l0LWltYWdlLWNvbnRyb2xzLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgYnV0dG9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCB4V2Via2l0SW1hZ2VDb250cm9sc0J1dHRvbk5h
bWUpOwogCiAgICAgSW50U2l6ZSBwb3NpdGlvbk9mZnNldCA9IFJlbmRlclRoZW1lOjpzaW5nbGV0
b24oKS5pbWFnZUNvbnRyb2xzQnV0dG9uUG9zaXRpb25PZmZzZXQoKTsKICAgICBidXR0b24tPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHBvc2l0aW9uT2Zmc2V0LmhlaWdo
dCgpLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKaW5k
ZXggODhkMzllMTVmZWQ4Nzc5YTZlZTMyMGY5NGJlZWM5NmJiYzgwNThjMC4uZGU3YTRiM2QxYjBj
MjVkYWJmMTdmMzk2YTg3YmFiZTc2MGI0MDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5j
cHAKQEAgLTg2LDggKzg2LDEwIEBAIFJlZlB0cjxJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQ+IElt
YWdlQ29udHJvbHNSb290RWxlbWVudDo6dHJ5Q3JlYXRlKERvY3VtZW50JiBkCiAgICAgaWYgKCFk
b2N1bWVudC5wYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHhXZWJraXRJbWFnZUNvbnRyb2xzTmFtZSgi
eC13ZWJraXQtaW1hZ2UtY29udHJvbHMiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisKICAgICBSZWY8SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjPiBjb250cm9scyA9IGFk
b3B0UmVmKCpuZXcgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKGRvY3VtZW50KSk7Ci0gICAg
Y29udHJvbHMtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpj
bGFzc0F0dHIsIEF0b21TdHJpbmcoIngtd2Via2l0LWltYWdlLWNvbnRyb2xzIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBjb250cm9scy0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgeFdlYmtpdEltYWdlQ29u
dHJvbHNOYW1lKTsKIAogICAgIGlmIChSZWZQdHI8SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWM+IGJ1dHRvbiA9IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp0cnlDcmVhdGUoZG9j
dW1lbnQpKQogICAgICAgICBjb250cm9scy0+YXBwZW5kQ2hpbGQoKmJ1dHRvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggMjQxODc3YzMyMWVkMTlk
MGVkODI5OTM0ODgwMzFmN2Y1NjE2NWNjMy4uZDJjMDBiMjc3YTM1MjE4NTZhNDdhODIzM2U4MDNk
NGJmMDhiMjBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cApAQCAtNDg4LDggKzQ4OCw5IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpyZWJ1aWxkRGlzcGxheVRy
ZWUoKQogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dl
ZFNjb3BlRm9yUmVmZXJlbmNlVHJlZSgqbV9jdWVOb2RlKTsKIAogICAgIGlmICghbV9kaXNwbGF5
VHJlZSkgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
d2Via2l0R2VuZXJpY0N1ZVJvb3ROYW1lKCItd2Via2l0LWdlbmVyaWMtY3VlLXJvb3QiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIG1fZGlzcGxheVRyZWUgPSBU
ZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZShvd25lckRvY3VtZW50KCksICp0aGlzKTsKLSAgICAgICAg
bV9kaXNwbGF5VHJlZS0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtZ2VuZXJpYy1jdWUt
cm9vdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIG1fZGlz
cGxheVRyZWUtPnNldFBzZXVkbyh3ZWJraXRHZW5lcmljQ3VlUm9vdE5hbWUpOwogICAgIH0KIAog
ICAgIG1fZGlzcGxheVRyZWUtPnJlbW92ZUNoaWxkcmVuKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398108</attachid>
            <date>2020-04-30 15:52:14 -0700</date>
            <delta_ts>2020-04-30 16:06:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211223-20200430155210.patch</filename>
            <type>text/plain</type>
            <size>34005</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1MjBmMGE2MGNiMjVm
MmM4NjRmN2M0ZmQxNzQ1NTBkOTc0NTdhOC4uY2RjNThiYTljZGQwZjJjZjk5YWI0NjdkNmMwNDE3
OGZmNzIzOTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA0LTMwICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBIVE1MIGVsZW1l
bnQgY3JpdGljYWwgcGF0aHMgaW5jbHVkZSBBdG9tU3RyaW5nIG1hdGVyaWFsaXphdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgbWVhc3Vy
aW5nIFNwZWVkb21ldGVyMiwgSSd2ZSBub3RpY2VkIHRoYXQgZXZlcnkgdGltZSB3ZSBjcmVhdGUg
c29tZSB0eXBlIG9mIGlucHV0IGVsZW1lbnQsIHdlIGNhbGwgQXRvbVN0cmluZyBtdWx0aXBsZSB0
aW1lcyB3aGlsZSBpdCBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICBJdCB0dXJuZWQgb3V0IHRo
YXQgdGhpcyBpcyBiZWNhdXNlIHNvbWUgcGxhY2VzIGFyZSB1c2luZyBgQXRvbVN0cmluZygiLi4u
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpYCBpbnN0ZWFkIG9mCisgICAgICAg
IGBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gLi4uKCIuLi4iLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbClgLiBTaW5jZSBIVE1MIGlzIGluIHRoZSBtYWlu
IHRocmVhZCwgd2UgY2FuIGp1c3QgdXNlIGBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8PmAuCisgICAg
ICAgIFRoaXMgcGF0Y2ggZml4ZXMgYEF0b21TdHJpbmcoKWAgY2FsbHMgYnkgY2hhbmdpbmcgdGhl
bSB0byBgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz5gIGlmIGl0IGlzIHVuZGVyIFdl
YkNvcmUvaHRtbCBkaXJlY3RvcnkuCisgICAgICAgIEFuZCBpbiB0aGlzIHBhdGNoLCB3ZSBvbWl0
IEZUUERpcmVjdG9yeURvY3VtZW50LCBNZWRpYURvY3VtZW50LCBhbmQgUGx1Z2luRG9jdW1lbnQn
cyBmaXhlcyBmb3Igbm93IHNpbmNlIHRoZWlyIEF0b21TdHJpbmcgY29udGVudCBoYXMgYSBiaXQg
ZGlmZmVyZW50IG5hdHVyZSAoc29tZQorICAgICAgICBwc2V1ZG8gQ1NTIHZhbHVlICgiLXdlYmtp
dC14eHgiKSB2LnMuIHNvbWUgcGFydGljdWxhciBDU1MgcHJvcGVydHkgdmFsdWUgKCIxMDAlIiku
CisKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0Zp
bGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6
VXBsb2FkQnV0dG9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0cnVlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpmYWxzZU5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhaW50ZXh0T25seU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6c2V0RHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzZXRTcGVsbGNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRBdXRv
Y29ycmVjdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlSW5u
ZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0
cmVlKToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1cGRhdGVSZXN1bHRCdXR0b25Qc2V1ZG9UeXBlKToKKyAgICAgICAgKiBodG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24pOgorICAgICAgICAqIGh0
bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1l
c3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6
OkRldGFpbHNNYXJrZXJDb250cm9sKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzQmFyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlByb2dyZXNzVmFsdWVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJv
Z3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
cm9ncmVzc0JhckVsZW1lbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
cm9ncmVzc1ZhbHVlRWxlbWVudDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3No
YWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9u
RWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbFBs
YWNlaG9sZGVyRWxlbWVudDo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZUVtYmVkU2hhZG93RWxl
bWVudDo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp0cnlDcmVhdGUpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50Ojp0cnlDcmVhdGUpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKToKKwogMjAyMC0wNC0zMCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0LldlYkNvbnRlbnQgcHJvY2VzcyBj
cmFzaGVzIHdoZW4gd2ViIGRldmVsb3BlciB0b29scyBhcmUgb3BlbmVkIGluIFNhZmFyaQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAyMzc4YWQ2MTA5ODgzMzY2ZTBl
NGE3ZjBiYjg5MTFmZDc3ZjkwNzIxLi4yYTllZGVlOGM4YzU2YzE1ZDc4MzNiYTRhMjhkODk1NzQ3
Y2VlNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTQzLDEx
ICsxNDMsMTQgQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAg
ICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgp
KTsKIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRD
b2xvclN3YXRjaE5hbWUoIi13ZWJraXQtY29sb3Itc3dhdGNoIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB3ZWJraXRDb2xvclN3YXRjaFdyYXBwZXJOYW1lKCItd2Via2l0LWNvbG9yLXN3YXRjaC13
cmFwcGVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGF1dG8gd3JhcHBlckVs
ZW1lbnQgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICB3cmFwcGVyRWxl
bWVudC0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXIi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHdyYXBwZXJFbGVtZW50
LT5zZXRQc2V1ZG8od2Via2l0Q29sb3JTd2F0Y2hXcmFwcGVyTmFtZSk7CiAgICAgYXV0byBjb2xv
clN3YXRjaCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGNvbG9yU3dh
dGNoLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1jb2xvci1zd2F0Y2giLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGNvbG9yU3dhdGNoLT5zZXRQc2V1ZG8o
d2Via2l0Q29sb3JTd2F0Y2hOYW1lKTsKICAgICB3cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQo
Y29sb3JTd2F0Y2gpOwogICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBl
bmRDaGlsZCh3cmFwcGVyRWxlbWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCmluZGV4IDRlNDFmZDNmODA3ZThmMzRiZmVmM2Y2M2YwYmE2MTE5YTYxOTgyMWUuLmZkMTJj
ZThjZGJlOTc2NDI4ZTczMTZmMmQwMGJhOGE2ZTA3YTNjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcApAQCAtODksOCArODksMTAgQEAgUmVmPFVwbG9hZEJ1dHRvbkVsZW1l
bnQ+IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKERvY3VtZW50JiBkb2N1
bWUKIFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OlVwbG9hZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgIDogSFRNTElucHV0RWxlbWVudChpbnB1dFRhZywgZG9jdW1lbnQsIDAsIGZh
bHNlKQogewotICAgIHNldFR5cGUoQXRvbVN0cmluZygiYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1m
aWxlLXVwbG9hZC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBidXR0b25OYW1lKCJi
dXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdEZpbGVVcGxvYWRCdXR0b25OYW1l
KCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICBzZXRUeXBlKGJ1dHRvbk5hbWUpOworICAgIHNldFBzZXVkbyh3ZWJraXRG
aWxlVXBsb2FkQnV0dG9uTmFtZSk7CiB9CiAKIEZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
aW5kZXggOGUyOTJlMGQwNDBjYThiMjBjNjAzYjkyYjJiZmI1YzY1MmFkZmMzZC4uMmVlZDBkMjhm
NDAwZDRiZTNhYTc0ZWY5ZDU3NjU3OGYzNDdkZjkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKQEAgLTY2MCwxNCArNjYwLDMyIEBAIFN0cmluZyBIVE1MRWxlbWVudDo6Y29udGVu
dEVkaXRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gImluaGVyaXQiX3M7CiB9CiAKK3N0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiB0cnVlTmFtZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IHRydWVWYWx1ZSgidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHJ1ZVZhbHVlLmdldCgpOworfQorCitzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgZmFsc2VOYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VWYWx1ZSgiZmFsc2UiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGZhbHNlVmFsdWUuZ2V0KCk7Cit9CisKK3N0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBwbGFpbnRleHRPbmx5TmFtZSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWludGV4dE9ubHlWYWx1ZSgicGxh
aW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0
dXJuIHBsYWludGV4dE9ubHlWYWx1ZS5nZXQoKTsKK30KKwogRXhjZXB0aW9uT3I8dm9pZD4gSFRN
TEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQpCiB7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJ0cnVlIikpCi0g
ICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxl
QXR0ciwgQXRvbVN0cmluZygidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVk
aXRhYmxlQXR0ciwgdHJ1ZU5hbWUoKSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZW5hYmxlZCwgImZhbHNlIikpCi0gICAgICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgQXRvbVN0cmluZygiZmFsc2Ui
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIGZhbHNlTmFtZSgp
KTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAi
cGxhaW50ZXh0LW9ubHkiKSkKLSAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihjb250ZW50ZWRpdGFibGVBdHRyLCBBdG9tU3RyaW5nKCJwbGFpbnRleHQtb25seSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgcGxhaW50ZXh0T25seU5h
bWUoKSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5hYmxl
ZCwgImluaGVyaXQiKSkKICAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0
dHIpOwogICAgIGVsc2UKQEAgLTY4Miw5ICs3MDAsNyBAQCBib29sIEhUTUxFbGVtZW50OjpkcmFn
Z2FibGUoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXREcmFnZ2FibGUoYm9vbCB2YWx1
ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRyYWdnYWJsZUF0
dHIsIHZhbHVlCi0gICAgICAgID8gQXRvbVN0cmluZygidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKQotICAgICAgICA6IEF0b21TdHJpbmcoImZhbHNlIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGRyYWdnYWJsZUF0dHIsIHZhbHVlID8gdHJ1ZU5hbWUoKSA6IGZhbHNlTmFtZSgp
KTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6c3BlbGxjaGVjaygpIGNvbnN0CkBAIC02OTQsOSAr
NzEwLDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c3BlbGxjaGVjaygpIGNvbnN0CiAKIHZvaWQgSFRN
TEVsZW1lbnQ6OnNldFNwZWxsY2hlY2soYm9vbCBlbmFibGUpCiB7Ci0gICAgc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzcGVsbGNoZWNrQXR0ciwgZW5hYmxlCi0gICAgICAgID8g
QXRvbVN0cmluZygidHJ1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKQotICAg
ICAgICA6IEF0b21TdHJpbmcoImZhbHNlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNwZWxsY2hlY2tB
dHRyLCBlbmFibGUgPyB0cnVlTmFtZSgpIDogZmFsc2VOYW1lKCkpOwogfQogCiB2b2lkIEhUTUxF
bGVtZW50OjpjbGljaygpCkBAIC0xMTAwLDcgKzExMTQsOSBAQCBib29sIEhUTUxFbGVtZW50Ojpz
aG91bGRBdXRvY29ycmVjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEF1dG9jb3Jy
ZWN0KGJvb2wgYXV0b2NvcnJlY3QpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihhdXRvY29ycmVjdEF0dHIsIGF1dG9jb3JyZWN0ID8gQXRvbVN0cmluZygib24iLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBBdG9tU3RyaW5nKCJvZmYiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBvbk5hbWUoIm9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBv
ZmZOYW1lKCJvZmYiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvY29ycmVjdEF0dHIsIGF1dG9jb3Jy
ZWN0ID8gb25OYW1lLmdldCgpIDogb2ZmTmFtZS5nZXQoKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRl
eCAxMzhkNTExNWE1MzIxNWUxMmMxMzBhZGM4ZGIyZGM3MGJkZDEzZjBhLi5kMDZiMjg4MzIyMGQz
YjFjMmRlZTllNGE1NzgwNzFmYjFiM2EyODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNTM1LDcgKzUzNSw5IEBAIGJv
b2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmlzSW5uZXJUZXh0RWxlbWVudEVkaXRhYmxl
KCkgY29uc3QKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eSgpCiB7CiAgICAgaWYgKGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJU
ZXh0RWxlbWVudCgpKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBpc0lubmVyVGV4dEVsZW1lbnRF
ZGl0YWJsZSgpID8gQXRvbVN0cmluZyB7ICJwbGFpbnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsIH0gOiBBdG9tU3RyaW5nIHsgImZhbHNlIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwgfTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHBsYWluVGV4dE9ubHlOYW1lKCJwbGFpbnRleHQtb25seSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGZhbHNlTmFtZSgiZmFsc2UiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVlID0gaXNJbm5lclRl
eHRFbGVtZW50RWRpdGFibGUoKSA/IHBsYWluVGV4dE9ubHlOYW1lLmdldCgpIDogZmFsc2VOYW1l
LmdldCgpOwogICAgICAgICBpbm5lclRleHQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgdmFsdWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggZWI3OGM4MWE4MTk1NDY3MzA1NjczYmU4MjMy
ZmE1YWVjNGI0Nzc0ZC4uOTY3ZTJhOWRlMzRiNmU3MTU1MGY2MDZmMjI2MGNkYjg3MDZmYmY3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTI1NSw5ICsyNTUsMTAg
QEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgQVNTRVJU
KGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgp
KTsKIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRT
bGlkZXJSdW5uYWJsZVRyYWNrTmFtZSgiLXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2siLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50
ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOwogICAgIGF1dG8gdHJhY2sgPSBIVE1MRGl2RWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICB0cmFjay0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13
ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICB0cmFjay0+c2V0UHNldWRvKHdlYmtpdFNsaWRlclJ1bm5hYmxlVHJhY2tO
YW1lKTsKICAgICB0cmFjay0+YXBwZW5kQ2hpbGQoU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpKTsKICAgICBhdXRvIGNvbnRhaW5lciA9IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZCh0cmFjayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKaW5kZXggMmMzMDZhMjAzY2M0ZDU4
NzRkMTRmN2IzMDY5ZWZiMmI4YTJkMjZhYy4uZjZiYjRjOTE4MWNmMGM2YTdmNmQxZjBmMTBiNjIx
ZmIxYzY0NWEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApAQCAt
NjQsMTIgKzY0LDE1IEBAIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjphZGRTZWFyY2hSZXN1bHQoKQog
CiBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRCdXR0b25Qc2V1ZG9UeXBlKFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbkVsZW1lbnQmIHJlc3VsdEJ1dHRvbiwgaW50IG1heFJlc3VsdHMpCiB7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNlYXJjaERlY29y
YXRpb25OYW1lKCItd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB3ZWJraXRTZWFyY2hSZXN1bHRzRGVjb3JhdGlvbk5hbWUoIi13ZWJraXQtc2VhcmNoLXJl
c3VsdHMtZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0U2VhcmNoUmVz
dWx0c0J1dHRvbk5hbWUoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGlmICghbWF4UmVzdWx0cykKLSAgICAgICAg
cmVzdWx0QnV0dG9uLnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXNlYXJjaC1yZXN1bHRz
LWRlY29yYXRpb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAg
ICByZXN1bHRCdXR0b24uc2V0UHNldWRvKHdlYmtpdFNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uTmFt
ZSk7CiAgICAgZWxzZSBpZiAobWF4UmVzdWx0cyA8IDApCi0gICAgICAgIHJlc3VsdEJ1dHRvbi5z
ZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1
ZG8od2Via2l0U2VhcmNoRGVjb3JhdGlvbk5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0
QnV0dG9uLnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRv
biIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHJlc3VsdEJ1
dHRvbi5zZXRQc2V1ZG8od2Via2l0U2VhcmNoUmVzdWx0c0J1dHRvbk5hbWUpOwogfQogCiB2b2lk
IFNlYXJjaElucHV0VHlwZTo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDc0
M2MzMmFhZmU2NDEzMjhhMjU4NDFjOGRiZWYxZWNhMjhhNzRlY2IuLjY3NWU0ZDk0ZjdiMzVlNDdj
ZjIyNDBlMzllMTQ0NjdhN2MyMmFiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKQEAgLTM0OCw4ICszNDgsOSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgfQogCiAgICAgaWYgKHNob3VsZEhhdmVDYXBz
TG9ja0luZGljYXRvcikgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gd2Via2l0Q2Fwc0xvY2tJbmRpY2F0b3JOYW1lKCItd2Via2l0LWNhcHMtbG9jay1p
bmRpY2F0b3IiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgICAgIG1f
Y2Fwc0xvY2tJbmRpY2F0b3IgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAg
ICAgICAgbV9jYXBzTG9ja0luZGljYXRvci0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQt
Y2Fwcy1sb2NrLWluZGljYXRvciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgICAgIG1fY2Fwc0xvY2tJbmRpY2F0b3ItPnNldFBzZXVkbyh3ZWJraXRDYXBzTG9ja0lu
ZGljYXRvck5hbWUpOwogCiAgICAgICAgIGJvb2wgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9y
ID0gdGhpcy0+c2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yKCk7CiAgICAgICAgIG1fY2Fwc0xv
Y2tJbmRpY2F0b3ItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBz
aG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3IgPyBDU1NWYWx1ZUJsb2NrIDogQ1NTVmFsdWVOb25l
LCB0cnVlKTsKQEAgLTQ1NSwxMCArNDU2LDExIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpj
cmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKCkKICAgICBpZiAoIW1fY29udGFpbmVyKQog
ICAgICAgICBjcmVhdGVDb250YWluZXIoKTsKIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiB3ZWJraXRMaXN0QnV0dG9uTmFtZSgiLXdlYmtpdC1saXN0LWJ1dHRv
biIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqbV9jb250YWluZXIpOwog
ICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvciA9IERhdGFMaXN0QnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgIG1fY29udGFpbmVyLT5h
cHBlbmRDaGlsZCgqbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKTsKLSAgICBtX2RhdGFMaXN0
RHJvcGRvd25JbmRpY2F0b3ItPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LWxpc3QtYnV0
dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX2RhdGFMaXN0
RHJvcGRvd25JbmRpY2F0b3ItPnNldFBzZXVkbyh3ZWJraXRMaXN0QnV0dG9uTmFtZSk7CiAgICAg
bV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVOb25lLCB0cnVlKTsKIH0KIApAQCAtNzc4LDExICs3ODAs
MTMgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZUNvbnRhaW5lcigpCiAgICAgQVNT
RVJUKCFtX2NvbnRhaW5lcik7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VGV4dGZpZWxkRGVjb3JhdGlv
bkNvbnRhaW5lck5hbWUoIi13ZWJraXQtdGV4dGZpZWxkLWRlY29yYXRpb24tY29udGFpbmVyIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCiAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKmVsZW1lbnQoKS0+dXNlckFn
ZW50U2hhZG93Um9vdCgpKTsKIAogICAgIG1fY29udGFpbmVyID0gVGV4dENvbnRyb2xJbm5lckNv
bnRhaW5lcjo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgZWxlbWVudCgpLT51
c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKCptX2NvbnRhaW5lcik7Ci0gICAgbV9j
b250YWluZXItPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0
aW9uLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
bV9jb250YWluZXItPnNldFBzZXVkbyh3ZWJraXRUZXh0ZmllbGREZWNvcmF0aW9uQ29udGFpbmVy
TmFtZSk7CiAKICAgICBtX2lubmVyQmxvY2sgPSBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3Jl
YXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxk
KCptX2lubmVyQmxvY2spOwpAQCAtNzk2LDEwICs4MDAsMTEgQEAgdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmNyZWF0ZUF1dG9GaWxsQnV0dG9uKEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1
dHRvblQKICAgICBpZiAoYXV0b0ZpbGxCdXR0b25UeXBlID09IEF1dG9GaWxsQnV0dG9uVHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGJ1dHRvbk5hbWUoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBtX2F1dG9GaWxsQnV0dG9u
ID0gQXV0b0ZpbGxCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpLCAq
dGhpcyk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0UHNldWRvKGF1dG9GaWxsQnV0dG9uVHlw
ZVRvQXV0b0ZpbGxCdXR0b25Qc2V1ZG9DbGFzc05hbWUoYXV0b0ZpbGxCdXR0b25UeXBlKSk7Ci0g
ICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihy
b2xlQXR0ciwgQXRvbVN0cmluZygiYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHJvbGVBdHRyLCBidXR0b25OYW1lKTsKICAgICBtX2F1dG9GaWxsQnV0dG9uLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFyaWFfbGFiZWxBdHRyLCBhdXRvRmls
bEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbChhdXRvRmlsbEJ1dHRvblR5cGUpKTsKICAg
ICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRUZXh0Q29udGVudChhdXRvRmlsbEJ1dHRvblR5cGVUb0F1
dG9GaWxsQnV0dG9uVGV4dChhdXRvRmlsbEJ1dHRvblR5cGUpKTsKICAgICBtX2NvbnRhaW5lci0+
YXBwZW5kQ2hpbGQoKm1fYXV0b0ZpbGxCdXR0b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcAppbmRleCAzMWFhYjg1OWM2YWNkOTMwMTA2OWZiNjEyZTcxMjFlZmM1
ZTQxNWJhLi4wYjBmMzJiOTZiZjE0OWRiN2QyYTIxMmNiMjQyYjFiNTY0Njc4M2I3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtMTgxLDkgKzE4MSwxOCBA
QCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoKQogCiAgICAgU2hhZG93
Um9vdCYgc2hhZG93Um9vdCA9IG1fZWxlbWVudC0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgp
OwogCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFZh
bGlkYXRpb25CdWJibGVOYW1lKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlQXJyb3dDbGlwcGVyTmFtZSgiLXdl
YmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdy1jbGlwcGVyIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlQXJyb3dOYW1lKCItd2Via2l0LXZhbGlkYXRpb24t
YnViYmxlLWFycm93IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnVi
YmxlTWVzc2FnZU5hbWUoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZUljb25OYW1lKCItd2Via2l0
LXZhbGlkYXRpb24tYnViYmxlLWljb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFZh
bGlkYXRpb25CdWJibGVUZXh0QmxvY2tOYW1lKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRl
eHQtYmxvY2siLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVI
ZWFkaW5nTmFtZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1oZWFkaW5nIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlQm9keU5hbWUoIi13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUtYm9keSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KwogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsKICAgICBt
X2J1YmJsZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIG1fYnViYmxl
LT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbV9idWJibGUtPnNldFBzZXVkbyh3
ZWJraXRWYWxpZGF0aW9uQnViYmxlTmFtZSk7CiAgICAgLy8gTmVlZCB0byBmb3JjZSBwb3NpdGlv
bjphYnNvbHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRvZXNuJ3QgYXNzdW1lIGl0CiAgICAg
Ly8gY29udGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhlZCByZW5kZXJlcnMgYXMgY2hpbGRy
ZW4uCiAgICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3Np
dGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7CkBAIC0xOTksMjQgKzIwOCwyNCBAQCB2b2lkIFZhbGlk
YXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoKQogICAgIGFkanVzdEJ1YmJsZVBvc2l0aW9u
KG1fZWxlbWVudC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSwgbV9idWJi
bGUuZ2V0KCkpOwogCiAgICAgYXV0byBjbGlwcGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7Ci0gICAgY2xpcHBlci0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUtYXJyb3ctY2xpcHBlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgY2xpcHBlci0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRpb25CdWJibGVB
cnJvd0NsaXBwZXJOYW1lKTsKICAgICBhdXRvIGJ1YmJsZUFycm93ID0gSFRNTERpdkVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYnViYmxlQXJyb3ctPnNldFBzZXVkbyhBdG9tU3RyaW5n
KCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBidWJibGVBcnJvdy0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRp
b25CdWJibGVBcnJvd05hbWUpOwogICAgIGNsaXBwZXItPmFwcGVuZENoaWxkKGJ1YmJsZUFycm93
KTsKICAgICBtX2J1YmJsZS0+YXBwZW5kQ2hpbGQoY2xpcHBlcik7CiAKICAgICBhdXRvIG1lc3Nh
Z2UgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBtZXNzYWdlLT5zZXRQ
c2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtZXNzYWdlLT5zZXRQc2V1ZG8o
d2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2VOYW1lKTsKICAgICBhdXRvIGljb24gPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBpY29uLT5zZXRQc2V1ZG8oQXRvbVN0
cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1pY29uIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBpY29uLT5zZXRQc2V1ZG8od2Via2l0VmFsaWRhdGlvbkJ1
YmJsZUljb25OYW1lKTsKICAgICBtZXNzYWdlLT5hcHBlbmRDaGlsZChpY29uKTsKICAgICBhdXRv
IHRleHRCbG9jayA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIHRleHRC
bG9jay0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtdGV4
dC1ibG9jayIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgdGV4dEJs
b2NrLT5zZXRQc2V1ZG8od2Via2l0VmFsaWRhdGlvbkJ1YmJsZVRleHRCbG9ja05hbWUpOwogICAg
IG1fbWVzc2FnZUhlYWRpbmcgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAg
ICBtX21lc3NhZ2VIZWFkaW5nLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC12YWxpZGF0
aW9uLWJ1YmJsZS1oZWFkaW5nIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBtX21lc3NhZ2VIZWFkaW5nLT5zZXRQc2V1ZG8od2Via2l0VmFsaWRhdGlvbkJ1YmJsZUhl
YWRpbmdOYW1lKTsKICAgICB0ZXh0QmxvY2stPmFwcGVuZENoaWxkKCptX21lc3NhZ2VIZWFkaW5n
KTsKICAgICBtX21lc3NhZ2VCb2R5ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgbV9tZXNzYWdlQm9keS0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdmFsaWRh
dGlvbi1idWJibGUtYm9keSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgbV9tZXNzYWdlQm9keS0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRpb25CdWJibGVCb2R5TmFt
ZSk7CiAgICAgdGV4dEJsb2NrLT5hcHBlbmRDaGlsZCgqbV9tZXNzYWdlQm9keSk7CiAgICAgbWVz
c2FnZS0+YXBwZW5kQ2hpbGQodGV4dEJsb2NrKTsKICAgICBtX2J1YmJsZS0+YXBwZW5kQ2hpbGQo
bWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxz
TWFya2VyQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFy
a2VyQ29udHJvbC5jcHAKaW5kZXggMDRhOWFlNjQ0Yjg2NTI4NjllMmFiNDJjNjg4MjA4YmJhNzA0
OGQ0OC4uNjRmZGViN2E2YTA1OTExMzMwYzBjNTM5NjRjNjk4Y2RjNjBjNjQzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcApA
QCAtNDksNyArNDksOCBAQCBSZWY8RGV0YWlsc01hcmtlckNvbnRyb2w+IERldGFpbHNNYXJrZXJD
b250cm9sOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogRGV0YWlsc01hcmtlckNvbnRyb2w6
OkRldGFpbHNNYXJrZXJDb250cm9sKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZF
bGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKIHsKLSAgICBzZXRQc2V1ZG8oQXRv
bVN0cmluZygiLXdlYmtpdC1kZXRhaWxzLW1hcmtlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHdlYmtpdERldGFpbHNNYXJrZXJOYW1lKCItd2Via2l0LWRldGFpbHMtbWFya2VyIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHNldFBzZXVkbyh3ZWJraXREZXRhaWxz
TWFya2VyTmFtZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBEZXRhaWxzTWFya2Vy
Q29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQu
Y3BwCmluZGV4IGZjMWRlYmNlZTJmNjNkZjY3ZDE0MzQ2MjcyMjc1MzJkNjA2NWNiNzguLmViMzUz
MTJiZWEzNGViODAwMjI0N2ZiNmNiNGZkNTVhNDljYTA1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQuY3BwCkBAIC03Nyw3ICs3Nyw4IEBAIE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQoRG9jCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogICAgICwgbV9t
ZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIoJmVsZW1lbnQpKQogewotICAgIHNldFBzZXVkbyhBdG9t
U3RyaW5nKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gd2Via2l0TWVkaWFUZXh0VHJhY2tDb250YWluZXJOYW1lKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stY29udGFpbmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHNldFBzZXVkbyh3ZWJraXRNZWRpYVRleHRUcmFja0NvbnRhaW5lck5hbWUpOwog
fQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAppbmRleCA4MzhiMjQ0MzI4ZTJjYTMxNDE0
ZGU1NWQ2ZGNiM2MyOTY5ZTlmZTc0Li40YjRjYzAyMTAxYTQyOTFmNzM1NWM0NzFhNmZlNjdjNGZk
MGE5ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNz
U2hhZG93RWxlbWVudC5jcHAKQEAgLTg5LDQgKzg5LDI4IEBAIHZvaWQgUHJvZ3Jlc3NWYWx1ZUVs
ZW1lbnQ6OnNldFdpZHRoUGVyY2VudGFnZShkb3VibGUgd2lkdGgpCiAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCB3aWR0aCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJD
RU5UQUdFKTsKIH0KIAorUmVmPFByb2dyZXNzSW5uZXJFbGVtZW50PiBQcm9ncmVzc0lubmVyRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UHJvZ3Jlc3NJbm5lckVsZW1lbnROYW1lKCIt
d2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgUmVmPFByb2dyZXNzSW5uZXJFbGVtZW50PiByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IFByb2dyZXNzSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmVzdWx0LT5zZXRQ
c2V1ZG8od2Via2l0UHJvZ3Jlc3NJbm5lckVsZW1lbnROYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitSZWY8UHJvZ3Jlc3NCYXJFbGVtZW50PiBQcm9ncmVzc0JhckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHdlYmtpdFByb2dyZXNzQmFyTmFtZSgiLXdlYmtpdC1wcm9ncmVzcy1iYXIi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgUmVmPFByb2dyZXNzQmFy
RWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm9ncmVzc0JhckVsZW1lbnQoZG9jdW1l
bnQpKTsKKyAgICByZXN1bHQtPnNldFBzZXVkbyh3ZWJraXRQcm9ncmVzc0Jhck5hbWUpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK1JlZjxQcm9ncmVzc1ZhbHVlRWxlbWVudD4gUHJvZ3Jlc3NW
YWx1ZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFByb2dyZXNzVmFsdWVOYW1lKCIt
d2Via2l0LXByb2dyZXNzLXZhbHVlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIFJlZjxQcm9ncmVzc1ZhbHVlRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQ
cm9ncmVzc1ZhbHVlRWxlbWVudChkb2N1bWVudCkpOworICAgIHJlc3VsdC0+c2V0UHNldWRvKHdl
YmtpdFByb2dyZXNzVmFsdWVOYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCmlu
ZGV4IGQzODI2NDI0N2FiY2RiOTAyOWIyNGEyZjg0NTcxYWJjNzRkNWNkMDAuLmM1MTljY2MwYzM4
ZjM3NDhkZDdiYjcyOGFmMDExYWMyNTdjMjdmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCkBAIC02NSwxMyArNjUsNiBAQCBj
bGFzcyBQcm9ncmVzc0lubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBQcm9ncmVzc1NoYWRvd0Vs
ZW1lbnQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFByb2dyZXNzSW5uZXJFbGVtZW50KSA9
PSBzaXplb2YoUHJvZ3Jlc3NTaGFkb3dFbGVtZW50KSk7CiAKLWlubGluZSBSZWY8UHJvZ3Jlc3NJ
bm5lckVsZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQotewotICAgIFJlZjxQcm9ncmVzc0lubmVyRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBQcm9ncmVzc0lubmVyRWxlbWVudChkb2N1bWVudCkpOwotICAgIHJlc3VsdC0+c2V0UHNl
dWRvKEF0b21TdHJpbmcoIi13ZWJraXQtcHJvZ3Jlc3MtaW5uZXItZWxlbWVudCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogY2xh
c3MgUHJvZ3Jlc3NCYXJFbGVtZW50IGZpbmFsIDogcHVibGljIFByb2dyZXNzU2hhZG93RWxlbWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQcm9ncmVzc0JhckVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCYpOwpAQCAtODEsMTMgKzc0LDYgQEAgY2xhc3MgUHJvZ3Jlc3NCYXJFbGVtZW50IGZp
bmFsIDogcHVibGljIFByb2dyZXNzU2hhZG93RWxlbWVudCB7CiB9Owogc3RhdGljX2Fzc2VydChz
aXplb2YoUHJvZ3Jlc3NCYXJFbGVtZW50KSA9PSBzaXplb2YoUHJvZ3Jlc3NTaGFkb3dFbGVtZW50
KSk7CiAKLWlubGluZSBSZWY8UHJvZ3Jlc3NCYXJFbGVtZW50PiBQcm9ncmVzc0JhckVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgUmVmPFByb2dyZXNzQmFyRWxlbWVu
dD4gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm9ncmVzc0JhckVsZW1lbnQoZG9jdW1lbnQpKTsK
LSAgICByZXN1bHQtPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXByb2dyZXNzLWJhciIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQogY2xhc3MgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgUHJvZ3Jlc3NT
aGFkb3dFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2dyZXNzVmFsdWVFbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTk4LDExICs4NCw0IEBAIGNsYXNzIFByb2dyZXNz
VmFsdWVFbGVtZW50IGZpbmFsIDogcHVibGljIFByb2dyZXNzU2hhZG93RWxlbWVudCB7CiB9Owog
c3RhdGljX2Fzc2VydChzaXplb2YoUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQpID09IHNpemVvZihQcm9n
cmVzc1NoYWRvd0VsZW1lbnQpKTsKIAotaW5saW5lIFJlZjxQcm9ncmVzc1ZhbHVlRWxlbWVudD4g
UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAg
UmVmPFByb2dyZXNzVmFsdWVFbGVtZW50PiByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFByb2dyZXNz
VmFsdWVFbGVtZW50KGRvY3VtZW50KSk7Ci0gICAgcmVzdWx0LT5zZXRQc2V1ZG8oQXRvbVN0cmlu
ZygiLXdlYmtpdC1wcm9ncmVzcy12YWx1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCmlu
ZGV4IDdmMjI4ODk2OTc1ZDIzZTZkNWMyNTY2MGJkMGY5MDIzMTBkMjM4NzUuLjE1NzQ3M2I1YmNh
YWQ3MGJkYWUwZGIwZTg4NDdmNjM1MWM3Mzc5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTU1LDggKzU1LDkgQEAgaW5saW5l
IFNwaW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQs
IFNwaW5CdXR0b25Pd25lciYKICAgICAsIG1fcHJlc3NTdGFydGluZ1N0YXRlKEluZGV0ZXJtaW5h
dGUpCiAgICAgLCBtX3JlcGVhdGluZ1RpbWVyKCp0aGlzLCAmU3BpbkJ1dHRvbkVsZW1lbnQ6OnJl
cGVhdGluZ1RpbWVyRmlyZWQpCiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHdlYmtpdElubmVyU3BpbkJ1dHRvbk5hbWUoIi13ZWJraXQtaW5uZXItc3Bpbi1i
dXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgc2V0SGFzQ3Vz
dG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7Ci0gICAgc2V0UHNldWRvKEF0b21TdHJpbmcoIi13
ZWJraXQtaW5uZXItc3Bpbi1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHNldFBzZXVkbyh3ZWJraXRJbm5lclNwaW5CdXR0b25OYW1lKTsKIH0KIAogUmVm
PFNwaW5CdXR0b25FbGVtZW50PiBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgU3BpbkJ1dHRvbk93bmVyJiBzcGluQnV0dG9uT3duZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApp
bmRleCBmZGQyMDNmYjEyYzRkZDZlOTY5ZDFiNjgwODZlNjExMjVlZGVlMGI2Li5mNGI1ZmNiNDlj
Zjc1ZDM4YjY1NjJlMTE1NTM5MmE4NTIzOTJjZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE4Miw3
ICsxODIsOCBAQCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjbwogaW5saW5lIFRleHRDb250cm9sUGxh
Y2Vob2xkZXJFbGVtZW50OjpUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQogewotICAg
IHNldFBzZXVkbyhBdG9tU3RyaW5nKCJwbGFjZWhvbGRlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHBsYWNlaG9sZGVyTmFtZSgicGxhY2Vob2xkZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgc2V0UHNldWRvKHBsYWNlaG9sZGVyTmFtZSk7CiAgICAgc2V0SGFz
Q3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKQEAgLTI1NCwxMyArMjU1LDE2IEBA
IGJvb2wgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKQogaW5saW5lIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhU
TUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbk5hbWUoIi13ZWJr
aXQtc2VhcmNoLWNhbmNlbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGJ1dHRvbk5h
bWUoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKwogICAgIHNl
dEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogCi0gICAgc2V0UHNldWRvKEF0b21T
dHJpbmcoIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHNldFBzZXVkbyh3ZWJraXRTZWFyY2hDYW5jZWxCdXR0b25O
YW1lKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGFyaWFfbGFiZWxBdHRyLCBBWFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
VGV4dCgpKTsKICNlbmRpZgotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
cm9sZUF0dHIsIEF0b21TdHJpbmcoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0
ciwgYnV0dG9uTmFtZSk7CiB9CiAKIFJlZjxTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ+
IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAKaW5kZXggODgwMjYwMTRmZmVmMjAwYTViNmMzMzhhMTI3Mzc0YTYw
YjFiZmY2My4uZjY0ZDM3MjExOWVjZjFjOWZlZTM4YTk2NmI1OTc0YjUyZGYxODIyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93
RWxlbWVudC5jcHAKQEAgLTQxLDcgKzQxLDggQEAgUmVmPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1l
bnQ+IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jKQogWW91
VHViZUVtYmVkU2hhZG93RWxlbWVudDo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVudChEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9j
dW1lbnQpCiB7Ci0gICAgc2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtcGx1Z2luLXJlcGxh
Y2VtZW50IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UGx1Z2luUmVwbGFjZW1lbnRO
YW1lKCItd2Via2l0LXBsdWdpbi1yZXBsYWNlbWVudCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0UGx1Z2luUmVwbGFjZW1lbnROYW1lKTsK
IH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFj
L0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKaW5kZXggMjYwOTBk
YTY3ZWRjYzUxMDE2ZWU5OTMzOGE0YzAyYjc3ZGJmZTNmYi4uZWRkOTQ1YjIzNWU0MTZkZjJiZTQ2
YTUzMTczMDA3OGZkMDRjZDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCkBA
IC05NCw4ICs5NCwxMCBAQCBSZWZQdHI8SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM+IElt
YWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp0cnlDcmVhdGUoRAogICAgIGlmICghZG9jdW1l
bnQucGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB4V2Via2l0SW1hZ2VDb250cm9sc0J1dHRvbk5hbWUo
Ingtd2Via2l0LWltYWdlLWNvbnRyb2xzLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKwogICAgIGF1dG8gYnV0dG9uID0gYWRvcHRSZWYoKm5ldyBJbWFnZUNvbnRy
b2xzQnV0dG9uRWxlbWVudE1hYyhkb2N1bWVudCkpOwotICAgIGJ1dHRvbi0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQXRvbVN0cmluZygi
eC13ZWJraXQtaW1hZ2UtY29udHJvbHMtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICBidXR0b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIHhXZWJraXRJbWFnZUNvbnRyb2xzQnV0dG9uTmFtZSk7
CiAKICAgICBJbnRTaXplIHBvc2l0aW9uT2Zmc2V0ID0gUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigp
LmltYWdlQ29udHJvbHNCdXR0b25Qb3NpdGlvbk9mZnNldCgpOwogICAgIGJ1dHRvbi0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgcG9zaXRpb25PZmZzZXQuaGVpZ2h0KCks
IENTU1VuaXRUeXBlOjpDU1NfUFgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAppbmRleCA4
OGQzOWUxNWZlZDg3NzlhNmVlMzIwZjk0YmVlYzk2YmJjODA1OGMwLi5kZTdhNGIzZDFiMGMyNWRh
YmYxN2YzOTZhODdiYWJlNzYwYjQwMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcApA
QCAtODYsOCArODYsMTAgQEAgUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudD4gSW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50Ojp0cnlDcmVhdGUoRG9jdW1lbnQmIGQKICAgICBpZiAoIWRvY3Vt
ZW50LnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geFdlYmtpdEltYWdlQ29udHJvbHNOYW1lKCJ4LXdl
YmtpdC1pbWFnZS1jb250cm9scyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KwogICAgIFJlZjxJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM+IGNvbnRyb2xzID0gYWRvcHRS
ZWYoKm5ldyBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoZG9jdW1lbnQpKTsKLSAgICBjb250
cm9scy0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNsYXNz
QXR0ciwgQXRvbVN0cmluZygieC13ZWJraXQtaW1hZ2UtY29udHJvbHMiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGNvbnRyb2xzLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCB4V2Via2l0SW1hZ2VDb250cm9s
c05hbWUpOwogCiAgICAgaWYgKFJlZlB0cjxJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYz4g
YnV0dG9uID0gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OnRyeUNyZWF0ZShkb2N1bWVu
dCkpCiAgICAgICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZCgqYnV0dG9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCAyNDE4NzdjMzIxZWQxOWQwZWQ4
Mjk5MzQ4ODAzMWY3ZjU2MTY1Y2MzLi5kMmMwMGIyNzdhMzUyMTg1NmE0N2E4MjMzZTgwM2Q0YmYw
OGIyMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBA
IC00ODgsOCArNDg4LDkgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSgp
CiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2Nv
cGVGb3JSZWZlcmVuY2VUcmVlKCptX2N1ZU5vZGUpOwogCiAgICAgaWYgKCFtX2Rpc3BsYXlUcmVl
KSB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRHZW5lcmljQ3VlUm9vdE5hbWUoIi13ZWJraXQtZ2VuZXJpYy1jdWUtcm9vdCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgbV9kaXNwbGF5VHJlZSA9IFRleHRU
cmFja0N1ZUJveDo6Y3JlYXRlKG93bmVyRG9jdW1lbnQoKSwgKnRoaXMpOwotICAgICAgICBtX2Rp
c3BsYXlUcmVlLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1nZW5lcmljLWN1ZS1yb290
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgbV9kaXNwbGF5
VHJlZS0+c2V0UHNldWRvKHdlYmtpdEdlbmVyaWNDdWVSb290TmFtZSk7CiAgICAgfQogCiAgICAg
bV9kaXNwbGF5VHJlZS0+cmVtb3ZlQ2hpbGRyZW4oKTsK
</data>
<flag name="review"
          id="413504"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398119</attachid>
            <date>2020-04-30 16:30:53 -0700</date>
            <delta_ts>2020-04-30 18:47:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211223-20200430163052.patch</filename>
            <type>text/plain</type>
            <size>34773</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ1MjBmMGE2MGNiMjVm
MmM4NjRmN2M0ZmQxNzQ1NTBkOTc0NTdhOC4uNDJmMjhkZGQxNTQyYjQxOTEyZmJhMzdjMGQxYmZh
M2RhYjFkMGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA0LTMwICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgU29tZSBIVE1MIGVsZW1l
bnQgY3JpdGljYWwgcGF0aHMgaW5jbHVkZSBBdG9tU3RyaW5nIG1hdGVyaWFsaXphdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgV2hpbGUgbWVhc3VyaW5n
IFNwZWVkb21ldGVyMiwgSSd2ZSBub3RpY2VkIHRoYXQgZXZlcnkgdGltZSB3ZSBjcmVhdGUgc29t
ZSB0eXBlIG9mIGlucHV0IGVsZW1lbnQsIHdlIGNhbGwgQXRvbVN0cmluZyBtdWx0aXBsZSB0aW1l
cyB3aGlsZSBpdCBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICBJdCB0dXJuZWQgb3V0IHRoYXQg
dGhpcyBpcyBiZWNhdXNlIHNvbWUgcGxhY2VzIGFyZSB1c2luZyBgQXRvbVN0cmluZygiLi4uIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpYCBpbnN0ZWFkIG9mCisgICAgICAgIGBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gLi4uKCIuLi4iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbClgLiBTaW5jZSBIVE1MIGlzIGluIHRoZSBtYWluIHRo
cmVhZCwgd2UgY2FuIGp1c3QgdXNlIGBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8PmAuCisgICAgICAg
IFRoaXMgcGF0Y2ggZml4ZXMgYEF0b21TdHJpbmcoKWAgY2FsbHMgYnkgY2hhbmdpbmcgdGhlbSB0
byBgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz5gIGlmIGl0IGlzIHVuZGVyIFdlYkNv
cmUvaHRtbCBkaXJlY3RvcnkuCisgICAgICAgIEFuZCBpbiB0aGlzIHBhdGNoLCB3ZSBvbWl0IEZU
UERpcmVjdG9yeURvY3VtZW50LCBNZWRpYURvY3VtZW50LCBhbmQgUGx1Z2luRG9jdW1lbnQncyBm
aXhlcyBmb3Igbm93IHNpbmNlIHRoZWlyIEF0b21TdHJpbmcgY29udGVudCBoYXMgYSBiaXQgZGlm
ZmVyZW50IG5hdHVyZSAoc29tZQorICAgICAgICBwc2V1ZG8gQ1NTIHZhbHVlICgiLXdlYmtpdC14
eHgiKSB2LnMuIHNvbWUgcGFydGljdWxhciBDU1MgcHJvcGVydHkgdmFsdWUgKCIxMDAlIikuCisK
KyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBsb2FkQnV0dG9uRWxlbWVudDo6VXBs
b2FkQnV0dG9uRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0cnVlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpmYWxzZU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhaW50ZXh0T25seU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6c2V0RHJhZ2dhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpz
ZXRTcGVsbGNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRBdXRvY29y
cmVjdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp1cGRhdGVSZXN1bHRCdXR0b25Qc2V1ZG9UeXBlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVEYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24pOgorICAgICAgICAqIGh0bWwv
VmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3Nh
Z2U6OmJ1aWxkQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtl
ckNvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6OkRl
dGFpbHNNYXJrZXJDb250cm9sKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzQmFyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlByb2dyZXNzVmFsdWVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jl
c3NJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmVzc0JhckVsZW1lbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmVzc1ZhbHVlRWxlbWVudDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxl
bWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbFBsYWNl
aG9sZGVyRWxlbWVudDo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dDo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFj
L0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjp0cnlDcmVhdGUpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1
ZTo6cmVidWlsZERpc3BsYXlUcmVlKToKKwogMjAyMC0wNC0zMCAgRGV2aW4gUm91c3NvICA8ZHJv
dXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0LldlYkNvbnRlbnQgcHJvY2VzcyBjcmFz
aGVzIHdoZW4gd2ViIGRldmVsb3BlciB0b29scyBhcmUgb3BlbmVkIGluIFNhZmFyaQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAyMzc4YWQ2MTA5ODgzMzY2ZTBlNGE3
ZjBiYjg5MTFmZDc3ZjkwNzIxLi45ZTJmMDRjNDAwMDU2NTc5ZDU0YzQ1MjQ2OGNhMmRjODFhYjFl
NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTQzLDExICsx
NDMsMTUgQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAg
QVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsK
IAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRDb2xv
clN3YXRjaE5hbWUoIi13ZWJraXQtY29sb3Itc3dhdGNoIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB3ZWJraXRDb2xvclN3YXRjaFdyYXBwZXJOYW1lKCItd2Via2l0LWNvbG9yLXN3YXRjaC13cmFw
cGVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCktPmRvY3Vt
ZW50KCk7CiAgICAgYXV0byB3cmFwcGVyRWxlbWVudCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwotICAgIHdyYXBwZXJFbGVtZW50LT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdl
YmtpdC1jb2xvci1zd2F0Y2gtd3JhcHBlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgd3JhcHBlckVsZW1lbnQtPnNldFBzZXVkbyh3ZWJraXRDb2xvclN3YXRjaFdy
YXBwZXJOYW1lKTsKICAgICBhdXRvIGNvbG9yU3dhdGNoID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgY29sb3JTd2F0Y2gtPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Vi
a2l0LWNvbG9yLXN3YXRjaCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgY29sb3JTd2F0Y2gtPnNldFBzZXVkbyh3ZWJraXRDb2xvclN3YXRjaE5hbWUpOwogICAgIHdy
YXBwZXJFbGVtZW50LT5hcHBlbmRDaGlsZChjb2xvclN3YXRjaCk7CiAgICAgZWxlbWVudCgpLT51
c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJFbGVtZW50KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggNGU0MWZkM2Y4MDdlOGYzNGJmZWYz
ZjYzZjBiYTYxMTlhNjE5ODIxZS4uYThlZGM5OWYwYjdkOTVmZGI2ZTNhMjUzNTliYjg3ZGMyODFj
ZGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC04OSw4ICs4OSwx
MSBAQCBSZWY8VXBsb2FkQnV0dG9uRWxlbWVudD4gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRl
Rm9yTXVsdGlwbGUoRG9jdW1lbnQmIGRvY3VtZQogVXBsb2FkQnV0dG9uRWxlbWVudDo6VXBsb2Fk
QnV0dG9uRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MSW5wdXRFbGVtZW50
KGlucHV0VGFnLCBkb2N1bWVudCwgMCwgZmFsc2UpCiB7Ci0gICAgc2V0VHlwZShBdG9tU3RyaW5n
KCJidXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHNldFBz
ZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IGJ1dHRvbk5hbWUoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
d2Via2l0RmlsZVVwbG9hZEJ1dHRvbk5hbWUoIi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgc2V0VHlwZShidXR0b25OYW1lKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0Rmls
ZVVwbG9hZEJ1dHRvbk5hbWUpOwogfQogCiBGaWxlSW5wdXRUeXBlOjpGaWxlSW5wdXRUeXBlKEhU
TUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IDhlMjkyZTBkMDQwY2E4YjIwYzYwM2I5MmIyYmZiNWM2NTJhZGZjM2QuLjdhNmE2ZmUzZTkx
NGU4NWI5ODkzZDE2OTY0MjczZDZiMmM1YmE5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC02NjAsMTQgKzY2MCwzNSBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6OmNvbnRlbnRF
ZGl0YWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuICJpbmhlcml0Il9zOwogfQogCitzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgdHJ1ZU5hbWUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiB0cnVlVmFsdWUoInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gdHJ1
ZVZhbHVlLmdldCgpOworfQorCitzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZmFsc2VOYW1lKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VWYWx1
ZSgiZmFsc2UiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gZmFsc2VWYWx1ZS5nZXQoKTsKK30KKworc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIHBsYWludGV4dE9ubHlOYW1lKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gcGxhaW50ZXh0T25seVZhbHVlKCJwbGFp
bnRleHQtb25seSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBwbGFpbnRleHRPbmx5VmFsdWUuZ2V0KCk7
Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUo
Y29uc3QgU3RyaW5nJiBlbmFibGVkKQogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShlbmFibGVkLCAidHJ1ZSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIEF0b21TdHJpbmcoInRydWUiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0YWJsZUF0dHIsIHRydWVOYW1lKCkpOwogICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJmYWxzZSIp
KQotICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRlZGl0
YWJsZUF0dHIsIEF0b21TdHJpbmcoImZhbHNlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250
ZW50ZWRpdGFibGVBdHRyLCBmYWxzZU5hbWUoKSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZW5hYmxlZCwgInBsYWludGV4dC1vbmx5IikpCi0gICAgICAgIHNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29udGVudGVkaXRhYmxlQXR0ciwgQXRv
bVN0cmluZygicGxhaW50ZXh0LW9ubHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRlbnRl
ZGl0YWJsZUF0dHIsIHBsYWludGV4dE9ubHlOYW1lKCkpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVuYWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92
ZUF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyKTsKICAgICBlbHNlCkBAIC02ODIsOSArNzAz
LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6ZHJhZ2dhYmxlKCkgY29uc3QKIAogdm9pZCBIVE1MRWxl
bWVudDo6c2V0RHJhZ2dhYmxlKGJvb2wgdmFsdWUpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihkcmFnZ2FibGVBdHRyLCB2YWx1ZQotICAgICAgICA/IEF0b21TdHJp
bmcoInRydWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkKLSAgICAgICAgOiBB
dG9tU3RyaW5nKCJmYWxzZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkcmFnZ2FibGVBdHRyLCB2YWx1
ZSA/IHRydWVOYW1lKCkgOiBmYWxzZU5hbWUoKSk7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnNw
ZWxsY2hlY2soKSBjb25zdApAQCAtNjk0LDkgKzcxMyw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnNw
ZWxsY2hlY2soKSBjb25zdAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRTcGVsbGNoZWNrKGJvb2wg
ZW5hYmxlKQogewotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3BlbGxj
aGVja0F0dHIsIGVuYWJsZQotICAgICAgICA/IEF0b21TdHJpbmcoInRydWUiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkKLSAgICAgICAgOiBBdG9tU3RyaW5nKCJmYWxzZSIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihzcGVsbGNoZWNrQXR0ciwgZW5hYmxlID8gdHJ1ZU5hbWUoKSA6IGZh
bHNlTmFtZSgpKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6Y2xpY2soKQpAQCAtMTEwMCw3ICsx
MTE3LDEwIEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnNob3VsZEF1dG9jb3JyZWN0KCkgY29uc3QKIAog
dm9pZCBIVE1MRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QoYm9vbCBhdXRvY29ycmVjdCkKIHsKLSAg
ICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jb3JyZWN0QXR0ciwgYXV0
b2NvcnJlY3QgPyBBdG9tU3RyaW5nKCJvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSA6IEF0b21TdHJpbmcoIm9mZiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9uTmFtZSgi
b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG9mZk5hbWUoIm9mZiIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b2NvcnJlY3RBdHRyLCBhdXRvY29y
cmVjdCA/IG9uTmFtZS5nZXQoKSA6IG9mZk5hbWUuZ2V0KCkpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5k
ZXggMTM4ZDUxMTVhNTMyMTVlMTJjMTMwYWRjOGRiMmRjNzBiZGQxM2YwYS4uMzg4ZWNiOGIwMWEw
ZmM3NzE3NjEyNzA5NDc4OTc1NjRhNjRjOWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTUzNSw3ICs1MzUsMTAgQEAg
Ym9vbCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aXNJbm5lclRleHRFbGVtZW50RWRpdGFi
bGUoKSBjb25zdAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlSW5uZXJU
ZXh0RWxlbWVudEVkaXRhYmlsaXR5KCkKIHsKICAgICBpZiAoYXV0byBpbm5lclRleHQgPSBpbm5l
clRleHRFbGVtZW50KCkpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGlzSW5uZXJUZXh0RWxlbWVu
dEVkaXRhYmxlKCkgPyBBdG9tU3RyaW5nIHsgInBsYWludGV4dC1vbmx5IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwgfSA6IEF0b21TdHJpbmcgeyAiZmFsc2UiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9OworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gcGxhaW5UZXh0T25seU5hbWUoInBsYWludGV4dC1vbmx5IiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZmFsc2VOYW1lKCJmYWxzZSIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSBpc0lubmVyVGV4dEVsZW1lbnRFZGl0YWJsZSgpID8g
cGxhaW5UZXh0T25seU5hbWUuZ2V0KCkgOiBmYWxzZU5hbWUuZ2V0KCk7CiAgICAgICAgIGlubmVy
VGV4dC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250ZW50ZWRpdGFibGVB
dHRyLCB2YWx1ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNw
cAppbmRleCBlYjc4YzgxYTgxOTU0NjczMDU2NzNiZTgyMzJmYTVhZWM0YjQ3NzRkLi5kYjYzNmUy
NjlhMGM1Yjk3OWYzNDUyZmJiYjlhYzA1ZTZmMTIzMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcApAQCAtMjU1LDkgKzI1NSwxMSBAQCB2b2lkIFJhbmdlSW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBBU1NF
UlQoZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkpOwogCisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNsaWRlclJ1bm5hYmxlVHJhY2tOYW1l
KCItd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIERvY3VtZW50JiBk
b2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKICAgICBhdXRvIHRyYWNrID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgdHJhY2stPnNldFBzZXVkbyhBdG9tU3Ry
aW5nKCItd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgdHJhY2stPnNldFBzZXVkbyh3ZWJraXRTbGlkZXJSdW5uYWJs
ZVRyYWNrTmFtZSk7CiAgICAgdHJhY2stPmFwcGVuZENoaWxkKFNsaWRlclRodW1iRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KSk7CiAgICAgYXV0byBjb250YWluZXIgPSBTbGlkZXJDb250YWluZXJF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodHJh
Y2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IDJjMzA2YTIw
M2NjNGQ1ODc0ZDE0ZjdiMzA2OWVmYjJiOGEyZDI2YWMuLjc3MWNmNDcxMjMyYjg1ZWMzMGIyMjY1
NTRhMzI5ZDgwYjI1YTAzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNo
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5j
cHAKQEAgLTY0LDEyICs2NCwxNiBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVz
dWx0KCkKIAogc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZShTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b25FbGVtZW50JiByZXN1bHRCdXR0b24sIGludCBtYXhSZXN1bHRzKQog
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRTZWFy
Y2hEZWNvcmF0aW9uTmFtZSgiLXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gd2Via2l0U2VhcmNoUmVzdWx0c0RlY29yYXRpb25OYW1lKCItd2Via2l0LXNl
YXJjaC1yZXN1bHRzLWRlY29yYXRpb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNl
YXJjaFJlc3VsdHNCdXR0b25OYW1lKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGlmICghbWF4UmVzdWx0cykKLSAgICAgICAgcmVzdWx0QnV0dG9uLnNldFBzZXVk
byhBdG9tU3RyaW5nKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICByZXN1bHRCdXR0b24uc2V0UHNl
dWRvKHdlYmtpdFNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uTmFtZSk7CiAgICAgZWxzZSBpZiAobWF4
UmVzdWx0cyA8IDApCi0gICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8oQXRvbVN0cmluZygi
LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8od2Via2l0U2VhcmNoRGVjb3Jh
dGlvbk5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyhBdG9t
U3RyaW5nKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8od2Via2l0
U2VhcmNoUmVzdWx0c0J1dHRvbk5hbWUpOwogfQogCiB2b2lkIFNlYXJjaElucHV0VHlwZTo6YXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDc0M2MzMmFhZmU2NDEzMjhhMjU4NDFj
OGRiZWYxZWNhMjhhNzRlY2IuLjJmNTllNDUzOTIyOTY0M2QxYzgwM2JjNmNlMDI0ZWM2ZTQ1MGUw
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTM0
OCw4ICszNDgsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKQogICAgIH0KIAogICAgIGlmIChzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IpIHsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdENhcHNM
b2NrSW5kaWNhdG9yTmFtZSgiLXdlYmtpdC1jYXBzLWxvY2staW5kaWNhdG9yIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7Ci0gICAgICAgIG1fY2Fwc0xvY2tJbmRpY2F0b3ItPnNldFBzZXVkbyhBdG9tU3Ry
aW5nKCItd2Via2l0LWNhcHMtbG9jay1pbmRpY2F0b3IiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yLT5zZXRQc2V1ZG8od2Vi
a2l0Q2Fwc0xvY2tJbmRpY2F0b3JOYW1lKTsKIAogICAgICAgICBib29sIHNob3VsZERyYXdDYXBz
TG9ja0luZGljYXRvciA9IHRoaXMtPnNob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcigpOwogICAg
ICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5RGlzcGxheSwgc2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yID8gQ1NTVmFsdWVCbG9jayA6
IENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CkBAIC00NTUsMTAgKzQ1NywxMiBAQCB2b2lkIFRleHRGaWVs
ZElucHV0VHlwZTo6Y3JlYXRlRGF0YUxpc3REcm9wZG93bkluZGljYXRvcigpCiAgICAgaWYgKCFt
X2NvbnRhaW5lcikKICAgICAgICAgY3JlYXRlQ29udGFpbmVyKCk7CiAKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0TGlzdEJ1dHRvbk5hbWUoIi13ZWJr
aXQtbGlzdC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50
QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqbV9jb250YWluZXIpOwogICAgIG1fZGF0YUxpc3RE
cm9wZG93bkluZGljYXRvciA9IERhdGFMaXN0QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgIG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZCgqbV9k
YXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKTsKLSAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0
b3ItPnNldFBzZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LWxpc3QtYnV0dG9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtX2RhdGFMaXN0RHJvcGRvd25JbmRpY2F0
b3ItPnNldFBzZXVkbyh3ZWJraXRMaXN0QnV0dG9uTmFtZSk7CiAgICAgbV9kYXRhTGlzdERyb3Bk
b3duSW5kaWNhdG9yLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwg
Q1NTVmFsdWVOb25lLCB0cnVlKTsKIH0KIApAQCAtNzc4LDExICs3ODIsMTQgQEAgdm9pZCBUZXh0
RmllbGRJbnB1dFR5cGU6OmNyZWF0ZUNvbnRhaW5lcigpCiAgICAgQVNTRVJUKCFtX2NvbnRhaW5l
cik7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VGV4dGZpZWxkRGVjb3JhdGlvbkNvbnRhaW5lck5hbWUo
Ii13ZWJraXQtdGV4dGZpZWxkLWRlY29yYXRpb24tY29udGFpbmVyIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBT
Y3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqZWxl
bWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCkpOwogCiAgICAgbV9jb250YWluZXIgPSBUZXh0
Q29udHJvbElubmVyQ29udGFpbmVyOjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAg
ICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoKm1fY29udGFp
bmVyKTsKLSAgICBtX2NvbnRhaW5lci0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdGV4
dGZpZWxkLWRlY29yYXRpb24tY29udGFpbmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBtX2NvbnRhaW5lci0+c2V0UHNldWRvKHdlYmtpdFRleHRmaWVsZERlY29y
YXRpb25Db250YWluZXJOYW1lKTsKIAogICAgIG1faW5uZXJCbG9jayA9IFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAgICBtX2NvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoKm1faW5uZXJCbG9jayk7CkBAIC03OTYsMTAgKzgwMywxMiBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxCdXR0b24oQXV0b0ZpbGxCdXR0b25U
eXBlIGF1dG9GaWxsQnV0dG9uVAogICAgIGlmIChhdXRvRmlsbEJ1dHRvblR5cGUgPT0gQXV0b0Zp
bGxCdXR0b25UeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gYnV0dG9uTmFtZSgiYnV0dG9uIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbiA9IEF1dG9GaWxsQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgIG1f
YXV0b0ZpbGxCdXR0b24tPnNldFBzZXVkbyhhdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0
dG9uUHNldWRvQ2xhc3NOYW1lKGF1dG9GaWxsQnV0dG9uVHlwZSkpOwotICAgIG1fYXV0b0ZpbGxC
dXR0b24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocm9sZUF0dHIsIEF0b21T
dHJpbmcoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
bV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xl
QXR0ciwgYnV0dG9uTmFtZSk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihhcmlhX2xhYmVsQXR0ciwgYXV0b0ZpbGxCdXR0b25UeXBlVG9B
Y2Nlc3NpYmlsaXR5TGFiZWwoYXV0b0ZpbGxCdXR0b25UeXBlKSk7CiAgICAgbV9hdXRvRmlsbEJ1
dHRvbi0+c2V0VGV4dENvbnRlbnQoYXV0b0ZpbGxCdXR0b25UeXBlVG9BdXRvRmlsbEJ1dHRvblRl
eHQoYXV0b0ZpbGxCdXR0b25UeXBlKSk7CiAgICAgbV9jb250YWluZXItPmFwcGVuZENoaWxkKCpt
X2F1dG9GaWxsQnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5j
cHAKaW5kZXggMzFhYWI4NTljNmFjZDkzMDEwNjlmYjYxMmU3MTIxZWZjNWU0MTViYS4uYzhjYzZi
NDllNDZlMGNmOTBiYWIzMjY1ZDE5YmRjMDIwOGM3NGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTE4MSw5ICsxODEsMTkgQEAgdm9pZCBWYWxpZGF0
aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKCkKIAogICAgIFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QgPSBtX2VsZW1lbnQtPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKIAorICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxl
TmFtZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
d2Via2l0VmFsaWRhdGlvbkJ1YmJsZUFycm93Q2xpcHBlck5hbWUoIi13ZWJraXQtdmFsaWRhdGlv
bi1idWJibGUtYXJyb3ctY2xpcHBlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFs
aWRhdGlvbkJ1YmJsZUFycm93TmFtZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdyIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2VOYW1l
KCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVJY29uTmFtZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1
YmJsZS1pY29uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxl
VGV4dEJsb2NrTmFtZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10ZXh0LWJsb2NrIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlSGVhZGluZ05hbWUoIi13
ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtaGVhZGluZyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
d2Via2l0VmFsaWRhdGlvbkJ1YmJsZUJvZHlOYW1lKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxl
LWJvZHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKwogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxlbWVudC0+ZG9j
dW1lbnQoKTsKICAgICBtX2J1YmJsZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIG1fYnViYmxlLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC12YWxpZGF0aW9u
LWJ1YmJsZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgbV9idWJi
bGUtPnNldFBzZXVkbyh3ZWJraXRWYWxpZGF0aW9uQnViYmxlTmFtZSk7CiAgICAgLy8gTmVlZCB0
byBmb3JjZSBwb3NpdGlvbjphYnNvbHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRvZXNuJ3Qg
YXNzdW1lIGl0CiAgICAgLy8gY29udGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhlZCByZW5k
ZXJlcnMgYXMgY2hpbGRyZW4uCiAgICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7CkBAIC0xOTksMjQgKzIwOSwy
NCBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoKQogICAgIGFkanVz
dEJ1YmJsZVBvc2l0aW9uKG1fZWxlbWVudC0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKSwgbV9idWJibGUuZ2V0KCkpOwogCiAgICAgYXV0byBjbGlwcGVyID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY2xpcHBlci0+c2V0UHNldWRvKEF0b21TdHJp
bmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ctY2xpcHBlciIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgY2xpcHBlci0+c2V0UHNldWRvKHdlYmtpdFZh
bGlkYXRpb25CdWJibGVBcnJvd0NsaXBwZXJOYW1lKTsKICAgICBhdXRvIGJ1YmJsZUFycm93ID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYnViYmxlQXJyb3ctPnNldFBz
ZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93IiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBidWJibGVBcnJvdy0+c2V0UHNldWRv
KHdlYmtpdFZhbGlkYXRpb25CdWJibGVBcnJvd05hbWUpOwogICAgIGNsaXBwZXItPmFwcGVuZENo
aWxkKGJ1YmJsZUFycm93KTsKICAgICBtX2J1YmJsZS0+YXBwZW5kQ2hpbGQoY2xpcHBlcik7CiAK
ICAgICBhdXRvIG1lc3NhZ2UgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAg
ICBtZXNzYWdlLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJs
ZS1tZXNzYWdlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBtZXNz
YWdlLT5zZXRQc2V1ZG8od2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2VOYW1lKTsKICAgICBh
dXRvIGljb24gPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBpY29uLT5z
ZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1pY29uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBpY29uLT5zZXRQc2V1ZG8od2Vi
a2l0VmFsaWRhdGlvbkJ1YmJsZUljb25OYW1lKTsKICAgICBtZXNzYWdlLT5hcHBlbmRDaGlsZChp
Y29uKTsKICAgICBhdXRvIHRleHRCbG9jayA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwotICAgIHRleHRCbG9jay0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtdmFsaWRh
dGlvbi1idWJibGUtdGV4dC1ibG9jayIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CisgICAgdGV4dEJsb2NrLT5zZXRQc2V1ZG8od2Via2l0VmFsaWRhdGlvbkJ1YmJsZVRleHRC
bG9ja05hbWUpOwogICAgIG1fbWVzc2FnZUhlYWRpbmcgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKLSAgICBtX21lc3NhZ2VIZWFkaW5nLT5zZXRQc2V1ZG8oQXRvbVN0cmluZygi
LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1oZWFkaW5nIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBtX21lc3NhZ2VIZWFkaW5nLT5zZXRQc2V1ZG8od2Via2l0VmFs
aWRhdGlvbkJ1YmJsZUhlYWRpbmdOYW1lKTsKICAgICB0ZXh0QmxvY2stPmFwcGVuZENoaWxkKCpt
X21lc3NhZ2VIZWFkaW5nKTsKICAgICBtX21lc3NhZ2VCb2R5ID0gSFRNTERpdkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci0gICAgbV9tZXNzYWdlQm9keS0+c2V0UHNldWRvKEF0b21TdHJpbmco
Ii13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYm9keSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgbV9tZXNzYWdlQm9keS0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRp
b25CdWJibGVCb2R5TmFtZSk7CiAgICAgdGV4dEJsb2NrLT5hcHBlbmRDaGlsZCgqbV9tZXNzYWdl
Qm9keSk7CiAgICAgbWVzc2FnZS0+YXBwZW5kQ2hpbGQodGV4dEJsb2NrKTsKICAgICBtX2J1YmJs
ZS0+YXBwZW5kQ2hpbGQobWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKaW5kZXggMDRhOWFlNjQ0Yjg2NTI4NjllMmFi
NDJjNjg4MjA4YmJhNzA0OGQ0OC4uMmYxNjZmNzIyMjU2MWQ4OWMzOWU5MGY4MmNiNzcyMTQxMDhh
MGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtl
ckNvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJr
ZXJDb250cm9sLmNwcApAQCAtNDksNyArNDksOSBAQCBSZWY8RGV0YWlsc01hcmtlckNvbnRyb2w+
IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogRGV0YWls
c01hcmtlckNvbnRyb2w6OkRldGFpbHNNYXJrZXJDb250cm9sKERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICA6IEhUTUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKIHsKLSAg
ICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1kZXRhaWxzLW1hcmtlciIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IHdlYmtpdERldGFpbHNNYXJrZXJOYW1lKCItd2Via2l0LWRldGFpbHMt
bWFya2VyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgc2V0UHNldWRvKHdlYmtpdERldGFpbHNNYXJrZXJOYW1lKTsK
IH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAKaW5kZXggZmMx
ZGViY2VlMmY2M2RmNjdkMTQzNDYyNzIyNzUzMmQ2MDY1Y2I3OC4uNGY1MWI1MmU2YzQ2N2I0MDM4
YjQ3Y2EwNTU5NzRlNGRhN2E1YTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudC5jcHAKQEAgLTc3LDcgKzc3LDkgQEAgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2MKICAgICA6
IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpCiAgICAgLCBtX21lZGlhRWxlbWVudCht
YWtlV2Vha1B0cigmZWxlbWVudCkpCiB7Ci0gICAgc2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3
ZWJraXRNZWRpYVRleHRUcmFja0NvbnRhaW5lck5hbWUoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFj
ay1jb250YWluZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0TWVkaWFUZXh0VHJhY2tD
b250YWluZXJOYW1lKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKaW5kZXggODM4
YjI0NDMyOGUyY2EzMTQxNGRlNTVkNmRjYjNjMjk2OWU5ZmU3NC4uNmJjMTE3MGZkNGZiOTg5Yjg0
OWFkZTRlN2NjMzZjMmFhYjg1MzY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCkBAIC04OSw0ICs4OSwzMSBAQCB2b2lk
IFByb2dyZXNzVmFsdWVFbGVtZW50OjpzZXRXaWR0aFBlcmNlbnRhZ2UoZG91YmxlIHdpZHRoKQog
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgd2lkdGgsIENTU1Vu
aXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiB9CiAKK1JlZjxQcm9ncmVzc0lubmVyRWxlbWVudD4g
UHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFByb2dyZXNzSW5u
ZXJFbGVtZW50TmFtZSgiLXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50IiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgUmVmPFByb2dyZXNzSW5uZXJFbGVtZW50PiByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFByb2dy
ZXNzSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmVzdWx0LT5zZXRQc2V1ZG8od2Via2l0
UHJvZ3Jlc3NJbm5lckVsZW1lbnROYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitSZWY8
UHJvZ3Jlc3NCYXJFbGVtZW50PiBQcm9ncmVzc0JhckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHdlYmtpdFByb2dyZXNzQmFyTmFtZSgiLXdlYmtpdC1wcm9ncmVzcy1iYXIiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBSZWY8UHJvZ3Jlc3NCYXJFbGVtZW50PiByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFByb2dyZXNz
QmFyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJlc3VsdC0+c2V0UHNldWRvKHdlYmtpdFByb2dy
ZXNzQmFyTmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUmVmPFByb2dyZXNzVmFsdWVF
bGVtZW50PiBQcm9ncmVzc1ZhbHVlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UHJv
Z3Jlc3NWYWx1ZU5hbWUoIi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBSZWY8
UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJvZ3Jlc3NWYWx1
ZUVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXN1bHQtPnNldFBzZXVkbyh3ZWJraXRQcm9ncmVz
c1ZhbHVlTmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAppbmRleCBkMzgyNjQy
NDdhYmNkYjkwMjliMjRhMmY4NDU3MWFiYzc0ZDVjZDAwLi5jNTE5Y2NjMGMzOGYzNzQ4ZGQ3YmI3
MjhhZjAxMWFjMjU3YzI3ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaApAQCAtNjUsMTMgKzY1LDYgQEAgY2xhc3MgUHJvZ3Jl
c3NJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgUHJvZ3Jlc3NTaGFkb3dFbGVtZW50IHsKIH07
CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihQcm9ncmVzc0lubmVyRWxlbWVudCkgPT0gc2l6ZW9mKFBy
b2dyZXNzU2hhZG93RWxlbWVudCkpOwogCi1pbmxpbmUgUmVmPFByb2dyZXNzSW5uZXJFbGVtZW50
PiBQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAg
ICBSZWY8UHJvZ3Jlc3NJbm5lckVsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJvZ3Jl
c3NJbm5lckVsZW1lbnQoZG9jdW1lbnQpKTsKLSAgICByZXN1bHQtPnNldFBzZXVkbyhBdG9tU3Ry
aW5nKCItd2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGNsYXNzIFByb2dyZXNz
QmFyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBQcm9ncmVzc1NoYWRvd0VsZW1lbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UHJvZ3Jlc3NCYXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsK
QEAgLTgxLDEzICs3NCw2IEBAIGNsYXNzIFByb2dyZXNzQmFyRWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBQcm9ncmVzc1NoYWRvd0VsZW1lbnQgewogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFByb2dy
ZXNzQmFyRWxlbWVudCkgPT0gc2l6ZW9mKFByb2dyZXNzU2hhZG93RWxlbWVudCkpOwogCi1pbmxp
bmUgUmVmPFByb2dyZXNzQmFyRWxlbWVudD4gUHJvZ3Jlc3NCYXJFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQotewotICAgIFJlZjxQcm9ncmVzc0JhckVsZW1lbnQ+IHJlc3VsdCA9
IGFkb3B0UmVmKCpuZXcgUHJvZ3Jlc3NCYXJFbGVtZW50KGRvY3VtZW50KSk7Ci0gICAgcmVzdWx0
LT5zZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1wcm9ncmVzcy1iYXIiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGNsYXNz
IFByb2dyZXNzVmFsdWVFbGVtZW50IGZpbmFsIDogcHVibGljIFByb2dyZXNzU2hhZG93RWxlbWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQcm9ncmVzc1ZhbHVlRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Jik7CkBAIC05OCwxMSArODQsNCBAQCBjbGFzcyBQcm9ncmVzc1ZhbHVlRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBQcm9ncmVzc1NoYWRvd0VsZW1lbnQgewogfTsKIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFByb2dyZXNzVmFsdWVFbGVtZW50KSA9PSBzaXplb2YoUHJvZ3Jlc3NTaGFkb3dF
bGVtZW50KSk7CiAKLWlubGluZSBSZWY8UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ+IFByb2dyZXNzVmFs
dWVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIFJlZjxQcm9ncmVz
c1ZhbHVlRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm9ncmVzc1ZhbHVlRWxlbWVu
dChkb2N1bWVudCkpOwotICAgIHJlc3VsdC0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQt
cHJvZ3Jlc3MtdmFsdWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAppbmRleCA3ZjIyODg5
Njk3NWQyM2U2ZDVjMjU2NjBiZDBmOTAyMzEwZDIzODc1Li45ZTMyOGY2YzZiMWFjYTdmY2QxMGVm
ZTViYzRmZTIyNGRjZmFkNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCkBAIC01NSw4ICs1NSwxMCBAQCBpbmxpbmUgU3BpbkJ1dHRv
bkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgU3BpbkJ1dHRv
bk93bmVyJgogICAgICwgbV9wcmVzc1N0YXJ0aW5nU3RhdGUoSW5kZXRlcm1pbmF0ZSkKICAgICAs
IG1fcmVwZWF0aW5nVGltZXIoKnRoaXMsICZTcGluQnV0dG9uRWxlbWVudDo6cmVwZWF0aW5nVGlt
ZXJGaXJlZCkKIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
d2Via2l0SW5uZXJTcGluQnV0dG9uTmFtZSgiLXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwotICAgIHNldFBz
ZXVkbyhBdG9tU3RyaW5nKCItd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRQc2V1ZG8od2Via2l0SW5uZXJTcGluQnV0
dG9uTmFtZSk7CiB9CiAKIFJlZjxTcGluQnV0dG9uRWxlbWVudD4gU3BpbkJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFNwaW5CdXR0b25Pd25lciYgc3BpbkJ1dHRvbk93
bmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKaW5kZXggZmRkMjAzZmIxMmM0ZGQ2ZTk2OWQxYjY4MDg2ZTYxMTI1
ZWRlZTBiNi4uNzkzNGRkYzVlMjZjZWJlZTA5NmE2ODhhMDZjNTJmNjUyMzBjMmRjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCkBAIC0xODIsNyArMTgyLDkgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHls
ZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY28KIGlu
bGluZSBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6VGV4dENvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFn
LCBkb2N1bWVudCkKIHsKLSAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygicGxhY2Vob2xkZXIiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBwbGFjZWhvbGRlck5hbWUoInBsYWNlaG9sZGVyIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgc2V0UHNldWRvKHBsYWNlaG9sZGVyTmFtZSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5
bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKQEAgLTI1NCwxMyArMjU2LDE3IEBAIGJvb2wgU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVu
dHMoKQogaW5saW5lIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6U2VhcmNoRmllbGRD
YW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVt
ZW50KGRpdlRhZywgZG9jdW1lbnQpCiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbk5hbWUoIi13ZWJraXQtc2VhcmNo
LWNhbmNlbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGJ1dHRvbk5hbWUoImJ1dHRv
biIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiAK
LSAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygiLXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2V0UHNldWRvKHdlYmtp
dFNlYXJjaENhbmNlbEJ1dHRvbk5hbWUpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIsIEFYU2Vh
cmNoRmllbGRDYW5jZWxCdXR0b25UZXh0KCkpOwogI2VuZGlmCi0gICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0ciwgQXRvbVN0cmluZygiYnV0dG9uIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHJvbGVBdHRyLCBidXR0b25OYW1lKTsKIH0KIAogUmVmPFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uRWxlbWVudD4gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcAppbmRleCA4ODAyNjAxNGZmZWYy
MDBhNWI2YzMzOGExMjczNzRhNjBiMWJmZjYzLi4yMmY2MjA5NmRjYjBmY2U4YTYzZDBmOGM0OGQ0
NTlhZDAzMWQxYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Zb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcApAQCAtNDEsNyArNDEsOSBAQCBSZWY8WW91
VHViZUVtYmVkU2hhZG93RWxlbWVudD4gWW91VHViZUVtYmVkU2hhZG93RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50JiBkb2MpCiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpZb3VUdWJlRW1iZWRT
aGFkb3dFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50KEhU
TUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKIHsKLSAgICBzZXRQc2V1ZG8oQXRvbVN0cmluZygi
LXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRQbHVnaW5SZXBsYWNlbWVudE5hbWUoIi13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50IiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgc2V0UHNldWRvKHdlYmtpdFBsdWdpblJlcGxhY2VtZW50TmFtZSk7CiB9CiAKIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9t
YWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCmluZGV4IDI2MDkwZGE2N2VkY2M1
MTAxNmVlOTkzMzhhNGMwMmI3N2RiZmUzZmIuLjk2NDMxNmEyMmUyYWYzYTQyOTdlOThlNzMxMzQ2
MjU3NjVhYzlkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9J
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcApAQCAtOTQsOCAr
OTQsMTEgQEAgUmVmUHRyPEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjPiBJbWFnZUNvbnRy
b2xzQnV0dG9uRWxlbWVudE1hYzo6dHJ5Q3JlYXRlKEQKICAgICBpZiAoIWRvY3VtZW50LnBhZ2Uo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbVN0cmluZz4geFdlYmtpdEltYWdlQ29udHJvbHNCdXR0b25OYW1lKCJ4LXdlYmtp
dC1pbWFnZS1jb250cm9scy1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIGF1dG8gYnV0dG9uID0gYWRv
cHRSZWYoKm5ldyBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhkb2N1bWVudCkpOwotICAg
IGJ1dHRvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNs
YXNzQXR0ciwgQXRvbVN0cmluZygieC13ZWJraXQtaW1hZ2UtY29udHJvbHMtYnV0dG9uIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBidXR0b24tPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIHhXZWJraXRJbWFn
ZUNvbnRyb2xzQnV0dG9uTmFtZSk7CiAKICAgICBJbnRTaXplIHBvc2l0aW9uT2Zmc2V0ID0gUmVu
ZGVyVGhlbWU6OnNpbmdsZXRvbigpLmltYWdlQ29udHJvbHNCdXR0b25Qb3NpdGlvbk9mZnNldCgp
OwogICAgIGJ1dHRvbi0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgcG9z
aXRpb25PZmZzZXQuaGVpZ2h0KCksIENTU1VuaXRUeXBlOjpDU1NfUFgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50TWFjLmNwcAppbmRleCA4OGQzOWUxNWZlZDg3NzlhNmVlMzIwZjk0YmVlYzk2YmJjODA1
OGMwLi4yZjlkZjQ5YzIyZWJlYTBiOGU0NTkyYWYxYTU2NDdiNjc2NTFmMjliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50TWFjLmNwcApAQCAtODYsOCArODYsMTEgQEAgUmVmUHRyPEltYWdlQ29udHJv
bHNSb290RWxlbWVudD4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50Ojp0cnlDcmVhdGUoRG9jdW1l
bnQmIGQKICAgICBpZiAoIWRvY3VtZW50LnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4geFdlYmtpdElt
YWdlQ29udHJvbHNOYW1lKCJ4LXdlYmtpdC1pbWFnZS1jb250cm9scyIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAg
UmVmPEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYz4gY29udHJvbHMgPSBhZG9wdFJlZigqbmV3
IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyhkb2N1bWVudCkpOwotICAgIGNvbnRyb2xzLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBB
dG9tU3RyaW5nKCJ4LXdlYmtpdC1pbWFnZS1jb250cm9scyIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgY29udHJvbHMtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIsIHhXZWJraXRJbWFnZUNvbnRyb2xzTmFtZSk7
CiAKICAgICBpZiAoUmVmUHRyPEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjPiBidXR0b24g
PSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6dHJ5Q3JlYXRlKGRvY3VtZW50KSkKICAg
ICAgICAgY29udHJvbHMtPmFwcGVuZENoaWxkKCpidXR0b24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDI0MTg3N2MzMjFlZDE5ZDBlZDgyOTkzNDg4
MDMxZjdmNTYxNjVjYzMuLjY1NTEwOGE1OTdjOTUzZmMwODc5ZWYwOGE4MzJjMTI0NGI4ZGZkYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTQ4OCw4
ICs0ODgsMTAgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNwbGF5VHJlZSgpCiAgICAg
U2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGVGb3JS
ZWZlcmVuY2VUcmVlKCptX2N1ZU5vZGUpOwogCiAgICAgaWYgKCFtX2Rpc3BsYXlUcmVlKSB7Cisg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRHZW5l
cmljQ3VlUm9vdE5hbWUoIi13ZWJraXQtZ2VuZXJpYy1jdWUtcm9vdCIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgbV9kaXNwbGF5VHJlZSA9IFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKG93bmVyRG9jdW1l
bnQoKSwgKnRoaXMpOwotICAgICAgICBtX2Rpc3BsYXlUcmVlLT5zZXRQc2V1ZG8oQXRvbVN0cmlu
ZygiLXdlYmtpdC1nZW5lcmljLWN1ZS1yb290IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICAgICAgbV9kaXNwbGF5VHJlZS0+c2V0UHNldWRvKHdlYmtpdEdlbmVyaWND
dWVSb290TmFtZSk7CiAgICAgfQogCiAgICAgbV9kaXNwbGF5VHJlZS0+cmVtb3ZlQ2hpbGRyZW4o
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>