<?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>137619</bug_id>
          
          <creation_ts>2014-10-10 11:49:19 -0700</creation_ts>
          <short_desc>Nested template contents are not cloned by document.importNode</short_desc>
          <delta_ts>2014-12-18 22:35:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsfiddle.net/jakecigar/sxe7dzc4/3/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137755</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jake">jake.wolpert</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eoconnor</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>yyx990803</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040985</commentid>
    <comment_count>0</comment_count>
    <who name="Jake">jake.wolpert</who>
    <bug_when>2014-10-10 11:49:19 -0700</bug_when>
    <thetext>Given a nested template…
&lt;template id=&quot;select&quot;&gt;
    &lt;fieldset&gt;
        &lt;legend&gt;{{name}}&lt;/legend&gt;
        &lt;select&gt;
            &lt;option&gt;pick something!&lt;/option&gt;
            &lt;template id=&quot;option&quot;&gt;
                &lt;option value=&quot;{{value}}&quot;&gt;{{text}}&lt;/option&gt;
            &lt;/template&gt;
        &lt;/select&gt;
    &lt;/fieldset&gt;
&lt;/template&gt;

I can’t access the .content after the nested template has been duplicated with document.importNode.

http://jsfiddle.net/jakecigar/sxe7dzc4/3/

PS
It works in Chrome and firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041981</commentid>
    <comment_count>1</comment_count>
    <who name="Jake">jake.wolpert</who>
    <bug_when>2014-10-15 15:16:26 -0700</bug_when>
    <thetext>Any ideas? Workarounds? Commiseration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042094</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-16 00:17:09 -0700</bug_when>
    <thetext>See also: bug 137755.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055477</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-12-14 00:00:29 -0800</bug_when>
    <thetext>*** Bug 137755 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055863</commentid>
    <comment_count>4</comment_count>
      <attachid>243346</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-12-15 21:39:58 -0800</bug_when>
    <thetext>Created attachment 243346
Fixes the bug by sharing code with cloneNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055864</commentid>
    <comment_count>5</comment_count>
      <attachid>243347</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-12-15 21:41:17 -0800</bug_when>
    <thetext>Created attachment 243347
Fixes the bug by sharing code with cloneNode 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055986</commentid>
    <comment_count>6</comment_count>
      <attachid>243347</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-16 09:24:26 -0800</bug_when>
    <thetext>Comment on attachment 243347
Fixes the bug by sharing code with cloneNode 2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056010</commentid>
    <comment_count>7</comment_count>
      <attachid>243347</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-16 11:08:14 -0800</bug_when>
    <thetext>Comment on attachment 243347
Fixes the bug by sharing code with cloneNode 2

Clearing flags on attachment: 243347

Committed r177372: &lt;http://trac.webkit.org/changeset/177372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056011</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-16 11:08:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056367</commentid>
    <comment_count>9</comment_count>
    <who name="Jake">jake.wolpert</who>
    <bug_when>2014-12-17 10:24:09 -0800</bug_when>
    <thetext>Thanks so much for the fix! It works nicely in my real page.

Will this be in the next Safari for OS X and IOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056997</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-12-18 22:35:07 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Thanks so much for the fix! It works nicely in my real page.
&gt; 
&gt; Will this be in the next Safari for OS X and IOS?

Apple does not comment on future product plans.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243346</attachid>
            <date>2014-12-15 21:39:58 -0800</date>
            <delta_ts>2014-12-15 21:41:14 -0800</delta_ts>
            <desc>Fixes the bug by sharing code with cloneNode</desc>
            <filename>bug-137619-20141215214047.patch</filename>
            <type>text/plain</type>
            <size>46534</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzMzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorXDIwMTQtMTItMTUgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmVzdGVkIHRlbXBsYXRlIGNv
bnRlbnRzIGFyZSBub3QgY2xvbmVkIGJ5IGRvY3VtZW50LmltcG9ydE5vZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzYxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBi
eSBEb2N1bWVudC5pbXBvcnROb2RlIG5vdCBjbG9uaW5nIEhUTUxUZW1wbGF0ZUVsZW1lbnQncyBj
b250ZW50LgorCisgICAgICAgIEZpeGVkIHRoZSBidWcgYnkgc2hhcmluZyBjb2RlIGJldHdlZW4g
RG9jdW1lbnQ6OmltcG9ydE5vZGUgYW5kIE5vZGU6OmNsb25lTm9kZSBieQorICAgICAgICBnZW5l
cmFsaXppbmcgTm9kZTo6Y2xvbmVOb2RlSW50ZXJuYWwsIGFkZGVkIGluIHIxNzczMTQsIGJ5IHRh
a2luZyB0aGUgb3duZXIgZG9jdW1lbnQKKyAgICAgICAgYXMgYW4gYXJndW1lbnQuIFRoZSBtb3N0
IG9mIGNvZGUgY2hhbmdlcyBhcmUgdGhlIHJlc3VsdCBvZiBhZGRpbmcgdGhpcyBhcmd1bWVudC4K
KworICAgICAgICBEb2N1bWVudDo6aW1wb3J0Tm9kZSBpcyB0aGUgb25seSBmdW5jdGlvbiBpbiB3
aGljaCB0aGUgYWN0dWFsIGxvZ2ljIGNoYW5nZXMuCisgICAgICAgIE5vdGUgdGhhdCB0aGUgY29k
ZSB0byBpbXBvcnQgVEVYVF9OT0RFLCBDREFUQV9TRUNUSU9OX05PREUsIEVOVElUWV9SRUZFUkVO
Q0VfTk9ERSwKKyAgICAgICAgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFIGFuZCBDT01NRU5U
X05PREUgbm9kZXMgYXJlIGlkZW50aWNhbCB0byB0aGF0IG9mIGNsb25lTm9kZS4KKworICAgICAg
ICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNhbGwgdG8gaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVt
ZW50cyBpbiBFTEVNRU5UX05PREUgYnV0IHRoaXMKKyAgICAgICAgc2hvdWxkIG5vdCBpbnRyb2R1
Y2UgYW4gb2JzZXJ2YWJsZSBiZWhhdmlvciBjaGFuZ2Ugc2luY2UgYWxsIGluc3RhbnRpYXRlZCBl
bGVtZW50cworICAgICAgICBzaG91bGQgaGF2ZSBhIHZhbGlkIG5hbWVzcGFjZSBpbiB0aGUgZmly
c3QgcGxhY2UuCisKKyAgICAgICAgQmVjYXVzZSBET0NVTUVOVF9OT0RFIGFuZCBET0NVTUVOVF9U
WVBFX05PREUgY2Fubm90IGJlIGltcG9ydGVkIGFuZCBET0NVTUVOVF9UWVBFX05PREUKKyAgICAg
ICAgY2FuIG9ubHkgYXBwZWFyIGFzIGEgZGlyZWN0IGNoaWxkIG9mIERPQ1VNRU5UX05PREUsIG5l
aXRoZXIgbm9kZXMgbm9yIHVuaW1wbGVtZW50ZWQKKyAgICAgICAgWFBBVEhfTkFNRVNQQUNFX05P
REUgYW5kIFhQQVRIX05BTUVTUEFDRV9OT0RFIGNhbiBhcHBlYXIgaW5zaWRlIHRoZSByZWN1cnNp
dmUgY2FsbHMKKyAgICAgICAgZm9yIEVMRU1FTlRfTk9ERSBhbmQgRE9DVU1FTlRfRlJBR01FTlRf
Tk9ERSBub2Rlcy4KKworICAgICAgICBXaGlsZSBpbXBvcnROb2RlIGJlaGF2ZXMgZGlmZmVyZW50
bHkgZnJvbSBjbG9uZU5vZGUgZm9yIEFUVFJJQlVURV9OT0RFLCBuYW1lbHkgdGhhdAorICAgICAg
ICBpdCBtZXJnZXMgYWxsIG9mIGl0cyBjaGlsZCBub2RlcywgdGhpcyBiZWhhdmlvciBpc24ndCBw
cmVzZW50IHdoZW4gcmVjdXJzaW5nIGluc2lkZQorICAgICAgICBFTEVNRU5UX05PREUgYW5kIERP
Q1VNRU5UX0ZSQUdNRU5UX05PREUgc2luY2Ugd2UgYXJlIHVzaW5nIGNsb25lRGF0YUZyb21FbGVt
ZW50LgorCisgICAgICAgIFRodXMgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgYmVoYXZp
b3IgY2hhbmdlcyBmb3IgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSBhbmQKKyAgICAgICAgRUxFTUVO
VF9OT0RFIG5vZGVzIGVpdGhlci4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MVGVtcGxh
dGVFbGVtZW50L2ltcG9ydE5vZGUtbmVzdGVkLXRlbXBsYXRlcy5odG1sCisKKyAgICAgICAgKiBk
b20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpjbG9uZU5vZGVJbnRlcm5hbCk6
CisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNEQVRBU2VjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAg
ICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaDoKKyAgICAgICAgKiBkb20vQ29tbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21tZW50OjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgICog
ZG9tL0NvbW1lbnQuaDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9uZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wb3J0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OmNsb25lTm9kZUludGVybmFsKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUeXBlOjpjbG9uZU5vZGVJbnRl
cm5hbCk6CisgICAgICAgICogZG9tL0RvY3VtZW50VHlwZS5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsb25lTm9kZUludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbik6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRW50
aXR5UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudGl0eVJlZmVyZW5jZTo6Y2xv
bmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9FbnRpdHlSZWZlcmVuY2UuaDoKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xvbmVOb2RlKToKKyAg
ICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwpOgorICAgICAgICAqIGRv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0OjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgICogZG9tL1RleHQu
aDoKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZUNo
YW5nZSk6CisgICAgICAgICogZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJyZWFrQmxvY2txdW90ZUNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAg
ICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpjbG9uZUhpZXJhcmNo
eVVuZGVyTmV3QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWxDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6ZG9BcHBseSk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RnJhZ21lbnRGcm9tVGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6
CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbik6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGVtcGxh
dGVFbGVtZW50OjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9IVE1MVGVtcGxh
dGVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0
aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbik6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRy
aWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRy
ZW4pOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6YnVpbGRT
aGFkb3dUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVs
ZW1lbnRzSW5TaGFkb3dUcmVlKToKKwogMjAxNC0xMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFkZCBmZWF0dXJlIGNvdW50aW5nIHN1cHBvcnQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgQXR0
cjo6c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdiwKICAgICBzZXRWYWx1ZSh2LCBlYyk7CiB9
CiAKLVJlZlB0cjxOb2RlPiBBdHRyOjpjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9u
KQorUmVmUHRyPE5vZGU+IEF0dHI6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXRE
b2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICBSZWZQdHI8QXR0cj4gY2xvbmUgPSBh
ZG9wdFJlZihuZXcgQXR0cihkb2N1bWVudCgpLCBxdWFsaWZpZWROYW1lKCksIHZhbHVlKCkpKTsK
KyAgICBSZWZQdHI8QXR0cj4gY2xvbmUgPSBhZG9wdFJlZihuZXcgQXR0cih0YXJnZXREb2N1bWVu
dCwgcXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpKSk7CiAgICAgY2xvbmVDaGlsZE5vZGVzKGNsb25l
LmdldCgpKTsKICAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5o
CShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBu
b2RlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2YWx1ZSgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09w
ZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50
ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc0F0dHJpYnV0ZU5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAJKHJldmlzaW9uIDE3NzMz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw5ICs0Niw5IEBAIE5vZGU6Ok5vZGVUeXBlIENEQVRBU2VjdGlvbjo6bm9kZVR5cGUo
KSAKICAgICByZXR1cm4gQ0RBVEFfU0VDVElPTl9OT0RFOwogfQogCi1SZWZQdHI8Tm9kZT4gQ0RB
VEFTZWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKQorUmVmUHRyPE5v
ZGU+IENEQVRBU2VjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3Vt
ZW50LCBDbG9uaW5nT3BlcmF0aW9uKQogewotICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwg
ZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBkYXRhKCkpOwogfQog
CiBib29sIENEQVRBU2VjdGlvbjo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYs
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlv
bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwo
RG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBS
ZWZQdHI8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQ29tbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgTm9k
ZTo6Tm9kZVR5cGUgQ29tbWVudDo6bm9kZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBDT01NRU5U
X05PREU7CiB9CiAKLVJlZlB0cjxOb2RlPiBDb21tZW50OjpjbG9uZU5vZGVJbnRlcm5hbChDbG9u
aW5nT3BlcmF0aW9uKQorUmVmUHRyPE5vZGU+IENvbW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERv
Y3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAgICByZXR1cm4g
Y3JlYXRlKGRvY3VtZW50KCksIGRhdGEoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0YXJnZXREb2N1
bWVudCwgZGF0YSgpKTsKIH0KIAogYm9vbCBDb21tZW50OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCShyZXZpc2lvbiAxNzczMzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9u
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY1LDEx
ICs3NjUsMTIgQEAgdm9pZCBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY29ucwogICAg
IGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9ycygpOwogfQog
Ci12b2lkIENvbnRhaW5lck5vZGU6OmNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlICpjbG9u
ZSkKK3ZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGlsZE5vZGVzKENvbnRhaW5lck5vZGUqIGNs
b25lKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERvY3VtZW50JiB0YXJnZXRE
b2N1bWVudCA9IGNsb25lLT5kb2N1bWVudCgpOwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkICYmICFlYzsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkQ2hpbGQgPSBjaGlsZC0+Y2xvbmVOb2RlSW50ZXJu
YWwoQ2xvbmluZ09wZXJhdGlvbjo6U2VsZldpdGhUZW1wbGF0ZUNvbnRlbnQpOworICAgICAgICBS
ZWZQdHI8Tm9kZT4gY2xvbmVkQ2hpbGQgPSBjaGlsZC0+Y2xvbmVOb2RlSW50ZXJuYWwodGFyZ2V0
RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb246OlNlbGZXaXRoVGVtcGxhdGVDb250ZW50KTsKICAg
ICAgICAgY2xvbmUtPmFwcGVuZENoaWxkKGNsb25lZENoaWxkLCBlYyk7CiAKICAgICAgICAgaWYg
KCFlYyAmJiBpczxDb250YWluZXJOb2RlPihjaGlsZCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMyw3OCArOTIzLDMyIEBAIFJlZlB0cjxDU1NTdHlsZURl
Y2xhcmF0aW9uPiBEb2N1bWVudDo6Y3IKIAogUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnRO
b2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBlYyA9IDA7Ci0gICAgCiAgICAgaWYgKCFpbXBvcnRlZE5vZGUpIHsKICAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAg
ICAgc3dpdGNoIChpbXBvcnRlZE5vZGUtPm5vZGVUeXBlKCkpIHsKKyAgICBjYXNlIEVMRU1FTlRf
Tk9ERToKICAgICBjYXNlIFRFWFRfTk9ERToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVRleHROb2Rl
KGltcG9ydGVkTm9kZS0+bm9kZVZhbHVlKCkpOwogICAgIGNhc2UgQ0RBVEFfU0VDVElPTl9OT0RF
OgotICAgICAgICByZXR1cm4gY3JlYXRlQ0RBVEFTZWN0aW9uKGltcG9ydGVkTm9kZS0+bm9kZVZh
bHVlKCksIGVjKTsKICAgICBjYXNlIEVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZUVudGl0eVJlZmVyZW5jZShpbXBvcnRlZE5vZGUtPm5vZGVOYW1lKCksIGVjKTsK
ICAgICBjYXNlIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihpbXBvcnRlZE5vZGUtPm5vZGVOYW1lKCksIGltcG9y
dGVkTm9kZS0+bm9kZVZhbHVlKCksIGVjKTsKICAgICBjYXNlIENPTU1FTlRfTk9ERToKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZUNvbW1lbnQoaW1wb3J0ZWROb2RlLT5ub2RlVmFsdWUoKSk7Ci0gICAg
Y2FzZSBFTEVNRU5UX05PREU6IHsKLSAgICAgICAgRWxlbWVudCYgb2xkRWxlbWVudCA9IGRvd25j
YXN0PEVsZW1lbnQ+KCppbXBvcnRlZE5vZGUpOwotICAgICAgICAvLyBGSVhNRTogVGhlIGZvbGxv
d2luZyBjaGVjayBtaWdodCBiZSB1bm5lY2Vzc2FyeS4gSXMgaXQgcG9zc2libGUgdGhhdAotICAg
ICAgICAvLyBvbGRFbGVtZW50IGhhcyBtaXNtYXRjaGVkIHByZWZpeC9uYW1lc3BhY2U/Ci0gICAg
ICAgIGlmICghaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhvbGRFbGVtZW50LnRhZ1FOYW1l
KCkpKSB7Ci0gICAgICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdFbGVt
ZW50ID0gY3JlYXRlRWxlbWVudChvbGRFbGVtZW50LnRhZ1FOYW1lKCksIGZhbHNlKTsKLSAgICAg
ICAgbmV3RWxlbWVudC0+Y2xvbmVEYXRhRnJvbUVsZW1lbnQob2xkRWxlbWVudCk7Ci0KLSAgICAg
ICAgaWYgKGRlZXApIHsKLSAgICAgICAgICAgIGZvciAoTm9kZSogb2xkQ2hpbGQgPSBvbGRFbGVt
ZW50LmZpcnN0Q2hpbGQoKTsgb2xkQ2hpbGQ7IG9sZENoaWxkID0gb2xkQ2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQgPSBpbXBvcnRO
b2RlKG9sZENoaWxkLCB0cnVlLCBlYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGVjKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBuZXdFbGVtZW50
LT5hcHBlbmRDaGlsZChuZXdDaGlsZC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgICAgICAgICBp
ZiAoZWMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAg
fQotICAgICAgICB9CisgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgorICAgICAgICBy
ZXR1cm4gaW1wb3J0ZWROb2RlLT5jbG9uZU5vZGVJbnRlcm5hbChkb2N1bWVudCgpLCBkZWVwID8g
Q2xvbmluZ09wZXJhdGlvbjo6RXZlcnl0aGluZyA6IENsb25pbmdPcGVyYXRpb246Ok9ubHlTZWxm
KTsKIAotICAgICAgICByZXR1cm4gbmV3RWxlbWVudC5yZWxlYXNlKCk7Ci0gICAgfQogICAgIGNh
c2UgQVRUUklCVVRFX05PREU6CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgIkF0dHI6Om5v
cm1hbGl6ZSIgY2hpbGQgbm9kZXMgb2YgQXR0ci4KICAgICAgICAgcmV0dXJuIEF0dHI6OmNyZWF0
ZSgqdGhpcywgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgZG93bmNhc3Q8QXR0cj4oKmltcG9ydGVk
Tm9kZSkubmFtZSgpLCBudWxsQXRvbSksIGRvd25jYXN0PEF0dHI+KCppbXBvcnRlZE5vZGUpLnZh
bHVlKCkpOwotICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogewotICAgICAgICBpZiAo
aW1wb3J0ZWROb2RlLT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAgICAgLy8gU2hhZG93Um9v
dCBub2RlcyBzaG91bGQgbm90IGJlIGV4cGxpY2l0bHkgaW1wb3J0YWJsZS4KLSAgICAgICAgICAg
IC8vIEVpdGhlciB0aGV5IGFyZSBpbXBvcnRlZCBhbG9uZyB3aXRoIHRoZWlyIGhvc3Qgbm9kZSwg
b3IgY3JlYXRlZCBpbXBsaWNpdGx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgRG9jdW1lbnRGcmFnbWVudCYgb2xkRnJhZ21lbnQgPSBkb3duY2FzdDxEb2N1bWVudEZy
YWdtZW50PigqaW1wb3J0ZWROb2RlKTsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IG5ld0ZyYWdtZW50ID0gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICBpZiAoZGVl
cCkgewotICAgICAgICAgICAgZm9yIChOb2RlKiBvbGRDaGlsZCA9IG9sZEZyYWdtZW50LmZpcnN0
Q2hpbGQoKTsgb2xkQ2hpbGQ7IG9sZENoaWxkID0gb2xkQ2hpbGQtPm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQgPSBpbXBvcnROb2RlKG9sZENo
aWxkLCB0cnVlLCBlYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBuZXdGcmFnbWVudC0+YXBwZW5k
Q2hpbGQobmV3Q2hpbGQucmVsZWFzZSgpLCBlYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGVjKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG5ld0ZyYWdtZW50LnJlbGVhc2UoKTsKLSAg
ICB9CisKKyAgICBjYXNlIERPQ1VNRU5UX05PREU6IC8vIENhbid0IGltcG9ydCBhIGRvY3VtZW50
IGludG8gYW5vdGhlciBkb2N1bWVudC4KKyAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERTogLy8g
RklYTUU6IFN1cHBvcnQgY2xvbmluZyBhIERvY3VtZW50VHlwZSBub2RlIHBlciBET000LgorICAg
ICAgICBicmVhazsKKwogICAgIGNhc2UgRU5USVRZX05PREU6Ci0gICAgICAgIC8vIEZJWE1FOiBJ
dCBzaG91bGQgYmUgcG9zc2libGUgdG8gaW1wb3J0IHRoZXNlIG5vZGUgdHlwZXMsIGhvd2V2ZXIg
aW4gRE9NMyB0aGUgRG9jdW1lbnRUeXBlIGlzIHJlYWRvbmx5LCBzbyB0aGVyZSBpc24ndCBtdWNo
IHNlbnNlIGluIGRvaW5nIHRoYXQuCi0gICAgICAgIC8vIEFiaWxpdHkgdG8gYWRkIHRoZXNlIGlt
cG9ydGVkIG5vZGVzIHRvIGEgRG9jdW1lbnRUeXBlIHdpbGwgYmUgY29uc2lkZXJlZCBmb3IgYWRk
aXRpb24gdG8gYSBmdXR1cmUgcmVsZWFzZSBvZiB0aGUgRE9NLgotICAgIGNhc2UgRE9DVU1FTlRf
Tk9ERToKLSAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICBjYXNlIFhQQVRIX05BTUVT
UEFDRV9OT0RFOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhlc2UgdHdvIHR5
cGVzIG9mIERPTSBub2RlcyBhcmUgbm90IGltcGxlbWVudGVkLgogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTMxODMsNyArMzEzNyw3IEBAIGJv
b2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXcKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUmVmUHRyPE5vZGU+IERvY3VtZW50OjpjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3Bl
cmF0aW9uIHR5cGUpCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERv
Y3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbiB0eXBlKQogewogICAgIFJlZlB0cjxEb2N1bWVudD4g
Y2xvbmUgPSBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCk7CiAgICAgY2xvbmUtPmNsb25l
RGF0YUZyb21Eb2N1bWVudCgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMDgsNyArMTMwOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9k
ZU5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFs
bG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRy
PE5vZGU+IGNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50Jiwg
Q2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdm9pZCBjbG9uZURhdGFGcm9t
RG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWZTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw5ICs3MSw5IEBAIGJvb2wgRG9jdW1lbnRGcmFnbWVudDo6Y2hpbGRUeXBlQWxsb3dlZCgKICAg
ICB9CiB9CiAKLVJlZlB0cjxOb2RlPiBEb2N1bWVudEZyYWdtZW50OjpjbG9uZU5vZGVJbnRlcm5h
bChDbG9uaW5nT3BlcmF0aW9uIHR5cGUpCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnRGcmFnbWVudDo6
Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0
aW9uIHR5cGUpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25lID0gY3JlYXRl
KGRvY3VtZW50KCkpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZSA9IGNyZWF0
ZSh0YXJnZXREb2N1bWVudCk7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDbG9uaW5n
T3BlcmF0aW9uOjpPbmx5U2VsZjoKICAgICBjYXNlIENsb25pbmdPcGVyYXRpb246OlNlbGZXaXRo
VGVtcGxhdGVDb250ZW50OgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5o
CShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJh
dGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJu
YWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkg
KzUxLDkgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnRUeXBlOjpub2RlVHlwZSgpIAogICAgIHJl
dHVybiBET0NVTUVOVF9UWVBFX05PREU7CiB9CiAKLVJlZlB0cjxOb2RlPiBEb2N1bWVudFR5cGU6
OmNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pCitSZWZQdHI8Tm9kZT4gRG9jdW1l
bnRUeXBlOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgZG9jdW1lbnRUYXJnZXQsIENsb25p
bmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBtX25hbWUsIG1f
cHVibGljSWQsIG1fc3lzdGVtSWQpOworICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnRUYXJnZXQs
IG1fbmFtZSwgbV9wdWJsaWNJZCwgbV9zeXN0ZW1JZCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUeXBlLmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9u
ZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24p
IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9wdWJsaWNJZDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDI5ICsyODksMjkg
QEAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKAogREVGSU5FX1ZJUlRV
QUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKEVsZW1lbnQsIGZvY3VzKTsKIERFRklORV9WSVJU
VUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihFbGVtZW50LCBsb2FkKTsKIAotUmVmUHRyPE5v
ZGU+IEVsZW1lbnQ6OmNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24gdHlwZSkKK1Jl
ZlB0cjxOb2RlPiBFbGVtZW50OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9j
dW1lbnQsIENsb25pbmdPcGVyYXRpb24gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIENsb25pbmdPcGVyYXRpb246Ok9ubHlTZWxmOgogICAgIGNhc2UgQ2xvbmluZ09wZXJh
dGlvbjo6U2VsZldpdGhUZW1wbGF0ZUNvbnRlbnQ6Ci0gICAgICAgIHJldHVybiBjbG9uZUVsZW1l
bnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVudFdpdGhvdXRD
aGlsZHJlbih0YXJnZXREb2N1bWVudCk7CiAgICAgY2FzZSBDbG9uaW5nT3BlcmF0aW9uOjpFdmVy
eXRoaW5nOgotICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCk7CisgICAg
ICAgIHJldHVybiBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4odGFyZ2V0RG9jdW1lbnQpOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpCitSZWZQ
dHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKERvY3VtZW50JiB0
YXJnZXREb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmUgPSBjbG9uZUVsZW1l
bnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmUgPSBjbG9uZUVs
ZW1lbnRXaXRob3V0Q2hpbGRyZW4odGFyZ2V0RG9jdW1lbnQpOwogICAgIGNsb25lQ2hpbGROb2Rl
cyhjbG9uZS5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKIH0KIAotUmVmUHRy
PEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpCitSZWZQdHI8
RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKERvY3VtZW50JiB0
YXJnZXREb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmUgPSBjbG9uZUVsZW1l
bnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGNs
b25lID0gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbih0YXJnZXREb2N1
bWVudCk7CiAgICAgLy8gVGhpcyB3aWxsIGNhdGNoIEhUTUwgZWxlbWVudHMgaW4gdGhlIHdyb25n
IG5hbWVzcGFjZSB0aGF0IGFyZSBub3QgY29ycmVjdGx5IGNvcGllZC4KICAgICAvLyBUaGlzIGlz
IGEgc2FuaXR5IGNoZWNrIGFzIEhUTUwgb3ZlcmxvYWRzIHNvbWUgb2YgdGhlIERPTSBtZXRob2Rz
LgogICAgIEFTU0VSVChpc0hUTUxFbGVtZW50KCkgPT0gY2xvbmUtPmlzSFRNTEVsZW1lbnQoKSk7
CkBAIC0zMjAsOSArMzIwLDkgQEAgUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVu
dFdpdAogICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CiB9CiAKLVJlZlB0cjxFbGVtZW50PiBF
bGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK1JlZlB0
cjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxk
cmVuKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS5j
cmVhdGVFbGVtZW50KHRhZ1FOYW1lKCksIGZhbHNlKTsKKyAgICByZXR1cm4gdGFyZ2V0RG9jdW1l
bnQuY3JlYXRlRWxlbWVudCh0YWdRTmFtZSgpLCBmYWxzZSk7CiB9CiAKIFJlZlB0cjxBdHRyPiBF
bGVtZW50OjpkZXRhY2hBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2Nyw4ICsyNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEVsZW1lbnQ+
IGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpOwotICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVs
ZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50
V2l0aENoaWxkcmVuKERvY3VtZW50Jik7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVu
dFdpdGhvdXRDaGlsZHJlbihEb2N1bWVudCYpOwogCiAgICAgdm9pZCBub3JtYWxpemVBdHRyaWJ1
dGVzKCk7CiAgICAgU3RyaW5nIG5vZGVOYW1lUHJlc2VydmluZ0Nhc2UoKSBjb25zdDsKQEAgLTYz
Miw4ICs2MzIsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gY2xvbmVOb2RlIGlzIHByaXZhdGUgc28g
dGhhdCBub24tdmlydHVhbCBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4gYW5kIGNsb25lRWxlbWVu
dFdpdGhvdXRDaGlsZHJlbgogICAgIC8vIGFyZSB1c2VkIGluc3RlYWQuCi0gICAgdmlydHVhbCBS
ZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0
ZXNBbmRDaGlsZHJlbigpOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZUludGVy
bmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihE
b2N1bWVudCYpOwogCiAgICAgdm9pZCBhZGRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9v
dD4pOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VudGl0eVJlZmVyZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0VudGl0eVJlZmVyZW5jZS5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBA
IE5vZGU6Ok5vZGVUeXBlIEVudGl0eVJlZmVyZW5jZTo6bm9kZVR5cGUKICAgICByZXR1cm4gRU5U
SVRZX1JFRkVSRU5DRV9OT0RFOwogfQogCi1SZWZQdHI8Tm9kZT4gRW50aXR5UmVmZXJlbmNlOjpj
bG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKQorUmVmUHRyPE5vZGU+IEVudGl0eVJl
ZmVyZW5jZTo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9u
aW5nT3BlcmF0aW9uKQogewotICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgbV9lbnRpdHlO
YW1lKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBtX2VudGl0eU5hbWUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVy
ZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2Uu
aAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5j
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBj
bG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRp
b24pIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fZW50aXR5TmFtZTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwOSw4ICsyMDksOCBAQCBwdWJsaWM6CiAgICAgICAgIFNlbGZXaXRo
VGVtcGxhdGVDb250ZW50LAogICAgICAgICBFdmVyeXRoaW5nLAogICAgIH07Ci0gICAgdmlydHVh
bCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbikgPSAwOwot
ICAgIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSB7IHJldHVybiBjbG9uZU5vZGVJ
bnRlcm5hbChkZWVwID8gQ2xvbmluZ09wZXJhdGlvbjo6RXZlcnl0aGluZyA6IENsb25pbmdPcGVy
YXRpb246Ok9ubHlTZWxmKTsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZUlu
dGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgPSAwOworICAgIFJlZlB0cjxOb2Rl
PiBjbG9uZU5vZGUoYm9vbCBkZWVwKSB7IHJldHVybiBjbG9uZU5vZGVJbnRlcm5hbChkb2N1bWVu
dCgpLCBkZWVwID8gQ2xvbmluZ09wZXJhdGlvbjo6RXZlcnl0aGluZyA6IENsb25pbmdPcGVyYXRp
b246Ok9ubHlTZWxmKTsgfQogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTEgKzc5LDExIEBAIE5v
ZGU6Ok5vZGVUeXBlIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6bm8KICAgICByZXR1cm4gUFJPQ0VT
U0lOR19JTlNUUlVDVElPTl9OT0RFOwogfQogCi1SZWZQdHI8Tm9kZT4gUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKQorUmVmUHRyPE5vZGU+
IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdl
dERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uKQogewogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHBy
b2JsZW0gdGhhdCB0aGlzIGRvZXMgbm90IGNvcHkgbV9sb2NhbEhyZWY/CiAgICAgLy8gV2hhdCBh
Ym91dCBvdGhlciBkYXRhIG1lbWJlcnM/Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBt
X3RhcmdldCwgZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50LCBtX3Rh
cmdldCwgZGF0YSgpKTsKIH0KIAogdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5
bGVTaGVldCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRy
PE5vZGU+IGNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmlu
Z09wZXJhdGlvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQwogICAgIGludmFsaWRhdGVE
aXN0cmlidXRpb24oKTsKIH0KIAotUmVmUHRyPE5vZGU+IFNoYWRvd1Jvb3Q6OmNsb25lTm9kZUlu
dGVybmFsKENsb25pbmdPcGVyYXRpb24pCitSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVO
b2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKQogewogICAgIHJldHVybiBu
dWxscHRyOyAvLyBTaGFkb3dSb290cyBzaG91bGQgbmV2ZXIgYmUgY2xvbmVkLgogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZUludGVy
bmFsKENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+
IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7
CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgaGFwcGVuLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MzQKICAgICBib29sIGlzT3JwaGFuKCkgY29uc3Qg
eyByZXR1cm4gIWhvc3RFbGVtZW50KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAJKHJldmlzaW9u
IDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY5LDkgKzE2OSw5IEBAIE5vZGU6Ok5vZGVUeXBlIFRleHQ6Om5vZGVUeXBlKCkgY29uc3QK
ICAgICByZXR1cm4gVEVYVF9OT0RFOwogfQogCi1SZWZQdHI8Tm9kZT4gVGV4dDo6Y2xvbmVOb2Rl
SW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbikKK1JlZlB0cjxOb2RlPiBUZXh0OjpjbG9uZU5vZGVJ
bnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24pCiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUo
dGFyZ2V0RG9jdW1lbnQsIGRhdGEoKSk7CiB9CiAKIHN0YXRpYyBib29sIGlzU1ZHU2hhZG93VGV4
dChUZXh0KiB0ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJh
dGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJu
YWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIFJlZlB0cjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE3
NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYwLDcgKzEwNjAsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjpwdXNoRG93bklubGluZVN0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoIWNoaWxkLmNvbnRhaW5zKHRhcmdldE5vZGUpICYmIGVsZW1lbnRzVG9QdXNoRG93bi5z
aXplKCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRz
VG9QdXNoRG93bi5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8RWxl
bWVudD4gd3JhcHBlciA9IGVsZW1lbnRzVG9QdXNoRG93bltpXS0+Y2xvbmVFbGVtZW50V2l0aG91
dENoaWxkcmVuKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiB3cmFwcGVy
ID0gZWxlbWVudHNUb1B1c2hEb3duW2ldLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oZG9j
dW1lbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXItPnJlbW92ZUF0dHJpYnV0ZShz
dHlsZUF0dHIpOwogICAgICAgICAgICAgICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVt
ZW50KCZjaGlsZCwgJmNoaWxkLCB3cmFwcGVyKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTA0
LDcgKzE1MDQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlCiAg
ICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBj
cmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCBzdXBUYWcpKTsKIAogICAgIGlmIChtX3N0eWxl
ZElubGluZUVsZW1lbnQgJiYgYWRkU3R5bGVkRWxlbWVudCA9PSBBZGRTdHlsZWRFbGVtZW50KQot
ICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5kTm9kZSwg
bV9zdHlsZWRJbmxpbmVFbGVtZW50LT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKSk7Cisg
ICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBt
X3N0eWxlZElubGluZUVsZW1lbnQtPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbihkb2N1bWVu
dCgpKSk7CiB9CiAKIGZsb2F0IEFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXplKE5v
ZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3
ICsxMzEsNyBAQCB2b2lkIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAg
ICBhbmNlc3RvcnMuYXBwZW5kKG5vZGUpOwogICAgIAogICAgIC8vIEluc2VydCBhIGNsb25lIG9m
IHRoZSB0b3AgYmxvY2txdW90ZSBhZnRlciB0aGUgYnJlYWsuCi0gICAgUmVmUHRyPEVsZW1lbnQ+
IGNsb25lZEJsb2NrcXVvdGUgPSBkb3duY2FzdDxFbGVtZW50PigqdG9wQmxvY2txdW90ZSkuY2xv
bmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lZEJs
b2NrcXVvdGUgPSBkb3duY2FzdDxFbGVtZW50PigqdG9wQmxvY2txdW90ZSkuY2xvbmVFbGVtZW50
V2l0aG91dENoaWxkcmVuKGRvY3VtZW50KCkpOwogICAgIGluc2VydE5vZGVBZnRlcihjbG9uZWRC
bG9ja3F1b3RlLmdldCgpLCBicmVha05vZGUuZ2V0KCkpOwogICAgIAogICAgIC8vIENsb25lIHN0
YXJ0Tm9kZSdzIGFuY2VzdG9ycyBpbnRvIHRoZSBjbG9uZWQgYmxvY2txdW90ZS4KQEAgLTE0MCw3
ICsxNDAsNyBAQCB2b2lkIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8v
IG9yIGNsb25lZEJsb2NrcXVvdGUgaWYgYW5jZXN0b3JzIGlzIGVtcHR5KS4KICAgICBSZWZQdHI8
RWxlbWVudD4gY2xvbmVkQW5jZXN0b3IgPSBjbG9uZWRCbG9ja3F1b3RlOwogICAgIGZvciAoc2l6
ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpICE9IDA7IC0taSkgewotICAgICAgICBSZWZQdHI8
RWxlbWVudD4gY2xvbmVkQ2hpbGQgPSBhbmNlc3RvcnNbaSAtIDFdLT5jbG9uZUVsZW1lbnRXaXRo
b3V0Q2hpbGRyZW4oKTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lZENoaWxkID0gYW5j
ZXN0b3JzW2kgLSAxXS0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKGRvY3VtZW50KCkpOwog
ICAgICAgICAvLyBQcmVzZXJ2ZSBsaXN0IGl0ZW0gbnVtYmVyaW5nIGluIGNsb25lZCBsaXN0cy4K
ICAgICAgICAgaWYgKGNsb25lZENoaWxkLT5pc0VsZW1lbnROb2RlKCkgJiYgY2xvbmVkQ2hpbGQt
Pmhhc1RhZ05hbWUob2xUYWcpKSB7CiAgICAgICAgICAgICBOb2RlKiBsaXN0Q2hpbGROb2RlID0g
aSA+IDEgPyBhbmNlc3RvcnNbaSAtIDJdLmdldCgpIDogc3RhcnROb2RlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzYsNyArMTM2LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBJbnNlcnRQYXJhZ3JhcGhTZXBhcgog
ICAgIC8vIE1ha2UgY2xvbmVzIG9mIGFuY2VzdG9ycyBpbiBiZXR3ZWVuIHRoZSBzdGFydCBub2Rl
IGFuZCB0aGUgc3RhcnQgYmxvY2suCiAgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCA9IGJsb2Nr
VG9JbnNlcnQ7CiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7IGkgIT0gMDsg
LS1pKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBjaGlsZCA9IGFuY2VzdG9yc1tpIC0gMV0t
PmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4g
Y2hpbGQgPSBhbmNlc3RvcnNbaSAtIDFdLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oZG9j
dW1lbnQoKSk7CiAgICAgICAgIC8vIEl0IHNob3VsZCBhbHdheXMgYmUgb2theSB0byByZW1vdmUg
aWQgZnJvbSB0aGUgY2xvbmVkIGVsZW1lbnRzLCBzaW5jZSB0aGUgb3JpZ2luYWxzIGFyZSBub3Qg
ZGVsZXRlZC4KICAgICAgICAgY2hpbGQtPnJlbW92ZUF0dHJpYnV0ZShpZEF0dHIpOwogICAgICAg
ICBhcHBlbmROb2RlKGNoaWxkLCBwYXJlbnQpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICB9IGVsc2UgaWYgKHNob3VsZFVz
ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KHN0YXJ0QmxvY2suZ2V0KCkpKSAKICAgICAgICAgYmxv
Y2tUb0luc2VydCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOwog
ICAgIGVsc2UKLSAgICAgICAgYmxvY2tUb0luc2VydCA9IHN0YXJ0QmxvY2stPmNsb25lRWxlbWVu
dFdpdGhvdXRDaGlsZHJlbigpOworICAgICAgICBibG9ja1RvSW5zZXJ0ID0gc3RhcnRCbG9jay0+
Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKGRvY3VtZW50KCkpOwogCiAgICAgLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIHBvc2l0aW9uIGlzIGluIHRoZSBsYXN0IHZp
c2libGUgcG9zaXRpb24gaW4gaXRzIGJsb2NrLApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAkocmV2aXNpb24gMTc3MzMx
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBJbmNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbENvbW1hbmQ6OgogICAgICAgICAgICAgY2FzZSBJbmhlcml0ZWRMaXN0VHlwZToK
ICAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBzdGFydExpc3RDaGlsZC0+cGFyZW50RWxlbWVu
dCgpOwogICAgICAgICAgICAgICAgIGlmIChuZXdQYXJlbnQpCi0gICAgICAgICAgICAgICAgICAg
IG5ld1BhcmVudCA9IG5ld1BhcmVudC0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7Cisg
ICAgICAgICAgICAgICAgICAgIG5ld1BhcmVudCA9IG5ld1BhcmVudC0+Y2xvbmVFbGVtZW50V2l0
aG91dENoaWxkcmVuKGRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBPcmRlcmVkTGlzdDoKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBjcmVh
dGVPcmRlcmVkTGlzdEVsZW1lbnQoZG9jdW1lbnQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpleGVjdXRl
QXBwbHkoKQogICAgIAogdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpkb0FwcGx5KCkKIHsKLSAg
ICBtX2VsZW1lbnQxID0gbV9lbGVtZW50Mi0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7
CisgICAgbV9lbGVtZW50MSA9IG1fZWxlbWVudDItPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJl
bihkb2N1bWVudCgpKTsKICAgICAKICAgICBleGVjdXRlQXBwbHkoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk4LDcgKzc5OCw3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ20KICAgICAgICAgICAgIGZpbGxD
b250YWluZXJGcm9tU3RyaW5nKGZyYWdtZW50LmdldCgpLCBzKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmICh1c2VDbG9uZXNPZkVuY2xvc2luZ0Jsb2NrKQotICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBibG9jay0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGJsb2NrLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4o
ZG9jdW1lbnQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBj
cmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7CiAgICAgICAgICAgICBmaWxs
Q29udGFpbmVyRnJvbVN0cmluZyhlbGVtZW50LmdldCgpLCBzKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsOSArNTgsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
UmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4o
KSBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhv
dXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmIHRhcmdldERvY3VtZW50KSBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCk7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjgsOSArMTY4LDkgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZl
bgogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAotUmVmUHRyPEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50
OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK1JlZlB0cjxFbGVt
ZW50PiBIVE1MU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRD
aGlsZHJlbihEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MU2NyaXB0RWxlbWVudCh0YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgYWxy
ZWFkeVN0YXJ0ZWQoKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNjcmlwdEVsZW1l
bnQodGFnUU5hbWUoKSwgdGFyZ2V0RG9jdW1lbnQsIGZhbHNlLCBhbHJlYWR5U3RhcnRlZCgpKSk7
CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHJl
dmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlZlB0
cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0
dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYpIG92ZXJyaWRlOwogfTsKIAogfSAvL25hbWVz
cGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNyArNjgsMTcgQEAgRG9jdW1lbnRGcmFn
bWVudCogSFRNTFRlbXBsYXRlRWxlbWVudDo6YwogICAgIHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7
CiB9CiAKLVJlZlB0cjxOb2RlPiBIVE1MVGVtcGxhdGVFbGVtZW50OjpjbG9uZU5vZGVJbnRlcm5h
bChDbG9uaW5nT3BlcmF0aW9uIHR5cGUpCitSZWZQdHI8Tm9kZT4gSFRNTFRlbXBsYXRlRWxlbWVu
dDo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3Bl
cmF0aW9uIHR5cGUpCiB7CiAgICAgUmVmUHRyPE5vZGU+IGNsb25lOwogICAgIHN3aXRjaCAodHlw
ZSkgewogICAgIGNhc2UgQ2xvbmluZ09wZXJhdGlvbjo6T25seVNlbGY6Ci0gICAgICAgIHJldHVy
biBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAgICAgICAgcmV0dXJuIGNsb25lRWxl
bWVudFdpdGhvdXRDaGlsZHJlbih0YXJnZXREb2N1bWVudCk7CiAgICAgY2FzZSBDbG9uaW5nT3Bl
cmF0aW9uOjpTZWxmV2l0aFRlbXBsYXRlQ29udGVudDoKLSAgICAgICAgY2xvbmUgPSBjbG9uZUVs
ZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAgICAgICAgY2xvbmUgPSBjbG9uZUVsZW1lbnRXaXRo
b3V0Q2hpbGRyZW4odGFyZ2V0RG9jdW1lbnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENs
b25pbmdPcGVyYXRpb246OkV2ZXJ5dGhpbmc6Ci0gICAgICAgIGNsb25lID0gY2xvbmVFbGVtZW50
V2l0aENoaWxkcmVuKCk7CisgICAgICAgIGNsb25lID0gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVu
KHRhcmdldERvY3VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChtX2NvbnRl
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaAkocmV2
aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBIVE1MVGVtcGxhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
Ci0gICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJh
dGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJu
YWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBvdmVycmlkZTsK
IAogICAgIG11dGFibGUgUmVmUHRyPFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ+IG1f
Y29udGVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDkg
KzU5OCw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU2xpZGVyVGh1bWJFbGVtZW50OjoKICAgICB9
CiB9CiAKLVJlZlB0cjxFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNsb25lRWxlbWVudFdp
dGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IFNsaWRlclRodW1i
RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVu
dCYgdGFyZ2V0RG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpKTsKKyAg
ICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3VtZW50KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5oCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NyArNjIsNyBAQCBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCYpOwog
CiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8RWxl
bWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1
dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNE
aXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG1h
dGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
RWxlbWVudCogZm9jdXNEZWxlZ2F0ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MCw5ICs4MCw5IEBAIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gV2ViVlRURWxlbWVudDoK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZUVEVsZW1lbnQobm9kZVR5cGUsIGRvY3VtZW50
KSk7CiB9CiAKLVJlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRo
b3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK1JlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVtZW50
OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50JiB0YXJn
ZXREb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8V2ViVlRURWxlbWVudD4gY2xvbmUgPSBjcmVhdGUo
c3RhdGljX2Nhc3Q8V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpLCBkb2N1bWVudCgp
KTsKKyAgICBSZWZQdHI8V2ViVlRURWxlbWVudD4gY2xvbmUgPSBjcmVhdGUoc3RhdGljX2Nhc3Q8
V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpLCB0YXJnZXREb2N1bWVudCk7CiAgICAg
Y2xvbmUtPnNldExhbmd1YWdlKG1fbGFuZ3VhZ2UpOwogICAgIHJldHVybiBjbG9uZTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCShyZXZpc2lvbiAx
NzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5vZGVUeXBlLCBEb2N1bWVudCYp
OwogICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVu
dChEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50
V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9j
dW1lbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0V2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9k
ZVR5cGUgdHlwZSkgeyBtX3dlYlZUVE5vZGVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5
cGUpOyB9CiAgICAgV2ViVlRUTm9kZVR5cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4obV93ZWJWVFROb2RlVHlwZSk7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NzMzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDkgKzE5Miw5IEBAIGJvb2wgU1ZHU2NyaXB0RWxlbWVudDo6aGFzU291cmNlQXR0
cmlidXQKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKIH0K
IAotUmVmUHRyPEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRB
dHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6
OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmIHRhcmdl
dERvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVudCh0
YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgYWxyZWFkeVN0YXJ0ZWQoKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdRTmFtZSgpLCB0YXJnZXREb2N1
bWVudCwgZmFsc2UsIGFscmVhZHlTdGFydGVkKCkpKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMTc3MzMxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9h
ZEV2ZW50KCkgb3ZlcnJpZGUgeyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpkaXNwYXRj
aExvYWRFdmVudCh0aGlzKTsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVF
bGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRy
ZW4oRG9jdW1lbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4NSw3ICs2ODUsNyBAQCB2b2lkIFNW
R1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93VHJlZShTVkdFCiAgICAgaWYgKGlzRGlzYWxsb3dlZEVs
ZW1lbnQoKnRhcmdldCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTVkdFbGVtZW50
PiBuZXdDaGlsZCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0SW5zdGFu
Y2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCktPmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpKTsK
KyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gbmV3Q2hpbGQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNW
R0VsZW1lbnQ+KHRhcmdldEluc3RhbmNlLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpLT5jbG9uZUVs
ZW1lbnRXaXRoQ2hpbGRyZW4oZG9jdW1lbnQoKSkpOwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FsayB0
aGUgdGFyZ2V0IHRyZWUgZWxlbWVudC1ieS1lbGVtZW50LCBhbmQgY2xvbmUgZWFjaCBlbGVtZW50
LAogICAgIC8vIGJ1dCBpbnN0ZWFkIHVzZSBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oKS4gVGhp
cyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHRoZSBjb21tb24KQEAgLTcyNyw3ICs3MjcsNyBAQCB2
b2lkIFNWR1VzZUVsZW1lbnQ6OmV4cGFuZFVzZUVsZW1lbnRzSW5TCiAgICAgICAgIHRyYW5zZmVy
VXNlQXR0cmlidXRlc1RvUmVwbGFjZWRFbGVtZW50KCZ1c2UsIGNsb25lUGFyZW50LmdldCgpKTsK
IAogICAgICAgICBpZiAodGFyZ2V0ICYmICFpc0Rpc2FsbG93ZWRFbGVtZW50KCp0YXJnZXQpKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3Q2hpbGQgPSB0YXJnZXQtPmNsb25lRWxl
bWVudFdpdGhDaGlsZHJlbigpOworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0NoaWxk
ID0gdGFyZ2V0LT5jbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oZG9jdW1lbnQoKSk7CiAgICAgICAg
ICAgICBBU1NFUlQobmV3Q2hpbGQtPmlzU1ZHRWxlbWVudCgpKTsKICAgICAgICAgICAgIGNsb25l
UGFyZW50LT5hcHBlbmRDaGlsZChuZXdDaGlsZC5yZWxlYXNlKCkpOwogICAgICAgICB9CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzczMzIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0xMi0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBOZXN0ZWQgdGVtcGxhdGUgY29udGVudHMgYXJlIG5vdCBj
bG9uZWQgYnkgZG9jdW1lbnQuaW1wb3J0Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2ltcG9ydE5vZGUtbmVzdGVkLXRlbXBsYXRl
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxUZW1wbGF0ZUVs
ZW1lbnQvaW1wb3J0Tm9kZS1uZXN0ZWQtdGVtcGxhdGVzLmh0bWw6IEFkZGVkLgorCiAyMDE0LTEy
LTE1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wb3J0IE1vemlsbGEgdGVzdCBzdWl0ZSBmb3IgU1ZHLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9pbXBvcnROb2RlLW5lc3RlZC10ZW1wbGF0ZXMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1w
bGF0ZUVsZW1lbnQvaW1wb3J0Tm9kZS1uZXN0ZWQtdGVtcGxhdGVzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvaW1w
b3J0Tm9kZS1uZXN0ZWQtdGVtcGxhdGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDIyIEBACitUZXN0IHRoYXQgdGVtcGxhdGUgY29udGVudHMgYXJlIGNsb25lZCB3aGVu
IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGlzIGltcG9ydGVkIHZpYSBpbXBvcnROb2RlCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbXBvcnRlZE91dGVyVGVtcGxhdGUgPSBhbm90aGVy
RG9jdW1lbnQuaW1wb3J0Tm9kZShvdXRlclRlbXBsYXRlLCB0cnVlKQorUEFTUyBvdXRlclRlbXBs
YXRlLm93bmVyRG9jdW1lbnQgaXMgZG9jdW1lbnQKK1BBU1MgaW1wb3J0ZWRPdXRlclRlbXBsYXRl
Lm93bmVyRG9jdW1lbnQgaXMgYW5vdGhlckRvY3VtZW50CitQQVNTIGltcG9ydGVkT3V0ZXJUZW1w
bGF0ZS5jb250ZW50IGlzIG5vdCBvdXRlclRlbXBsYXRlLmNvbnRlbnQKK1BBU1MgaW1wb3J0ZWRP
dXRlclRlbXBsYXRlLmNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGggaXMgMQoraW5uZXJUZW1wbGF0
ZSA9IG91dGVyVGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkCitpbXBvcnRlZElubmVyVGVtcGxh
dGUgPSBpbXBvcnRlZE91dGVyVGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkCitQQVNTIGltcG9y
dGVkSW5uZXJUZW1wbGF0ZS5vdXRlckhUTUwgaXMgaW5uZXJUZW1wbGF0ZS5vdXRlckhUTUwKK1BB
U1MgaW5uZXJUZW1wbGF0ZS5vd25lckRvY3VtZW50IGlzIG5vdCBpbXBvcnRlZElubmVyVGVtcGxh
dGUub3duZXJEb2N1bWVudAorUEFTUyBpbXBvcnRlZElubmVyVGVtcGxhdGUuY29udGVudCBpcyBu
b3QgaW5uZXJUZW1wbGF0ZS5jb250ZW50CitQQVNTIGlubmVyVGVtcGxhdGUuY29udGVudC5jaGls
ZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIGltcG9ydGVkSW5uZXJUZW1wbGF0ZS5jb250ZW50LmNo
aWxkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgaW5uZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hp
bGQub3V0ZXJIVE1MIGlzIGltcG9ydGVkSW5uZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQu
b3V0ZXJIVE1MCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9pbXBv
cnROb2RlLW5lc3RlZC10ZW1wbGF0ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2ltcG9ydE5vZGUtbmVzdGVkLXRlbXBsYXRlcy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxl
bWVudC9pbXBvcnROb2RlLW5lc3RlZC10ZW1wbGF0ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8dGVtcGxhdGUg
aWQ9Im91dGVyVGVtcGxhdGUiPjx0ZW1wbGF0ZSBpZD0iaW5uZXJUZW1wbGF0ZSI+PHNwYW4+Q29u
dGVudHM8L3NwYW4+PC90ZW1wbGF0ZT48L3RlbXBsYXRlPgorPGlmcmFtZT48L2lmcmFtZT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCB0ZW1wbGF0ZSBjb250ZW50cyBhcmUg
Y2xvbmVkIHdoZW4gdGhlIHRlbXBsYXRlIGVsZW1lbnQgaXMgaW1wb3J0ZWQgdmlhIGltcG9ydE5v
ZGUnKTsKKworaWYgKCF3aW5kb3cuSFRNTFRlbXBsYXRlRWxlbWVudCkKKyAgICB0ZXN0RmFpbGVk
KCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpJyk7CisKK3ZhciBh
bm90aGVyRG9jdW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKS5jb250ZW50
RG9jdW1lbnQ7CisKK3ZhciBvdXRlclRlbXBsYXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J291dGVyVGVtcGxhdGUnKTsKK2V2YWxBbmRMb2coJ2ltcG9ydGVkT3V0ZXJUZW1wbGF0ZSA9IGFu
b3RoZXJEb2N1bWVudC5pbXBvcnROb2RlKG91dGVyVGVtcGxhdGUsIHRydWUpJyk7CitzaG91bGRC
ZSgnb3V0ZXJUZW1wbGF0ZS5vd25lckRvY3VtZW50JywgJ2RvY3VtZW50Jyk7CitzaG91bGRCZSgn
aW1wb3J0ZWRPdXRlclRlbXBsYXRlLm93bmVyRG9jdW1lbnQnLCAnYW5vdGhlckRvY3VtZW50Jyk7
CitzaG91bGROb3RCZSgnaW1wb3J0ZWRPdXRlclRlbXBsYXRlLmNvbnRlbnQnLCAnb3V0ZXJUZW1w
bGF0ZS5jb250ZW50Jyk7CitzaG91bGRCZSgnaW1wb3J0ZWRPdXRlclRlbXBsYXRlLmNvbnRlbnQu
Y2hpbGROb2Rlcy5sZW5ndGgnLCAnMScpOworZXZhbEFuZExvZygnaW5uZXJUZW1wbGF0ZSA9IG91
dGVyVGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkJyk7CitldmFsQW5kTG9nKCdpbXBvcnRlZElu
bmVyVGVtcGxhdGUgPSBpbXBvcnRlZE91dGVyVGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkJyk7
CitzaG91bGRCZSgnaW1wb3J0ZWRJbm5lclRlbXBsYXRlLm91dGVySFRNTCcsICdpbm5lclRlbXBs
YXRlLm91dGVySFRNTCcpOworc2hvdWxkTm90QmUoJ2lubmVyVGVtcGxhdGUub3duZXJEb2N1bWVu
dCcsICdpbXBvcnRlZElubmVyVGVtcGxhdGUub3duZXJEb2N1bWVudCcpOworc2hvdWxkTm90QmUo
J2ltcG9ydGVkSW5uZXJUZW1wbGF0ZS5jb250ZW50JywgJ2lubmVyVGVtcGxhdGUuY29udGVudCcp
Oworc2hvdWxkQmUoJ2lubmVyVGVtcGxhdGUuY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCcsICcx
Jyk7CitzaG91bGRCZSgnaW1wb3J0ZWRJbm5lclRlbXBsYXRlLmNvbnRlbnQuY2hpbGROb2Rlcy5s
ZW5ndGgnLCAnMScpOworc2hvdWxkQmUoJ2lubmVyVGVtcGxhdGUuY29udGVudC5maXJzdENoaWxk
Lm91dGVySFRNTCcsICdpbXBvcnRlZElubmVyVGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkLm91
dGVySFRNTCcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243347</attachid>
            <date>2014-12-15 21:41:17 -0800</date>
            <delta_ts>2014-12-16 11:08:14 -0800</delta_ts>
            <desc>Fixes the bug by sharing code with cloneNode 2</desc>
            <filename>bug-137619-20141215214206.patch</filename>
            <type>text/plain</type>
            <size>46533</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzMzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxNC0xMi0xNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBOZXN0ZWQgdGVtcGxhdGUgY29u
dGVudHMgYXJlIG5vdCBjbG9uZWQgYnkgZG9jdW1lbnQuaW1wb3J0Tm9kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NjE5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5
IERvY3VtZW50LmltcG9ydE5vZGUgbm90IGNsb25pbmcgSFRNTFRlbXBsYXRlRWxlbWVudCdzIGNv
bnRlbnQuCisKKyAgICAgICAgRml4ZWQgdGhlIGJ1ZyBieSBzaGFyaW5nIGNvZGUgYmV0d2VlbiBE
b2N1bWVudDo6aW1wb3J0Tm9kZSBhbmQgTm9kZTo6Y2xvbmVOb2RlIGJ5CisgICAgICAgIGdlbmVy
YWxpemluZyBOb2RlOjpjbG9uZU5vZGVJbnRlcm5hbCwgYWRkZWQgaW4gcjE3NzMxNCwgYnkgdGFr
aW5nIHRoZSBvd25lciBkb2N1bWVudAorICAgICAgICBhcyBhbiBhcmd1bWVudC4gVGhlIG1vc3Qg
b2YgY29kZSBjaGFuZ2VzIGFyZSB0aGUgcmVzdWx0IG9mIGFkZGluZyB0aGlzIGFyZ3VtZW50Lgor
CisgICAgICAgIERvY3VtZW50OjppbXBvcnROb2RlIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIGluIHdo
aWNoIHRoZSBhY3R1YWwgbG9naWMgY2hhbmdlcy4KKyAgICAgICAgTm90ZSB0aGF0IHRoZSBjb2Rl
IHRvIGltcG9ydCBURVhUX05PREUsIENEQVRBX1NFQ1RJT05fTk9ERSwgRU5USVRZX1JFRkVSRU5D
RV9OT0RFLAorICAgICAgICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgYW5kIENPTU1FTlRf
Tk9ERSBub2RlcyBhcmUgaWRlbnRpY2FsIHRvIHRoYXQgb2YgY2xvbmVOb2RlLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY2FsbCB0byBoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1l
bnRzIGluIEVMRU1FTlRfTk9ERSBidXQgdGhpcworICAgICAgICBzaG91bGQgbm90IGludHJvZHVj
ZSBhbiBvYnNlcnZhYmxlIGJlaGF2aW9yIGNoYW5nZSBzaW5jZSBhbGwgaW5zdGFudGlhdGVkIGVs
ZW1lbnRzCisgICAgICAgIHNob3VsZCBoYXZlIGEgdmFsaWQgbmFtZXNwYWNlIGluIHRoZSBmaXJz
dCBwbGFjZS4KKworICAgICAgICBCZWNhdXNlIERPQ1VNRU5UX05PREUgYW5kIERPQ1VNRU5UX1RZ
UEVfTk9ERSBjYW5ub3QgYmUgaW1wb3J0ZWQgYW5kIERPQ1VNRU5UX1RZUEVfTk9ERQorICAgICAg
ICBjYW4gb25seSBhcHBlYXIgYXMgYSBkaXJlY3QgY2hpbGQgb2YgRE9DVU1FTlRfTk9ERSwgbmVp
dGhlciBub2RlcyBub3IgdW5pbXBsZW1lbnRlZAorICAgICAgICBYUEFUSF9OQU1FU1BBQ0VfTk9E
RSBhbmQgWFBBVEhfTkFNRVNQQUNFX05PREUgY2FuIGFwcGVhciBpbnNpZGUgdGhlIHJlY3Vyc2l2
ZSBjYWxscworICAgICAgICBmb3IgRUxFTUVOVF9OT0RFIGFuZCBET0NVTUVOVF9GUkFHTUVOVF9O
T0RFIG5vZGVzLgorCisgICAgICAgIFdoaWxlIGltcG9ydE5vZGUgYmVoYXZlcyBkaWZmZXJlbnRs
eSBmcm9tIGNsb25lTm9kZSBmb3IgQVRUUklCVVRFX05PREUsIG5hbWVseSB0aGF0CisgICAgICAg
IGl0IG1lcmdlcyBhbGwgb2YgaXRzIGNoaWxkIG5vZGVzLCB0aGlzIGJlaGF2aW9yIGlzbid0IHBy
ZXNlbnQgd2hlbiByZWN1cnNpbmcgaW5zaWRlCisgICAgICAgIEVMRU1FTlRfTk9ERSBhbmQgRE9D
VU1FTlRfRlJBR01FTlRfTk9ERSBzaW5jZSB3ZSBhcmUgdXNpbmcgY2xvbmVEYXRhRnJvbUVsZW1l
bnQuCisKKyAgICAgICAgVGh1cyB0aGVyZSBzaG91bGQgYmUgbm8gb2JzZXJ2YWJsZSBiZWhhdmlv
ciBjaGFuZ2VzIGZvciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFIGFuZAorICAgICAgICBFTEVNRU5U
X05PREUgbm9kZXMgZWl0aGVyLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0hUTUxUZW1wbGF0
ZUVsZW1lbnQvaW1wb3J0Tm9kZS1uZXN0ZWQtdGVtcGxhdGVzLmh0bWwKKworICAgICAgICAqIGRv
bS9BdHRyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF0dHI6OmNsb25lTm9kZUludGVybmFsKToK
KyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAg
ICAgICogZG9tL0NEQVRBU2VjdGlvbi5oOgorICAgICAgICAqIGRvbS9Db21tZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1lbnQ6OmNsb25lTm9kZUludGVybmFsKToKKyAgICAgICAgKiBk
b20vQ29tbWVudC5oOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmNsb25lQ2hpbGROb2Rlcyk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBvcnROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFR5cGU6OmNsb25lTm9kZUludGVy
bmFsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmg6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbnRp
dHlSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlOjpjbG9u
ZU5vZGVJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0VudGl0eVJlZmVyZW5jZS5oOgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjbG9uZU5vZGUpOgorICAg
ICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgICogZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNsb25lTm9kZUludGVybmFsKToKKyAgICAg
ICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHQ6OmNsb25lTm9kZUludGVybmFsKToKKyAgICAgICAgKiBkb20vVGV4dC5o
OgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlQ2hh
bmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNsb25lSGllcmFyY2h5
VW5kZXJOZXdCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bENvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGxpdEVsZW1lbnRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
cmFnbWVudEZyb21UZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxk
cmVuKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZW1wbGF0
ZUVsZW1lbnQ6OmNsb25lTm9kZUludGVybmFsKToKKyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRo
b3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJp
YnV0ZXNBbmRDaGlsZHJlbik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJl
bik6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpidWlsZFNo
YWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxl
bWVudHNJblNoYWRvd1RyZWUpOgorCiAyMDE0LTEyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIGZlYXR1cmUgY291bnRpbmcgc3VwcG9ydApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0F0dHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBBdHRy
OjpzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJiB2LAogICAgIHNldFZhbHVlKHYsIGVjKTsKIH0K
IAotUmVmUHRyPE5vZGU+IEF0dHI6OmNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24p
CitSZWZQdHI8Tm9kZT4gQXR0cjo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERv
Y3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uKQogewotICAgIFJlZlB0cjxBdHRyPiBjbG9uZSA9IGFk
b3B0UmVmKG5ldyBBdHRyKGRvY3VtZW50KCksIHF1YWxpZmllZE5hbWUoKSwgdmFsdWUoKSkpOwor
ICAgIFJlZlB0cjxBdHRyPiBjbG9uZSA9IGFkb3B0UmVmKG5ldyBBdHRyKHRhcmdldERvY3VtZW50
LCBxdWFsaWZpZWROYW1lKCksIHZhbHVlKCkpKTsKICAgICBjbG9uZUNoaWxkTm9kZXMoY2xvbmUu
Z2V0KCkpOwogICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgJ
KHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5v
ZGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZhbHVlKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3Bl
cmF0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRl
cm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBib29sIGlzQXR0cmlidXRlTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAkocmV2aXNpb24gMTc3MzMx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDkgKzQ2LDkgQEAgTm9kZTo6Tm9kZVR5cGUgQ0RBVEFTZWN0aW9uOjpub2RlVHlwZSgp
IAogICAgIHJldHVybiBDREFUQV9TRUNUSU9OX05PREU7CiB9CiAKLVJlZlB0cjxOb2RlPiBDREFU
QVNlY3Rpb246OmNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pCitSZWZQdHI8Tm9k
ZT4gQ0RBVEFTZWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1l
bnQsIENsb25pbmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBk
YXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIGRhdGEoKSk7CiB9CiAK
IGJvb2wgQ0RBVEFTZWN0aW9uOjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9u
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChE
b2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJl
ZlB0cjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vQ29tbWVudC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Db21tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsOSBAQCBOb2Rl
OjpOb2RlVHlwZSBDb21tZW50Ojpub2RlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIENPTU1FTlRf
Tk9ERTsKIH0KIAotUmVmUHRyPE5vZGU+IENvbW1lbnQ6OmNsb25lTm9kZUludGVybmFsKENsb25p
bmdPcGVyYXRpb24pCitSZWZQdHI8Tm9kZT4gQ29tbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9j
dW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uKQogewotICAgIHJldHVybiBj
cmVhdGUoZG9jdW1lbnQoKSwgZGF0YSgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHRhcmdldERvY3Vt
ZW50LCBkYXRhKCkpOwogfQogCiBib29sIENvbW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5
cGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERv
Y3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNo
aWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsMTEg
Kzc2NSwxMiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjb25zCiAgICAg
aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCk7CiB9CiAK
LXZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGlsZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25l
KQordm9pZCBDb250YWluZXJOb2RlOjpjbG9uZUNoaWxkTm9kZXMoQ29udGFpbmVyTm9kZSogY2xv
bmUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRG9jdW1lbnQmIHRhcmdldERv
Y3VtZW50ID0gY2xvbmUtPmRvY3VtZW50KCk7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQgJiYgIWVjOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgIFJlZlB0cjxOb2RlPiBjbG9uZWRDaGlsZCA9IGNoaWxkLT5jbG9uZU5vZGVJbnRlcm5h
bChDbG9uaW5nT3BlcmF0aW9uOjpTZWxmV2l0aFRlbXBsYXRlQ29udGVudCk7CisgICAgICAgIFJl
ZlB0cjxOb2RlPiBjbG9uZWRDaGlsZCA9IGNoaWxkLT5jbG9uZU5vZGVJbnRlcm5hbCh0YXJnZXRE
b2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbjo6U2VsZldpdGhUZW1wbGF0ZUNvbnRlbnQpOwogICAg
ICAgICBjbG9uZS0+YXBwZW5kQ2hpbGQoY2xvbmVkQ2hpbGQsIGVjKTsKIAogICAgICAgICBpZiAo
IWVjICYmIGlzPENvbnRhaW5lck5vZGU+KGNoaWxkKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIzLDc4ICs5MjMsMzIgQEAgUmVmUHRyPENTU1N0eWxlRGVj
bGFyYXRpb24+IERvY3VtZW50OjpjcgogCiBSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5v
ZGUoTm9kZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGVjID0gMDsKLSAgICAKICAgICBpZiAoIWltcG9ydGVkTm9kZSkgewogICAgICAgICBlYyA9
IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBzd2l0Y2ggKGltcG9ydGVkTm9kZS0+bm9kZVR5cGUoKSkgeworICAgIGNhc2UgRUxFTUVOVF9O
T0RFOgogICAgIGNhc2UgVEVYVF9OT0RFOgotICAgICAgICByZXR1cm4gY3JlYXRlVGV4dE5vZGUo
aW1wb3J0ZWROb2RlLT5ub2RlVmFsdWUoKSk7CiAgICAgY2FzZSBDREFUQV9TRUNUSU9OX05PREU6
Ci0gICAgICAgIHJldHVybiBjcmVhdGVDREFUQVNlY3Rpb24oaW1wb3J0ZWROb2RlLT5ub2RlVmFs
dWUoKSwgZWMpOwogICAgIGNhc2UgRU5USVRZX1JFRkVSRU5DRV9OT0RFOgotICAgICAgICByZXR1
cm4gY3JlYXRlRW50aXR5UmVmZXJlbmNlKGltcG9ydGVkTm9kZS0+bm9kZU5hbWUoKSwgZWMpOwog
ICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICByZXR1cm4gY3Jl
YXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGltcG9ydGVkTm9kZS0+bm9kZU5hbWUoKSwgaW1wb3J0
ZWROb2RlLT5ub2RlVmFsdWUoKSwgZWMpOwogICAgIGNhc2UgQ09NTUVOVF9OT0RFOgotICAgICAg
ICByZXR1cm4gY3JlYXRlQ29tbWVudChpbXBvcnRlZE5vZGUtPm5vZGVWYWx1ZSgpKTsKLSAgICBj
YXNlIEVMRU1FTlRfTk9ERTogewotICAgICAgICBFbGVtZW50JiBvbGRFbGVtZW50ID0gZG93bmNh
c3Q8RWxlbWVudD4oKmltcG9ydGVkTm9kZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93
aW5nIGNoZWNrIG1pZ2h0IGJlIHVubmVjZXNzYXJ5LiBJcyBpdCBwb3NzaWJsZSB0aGF0Ci0gICAg
ICAgIC8vIG9sZEVsZW1lbnQgaGFzIG1pc21hdGNoZWQgcHJlZml4L25hbWVzcGFjZT8KLSAgICAg
ICAgaWYgKCFoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKG9sZEVsZW1lbnQudGFnUU5hbWUo
KSkpIHsKLSAgICAgICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0VsZW1l
bnQgPSBjcmVhdGVFbGVtZW50KG9sZEVsZW1lbnQudGFnUU5hbWUoKSwgZmFsc2UpOwotICAgICAg
ICBuZXdFbGVtZW50LT5jbG9uZURhdGFGcm9tRWxlbWVudChvbGRFbGVtZW50KTsKLQotICAgICAg
ICBpZiAoZGVlcCkgewotICAgICAgICAgICAgZm9yIChOb2RlKiBvbGRDaGlsZCA9IG9sZEVsZW1l
bnQuZmlyc3RDaGlsZCgpOyBvbGRDaGlsZDsgb2xkQ2hpbGQgPSBvbGRDaGlsZC0+bmV4dFNpYmxp
bmcoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdDaGlsZCA9IGltcG9ydE5v
ZGUob2xkQ2hpbGQsIHRydWUsIGVjKTsKLSAgICAgICAgICAgICAgICBpZiAoZWMpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQt
PmFwcGVuZENoaWxkKG5ld0NoaWxkLnJlbGVhc2UoKSwgZWMpOwotICAgICAgICAgICAgICAgIGlm
IChlYykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KKyAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgIHJl
dHVybiBpbXBvcnRlZE5vZGUtPmNsb25lTm9kZUludGVybmFsKGRvY3VtZW50KCksIGRlZXAgPyBD
bG9uaW5nT3BlcmF0aW9uOjpFdmVyeXRoaW5nIDogQ2xvbmluZ09wZXJhdGlvbjo6T25seVNlbGYp
OwogCi0gICAgICAgIHJldHVybiBuZXdFbGVtZW50LnJlbGVhc2UoKTsKLSAgICB9CiAgICAgY2Fz
ZSBBVFRSSUJVVEVfTk9ERToKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCAiQXR0cjo6bm9y
bWFsaXplIiBjaGlsZCBub2RlcyBvZiBBdHRyLgogICAgICAgICByZXR1cm4gQXR0cjo6Y3JlYXRl
KCp0aGlzLCBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBkb3duY2FzdDxBdHRyPigqaW1wb3J0ZWRO
b2RlKS5uYW1lKCksIG51bGxBdG9tKSwgZG93bmNhc3Q8QXR0cj4oKmltcG9ydGVkTm9kZSkudmFs
dWUoKSk7Ci0gICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7Ci0gICAgICAgIGlmIChp
bXBvcnRlZE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFkb3dSb290
IG5vZGVzIHNob3VsZCBub3QgYmUgZXhwbGljaXRseSBpbXBvcnRhYmxlLgotICAgICAgICAgICAg
Ly8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIgaG9zdCBub2RlLCBv
ciBjcmVhdGVkIGltcGxpY2l0bHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBEb2N1bWVudEZyYWdtZW50JiBvbGRGcmFnbWVudCA9IGRvd25jYXN0PERvY3VtZW50RnJh
Z21lbnQ+KCppbXBvcnRlZE5vZGUpOwotICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
bmV3RnJhZ21lbnQgPSBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIGlmIChkZWVw
KSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIG9sZENoaWxkID0gb2xkRnJhZ21lbnQuZmlyc3RD
aGlsZCgpOyBvbGRDaGlsZDsgb2xkQ2hpbGQgPSBvbGRDaGlsZC0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdDaGlsZCA9IGltcG9ydE5vZGUob2xkQ2hp
bGQsIHRydWUsIGVjKTsKLSAgICAgICAgICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgICAgIG5ld0ZyYWdtZW50LT5hcHBlbmRD
aGlsZChuZXdDaGlsZC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgICAgICAgICBpZiAoZWMpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbmV3RnJhZ21lbnQucmVsZWFzZSgpOwotICAg
IH0KKworICAgIGNhc2UgRE9DVU1FTlRfTk9ERTogLy8gQ2FuJ3QgaW1wb3J0IGEgZG9jdW1lbnQg
aW50byBhbm90aGVyIGRvY3VtZW50LgorICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOiAvLyBG
SVhNRTogU3VwcG9ydCBjbG9uaW5nIGEgRG9jdW1lbnRUeXBlIG5vZGUgcGVyIERPTTQuCisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBFTlRJVFlfTk9ERToKLSAgICAgICAgLy8gRklYTUU6IEl0
IHNob3VsZCBiZSBwb3NzaWJsZSB0byBpbXBvcnQgdGhlc2Ugbm9kZSB0eXBlcywgaG93ZXZlciBp
biBET00zIHRoZSBEb2N1bWVudFR5cGUgaXMgcmVhZG9ubHksIHNvIHRoZXJlIGlzbid0IG11Y2gg
c2Vuc2UgaW4gZG9pbmcgdGhhdC4KLSAgICAgICAgLy8gQWJpbGl0eSB0byBhZGQgdGhlc2UgaW1w
b3J0ZWQgbm9kZXMgdG8gYSBEb2N1bWVudFR5cGUgd2lsbCBiZSBjb25zaWRlcmVkIGZvciBhZGRp
dGlvbiB0byBhIGZ1dHVyZSByZWxlYXNlIG9mIHRoZSBET00uCi0gICAgY2FzZSBET0NVTUVOVF9O
T0RFOgotICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgogICAgIGNhc2UgWFBBVEhfTkFNRVNQ
QUNFX05PREU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGVzZSB0d28gdHlw
ZXMgb2YgRE9NIG5vZGVzIGFyZSBub3QgaW1wbGVtZW50ZWQuCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtMzE4Myw3ICszMTM3LDcgQEAgYm9v
bCBEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKE5vZGUqIG5ldwogICAgIHJldHVybiB0cnVlOwog
fQogCi1SZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVy
YXRpb24gdHlwZSkKK1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwoRG9j
dW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uIHR5cGUpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBj
bG9uZSA9IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKICAgICBjbG9uZS0+Y2xvbmVE
YXRhRnJvbURvY3VtZW50KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lv
biAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2Rl
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5
cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxs
b3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8
Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGUgZmluYWw7
CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBD
bG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZSBmaW5hbDsKICAgICB2b2lkIGNsb25lRGF0YUZyb21E
b2N1bWVudChjb25zdCBEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBvdmVycmlkZSBmaW5hbCB7IHJlZigpOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDkgKzcxLDkgQEAgYm9vbCBEb2N1bWVudEZyYWdtZW50OjpjaGlsZFR5cGVBbGxvd2VkKAogICAg
IH0KIH0KIAotUmVmUHRyPE5vZGU+IERvY3VtZW50RnJhZ21lbnQ6OmNsb25lTm9kZUludGVybmFs
KENsb25pbmdPcGVyYXRpb24gdHlwZSkKK1JlZlB0cjxOb2RlPiBEb2N1bWVudEZyYWdtZW50Ojpj
bG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVyYXRp
b24gdHlwZSkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmUgPSBjcmVhdGUo
ZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25lID0gY3JlYXRl
KHRhcmdldERvY3VtZW50KTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENsb25pbmdP
cGVyYXRpb246Ok9ubHlTZWxmOgogICAgIGNhc2UgQ2xvbmluZ09wZXJhdGlvbjo6U2VsZldpdGhU
ZW1wbGF0ZUNvbnRlbnQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgJ
KHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0
aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5h
bChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSAr
NTEsOSBAQCBOb2RlOjpOb2RlVHlwZSBEb2N1bWVudFR5cGU6Om5vZGVUeXBlKCkgCiAgICAgcmV0
dXJuIERPQ1VNRU5UX1RZUEVfTk9ERTsKIH0KIAotUmVmUHRyPE5vZGU+IERvY3VtZW50VHlwZTo6
Y2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbikKK1JlZlB0cjxOb2RlPiBEb2N1bWVu
dFR5cGU6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiBkb2N1bWVudFRhcmdldCwgQ2xvbmlu
Z09wZXJhdGlvbikKIHsKLSAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIG1fbmFtZSwgbV9w
dWJsaWNJZCwgbV9zeXN0ZW1JZCk7CisgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudFRhcmdldCwg
bV9uYW1lLCBtX3B1YmxpY0lkLCBtX3N5c3RlbUlkKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFR5cGUuaAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBVUkwgYmFzZVVSSSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
U3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBu
b2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25l
Tm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX3B1YmxpY0lkOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksMjkgKzI4OSwyOSBA
QCBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoCiBERUZJTkVfVklSVFVB
TF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoRWxlbWVudCwgZm9jdXMpOwogREVGSU5FX1ZJUlRV
QUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKEVsZW1lbnQsIGxvYWQpOwogCi1SZWZQdHI8Tm9k
ZT4gRWxlbWVudDo6Y2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbiB0eXBlKQorUmVm
UHRyPE5vZGU+IEVsZW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1
bWVudCwgQ2xvbmluZ09wZXJhdGlvbiB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgQ2xvbmluZ09wZXJhdGlvbjo6T25seVNlbGY6CiAgICAgY2FzZSBDbG9uaW5nT3BlcmF0
aW9uOjpTZWxmV2l0aFRlbXBsYXRlQ29udGVudDoKLSAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVu
dFdpdGhvdXRDaGlsZHJlbigpOworICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50V2l0aG91dENo
aWxkcmVuKHRhcmdldERvY3VtZW50KTsKICAgICBjYXNlIENsb25pbmdPcGVyYXRpb246OkV2ZXJ5
dGhpbmc6Ci0gICAgICAgIHJldHVybiBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oKTsKKyAgICAg
ICAgcmV0dXJuIGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbih0YXJnZXREb2N1bWVudCk7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCkKK1JlZlB0
cjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oRG9jdW1lbnQmIHRh
cmdldERvY3VtZW50KQogewotICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZSA9IGNsb25lRWxlbWVu
dFdpdGhvdXRDaGlsZHJlbigpOworICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZSA9IGNsb25lRWxl
bWVudFdpdGhvdXRDaGlsZHJlbih0YXJnZXREb2N1bWVudCk7CiAgICAgY2xvbmVDaGlsZE5vZGVz
KGNsb25lLmdldCgpKTsKICAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOwogfQogCi1SZWZQdHI8
RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCkKK1JlZlB0cjxF
bGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oRG9jdW1lbnQmIHRh
cmdldERvY3VtZW50KQogewotICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZSA9IGNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY2xv
bmUgPSBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKHRhcmdldERvY3Vt
ZW50KTsKICAgICAvLyBUaGlzIHdpbGwgY2F0Y2ggSFRNTCBlbGVtZW50cyBpbiB0aGUgd3Jvbmcg
bmFtZXNwYWNlIHRoYXQgYXJlIG5vdCBjb3JyZWN0bHkgY29waWVkLgogICAgIC8vIFRoaXMgaXMg
YSBzYW5pdHkgY2hlY2sgYXMgSFRNTCBvdmVybG9hZHMgc29tZSBvZiB0aGUgRE9NIG1ldGhvZHMu
CiAgICAgQVNTRVJUKGlzSFRNTEVsZW1lbnQoKSA9PSBjbG9uZS0+aXNIVE1MRWxlbWVudCgpKTsK
QEAgLTMyMCw5ICszMjAsOSBAQCBSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50
V2l0CiAgICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKIH0KIAotUmVmUHRyPEVsZW1lbnQ+IEVs
ZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRy
PEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRy
ZW4oRG9jdW1lbnQmIHRhcmdldERvY3VtZW50KQogewotICAgIHJldHVybiBkb2N1bWVudCgpLmNy
ZWF0ZUVsZW1lbnQodGFnUU5hbWUoKSwgZmFsc2UpOworICAgIHJldHVybiB0YXJnZXREb2N1bWVu
dC5jcmVhdGVFbGVtZW50KHRhZ1FOYW1lKCksIGZhbHNlKTsKIH0KIAogUmVmUHRyPEF0dHI+IEVs
ZW1lbnQ6OmRldGFjaEF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjY3LDggKzI2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4g
Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxl
bWVudFdpdGhvdXRDaGlsZHJlbigpOworICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRX
aXRoQ2hpbGRyZW4oRG9jdW1lbnQmKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50
V2l0aG91dENoaWxkcmVuKERvY3VtZW50Jik7CiAKICAgICB2b2lkIG5vcm1hbGl6ZUF0dHJpYnV0
ZXMoKTsKICAgICBTdHJpbmcgbm9kZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpIGNvbnN0OwpAQCAtNjMy
LDggKzYzMiw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBjbG9uZU5vZGUgaXMgcHJpdmF0ZSBzbyB0
aGF0IG5vbi12aXJ0dWFsIGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbiBhbmQgY2xvbmVFbGVtZW50
V2l0aG91dENoaWxkcmVuCiAgICAgLy8gYXJlIHVzZWQgaW5zdGVhZC4KLSAgICB2aXJ0dWFsIFJl
ZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRl
c0FuZENoaWxkcmVuKCk7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJu
YWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERv
Y3VtZW50Jik7CiAKICAgICB2b2lkIGFkZFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290
Pik7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRW50aXR5UmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RW50aXR5UmVmZXJlbmNlLmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0VudGl0eVJlZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAg
Tm9kZTo6Tm9kZVR5cGUgRW50aXR5UmVmZXJlbmNlOjpub2RlVHlwZQogICAgIHJldHVybiBFTlRJ
VFlfUkVGRVJFTkNFX05PREU7CiB9CiAKLVJlZlB0cjxOb2RlPiBFbnRpdHlSZWZlcmVuY2U6OmNs
b25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pCitSZWZQdHI8Tm9kZT4gRW50aXR5UmVm
ZXJlbmNlOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25p
bmdPcGVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBtX2VudGl0eU5h
bWUpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIG1fZW50aXR5TmFtZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJl
bmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5o
CShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBOb2RlVHlw
ZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNs
b25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVmUHRyPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlv
bikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgbV9lbnRpdHlOYW1lOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA5LDggKzIwOSw4IEBAIHB1YmxpYzoKICAgICAgICAgU2VsZldpdGhU
ZW1wbGF0ZUNvbnRlbnQsCiAgICAgICAgIEV2ZXJ5dGhpbmcsCiAgICAgfTsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKSA9IDA7Ci0g
ICAgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIHsgcmV0dXJuIGNsb25lTm9kZUlu
dGVybmFsKGRlZXAgPyBDbG9uaW5nT3BlcmF0aW9uOjpFdmVyeXRoaW5nIDogQ2xvbmluZ09wZXJh
dGlvbjo6T25seVNlbGYpOyB9CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50
ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSA9IDA7CisgICAgUmVmUHRyPE5vZGU+
IGNsb25lTm9kZShib29sIGRlZXApIHsgcmV0dXJuIGNsb25lTm9kZUludGVybmFsKGRvY3VtZW50
KCksIGRlZXAgPyBDbG9uaW5nT3BlcmF0aW9uOjpFdmVyeXRoaW5nIDogQ2xvbmluZ09wZXJhdGlv
bjo6T25seVNlbGYpOyB9CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxO
YW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMSArNzksMTEgQEAgTm9k
ZTo6Tm9kZVR5cGUgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpubwogICAgIHJldHVybiBQUk9DRVNT
SU5HX0lOU1RSVUNUSU9OX05PREU7CiB9CiAKLVJlZlB0cjxOb2RlPiBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb246OmNsb25lTm9kZUludGVybmFsKENsb25pbmdPcGVyYXRpb24pCitSZWZQdHI8Tm9kZT4g
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0
RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24pCiB7CiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJv
YmxlbSB0aGF0IHRoaXMgZG9lcyBub3QgY29weSBtX2xvY2FsSHJlZj8KICAgICAvLyBXaGF0IGFi
b3V0IG90aGVyIGRhdGEgbWVtYmVycz8KLSAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIG1f
dGFyZ2V0LCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQsIG1fdGFy
Z2V0LCBkYXRhKCkpOwogfQogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHls
ZVNoZWV0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8
Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5n
T3BlcmF0aW9uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDCiAgICAgaW52YWxpZGF0ZURp
c3RyaWJ1dGlvbigpOwogfQogCi1SZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlSW50
ZXJuYWwoQ2xvbmluZ09wZXJhdGlvbikKK1JlZlB0cjxOb2RlPiBTaGFkb3dSb290OjpjbG9uZU5v
ZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pCiB7CiAgICAgcmV0dXJuIG51
bGxwdHI7IC8vIFNoYWRvd1Jvb3RzIHNob3VsZCBuZXZlciBiZSBjbG9uZWQuCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlSW50ZXJu
YWwoQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4g
Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsK
IAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBoYXBwZW4uIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAogICAgIGJvb2wgaXNPcnBoYW4oKSBjb25zdCB7
IHJldHVybiAhaG9zdEVsZW1lbnQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAkocmV2aXNpb24g
MTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjksOSArMTY5LDkgQEAgTm9kZTo6Tm9kZVR5cGUgVGV4dDo6bm9kZVR5cGUoKSBjb25zdAog
ICAgIHJldHVybiBURVhUX05PREU7CiB9CiAKLVJlZlB0cjxOb2RlPiBUZXh0OjpjbG9uZU5vZGVJ
bnRlcm5hbChDbG9uaW5nT3BlcmF0aW9uKQorUmVmUHRyPE5vZGU+IFRleHQ6OmNsb25lTm9kZUlu
dGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbikKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIGRhdGEoKSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0
YXJnZXREb2N1bWVudCwgZGF0YSgpKTsKIH0KIAogc3RhdGljIGJvb2wgaXNTVkdTaGFkb3dUZXh0
KFRleHQqIHRleHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0
aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5h
bChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgUmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gMTc3
MzMxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNjAsNyArMTA2MCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6
OnB1c2hEb3duSW5saW5lU3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmICghY2hpbGQuY29udGFpbnModGFyZ2V0Tm9kZSkgJiYgZWxlbWVudHNUb1B1c2hEb3duLnNp
emUoKSkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudHNU
b1B1c2hEb3duLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiB3cmFwcGVyID0gZWxlbWVudHNUb1B1c2hEb3duW2ldLT5jbG9uZUVsZW1lbnRXaXRob3V0
Q2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHdyYXBwZXIg
PSBlbGVtZW50c1RvUHVzaERvd25baV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbihkb2N1
bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci0+cmVtb3ZlQXR0cmlidXRlKHN0
eWxlQXR0cik7CiAgICAgICAgICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1l
bnQoJmNoaWxkLCAmY2hpbGQsIHdyYXBwZXIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1MDQs
NyArMTUwNCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUKICAg
ICAgICAgc3Vycm91bmROb2RlUmFuZ2VXaXRoRWxlbWVudChzdGFydE5vZGUsIGVuZE5vZGUsIGNy
ZWF0ZUhUTUxFbGVtZW50KGRvY3VtZW50KCksIHN1cFRhZykpOwogCiAgICAgaWYgKG1fc3R5bGVk
SW5saW5lRWxlbWVudCAmJiBhZGRTdHlsZWRFbGVtZW50ID09IEFkZFN0eWxlZEVsZW1lbnQpCi0g
ICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBt
X3N0eWxlZElubGluZUVsZW1lbnQtPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpKTsKKyAg
ICAgICAgc3Vycm91bmROb2RlUmFuZ2VXaXRoRWxlbWVudChzdGFydE5vZGUsIGVuZE5vZGUsIG1f
c3R5bGVkSW5saW5lRWxlbWVudC0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKGRvY3VtZW50
KCkpKTsKIH0KIAogZmxvYXQgQXBwbHlTdHlsZUNvbW1hbmQ6OmNvbXB1dGVkRm9udFNpemUoTm9k
ZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2Nr
cXVvdGVDb21tYW5kLmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcg
KzEzMSw3IEBAIHZvaWQgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAg
IGFuY2VzdG9ycy5hcHBlbmQobm9kZSk7CiAgICAgCiAgICAgLy8gSW5zZXJ0IGEgY2xvbmUgb2Yg
dGhlIHRvcCBibG9ja3F1b3RlIGFmdGVyIHRoZSBicmVhay4KLSAgICBSZWZQdHI8RWxlbWVudD4g
Y2xvbmVkQmxvY2txdW90ZSA9IGRvd25jYXN0PEVsZW1lbnQ+KCp0b3BCbG9ja3F1b3RlKS5jbG9u
ZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVkQmxv
Y2txdW90ZSA9IGRvd25jYXN0PEVsZW1lbnQ+KCp0b3BCbG9ja3F1b3RlKS5jbG9uZUVsZW1lbnRX
aXRob3V0Q2hpbGRyZW4oZG9jdW1lbnQoKSk7CiAgICAgaW5zZXJ0Tm9kZUFmdGVyKGNsb25lZEJs
b2NrcXVvdGUuZ2V0KCksIGJyZWFrTm9kZS5nZXQoKSk7CiAgICAgCiAgICAgLy8gQ2xvbmUgc3Rh
cnROb2RlJ3MgYW5jZXN0b3JzIGludG8gdGhlIGNsb25lZCBibG9ja3F1b3RlLgpAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8g
b3IgY2xvbmVkQmxvY2txdW90ZSBpZiBhbmNlc3RvcnMgaXMgZW1wdHkpLgogICAgIFJlZlB0cjxF
bGVtZW50PiBjbG9uZWRBbmNlc3RvciA9IGNsb25lZEJsb2NrcXVvdGU7CiAgICAgZm9yIChzaXpl
X3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7IGkgIT0gMDsgLS1pKSB7Ci0gICAgICAgIFJlZlB0cjxF
bGVtZW50PiBjbG9uZWRDaGlsZCA9IGFuY2VzdG9yc1tpIC0gMV0tPmNsb25lRWxlbWVudFdpdGhv
dXRDaGlsZHJlbigpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVkQ2hpbGQgPSBhbmNl
c3RvcnNbaSAtIDFdLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oZG9jdW1lbnQoKSk7CiAg
ICAgICAgIC8vIFByZXNlcnZlIGxpc3QgaXRlbSBudW1iZXJpbmcgaW4gY2xvbmVkIGxpc3RzLgog
ICAgICAgICBpZiAoY2xvbmVkQ2hpbGQtPmlzRWxlbWVudE5vZGUoKSAmJiBjbG9uZWRDaGlsZC0+
aGFzVGFnTmFtZShvbFRhZykpIHsKICAgICAgICAgICAgIE5vZGUqIGxpc3RDaGlsZE5vZGUgPSBp
ID4gMSA/IGFuY2VzdG9yc1tpIC0gMl0uZ2V0KCkgOiBzdGFydE5vZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Niw3ICsxMzYsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEluc2VydFBhcmFncmFwaFNlcGFyCiAg
ICAgLy8gTWFrZSBjbG9uZXMgb2YgYW5jZXN0b3JzIGluIGJldHdlZW4gdGhlIHN0YXJ0IG5vZGUg
YW5kIHRoZSBzdGFydCBibG9jay4KICAgICBSZWZQdHI8RWxlbWVudD4gcGFyZW50ID0gYmxvY2tU
b0luc2VydDsKICAgICBmb3IgKHNpemVfdCBpID0gYW5jZXN0b3JzLnNpemUoKTsgaSAhPSAwOyAt
LWkpIHsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNoaWxkID0gYW5jZXN0b3JzW2kgLSAxXS0+
Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBj
aGlsZCA9IGFuY2VzdG9yc1tpIC0gMV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbihkb2N1
bWVudCgpKTsKICAgICAgICAgLy8gSXQgc2hvdWxkIGFsd2F5cyBiZSBva2F5IHRvIHJlbW92ZSBp
ZCBmcm9tIHRoZSBjbG9uZWQgZWxlbWVudHMsIHNpbmNlIHRoZSBvcmlnaW5hbHMgYXJlIG5vdCBk
ZWxldGVkLgogICAgICAgICBjaGlsZC0+cmVtb3ZlQXR0cmlidXRlKGlkQXR0cik7CiAgICAgICAg
IGFwcGVuZE5vZGUoY2hpbGQsIHBhcmVudCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBJbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkbwogICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNl
RGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoc3RhcnRCbG9jay5nZXQoKSkpIAogICAgICAgICBibG9j
a1RvSW5zZXJ0ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAg
ICAgZWxzZQotICAgICAgICBibG9ja1RvSW5zZXJ0ID0gc3RhcnRCbG9jay0+Y2xvbmVFbGVtZW50
V2l0aG91dENoaWxkcmVuKCk7CisgICAgICAgIGJsb2NrVG9JbnNlcnQgPSBzdGFydEJsb2NrLT5j
bG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oZG9jdW1lbnQoKSk7CiAKICAgICAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gcG9zaXRpb24gaXMgaW4gdGhlIGxhc3Qgdmlz
aWJsZSBwb3NpdGlvbiBpbiBpdHMgYmxvY2ssCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwCShyZXZpc2lvbiAxNzczMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsQ29tbWFuZDo6CiAgICAgICAgICAgICBjYXNlIEluaGVyaXRlZExpc3RUeXBlOgog
ICAgICAgICAgICAgICAgIG5ld1BhcmVudCA9IHN0YXJ0TGlzdENoaWxkLT5wYXJlbnRFbGVtZW50
KCk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld1BhcmVudCkKLSAgICAgICAgICAgICAgICAgICAg
bmV3UGFyZW50ID0gbmV3UGFyZW50LT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAg
ICAgICAgICAgICAgICAgICAgbmV3UGFyZW50ID0gbmV3UGFyZW50LT5jbG9uZUVsZW1lbnRXaXRo
b3V0Q2hpbGRyZW4oZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIE9yZGVyZWRMaXN0OgogICAgICAgICAgICAgICAgIG5ld1BhcmVudCA9IGNyZWF0
ZU9yZGVyZWRMaXN0RWxlbWVudChkb2N1bWVudCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmV4ZWN1dGVB
cHBseSgpCiAgICAgCiB2b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmRvQXBwbHkoKQogewotICAg
IG1fZWxlbWVudDEgPSBtX2VsZW1lbnQyLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsK
KyAgICBtX2VsZW1lbnQxID0gbV9lbGVtZW50Mi0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVu
KGRvY3VtZW50KCkpOwogICAgIAogICAgIGV4ZWN1dGVBcHBseSgpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTgsNyArNzk4LDcgQEAgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbQogICAgICAgICAgICAgZmlsbENv
bnRhaW5lckZyb21TdHJpbmcoZnJhZ21lbnQuZ2V0KCksIHMpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKHVzZUNsb25lc09mRW5jbG9zaW5nQmxvY2spCi0gICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGJsb2NrLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gYmxvY2stPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbihk
b2N1bWVudCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGNy
ZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGZpbGxD
b250YWluZXJGcm9tU3RyaW5nKGVsZW1lbnQuZ2V0KCksIHMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw5ICs1OCw5IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBS
ZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigp
IG92ZXJyaWRlCisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91
dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQpIG92ZXJyaWRl
CiAgICAgewotICAgICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCkpOworICAgICAgICByZXR1
cm4gY3JlYXRlKHRhcmdldERvY3VtZW50KTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTc3MzMxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2OCw5ICsxNjgsOSBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVu
CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOwogfQogCi1SZWZQdHI8RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6
OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1l
bnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENo
aWxkcmVuKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBhbHJl
YWR5U3RhcnRlZCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2NyaXB0RWxlbWVu
dCh0YWdRTmFtZSgpLCB0YXJnZXREb2N1bWVudCwgZmFsc2UsIGFscmVhZHlTdGFydGVkKCkpKTsK
IH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkocmV2
aXNpb24gMTc3MzMxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVmUHRy
PEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0
cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vbmFtZXNw
YWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDE3ICs2OCwxNyBAQCBEb2N1bWVudEZyYWdt
ZW50KiBIVE1MVGVtcGxhdGVFbGVtZW50OjpjCiAgICAgcmV0dXJuIG1fY29udGVudC5nZXQoKTsK
IH0KIAotUmVmUHRyPE5vZGU+IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNsb25lTm9kZUludGVybmFs
KENsb25pbmdPcGVyYXRpb24gdHlwZSkKK1JlZlB0cjxOb2RlPiBIVE1MVGVtcGxhdGVFbGVtZW50
OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQsIENsb25pbmdPcGVy
YXRpb24gdHlwZSkKIHsKICAgICBSZWZQdHI8Tm9kZT4gY2xvbmU7CiAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgY2FzZSBDbG9uaW5nT3BlcmF0aW9uOjpPbmx5U2VsZjoKLSAgICAgICAgcmV0dXJu
IGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOworICAgICAgICByZXR1cm4gY2xvbmVFbGVt
ZW50V2l0aG91dENoaWxkcmVuKHRhcmdldERvY3VtZW50KTsKICAgICBjYXNlIENsb25pbmdPcGVy
YXRpb246OlNlbGZXaXRoVGVtcGxhdGVDb250ZW50OgotICAgICAgICBjbG9uZSA9IGNsb25lRWxl
bWVudFdpdGhvdXRDaGlsZHJlbigpOworICAgICAgICBjbG9uZSA9IGNsb25lRWxlbWVudFdpdGhv
dXRDaGlsZHJlbih0YXJnZXREb2N1bWVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2xv
bmluZ09wZXJhdGlvbjo6RXZlcnl0aGluZzoKLSAgICAgICAgY2xvbmUgPSBjbG9uZUVsZW1lbnRX
aXRoQ2hpbGRyZW4oKTsKKyAgICAgICAgY2xvbmUgPSBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4o
dGFyZ2V0RG9jdW1lbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKG1fY29udGVu
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCShyZXZp
c2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IEhUTUxUZW1wbGF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChDbG9uaW5nT3BlcmF0
aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5h
bChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwog
CiAgICAgbXV0YWJsZSBSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudD4gbV9j
b250ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzczMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsOSAr
NTk4LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTbGlkZXJUaHVtYkVsZW1lbnQ6OgogICAgIH0K
IH0KIAotUmVmUHRyPEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0
aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCitSZWZQdHI8RWxlbWVudD4gU2xpZGVyVGh1bWJF
bGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50
JiB0YXJnZXREb2N1bWVudCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCkpOworICAg
IHJldHVybiBjcmVhdGUodGFyZ2V0RG9jdW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmgJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3
ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KERvY3VtZW50Jik7CiAK
ICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxFbGVt
ZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0
ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0
Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBF
bGVtZW50KiBmb2N1c0RlbGVnYXRlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgwLDkgKzgwLDkgQEAgUGFzc1JlZlB0cjxXZWJWVFRFbGVtZW50PiBXZWJWVFRFbGVtZW50Ogog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVudChub2RlVHlwZSwgZG9jdW1lbnQp
KTsKIH0KIAotUmVmUHRyPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhv
dXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6
OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmIHRhcmdl
dERvY3VtZW50KQogewotICAgIFJlZlB0cjxXZWJWVFRFbGVtZW50PiBjbG9uZSA9IGNyZWF0ZShz
dGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4obV93ZWJWVFROb2RlVHlwZSksIGRvY3VtZW50KCkp
OworICAgIFJlZlB0cjxXZWJWVFRFbGVtZW50PiBjbG9uZSA9IGNyZWF0ZShzdGF0aWNfY2FzdDxX
ZWJWVFROb2RlVHlwZT4obV93ZWJWVFROb2RlVHlwZSksIHRhcmdldERvY3VtZW50KTsKICAgICBj
bG9uZS0+c2V0TGFuZ3VhZ2UobV9sYW5ndWFnZSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgJKHJldmlzaW9uIDE3
NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJWVFRFbGVtZW50PiBjcmVhdGUoY29uc3QgV2ViVlRUTm9kZVR5cGUsIERvY3VtZW50Jik7
CiAgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50
KERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRX
aXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1
bWVudCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRXZWJWVFROb2RlVHlwZShXZWJWVFROb2Rl
VHlwZSB0eXBlKSB7IG1fd2ViVlRUTm9kZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlw
ZSk7IH0KICAgICBXZWJWVFROb2RlVHlwZSB3ZWJWVFROb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZUVE5vZGVUeXBlKTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTc3MzMxKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTIsOSArMTkyLDkgQEAgYm9vbCBTVkdTY3JpcHRFbGVtZW50OjpoYXNTb3VyY2VBdHRy
aWJ1dAogICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogfQog
Ci1SZWZQdHI8RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0
dHJpYnV0ZXNBbmRDaGlsZHJlbigpCitSZWZQdHI8RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6
Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYgdGFyZ2V0
RG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdTY3JpcHRFbGVtZW50KHRh
Z1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBhbHJlYWR5U3RhcnRlZCgpKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTVkdTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIHRhcmdldERvY3Vt
ZW50LCBmYWxzZSwgYWxyZWFkeVN0YXJ0ZWQoKSkpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiAxNzczMzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2Fk
RXZlbnQoKSBvdmVycmlkZSB7IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmRpc3BhdGNo
TG9hZEV2ZW50KHRoaXMpOyB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVs
ZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJl
bihEb2N1bWVudCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8v
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NzMzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQgU1ZH
VXNlRWxlbWVudDo6YnVpbGRTaGFkb3dUcmVlKFNWR0UKICAgICBpZiAoaXNEaXNhbGxvd2VkRWxl
bWVudCgqdGFyZ2V0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNWR0VsZW1lbnQ+
IG5ld0NoaWxkID0gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdFbGVtZW50Pih0YXJnZXRJbnN0YW5j
ZS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKS0+Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCkpOwor
ICAgIFJlZlB0cjxTVkdFbGVtZW50PiBuZXdDaGlsZCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZH
RWxlbWVudD4odGFyZ2V0SW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCktPmNsb25lRWxl
bWVudFdpdGhDaGlsZHJlbihkb2N1bWVudCgpKSk7CiAKICAgICAvLyBXZSBkb24ndCB3YWxrIHRo
ZSB0YXJnZXQgdHJlZSBlbGVtZW50LWJ5LWVsZW1lbnQsIGFuZCBjbG9uZSBlYWNoIGVsZW1lbnQs
CiAgICAgLy8gYnV0IGluc3RlYWQgdXNlIGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpLiBUaGlz
IGlzIGFuIG9wdGltaXphdGlvbiBmb3IgdGhlIGNvbW1vbgpAQCAtNzI3LDcgKzcyNyw3IEBAIHZv
aWQgU1ZHVXNlRWxlbWVudDo6ZXhwYW5kVXNlRWxlbWVudHNJblMKICAgICAgICAgdHJhbnNmZXJV
c2VBdHRyaWJ1dGVzVG9SZXBsYWNlZEVsZW1lbnQoJnVzZSwgY2xvbmVQYXJlbnQuZ2V0KCkpOwog
CiAgICAgICAgIGlmICh0YXJnZXQgJiYgIWlzRGlzYWxsb3dlZEVsZW1lbnQoKnRhcmdldCkpIHsK
LSAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdDaGlsZCA9IHRhcmdldC0+Y2xvbmVFbGVt
ZW50V2l0aENoaWxkcmVuKCk7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3Q2hpbGQg
PSB0YXJnZXQtPmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbihkb2N1bWVudCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVChuZXdDaGlsZC0+aXNTVkdFbGVtZW50KCkpOwogICAgICAgICAgICAgY2xvbmVQ
YXJlbnQtPmFwcGVuZENoaWxkKG5ld0NoaWxkLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE3NzMzMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTEyLTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgorCisgICAgICAgIE5lc3RlZCB0ZW1wbGF0ZSBjb250ZW50cyBhcmUgbm90IGNs
b25lZCBieSBkb2N1bWVudC5pbXBvcnROb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc2MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdC4KKworICAgICAgICAq
IGZhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvaW1wb3J0Tm9kZS1uZXN0ZWQtdGVtcGxhdGVz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxl
bWVudC9pbXBvcnROb2RlLW5lc3RlZC10ZW1wbGF0ZXMuaHRtbDogQWRkZWQuCisKIDIwMTQtMTIt
MTUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXBvcnQgTW96aWxsYSB0ZXN0IHN1aXRlIGZvciBTVkcuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2ltcG9ydE5vZGUtbmVzdGVkLXRlbXBsYXRlcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBs
YXRlRWxlbWVudC9pbXBvcnROb2RlLW5lc3RlZC10ZW1wbGF0ZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9pbXBv
cnROb2RlLW5lc3RlZC10ZW1wbGF0ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCB0ZW1wbGF0ZSBjb250ZW50cyBhcmUgY2xvbmVkIHdoZW4g
dGhlIHRlbXBsYXRlIGVsZW1lbnQgaXMgaW1wb3J0ZWQgdmlhIGltcG9ydE5vZGUKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2ltcG9ydGVkT3V0ZXJUZW1wbGF0ZSA9IGFub3RoZXJE
b2N1bWVudC5pbXBvcnROb2RlKG91dGVyVGVtcGxhdGUsIHRydWUpCitQQVNTIG91dGVyVGVtcGxh
dGUub3duZXJEb2N1bWVudCBpcyBkb2N1bWVudAorUEFTUyBpbXBvcnRlZE91dGVyVGVtcGxhdGUu
b3duZXJEb2N1bWVudCBpcyBhbm90aGVyRG9jdW1lbnQKK1BBU1MgaW1wb3J0ZWRPdXRlclRlbXBs
YXRlLmNvbnRlbnQgaXMgbm90IG91dGVyVGVtcGxhdGUuY29udGVudAorUEFTUyBpbXBvcnRlZE91
dGVyVGVtcGxhdGUuY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCBpcyAxCitpbm5lclRlbXBsYXRl
ID0gb3V0ZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQKK2ltcG9ydGVkSW5uZXJUZW1wbGF0
ZSA9IGltcG9ydGVkT3V0ZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQKK1BBU1MgaW1wb3J0
ZWRJbm5lclRlbXBsYXRlLm91dGVySFRNTCBpcyBpbm5lclRlbXBsYXRlLm91dGVySFRNTAorUEFT
UyBpbm5lclRlbXBsYXRlLm93bmVyRG9jdW1lbnQgaXMgbm90IGltcG9ydGVkSW5uZXJUZW1wbGF0
ZS5vd25lckRvY3VtZW50CitQQVNTIGltcG9ydGVkSW5uZXJUZW1wbGF0ZS5jb250ZW50IGlzIG5v
dCBpbm5lclRlbXBsYXRlLmNvbnRlbnQKK1BBU1MgaW5uZXJUZW1wbGF0ZS5jb250ZW50LmNoaWxk
Tm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgaW1wb3J0ZWRJbm5lclRlbXBsYXRlLmNvbnRlbnQuY2hp
bGROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBpbm5lclRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGls
ZC5vdXRlckhUTUwgaXMgaW1wb3J0ZWRJbm5lclRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZC5v
dXRlckhUTUwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2ltcG9y
dE5vZGUtbmVzdGVkLXRlbXBsYXRlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvaW1wb3J0Tm9kZS1uZXN0ZWQtdGVtcGxhdGVzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVt
ZW50L2ltcG9ydE5vZGUtbmVzdGVkLXRlbXBsYXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzx0ZW1wbGF0ZSBp
ZD0ib3V0ZXJUZW1wbGF0ZSI+PHRlbXBsYXRlIGlkPSJpbm5lclRlbXBsYXRlIj48c3Bhbj5Db250
ZW50czwvc3Bhbj48L3RlbXBsYXRlPjwvdGVtcGxhdGU+Cis8aWZyYW1lPjwvaWZyYW1lPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHRlbXBsYXRlIGNvbnRlbnRzIGFyZSBj
bG9uZWQgd2hlbiB0aGUgdGVtcGxhdGUgZWxlbWVudCBpcyBpbXBvcnRlZCB2aWEgaW1wb3J0Tm9k
ZScpOworCitpZiAoIXdpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50KQorICAgIHRlc3RGYWlsZWQo
J1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCknKTsKKwordmFyIGFu
b3RoZXJEb2N1bWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpLmNvbnRlbnRE
b2N1bWVudDsKKwordmFyIG91dGVyVGVtcGxhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
b3V0ZXJUZW1wbGF0ZScpOworZXZhbEFuZExvZygnaW1wb3J0ZWRPdXRlclRlbXBsYXRlID0gYW5v
dGhlckRvY3VtZW50LmltcG9ydE5vZGUob3V0ZXJUZW1wbGF0ZSwgdHJ1ZSknKTsKK3Nob3VsZEJl
KCdvdXRlclRlbXBsYXRlLm93bmVyRG9jdW1lbnQnLCAnZG9jdW1lbnQnKTsKK3Nob3VsZEJlKCdp
bXBvcnRlZE91dGVyVGVtcGxhdGUub3duZXJEb2N1bWVudCcsICdhbm90aGVyRG9jdW1lbnQnKTsK
K3Nob3VsZE5vdEJlKCdpbXBvcnRlZE91dGVyVGVtcGxhdGUuY29udGVudCcsICdvdXRlclRlbXBs
YXRlLmNvbnRlbnQnKTsKK3Nob3VsZEJlKCdpbXBvcnRlZE91dGVyVGVtcGxhdGUuY29udGVudC5j
aGlsZE5vZGVzLmxlbmd0aCcsICcxJyk7CitldmFsQW5kTG9nKCdpbm5lclRlbXBsYXRlID0gb3V0
ZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQnKTsKK2V2YWxBbmRMb2coJ2ltcG9ydGVkSW5u
ZXJUZW1wbGF0ZSA9IGltcG9ydGVkT3V0ZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQnKTsK
K3Nob3VsZEJlKCdpbXBvcnRlZElubmVyVGVtcGxhdGUub3V0ZXJIVE1MJywgJ2lubmVyVGVtcGxh
dGUub3V0ZXJIVE1MJyk7CitzaG91bGROb3RCZSgnaW5uZXJUZW1wbGF0ZS5vd25lckRvY3VtZW50
JywgJ2ltcG9ydGVkSW5uZXJUZW1wbGF0ZS5vd25lckRvY3VtZW50Jyk7CitzaG91bGROb3RCZSgn
aW1wb3J0ZWRJbm5lclRlbXBsYXRlLmNvbnRlbnQnLCAnaW5uZXJUZW1wbGF0ZS5jb250ZW50Jyk7
CitzaG91bGRCZSgnaW5uZXJUZW1wbGF0ZS5jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoJywgJzEn
KTsKK3Nob3VsZEJlKCdpbXBvcnRlZElubmVyVGVtcGxhdGUuY29udGVudC5jaGlsZE5vZGVzLmxl
bmd0aCcsICcxJyk7CitzaG91bGRCZSgnaW5uZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQu
b3V0ZXJIVE1MJywgJ2ltcG9ydGVkSW5uZXJUZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQub3V0
ZXJIVE1MJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>