<?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>214624</bug_id>
          
          <creation_ts>2020-07-21 19:14:35 -0700</creation_ts>
          <short_desc>Disallow VM entry when doing a VMInquiry.</short_desc>
          <delta_ts>2020-07-26 12:06:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>214539</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1673722</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 19:14:35 -0700</bug_when>
    <thetext>We can now use the DisallowVMEntry scope to enforce this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673723</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-21 19:16:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/65915314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673726</commentid>
    <comment_count>2</comment_count>
      <attachid>404892</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 19:48:18 -0700</bug_when>
    <thetext>Created attachment 404892
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673754</commentid>
    <comment_count>3</comment_count>
      <attachid>404901</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 23:19:21 -0700</bug_when>
    <thetext>Created attachment 404901
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673755</commentid>
    <comment_count>4</comment_count>
      <attachid>404902</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-21 23:28:16 -0700</bug_when>
    <thetext>Created attachment 404902
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673902</commentid>
    <comment_count>5</comment_count>
      <attachid>404902</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-22 11:36:38 -0700</bug_when>
    <thetext>Comment on attachment 404902
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:27
&gt; +           do entail entering the VM.  In such cases, we need to reset the PropertySlot&apos;s

do entail =&gt; entails

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:310
&gt; +        PropertySlot slot { thisObject, PropertySlot::InternalMethodType::VMInquiry, &amp;lexicalGlobalObject-&gt;vm() };
&gt; +        bool found = JSObject::getOwnPropertySlot(thisObject, lexicalGlobalObject, propertyName, slot);
&gt; +        slot.disallowVMEntry.reset();

for a lot of these that just require the bool result of calling getOwnPropertySlot, if you just passed the slot in as a constructed thing in the function call, you wouldn&apos;t need the reset dance, since it&apos;s destroyed post call. 

(I haven&apos;t vetted all call sites, but a lot could do this, and would be cleaner for it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673944</commentid>
    <comment_count>6</comment_count>
      <attachid>404902</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-22 13:06:54 -0700</bug_when>
    <thetext>Comment on attachment 404902
proposed patch.

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

&gt;&gt; Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:310
&gt;&gt; +        slot.disallowVMEntry.reset();
&gt; 
&gt; for a lot of these that just require the bool result of calling getOwnPropertySlot, if you just passed the slot in as a constructed thing in the function call, you wouldn&apos;t need the reset dance, since it&apos;s destroyed post call. 
&gt; 
&gt; (I haven&apos;t vetted all call sites, but a lot could do this, and would be cleaner for it)

I&apos;ll add a helper in JSObject to handle this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674017</commentid>
    <comment_count>7</comment_count>
      <attachid>404984</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-22 15:25:47 -0700</bug_when>
    <thetext>Created attachment 404984
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674047</commentid>
    <comment_count>8</comment_count>
      <attachid>404984</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-22 16:57:55 -0700</bug_when>
    <thetext>Comment on attachment 404984
patch for landing.

After thinking about this more, I&apos;m going to opt for not adding the helper functions.  The reason is because it is not possible to use the helpers in all places.  For example,
1. some places needs to use the PropertySlot after the call to &quot;get&quot;.
2. some places want to call &quot;get&quot; via the methodTable.  Hence, the helpers will not be helpful there as they only dispatch to the JSObject methods.

Adopting the helpers will therefore result in having more than one way to do VMInquiries, and can make the code more confusing.  So, I&apos;m going to forego the helpers in the interest of keeping the interface consistent.

Instantiating the PropertySlot directly as the argument for the &quot;get&quot; function is also not an option.  This is because this &quot;get&quot; functions require a PropertySlot&amp;.  C++ does not let us pass a reference to this unnamed instantiated PropertySlot.

I&apos;ll land the original patch with the ChangeLog typo fix.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674049</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-22 17:09:57 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r264736: &lt;http://trac.webkit.org/r264736&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675119</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-07-26 12:06:14 -0700</bug_when>
    <thetext>GCC found a problem: bug #214809</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404892</attachid>
            <date>2020-07-21 19:48:18 -0700</date>
            <delta_ts>2020-07-21 21:28:53 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214624.patch</filename>
            <type>text/plain</type>
            <size>47555</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0Njg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXNhbGxvdyBWTSBlbnRyeSB3aGVuIGRvaW5nIGEgVk1JbnF1aXJ5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NjI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTkxNTMxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAxLiBJbiBQcm9wZXJ0eVNsb3QncyBjb25zdHJ1Y3RvciwgYXV0b21hdGljYWxs
eSBpbnN0YWxsIGEgRGlzYWxsb3dWTUVudHJ5IHNjb3BlCisgICAgICAgICAgIGlmIHRoZSBwYXNz
ZWQgaW4gaW50ZXJuYWwgbWV0aG9kIHR5cGUgaXMgVk1JbnF1aXJ5LiAgVGhpcyBlbnN1cmVzIHRo
YXQgd2Ugd29uJ3QKKyAgICAgICAgICAgYmUgYWJsZSB0byBlbnRlciB0aGUgVk0gdG8gY2FsbCBK
UyBjb2RlIHdoaWxlIGRvaW5nIHRoZSBpbnF1aXJ5LgorCisgICAgICAgICAgIE5vdGUgdGhhdCB0
aGUgaGFuZGxpbmcgb2YgYXR0ZW1wdHMgdG8gZW50ZXIgdGhlIFZNIGRlcGVuZHMgb24KKyAgICAg
ICAgICAgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5KCkuCisKKyAgICAgICAgICAg
T24gRGVidWcgYnVpbGQgKGR1ZSB0byBBU1NFUlRfRU5BQkxFRCksIE9wdGlvbnM6OmNyYXNoT25E
aXNhbGxvd2VkVk1FbnRyeSgpCisgICAgICAgICAgIGRlZmF1bHRzIHRvIHRydWUgYW5kIHRoZSBW
TSB3aWxsIGNyYXNoIG9uIGRpc2FsbG93ZWQgZW50cnkuCisgICAgICAgICAgIE9uIFJlbGVhc2Ug
YnVpbGQsIE9wdGlvbnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGRlZmF1bHRzIHRvIGZh
bHNlIGFuZAorICAgICAgICAgICBkaXNhbGxvdyBlbnRyeSBhdHRlbXB0cyBpbnRvIHRoZSBWTSB3
aWxsIGJlIHRyZWF0ZWQgbGlrZSBjYWxsaW5nIGFuIGVtcHR5CisgICAgICAgICAgIGZ1bmN0aW9u
IHRoYXQgcmV0dXJucyB1bmRlZmluZWQuICBUaGlzIGlzIG5vdCBuZXcgYmVoYXZpb3IgaW4gdGhp
cyBwYXRjaCwgYnV0CisgICAgICAgICAgIEkganVzdCB3YW50IHRvIGhhdmUgYSByZW1pbmRlciBo
ZXJlIG9mIGhvdyBEaXNhbGxvd1ZNRW50cnkgd2lsbCBiZSBlbmZvcmNpbmcKKyAgICAgICAgICAg
bm8gZW50cnkgaW50byB0aGUgVk0gd2hpbGUgZG9pbmcgYSBWTUlucXVpcnkuCisKKyAgICAgICAg
Mi4gQWZ0ZXIgVk1JbnF1aXJ5IGdldHMsIHNvbWV0aW1lcyB0aGUgY2xpZW50IGNvZGUgd2FudHMg
dG8gZG8gb3RoZXIgd29yayB0aGF0CisgICAgICAgICAgIGRvIGVudGFpbCBlbnRlcmluZyB0aGUg
Vk0uICBJbiBzdWNoIGNhc2VzLCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBQcm9wZXJ0eVNsb3Qncwor
ICAgICAgICAgICBkaXNhbGxvd1ZNRW50cnkgc2NvcGUuICBGaXhlZCB1cCBhIGZldyBwbGFjZXMg
aW4gY2xpZW50IGNvZGUgdG8gZG8gdGhpcyByZXNldC4KKworICAgICAgICAzLiBNYWtlIHRoZSBE
aXNhYmxlVk1FbnRyeSBzY29wZSBjb3B5YWJsZS4gIEF0IGxlYXN0IG9uZSBwbGFjZSB3YW50cyB0
byBjb3B5IAorICAgICAgICAgICBQcm9wZXJ0eVNsb3QsIGFuZCBhcyBhIHJlc3VsdCwgd2lsbCBu
ZWVkIHRvIGNvcHkgaXRzIGVtYmVkZGVkIERpc2FibGVWTUVudHJ5CisgICAgICAgICAgIHNjb3Bl
IGFzIHdlbGwgaWYgaW5zdGFsbGVkLgorCisgICAgICAgICAgIEZvciBEaXNhYmxlVk1FbnRyeSwg
d2UnbGwgaGFuZGxlIGNvcHlpbmcgc2VtYW50aWNzIGFzIGZvbGxvd3M6IGNvcHlpbmcgYQorICAg
ICAgICAgICBEaXNhYmxlVk1FbnRyeSB3aWxsIHJlZiB0aGUgVk06OmRpc2FsbG93Vk1FbnRyeUNv
dW50LiAgVGhlIGNvdW50IHdpbGwgYmUKKyAgICAgICAgICAgZGVjcmVtZW50ZWQgd2hlbiBib3Ro
IGluc3RhbmNlcyBhcmUgZGVzdHJ1Y3RlZC4gIEFzIGEgcmVzdWx0LCBWTSBlbnRyeSB3aWxsCisg
ICAgICAgICAgIGJlIGRpc2FsbG93ZWQgYXMgbG9uZyBhcyBvbmUgb2YgdGhlIGNvcGllcyBhcmUg
c3RpbGwgYWxpdmUuCisKKyAgICAgICAgNC4gRm9yIHRoZSBzZXRPYmplY3RUb1N0cmluZ1ZhbHVl
KCkgbWV0aG9kIG9mIFN0cnVjdHVyZSBhbmQgU3RydWN0dXJlUmFyZURhdGEsIHdlCisgICAgICAg
ICAgIHdlcmUgcHJldmlvdXNseSBwYXNzaW5nIGEgUHJvcGVydHlTbG90IGJ5IGNvcHkuICBXZSBk
b24ndCByZWFsbHkgbmVlZCB0byBkbworICAgICAgICAgICB0aGlzLiAgVWx0aW1hdGVseSwgb25s
eSBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSgpIG5lZWRzIHRvCisg
ICAgICAgICAgIGFjY2VzcyBhIGZldyBvZiB0aGUgUHJvcGVydHlTbG90IHF1ZXJ5IG1ldGhvZHMu
ICBTbywgd2UgY2hhbmdlZCB0aGVzZSBtZXRob2RzCisgICAgICAgICAgIHRvIHBhc3MgYSBgY29u
c3QgUHJvcGVydHlTbG90JmAgaW5zdGVhZCB0byB2b2lkIHRoZSBuZWVkbGVzcyBjb3B5aW5nLgor
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmVtcGxhY2VEaXNhbGxv
d1ZNRW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChK
U0M6OlByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5oOgorCiAyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBTaW1wbGlmeSBEaXNhbGxvd1Njb3BlLCBEaXNhbGxvd0dDLCBhbmQgRGlzYWxs
b3dWTVJlZW50cnkgaW1wbGVtZW50YXRpb25zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI2
NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNyArMjk5LDkgQEAgYm9vbCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NT
dGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVu
Y3Rpb25zKGdsb2JhbE9iamVjdCkpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rp
b25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewogICAgICAgICAg
ICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KFBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBnZXRTbG90KSkKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IFBh
cmVudDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBnZXRTbG90KTsKKyAgICAgICAgICAgICAgICAgICAgZ2V0U2xvdC5kaXNhbGxvd1ZN
RW50cnkucmVzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChl
bnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NjksNyArNjcxLDkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgIAogICAgIC8vIENoZWNrIGZv
ciBjYWNoZWQgb3Igb3ZlcnJpZGUgcHJvcGVydHkuCiAgICAgUHJvcGVydHlTbG90IHNsb3QyKHRo
aXNPYmosIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAg
IGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdDIpKQorICAgIGJvb2wgZm91bmQgPSBQYXJlbnQ6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdDIpOworICAg
IHNsb3QyLmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgIGlmIChmb3VuZCkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSkpOwogCiAgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlk
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY1Nyw2ICs2NTcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpxdWVyeUluc3RhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgcHJvdG90
eXBlU2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKIAogICAgIGlmIChvYmplY3QtPmluaGVy
aXRzPFByb3h5T2JqZWN0Pih2bSkgfHwgcHJvdG90eXBlLmluaGVyaXRzPFByb3h5T2JqZWN0Pih2
bSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGEgUHJveHkuIl9zKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCShy
ZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxv
d1ZNRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBjbGFzcyBWTTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVk1UeXBlID0gVk0+CiBjbGFzcyBEaXNhbGxvd1ZNRW50cnlJbXBs
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNRW50cnlJbXBsKTsKIHB1Ymxp
YzoKICAgICBEaXNhbGxvd1ZNRW50cnlJbXBsKFZNVHlwZSYgdm0pCiAgICAgICAgIDogbV92bSgm
dm0pCkBAIC00NCw2ICs0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdm0tPmRpc2FsbG93Vk1F
bnRyeUNvdW50Kys7CiAgICAgfQogCisgICAgRGlzYWxsb3dWTUVudHJ5SW1wbChjb25zdCBEaXNh
bGxvd1ZNRW50cnlJbXBsJiBvdGhlcikKKyAgICAgICAgOiBtX3ZtKG90aGVyLm1fdm0pCisgICAg
eworICAgICAgICBtX3ZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCsrOworICAgIH0KKwogICAgIH5E
aXNhbGxvd1ZNRW50cnlJbXBsKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdm0t
PmRpc2FsbG93Vk1FbnRyeUNvdW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3
endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3Zp
Y2gKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgpAQCAtNTY4LDYgKzU2OCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG8KICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAg
ICBpZiAoRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSgp
KQogICAgICAgICAgICAgcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVy
dHkgb2YgYSBmdW5jdGlvbiIpOworICAgICAgICBnZXRTbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNl
dCgpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICB9CiAK
QEAgLTY0Nyw2ICs2NDgsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpT
T2JqCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAg
aWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+cmFyZURhdGEoKSkK
ICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5
IG9mIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsK
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0
eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4
Y2VwdGlvbikpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTU5LDYgKzE1OSw3IEBAIGlubGluZSBKU09iamVjdCogY29u
c3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBsZW5ndGhTbG90
KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAg
ICAgICAgICAgICBvYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwgbGVuZ3RoU2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgIGxlbmd0aFNsb3QuZGlzYWxsb3dW
TUVudHJ5LnJlc2V0KCk7CiAKICAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jID0gb2Jq
ZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5OSw2ICsxMzk5LDcgQEAgYm9vbCBK
U0dsb2JhbE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSgogICAgIC8vIHNpbGVudGx5IGlnbm9y
ZSBhdHRlbXB0cyB0byBhZGQgYWNjZXNzb3JzIGFsaWFzaW5nIHZhcnMuCiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBzeW1ib2xUYWJsZUdldCh0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc2xvdC5k
aXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVy
dHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNo
b3VsZFRocm93KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQog
ICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTg0LDYgKzU4
NCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUYKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KG9m
ZnNldCk7CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlQodmFsdWUpOwogICAgIGlmICh2
YWx1ZS5pc0NlbGwoKSkgewogICAgICAgICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsK
QEAgLTU5NCw2ICs1OTUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByaXZh
dGVGCiAgICAgICAgIC8vIGFzIGluIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xv
dCgpCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTQ0MzUKICAgICB9CisjZW5kaWYKIAogICAgIHNsb3Quc2V0VmFsdWUob2JqZWN0LCBhdHRyaWJ1
dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE1NCw2ICsxNTQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9i
CiAKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgYm9vbCBoYXNPd25Qcm9w
ZXJ0eSA9IGdsb2JhbE9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJl
c2V0KCk7CiAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkpIHsKICAgICAgICAgICAgIG9wID0g
UmVzb2x2ZU9wKG1ha2VUeXBlKFVucmVzb2x2ZWRQcm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25D
aGVja3MpLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxMSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBQcm9wZXJ0eVNsb3Q6OmVtcGxhY2VEaXNhbGxv
d1ZNRW50cnkoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgZGlzYWxsb3dWTUVudHJ5
LmVtcGxhY2UodGhpc1ZhbHVlLmFzQ2VsbCgpLT52bSgpKTsKK30KKwogSlNWYWx1ZSBQcm9wZXJ0
eVNsb3Q6OmZ1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1fdGhpc1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNiArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01Bbm5vdGF0aW9uLmgi
CisjaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiR2V0Vk0uaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lLmgiCkBAIC0xMTYsNiAr
MTE3LDggQEAgcHVibGljOgogICAgICAgICA6IG1fdGhpc1ZhbHVlKHRoaXNWYWx1ZSkKICAgICAg
ICAgLCBtX2ludGVybmFsTWV0aG9kVHlwZShpbnRlcm5hbE1ldGhvZFR5cGUpCiAgICAgeworICAg
ICAgICBpZiAoaXNWTUlucXVpcnkoKSkKKyAgICAgICAgICAgIGVtcGxhY2VEaXNhbGxvd1ZNRW50
cnkodGhpc1ZhbHVlKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgc2xvdEJh
c2UgLyByZWNlaXZlciBiZWhhdmlvciBkaWZmZXJlbmNlIGluIGN1c3RvbSB2YWx1ZXMgYW5kIGN1
c3RvbSBhY2Nlc3NvcnMuCkBAIC0zNzIsNiArMzc1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGVtcGxhY2VEaXNhbGxvd1ZNRW50cnko
Y29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
ZnVuY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU1ZhbHVlIGN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjdXN0b21BY2Nlc3NvckdldHRl
cihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC0zOTksNiArNDAzLDkg
QEAgcHJpdmF0ZToKICAgICBJbnRlcm5hbE1ldGhvZFR5cGUgbV9pbnRlcm5hbE1ldGhvZFR5cGU7
CiAgICAgQWRkaXRpb25hbERhdGFUeXBlIG1fYWRkaXRpb25hbERhdGFUeXBlIHsgQWRkaXRpb25h
bERhdGFUeXBlOjpOb25lIH07CiAgICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0IHsg
ZmFsc2UgfTsKK3B1YmxpYzoKKyAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IGRpc2FsbG93
Vk1FbnRyeTsKK3ByaXZhdGU6CiAgICAgdW5pb24gewogICAgICAgICBET01BdHRyaWJ1dGVBbm5v
dGF0aW9uIGRvbUF0dHJpYnV0ZTsKICAgICAgICAgTW9kdWxlTmFtZXNwYWNlU2xvdCBtb2R1bGVO
YW1lc3BhY2VTbG90OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzYsNyArNTM2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmFyZURhdGEoKS0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOwogICAgIH0K
IAotICAgIHZvaWQgc2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCosIFZNJiwg
SlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KTsKKyAg
ICB2b2lkIHNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIEpTU3Ry
aW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwog
CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNz
SW5mbzsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNyw3ICs0
MjcsNyBAQCBpbmxpbmUgc2l6ZV90IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpCiAgICAgcmV0
dXJuIGN1cnJlbnRDYXBhY2l0eSAqIG91dE9mTGluZUdyb3d0aEZhY3RvcjsKIH0KIAotaW5saW5l
IHZvaWQgU3RydWN0dXJlOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFZNJiB2bSwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJp
bmdUYWdTeW1ib2xTbG90KQoraW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRPYmplY3RUb1N0cmlu
Z1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNTdHJpbmcqIHZh
bHVlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHRvU3RyaW5nVGFnU3ltYm9sU2xvdCkKIHsKICAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGFsbG9jYXRlUmFyZURhdGEodm0pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRh
LmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHBy
aXZhdGU6CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIG1fc3RydWN0dXJlUmFyZURhdGE7CiB9Owog
Ci12b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBvd25TdHJ1Y3R1cmUsIEpT
U3RyaW5nKiB2YWx1ZSwgUHJvcGVydHlTbG90IHRvU3RyaW5nVGFnU3ltYm9sU2xvdCkKK3ZvaWQg
U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIG93blN0cnVjdHVyZSwgSlNTdHJpbmcq
IHZhbHVlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHRvU3RyaW5nVGFnU3ltYm9sU2xvdCkKIHsKICAg
ICBpZiAoY2FuQ2FjaGVPYmplY3RUb1N0cmluZ1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuaAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhclByZXZpb3VzSUQoKTsKIAogICAgIEpTU3RyaW5nKiBvYmplY3RU
b1N0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpT
R2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTU3RyaW5nKiB2
YWx1ZSwgUHJvcGVydHlTbG90IHRvU3RyaW5nVGFnU3ltYm9sU2xvdCk7CisgICAgdm9pZCBzZXRP
YmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqIGJhc2VT
dHJ1Y3R1cmUsIEpTU3RyaW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0b1N0cmluZ1Rh
Z1N5bWJvbFNsb3QpOwogICAgIHZvaWQgZ2l2ZVVwT25PYmplY3RUb1N0cmluZ1ZhbHVlQ2FjaGUo
KSB7IG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKG9iamVjdFRv
U3RyaW5nQ2FjaGVHaXZlVXBNYXJrZXIoKSk7IH0KICAgICBib29sIGNhbkNhY2hlT2JqZWN0VG9T
dHJpbmdWYWx1ZSgpIHsgcmV0dXJuIG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS51bnZhbGlkYXRlZEdl
dCgpID09IG9iamVjdFRvU3RyaW5nQ2FjaGVHaXZlVXBNYXJrZXIoKTsgfQogICAgIHN0YXRpYyBK
U1N0cmluZyogb2JqZWN0VG9TdHJpbmdDYWNoZUdpdmVVcE1hcmtlcigpIHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxKU1N0cmluZyo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw1NiBAQAorMjAyMC0wNy0yMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzYWxsb3cgVk0gZW50cnkgd2hlbiBkb2luZyBh
IFZNSW5xdWlyeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDYyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU5MTUzMTQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQ2hhbmdlIGJpbmRpbmcg
dG8gcmVzZXQgdGhlIERpc2FsbG93Vk1FbnRyeSBzY29wZSBpbiBQcm9wZXJ0eVNsb3QgYWZ0ZXIg
ZG9pbmcKKyAgICAgICAgICAgYSBWTUlucXVpcnkuCisgICAgICAgIDIuIFJlYmFzZSBiaW5kaW5n
cyB0ZXN0IHJlc3VsdHMgdG8gbWF0Y2guCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUHV0KToKKyAgICAgICAgKEdlbmVy
YXRlUHV0QnlJbmRleCk6CisgICAgICAgIChHZW5lcmF0ZURlZmluZU93blByb3BlcnR5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZWZpbmVP
d25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwdXRCeUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRl
ZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1dEJ5SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmRlZmlu
ZU93blByb3BlcnR5KToKKwogMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBDZXJ0aWZpY2F0ZUlu
Zm9CYXNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTk2Nyw3
ICs5NjcsOSBAQCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlu
cykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KSkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
c2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWZvdW5kKSB7XG4iKTsKICAgICAgICAgICAgICRhZGRp
dGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogCkBAIC0xMDQzLDcgKzEwNDUsOSBA
QCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMp
IHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTtcbiIpOwotICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTtcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmICghZm91bmQpIHtcbiIpOwogICAgICAgICAgICAgJGFk
ZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTE3Nyw3
ICsxMTgxLDkgQEAgc3ViIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkKICAgICAgICAgICAgICMg
ICAgICAgIG9ubHkgbG9vayBhdCB0aGUgYWN0dWFsIHByb3BlcnRpZXMsIGFuZCBub3QgY2FsbCBp
bnRvIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKICAgICAgICAgICAgICMgICAgICAgIFtbR2V0
T3duUHJvcGVydHldXSBob29rPwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRk
aXRpb25hbEluZGVudC4gIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGlm
ICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIGJvb2wgZm91bmQgPSBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0
KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRl
bnQuICIgICAgICAgIGlmICghZm91bmQpIHtcbiIpOwogICAgICAgICAgICAgJGFkZGl0aW9uYWxJ
bmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAgIGlmICghJG5hbWVkU2V0dGVyT3Bl
cmF0aW9uKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsOSBAQCBi
b29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgaWYgKCFwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5k
ID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVy
dHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAg
IHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjY1LDcg
KzI2Nyw5IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5
LnJlc2V0KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgdHJ1ZSk7CkBAIC0yOTMsNyArMjk3LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFm
b3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3Jp
cHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
Niw3ICsyMzYsOSBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkgfTsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlm
ICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3Bl
cnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAg
ICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRy
dWUpOwpAQCAtMjY1LDcgKzI2Nyw5IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmcKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZCA9
IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNsb3Qu
ZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yOTMsNyArMjk3LDkgQEAgYm9vbCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNT
eW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsK
KyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0NSw3ICsyNDUsOSBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVuCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkgfTsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAg
ICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdl
dFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkg
eworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAg
ICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRydWUpOwpAQCAtMjc0LDcgKzI3Niw5IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW4KICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20o
dm0sIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBm
b3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFBy
b3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
IHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0zMDIsNyArMzA2LDkgQEAgYm9vbCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAg
aWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURl
c2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksOSBAQCBib29sIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNT
eW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICAgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgp
ICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlz
YWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjMwLDcgKzIzMiw5IEBA
IGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEIKICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7
CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7
CkBAIC0yNDgsNyArMjUyLDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6
ZGVmaQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
IHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewog
ICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksOSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJl
c2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjMwLDcgKzIzMiw5IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0g
ICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7
CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3Rv
dHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFmb3Vu
ZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNDgsNyArMjUy
LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9v
bCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxv
d1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAy
NjQ2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsy
MTUsOSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1CiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBi
b29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+
Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91
bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpA
QCAtMjM2LDcgKzIzOCw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
cHUKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZCA9IHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxs
b3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNTQsNyArMjU4LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyOjpkZQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2wo
KSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAg
ICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNE
YXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsOSBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUu
aXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kID0gcHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3Qu
ZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjU4LDcgKzI2MCw5
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgp
ICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0
KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1
ZSk7CkBAIC0yNzksNyArMjgzLDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyOgogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUs
OSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgaWYgKCFw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsK
ICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29s
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAt
Mjc0LDcgKzI3Niw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEK
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlw
ZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dW
TUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdHJ1ZSk7CkBAIC0zMDIsNyArMzA2LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkg
ewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAg
aWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRh
RGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3
ICsyMzMsOSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wCiAgICAg
aWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5
cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICgh
KHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAg
ICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICgh
Zm91bmQpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUp
OwpAQCAtMjU0LDcgKzI1Niw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3AKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4
KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNsb3QuZGlz
YWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNzgsNyArMjgyLDkgQEAgc3RhdGljIGJvb2wgaXNV
bmZvcmdlYWJsZVByb3BlcnR5TmFtZShQcgogCiAgICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVBy
b3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTsKLSAgICAgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAg
ICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAg
ICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlw
dG9yKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404901</attachid>
            <date>2020-07-21 23:19:21 -0700</date>
            <delta_ts>2020-07-21 23:28:16 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214624.patch</filename>
            <type>text/plain</type>
            <size>65074</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXNhbGxvdyBWTSBlbnRyeSB3aGVuIGRvaW5nIGEgVk1JbnF1aXJ5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NjI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTkxNTMxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAxLiBJbiBQcm9wZXJ0eVNsb3QncyBjb25zdHJ1Y3RvciwgYXV0b21hdGljYWxs
eSBpbnN0YWxsIGEgRGlzYWxsb3dWTUVudHJ5IHNjb3BlCisgICAgICAgICAgIGlmIHRoZSBwYXNz
ZWQgaW4gaW50ZXJuYWwgbWV0aG9kIHR5cGUgaXMgVk1JbnF1aXJ5LiAgVGhpcyBlbnN1cmVzIHRo
YXQgd2Ugd29uJ3QKKyAgICAgICAgICAgYmUgYWJsZSB0byBlbnRlciB0aGUgVk0gdG8gY2FsbCBK
UyBjb2RlIHdoaWxlIGRvaW5nIHRoZSBpbnF1aXJ5LiAgQXMgYSByZXN1bHQsCisgICAgICAgICAg
IHRoZSBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3Igd2lsbCBub3cgdGFrZSBhbiBvcHRpb25hbCBW
TSBwb2ludGVyLCB3aGljaCBpcyAKKyAgICAgICAgICAgbXVzdCBiZSBwYXNzZWQgaW4gaW4gd2hl
biB0aGUgaW50ZXJuYWwgbWV0aG9kIHR5cGUgaXMgVk1JbnF1aXJ5LgorCisgICAgICAgICAgIE5v
dGUgdGhhdCB0aGUgaGFuZGxpbmcgb2YgYXR0ZW1wdHMgdG8gZW50ZXIgdGhlIFZNIGRlcGVuZHMg
b24KKyAgICAgICAgICAgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5KCkuCisKKyAg
ICAgICAgICAgT24gRGVidWcgYnVpbGQgKGR1ZSB0byBBU1NFUlRfRU5BQkxFRCksIE9wdGlvbnM6
OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpCisgICAgICAgICAgIGRlZmF1bHRzIHRvIHRydWUg
YW5kIHRoZSBWTSB3aWxsIGNyYXNoIG9uIGRpc2FsbG93ZWQgZW50cnkuCisgICAgICAgICAgIE9u
IFJlbGVhc2UgYnVpbGQsIE9wdGlvbnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGRlZmF1
bHRzIHRvIGZhbHNlIGFuZAorICAgICAgICAgICBkaXNhbGxvdyBlbnRyeSBhdHRlbXB0cyBpbnRv
IHRoZSBWTSB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBjYWxsaW5nIGFuIGVtcHR5CisgICAgICAgICAg
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB1bmRlZmluZWQuICBUaGlzIGlzIG5vdCBuZXcgYmVoYXZp
b3IgaW4gdGhpcyBwYXRjaCwgYnV0CisgICAgICAgICAgIEkganVzdCB3YW50IHRvIGhhdmUgYSBy
ZW1pbmRlciBoZXJlIG9mIGhvdyBEaXNhbGxvd1ZNRW50cnkgd2lsbCBiZSBlbmZvcmNpbmcKKyAg
ICAgICAgICAgbm8gZW50cnkgaW50byB0aGUgVk0gd2hpbGUgZG9pbmcgYSBWTUlucXVpcnkuCisK
KyAgICAgICAgMi4gQWZ0ZXIgVk1JbnF1aXJ5IGdldHMsIHNvbWV0aW1lcyB0aGUgY2xpZW50IGNv
ZGUgd2FudHMgdG8gZG8gb3RoZXIgd29yayB0aGF0CisgICAgICAgICAgIGRvIGVudGFpbCBlbnRl
cmluZyB0aGUgVk0uICBJbiBzdWNoIGNhc2VzLCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBQcm9wZXJ0
eVNsb3QncworICAgICAgICAgICBkaXNhbGxvd1ZNRW50cnkgc2NvcGUuICBGaXhlZCB1cCBhIGZl
dyBwbGFjZXMgaW4gY2xpZW50IGNvZGUgdG8gZG8gdGhpcyByZXNldC4KKworICAgICAgICAzLiBN
YWtlIHRoZSBEaXNhYmxlVk1FbnRyeSBzY29wZSBjb3B5YWJsZS4gIEF0IGxlYXN0IG9uZSBwbGFj
ZSB3YW50cyB0byBjb3B5IAorICAgICAgICAgICBQcm9wZXJ0eVNsb3QsIGFuZCBhcyBhIHJlc3Vs
dCwgd2lsbCBuZWVkIHRvIGNvcHkgaXRzIGVtYmVkZGVkIERpc2FibGVWTUVudHJ5CisgICAgICAg
ICAgIHNjb3BlIGFzIHdlbGwgaWYgaW5zdGFsbGVkLgorCisgICAgICAgICAgIEZvciBEaXNhYmxl
Vk1FbnRyeSwgd2UnbGwgaGFuZGxlIGNvcHlpbmcgc2VtYW50aWNzIGFzIGZvbGxvd3M6IGNvcHlp
bmcgYQorICAgICAgICAgICBEaXNhYmxlVk1FbnRyeSB3aWxsIHJlZiB0aGUgVk06OmRpc2FsbG93
Vk1FbnRyeUNvdW50LiAgVGhlIGNvdW50IHdpbGwgYmUKKyAgICAgICAgICAgZGVjcmVtZW50ZWQg
d2hlbiBib3RoIGluc3RhbmNlcyBhcmUgZGVzdHJ1Y3RlZC4gIEFzIGEgcmVzdWx0LCBWTSBlbnRy
eSB3aWxsCisgICAgICAgICAgIGJlIGRpc2FsbG93ZWQgYXMgbG9uZyBhcyBvbmUgb2YgdGhlIGNv
cGllcyBhcmUgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgNC4gRm9yIHRoZSBzZXRPYmplY3RUb1N0
cmluZ1ZhbHVlKCkgbWV0aG9kIG9mIFN0cnVjdHVyZSBhbmQgU3RydWN0dXJlUmFyZURhdGEsIHdl
CisgICAgICAgICAgIHdlcmUgcHJldmlvdXNseSBwYXNzaW5nIGEgUHJvcGVydHlTbG90IGJ5IGNv
cHkuICBXZSBkb24ndCByZWFsbHkgbmVlZCB0byBkbworICAgICAgICAgICB0aGlzLiAgVWx0aW1h
dGVseSwgb25seSBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSgpIG5l
ZWRzIHRvCisgICAgICAgICAgIGFjY2VzcyBhIGZldyBvZiB0aGUgUHJvcGVydHlTbG90IHF1ZXJ5
IG1ldGhvZHMuICBTbywgd2UgY2hhbmdlZCB0aGVzZSBtZXRob2RzCisgICAgICAgICAgIHRvIHBh
c3MgYSBgY29uc3QgUHJvcGVydHlTbG90JmAgaW5zdGVhZCB0byB2b2lkIHRoZSBuZWVkbGVzcyBj
b3B5aW5nLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlND
OjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVl
cnlJbnN0YW5jZXMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9E
aXNhbGxvd1ZNRW50cnkuaDoKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1wbDo6RGlz
YWxsb3dWTUVudHJ5SW1wbCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnB1
dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpnZXRHZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJh
eVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcml2
YXRlRmllbGRTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAo
SlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoK
KyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmls
ZXI6OlN0YWNrRnJhbWU6Om5hbWVGcm9tQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5oOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlND
OjpmdW5jdGlvbkdldEdldHRlclNldHRlcik6CisKIDIwMjAtMDctMjEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IERpc2FsbG93U2NvcGUsIERpc2Fs
bG93R0MsIGFuZCBEaXNhbGxvd1ZNUmVlbnRyeSBpbXBsZW1lbnRhdGlvbnMuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw4ICsyOTgsMTAg
QEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0
aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0KSkgewog
ICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1
bmN0aW9ucy0+Z2V0KG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBn
ZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpKQorICAg
ICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOworICAgICAgICAgICAg
ICAgICAgICBib29sIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpOworICAgICAgICAgICAgICAg
ICAgICBnZXRTbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZm91bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFyZW50OjpwdXQo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY2OCw4ICs2NzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OgogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlkZSBwcm9wZXJ0
eS4KLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdDIodGhpc09iaiwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90MikpCisgICAgUHJv
cGVydHlTbG90IHNsb3QyKHRoaXNPYmosIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZ2bSk7CisgICAgYm9vbCBmb3VuZCA9IFBhcmVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Mik7CisgICAg
c2xvdDIuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKGZvdW5kKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKSk7CiAKICAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQo
KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90QnVpbGRlci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDksNyAr
NDA5LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3RpbwogICAgICAg
ICAgICAgLy8gIk9iamVjdCIgaW4gc25hcHNob3RzIGFuZCBub3QgZ2V0IHRoZSBuYW1lIG9mIHRo
ZSBwcm90b3R5cGUncyBwYXJlbnQuCiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3Qobm9kZS5jZWxsKTsKICAgICAgICAgICAgIGlmIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pKSB7Ci0gICAgICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpKQogICAgICAgICAgICAg
ICAgICAgICBjbGFzc05hbWUgPSBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3Qp
OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQ2LDcgKzY0Niw3IEBAIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGEKIAogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqZWN0
OwogCi0gICAgUHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgcHJvdG90
eXBlU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZ2bSk7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGVTbG90KSkgewogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAocHJvdG90eXBlU2xv
dC5pc1ZhbHVlKCkpIHsKQEAgLTY1Nyw2ICs2NTcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpxdWVyeUluc3RhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAg
cHJvdG90eXBlU2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKIAogICAgIGlmIChvYmplY3Qt
PmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkgfHwgcHJvdG90eXBlLmluaGVyaXRzPFByb3h5T2Jq
ZWN0Pih2bSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGEgUHJveHkuIl9zKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5Nyw3ICsxMDk3LDcg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4odmFyaWFibGVPYmplY3QpLT5nbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytp
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHVubGlua2VkQ29kZUJs
b2NrLT52YXJpYWJsZShpKTsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7
CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3Bl
cnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNs
b3QpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVw
bGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSks
ICInIikpKTsKICAgICAgICAgICAgIH0KQEAgLTExMDUsNyArMTEwNSw3IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzOyArK2kpIHsKICAgICAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsK
LSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAgICAgICBpZiAo
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUg
Z2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rpb24tPm5hbWUoKS5pbXBs
KCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3
ICsxNzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiAgICAg
c3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJnZtKTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgaWRlbnQsIHNsb3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Lmdl
dFB1cmVSZXN1bHQoKSk7CkBAIC0xOTAsNyArMTkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UcgogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmdm0pOwogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgc2xvdCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0
UHVyZVJlc3VsdCgpKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRyCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnksICZ2bSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzQsNyArNjM0
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYgogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BUcnlHZXRCeUlkPigpOwogICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3Qu
Z2V0UHVyZVJlc3VsdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlz
YWxsb3dWTUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlzYWxsb3dWTUVudHJ5LmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw2IEBAIGNsYXNzIFZNOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWTVR5cGUgPSBWTT4KIGNs
YXNzIERpc2FsbG93Vk1FbnRyeUltcGwgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2Fs
bG93Vk1FbnRyeUltcGwpOwogcHVibGljOgogICAgIERpc2FsbG93Vk1FbnRyeUltcGwoVk1UeXBl
JiB2bSkKICAgICAgICAgOiBtX3ZtKCZ2bSkKQEAgLTQ0LDYgKzQzLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgbV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQrKzsKICAgICB9CiAKKyAgICBEaXNhbGxv
d1ZNRW50cnlJbXBsKGNvbnN0IERpc2FsbG93Vk1FbnRyeUltcGwmIG90aGVyKQorICAgICAgICA6
IG1fdm0ob3RoZXIubV92bSkKKyAgICB7CisgICAgICAgIG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNv
dW50Kys7CisgICAgfQorCiAgICAgfkRpc2FsbG93Vk1FbnRyeUltcGwoKQogICAgIHsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlz
aW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgU3RyaW5nIEVycm9ySW5z
dGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKAogCiAgICAgSlNWYWx1ZSBuYW1lVmFsdWU7CiAgICAg
YXV0byBuYW1lUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOwotICAgIFByb3Bl
cnR5U2xvdCBuYW1lU2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgbmFtZVNsb3QodGhpcywgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKIAogICAgIEpTVmFsdWUgY3Vy
cmVudE9iaiA9IHRoaXM7CiAgICAgdW5zaWduZWQgcHJvdG90eXBlRGVwdGggPSAwOwpAQCAtMTY3
LDcgKzE2Nyw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAog
ICAgIEpTVmFsdWUgbWVzc2FnZVZhbHVlOwogICAgIGF1dG8gbWVzc2FnZVByb3BlcnROYW1lID0g
dm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZTsKLSAgICBQcm9wZXJ0eVNsb3QgbWVzc2FnZVNsb3Qo
dGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
UHJvcGVydHlTbG90IG1lc3NhZ2VTbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUHJvcGVydE5hbWUsIG1lc3NhZ2VTbG90
KSAmJiBtZXNzYWdlU2xvdC5pc1ZhbHVlKCkpCiAgICAgICAgIG1lc3NhZ2VWYWx1ZSA9IG1lc3Nh
Z2VTbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lKTsKICAgICBz
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAo
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxv
dmljaAogICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TgogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewogICAg
ICAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KLSAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZt
KTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBzbG90KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAKQEAgLTU2MywxMSArNTYzLDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCog
Y2VsbCwgSlNHbG8KICAgICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwogICAgICAgICAvLyBN
YWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25s
eSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQg
aW4gRUNNQS0yNjIgOC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAg
ICAgUHJvcGVydHlTbG90IGdldFNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldFNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CiAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNP
YmplY3QtPnJhcmVEYXRhKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRv
IHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CisgICAgICAgIGdldFNsb3QuZGlz
YWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCkpOwogICAgIH0KIApAQCAtNjQyLDExICs2NDMsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iagogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFz
IGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAg
ICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCi0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0p
OwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKEZ1bmN0aW9u
UmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+cmFyZURhdGEoKSkKICAgICAgICAgICAg
IHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rp
b24iKTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTU2LDkgKzE1NiwxMCBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFyCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBnZXRQcm9wZXJ0
eVNsb3Qgb3BlcmF0aW9uIHNob3VsZCBub3QgYmUgb2JzZXJ2ZWQgYnkgdGhlIFByb3h5LgogICAg
ICAgICAgICAgLy8gU28gd2UgdXNlIFZNSW5xdWlyeS4gQW5kIHB1cmdlIHRoZSBvcGFxdWUgb2Jq
ZWN0IGNhc2VzIChwcm94eSBhbmQgbmFtZXNwYWNlIG9iamVjdCkgYnkgaXNUYWludGVkQnlPcGFx
dWVPYmplY3QoKSBndWFyZC4KLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBsZW5ndGhTbG90KG9i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAgICAgICBvYmplY3QtPmdl
dFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwgbGVu
Z3RoU2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGxlbmd0aFNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAKICAg
ICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA2LDggKzUwNiw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldEdsb2Jh
bFRoaXMoVk0mIHYKIAogc3RhdGljIEdldHRlclNldHRlciogZ2V0R2V0dGVyQnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCiB7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIHJldHVybiBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4o
c2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQpAQCAtMTM5NCwxMSArMTM5NSwxMyBAQCBib29sIEpT
R2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKCiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgLy8gc2lsZW50bHkgaWdub3JlIGF0dGVtcHRzIHRv
IGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFycy4KICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpICYmIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzbG90LmRpc2FsbG93Vk1FbnRy
eS5yZXNldCgpOwogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwog
fQogCkBAIC0yMDY1LDcgKzIwNjgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxs
QXJyYXlTcGVjCiAgICAgICAgIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldC5pbnZhbGlkYXRl
KHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFibGUgdG8gc2V0IHVwIGFycmF5IHNwZWNp
ZXMgd2F0Y2hwb2ludC4iKSk7CiAgICAgfTsKIAotICAgIFByb3BlcnR5U2xvdCBjb25zdHJ1Y3Rv
clNsb3QoYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBjb25zdHJ1Y3RvclNsb3QoYXJyYXlQcm90b3R5
cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAg
ICAgYXJyYXlQcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xvdChhcnJheVByb3RvdHlwZSwgdGhp
cywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNvbnN0cnVjdG9yU2xvdCk7CiAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoY29uc3RydWN0b3JTbG90LnNsb3RC
YXNlKCkgIT0gYXJyYXlQcm90b3R5cGUKQEAgLTIwNzksNyArMjA4Miw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICBpZiAoY29uc3RydWN0b3JTdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBjb25zdHJ1Y3RvclN0cnVjdHVyZSA9IGNvbnN0
cnVjdG9yU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXJyYXlDb25z
dHJ1Y3Rvcik7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc3BlY2llc1Nsb3QoYXJyYXlDb25zdHJ1Y3Rv
ciwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJv
cGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgYXJyYXlDb25zdHJ1Y3Rvci0+
Z2V0T3duUHJvcGVydHlTbG90KGFycmF5Q29uc3RydWN0b3IsIHRoaXMsIHZtLnByb3BlcnR5TmFt
ZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTbG90KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwogICAgIGlmIChzcGVjaWVzU2xvdC5zbG90QmFzZSgpICE9IGFycmF5Q29uc3RydWN0
b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJl
dmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQg
KEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdo
dCAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC01MzQsNyArNTM0LDcgQEAgU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpT
TwogCiAgICAgLy8gQ2hlY2sgZm9yIGEgZGlzcGxheSBuYW1lIG9mIG9iai5jb25zdHJ1Y3Rvci4K
ICAgICAvLyBUaGlzIGlzIHVzZWZ1bCB0byBnZXQgYEZvb2AgZm9yIHRoZSBgKGNsYXNzIEZvbyku
cHJvdG90eXBlYCBvYmplY3QuCi0gICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZ2bSk7CiAgICAgaWYgKG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCkpIHsKICAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICBpZiAoc2xvdC5p
c1ZhbHVlKCkpIHsKQEAgLTU1OCw3ICs1NTgsNyBAQCBTdHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0
ZWRDbGFzc05hbWUoSlNPCiAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvVmFsdWUgPSBvYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgICAgICBpZiAocHJvdG9WYWx1ZS5pc09i
amVjdCgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gYXNPYmpl
Y3QocHJvdG9WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QocHJvdG9W
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QocHJvdG9WYWx1ZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAgICAgICAgICBpZiAo
cHJvdG9PYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBzbG90KSkgewogICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05f
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90
LmlzVmFsdWUoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsNiAr
NTg0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qo
b2Zmc2V0KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgaWYg
KHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgp
OwpAQCAtNTk0LDYgKzU5NSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJp
dmF0ZUYKICAgICAgICAgLy8gYXMgaW4gSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlT
bG90KCkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDQzNQogICAgIH0KKyNlbmRpZgogCiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QsIGF0dHJp
YnV0ZXMsIHZhbHVlLCBvZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTUyLDggKzE1Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0ds
b2IKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAgYm9vbCBoYXNP
d25Qcm9wZXJ0eSA9IGdsb2JhbE9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVu
dHJ5LnJlc2V0KCk7CiAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkpIHsKICAgICAgICAgICAg
IG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKFVucmVzb2x2ZWRQcm9wZXJ0eSwgbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MpLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRPTUFubm90YXRpb24uaCIKKyNpbmNsdWRlICJE
aXNhbGxvd1ZNRW50cnkuaCIKICNpbmNsdWRlICJHZXRWTS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKQEAgLTExMiwxMCArMTEzLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgTW9kdWxlTmFtZXNwYWNlLCAvLyBNb2R1bGVOYW1lc3BhY2VPYmplY3Qn
cyBlbnZpcm9ubWVudCBhY2Nlc3MuCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IFByb3BlcnR5U2xv
dChjb25zdCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSW50ZXJuYWxNZXRob2RUeXBlIGludGVybmFsTWV0
aG9kVHlwZSkKKyAgICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFs
dWUsIEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUsIFZNKiB2bUZvcklucXVp
cnkgPSBudWxscHRyKQogICAgICAgICA6IG1fdGhpc1ZhbHVlKHRoaXNWYWx1ZSkKICAgICAgICAg
LCBtX2ludGVybmFsTWV0aG9kVHlwZShpbnRlcm5hbE1ldGhvZFR5cGUpCiAgICAgeworICAgICAg
ICBpZiAoaXNWTUlucXVpcnkoKSkKKyAgICAgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5lbXBsYWNl
KCp2bUZvcklucXVpcnkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzbG90
QmFzZSAvIHJlY2VpdmVyIGJlaGF2aW9yIGRpZmZlcmVuY2UgaW4gY3VzdG9tIHZhbHVlcyBhbmQg
Y3VzdG9tIGFjY2Vzc29ycy4KQEAgLTM5OSw2ICs0MDIsOSBAQCBwcml2YXRlOgogICAgIEludGVy
bmFsTWV0aG9kVHlwZSBtX2ludGVybmFsTWV0aG9kVHlwZTsKICAgICBBZGRpdGlvbmFsRGF0YVR5
cGUgbV9hZGRpdGlvbmFsRGF0YVR5cGUgeyBBZGRpdGlvbmFsRGF0YVR5cGU6Ok5vbmUgfTsKICAg
ICBib29sIG1faXNUYWludGVkQnlPcGFxdWVPYmplY3QgeyBmYWxzZSB9OworcHVibGljOgorICAg
IE9wdGlvbmFsPERpc2FsbG93Vk1FbnRyeT4gZGlzYWxsb3dWTUVudHJ5OworcHJpdmF0ZToKICAg
ICB1bmlvbiB7CiAgICAgICAgIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlOwog
ICAgICAgICBNb2R1bGVOYW1lc3BhY2VTbG90IG1vZHVsZU5hbWVzcGFjZVNsb3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyOCw3ICs3MjgsNyBAQCBTdHJp
bmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtCiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgYXV0byBnZXRQcm9wZXJ0eUlmUHVyZU9w
ZXJhdGlvbiA9IFsmXSAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIC0+IFN0cmluZyB7Ci0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KGNhbGxlZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGNhbGxlZSwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShpZGVudCk7CiAgICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkgPSBjYWxsZWUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjY0Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01MzYsNyArNTM2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmFyZURhdGEoKS0+
b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOwogICAgIH0KIAotICAgIHZvaWQgc2V0T2JqZWN0VG9TdHJp
bmdWYWx1ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNs
b3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KTsKKyAgICB2b2lkIHNldE9iamVjdFRvU3RyaW5nVmFs
dWUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIEpTU3RyaW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlT
bG90JiB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAy
NjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MjcsNyArNDI3LDcgQEAgaW5saW5lIHNpemVfdCBuZXh0
T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaQogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiBvdXRP
ZkxpbmVHcm93dGhGYWN0b3I7CiB9CiAKLWlubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0T2JqZWN0
VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTU3Ry
aW5nKiB2YWx1ZSwgUHJvcGVydHlTbG90IHRvU3RyaW5nVGFnU3ltYm9sU2xvdCkKK2lubGluZSB2
b2lkIFN0cnVjdHVyZTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEpTU3RyaW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0
b1N0cmluZ1RhZ1N5bWJvbFNsb3QpCiB7CiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAg
ICBhbGxvY2F0ZVJhcmVEYXRhKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVSYXJl
RGF0YSogbV9zdHJ1Y3R1cmVSYXJlRGF0YTsKIH07CiAKLXZvaWQgU3RydWN0dXJlUmFyZURhdGE6
OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBTdHJ1Y3R1cmUqIG93blN0cnVjdHVyZSwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNs
b3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KQordm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2Jq
ZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0
cnVjdHVyZSogb3duU3RydWN0dXJlLCBKU1N0cmluZyogdmFsdWUsIGNvbnN0IFByb3BlcnR5U2xv
dCYgdG9TdHJpbmdUYWdTeW1ib2xTbG90KQogewogICAgIGlmIChjYW5DYWNoZU9iamVjdFRvU3Ry
aW5nVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAyNjQ2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclByZXZp
b3VzSUQoKTsKIAogICAgIEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1
Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTU3RyaW5nKiB2YWx1ZSwgUHJvcGVydHlTbG90IHRvU3Ry
aW5nVGFnU3ltYm9sU2xvdCk7CisgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTU3RyaW5nKiB2YWx1
ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwogICAgIHZvaWQg
Z2l2ZVVwT25PYmplY3RUb1N0cmluZ1ZhbHVlQ2FjaGUoKSB7IG1fb2JqZWN0VG9TdHJpbmdWYWx1
ZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKG9iamVjdFRvU3RyaW5nQ2FjaGVHaXZlVXBNYXJrZXIo
KSk7IH0KICAgICBib29sIGNhbkNhY2hlT2JqZWN0VG9TdHJpbmdWYWx1ZSgpIHsgcmV0dXJuIG1f
b2JqZWN0VG9TdHJpbmdWYWx1ZS51bnZhbGlkYXRlZEdldCgpID09IG9iamVjdFRvU3RyaW5nQ2Fj
aGVHaXZlVXBNYXJrZXIoKTsgfQogICAgIHN0YXRpYyBKU1N0cmluZyogb2JqZWN0VG9TdHJpbmdD
YWNoZUdpdmVVcE1hcmtlcigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1N0cmluZyo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTUsNyArMjg5
NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9JZGVudGlmaWVyKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFByb3Bl
cnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNs
b3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXNhbGxvdyBWTSBlbnRyeSB3aGVuIGRvaW5nIGEgVk1JbnF1aXJ5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NjI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTkxNTMxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAxLiBDaGFuZ2UgYmluZGluZyB0byByZXNldCB0aGUgRGlzYWxsb3dWTUVudHJ5
IHNjb3BlIGluIFByb3BlcnR5U2xvdCBhZnRlciBkb2luZworICAgICAgICAgICBhIFZNSW5xdWly
eS4KKyAgICAgICAgMi4gUmViYXNlIGJpbmRpbmdzIHRlc3QgcmVzdWx0cyB0byBtYXRjaC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjppc1Zpc2libGVOYW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUHV0KToKKyAgICAgICAgKEdlbmVy
YXRlUHV0QnlJbmRleCk6CisgICAgICAgIChHZW5lcmF0ZURlZmluZU93blByb3BlcnR5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZWZpbmVP
d25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwdXRCeUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRl
ZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1dEJ5SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmRlZmlu
ZU93blByb3BlcnR5KToKKwogMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBDZXJ0aWZpY2F0ZUlu
Zm9CYXNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDcgKzU5LDcgQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gMi4gSWYgTyBoYXMgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIEpTQzo6UHJvcGVydHlTbG90
IHNsb3QgeyAmdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07CisgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0
LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCkgfTsKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtOTksNyArOTksNyBAQCBz
dGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQg
UCwgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlz
T2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKKyAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSB9OwogICAgIGlmIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRo
aXNPYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY0Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTk2NSw5ICs5NjUsMTEgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAg
IAogICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7CiAgICAg
ICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSB9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghZm91bmQpIHtcbiIpOwogICAgICAgICAg
ICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAKQEAgLTEwNDEsOSAr
MTA0MywxMSBAQCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgIG15ICRhZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJnZtIH07XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdCh2bSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
IShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQgPSBwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWZvdW5kKSB7XG4i
KTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTExNzYsOCArMTE4MCwxMCBAQCBzdWIgR2VuZXJhdGVEZWZpbmVPd25Qcm9w
ZXJ0eQogICAgICAgICAgICAgIyBGSVhNRTogSXMgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCB0aGUgcmlnaHQgZnVuY3Rpb24gdG8gY2FsbD8gSXMgdGhlcmUgYSBmdW5jdGlvbiB0aGF0IHdp
bGwKICAgICAgICAgICAgICMgICAgICAgIG9ubHkgbG9vayBhdCB0aGUgYWN0dWFsIHByb3BlcnRp
ZXMsIGFuZCBub3QgY2FsbCBpbnRvIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKICAgICAgICAg
ICAgICMgICAgICAgIFtbR2V0T3duUHJvcGVydHldXSBob29rPwotICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJ
bmRlbnQuICIgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAg
ICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgc2xvdC5k
aXNhbGxvd1ZNRW50cnkucmVzZXQoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgaWYgKCFmb3VuZCkge1xuIik7CiAgICAg
ICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCEkbmFtZWRTZXR0ZXJPcGVyYXRpb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyNjQ2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM2LDcgKzIzNiw5IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGkKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAg
ICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7
CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAg
ICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgdHJ1ZSk7CkBAIC0yNjUsNyArMjY3LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aQogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90
b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qo
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZv
dW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJv
cGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
c2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI5Myw3ICsyOTcsOSBAQCBib29sIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBp
ZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kID0gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNl
dCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVz
Y3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw5IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmcKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnku
cmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNjUsNyArMjY3LDkgQEAgYm9vbCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRl
bnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsK
LSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkp
IHsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZv
dW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI5Myw3ICsy
OTcsOSBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAKICAgICBp
ZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBi
b29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2Fs
bG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBp
ZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw5IEBAIGJvb2wgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNP
YmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZN
RW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNzQsNyArMjc2LDkgQEAgYm9vbCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9
OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBp
ZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTMw
Miw3ICszMDYsOSBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVuCiAK
ICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAg
ICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90
LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNp
b24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcg
KzIwOSw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCgKICAgICBp
ZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAg
IGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUp
LT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFm
b3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7
CkBAIC0yMzAsNyArMjMyLDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6
cHV0QgogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgp
OwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhp
c09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNP
YmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kID0gcHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgc2xvdC5kaXNh
bGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI0OCw3ICsyNTIsOSBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyOjpkZWZpCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJv
bCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAg
ICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5p
c0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw5IEBAIGJvb2wg
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xv
dC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yMzAsNyArMjMy
LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0
cnVlKTsKQEAgLTI0OCw3ICsyNTIsOSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb246CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkgeworICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9y
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE1LDcgKzIxNSw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcjo6cHUKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yMzYsNyArMjM4LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyOjpwdQogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBp
ZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAg
ICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI1NCw3ICsyNTgsOSBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlCiAKICAgICBpZiAoIXBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9Owot
ICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZv
dW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1F
bnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXBy
b3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9u
IDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3
LDcgKzIzNyw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoKICAg
ICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYg
KCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVy
dHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAg
ICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYg
KCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1
ZSk7CkBAIC0yNTgsNyArMjYwLDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyOgogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5k
ZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
dGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUu
aXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kID0g
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgc2xvdC5k
aXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3OSw3ICsyODMsOSBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwor
ICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRv
ci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHJldmlz
aW9uIDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ1LDcgKzI0NSw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckEKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
LSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsK
KyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAg
ICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgdHJ1ZSk7CkBAIC0yNzQsNyArMjc2LDkgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQQogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAo
IShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBi
b29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+
Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAg
ICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTMwMiw3ICszMDYsOSBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAKICAgICBpZiAoIXByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAg
ICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBib29sIGZvdW5k
ID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRy
eS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3Bl
cnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMzLDcgKzIzMyw5IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3AKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNTQsNyArMjU2LDkgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
KyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3OCw3ICsyODIs
OSBAQCBzdGF0aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByCiAKICAgICAgICAg
aWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CisgICAgICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAg
ICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNj
cmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404902</attachid>
            <date>2020-07-21 23:28:16 -0700</date>
            <delta_ts>2020-07-22 11:36:38 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214624.patch</filename>
            <type>text/plain</type>
            <size>68816</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NjkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXNhbGxvdyBWTSBlbnRyeSB3aGVuIGRvaW5nIGEgVk1JbnF1aXJ5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NjI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTkxNTMxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAxLiBJbiBQcm9wZXJ0eVNsb3QncyBjb25zdHJ1Y3RvciwgYXV0b21hdGljYWxs
eSBpbnN0YWxsIGEgRGlzYWxsb3dWTUVudHJ5IHNjb3BlCisgICAgICAgICAgIGlmIHRoZSBwYXNz
ZWQgaW4gaW50ZXJuYWwgbWV0aG9kIHR5cGUgaXMgVk1JbnF1aXJ5LiAgVGhpcyBlbnN1cmVzIHRo
YXQgd2Ugd29uJ3QKKyAgICAgICAgICAgYmUgYWJsZSB0byBlbnRlciB0aGUgVk0gdG8gY2FsbCBK
UyBjb2RlIHdoaWxlIGRvaW5nIHRoZSBpbnF1aXJ5LiAgQXMgYSByZXN1bHQsCisgICAgICAgICAg
IHRoZSBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3Igd2lsbCBub3cgdGFrZSBhbiBvcHRpb25hbCBW
TSBwb2ludGVyLCB3aGljaCBpcyAKKyAgICAgICAgICAgbXVzdCBiZSBwYXNzZWQgaW4gaW4gd2hl
biB0aGUgaW50ZXJuYWwgbWV0aG9kIHR5cGUgaXMgVk1JbnF1aXJ5LgorCisgICAgICAgICAgIE5v
dGUgdGhhdCB0aGUgaGFuZGxpbmcgb2YgYXR0ZW1wdHMgdG8gZW50ZXIgdGhlIFZNIGRlcGVuZHMg
b24KKyAgICAgICAgICAgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5KCkuCisKKyAg
ICAgICAgICAgT24gRGVidWcgYnVpbGQgKGR1ZSB0byBBU1NFUlRfRU5BQkxFRCksIE9wdGlvbnM6
OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpCisgICAgICAgICAgIGRlZmF1bHRzIHRvIHRydWUg
YW5kIHRoZSBWTSB3aWxsIGNyYXNoIG9uIGRpc2FsbG93ZWQgZW50cnkuCisgICAgICAgICAgIE9u
IFJlbGVhc2UgYnVpbGQsIE9wdGlvbnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGRlZmF1
bHRzIHRvIGZhbHNlIGFuZAorICAgICAgICAgICBkaXNhbGxvdyBlbnRyeSBhdHRlbXB0cyBpbnRv
IHRoZSBWTSB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBjYWxsaW5nIGFuIGVtcHR5CisgICAgICAgICAg
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB1bmRlZmluZWQuICBUaGlzIGlzIG5vdCBuZXcgYmVoYXZp
b3IgaW4gdGhpcyBwYXRjaCwgYnV0CisgICAgICAgICAgIEkganVzdCB3YW50IHRvIGhhdmUgYSBy
ZW1pbmRlciBoZXJlIG9mIGhvdyBEaXNhbGxvd1ZNRW50cnkgd2lsbCBiZSBlbmZvcmNpbmcKKyAg
ICAgICAgICAgbm8gZW50cnkgaW50byB0aGUgVk0gd2hpbGUgZG9pbmcgYSBWTUlucXVpcnkuCisK
KyAgICAgICAgMi4gQWZ0ZXIgVk1JbnF1aXJ5IGdldHMsIHNvbWV0aW1lcyB0aGUgY2xpZW50IGNv
ZGUgd2FudHMgdG8gZG8gb3RoZXIgd29yayB0aGF0CisgICAgICAgICAgIGRvIGVudGFpbCBlbnRl
cmluZyB0aGUgVk0uICBJbiBzdWNoIGNhc2VzLCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBQcm9wZXJ0
eVNsb3QncworICAgICAgICAgICBkaXNhbGxvd1ZNRW50cnkgc2NvcGUuICBGaXhlZCB1cCBhIGZl
dyBwbGFjZXMgaW4gY2xpZW50IGNvZGUgdG8gZG8gdGhpcyByZXNldC4KKworICAgICAgICAzLiBN
YWtlIHRoZSBEaXNhYmxlVk1FbnRyeSBzY29wZSBjb3B5YWJsZS4gIEF0IGxlYXN0IG9uZSBwbGFj
ZSB3YW50cyB0byBjb3B5IAorICAgICAgICAgICBQcm9wZXJ0eVNsb3QsIGFuZCBhcyBhIHJlc3Vs
dCwgd2lsbCBuZWVkIHRvIGNvcHkgaXRzIGVtYmVkZGVkIERpc2FibGVWTUVudHJ5CisgICAgICAg
ICAgIHNjb3BlIGFzIHdlbGwgaWYgaW5zdGFsbGVkLgorCisgICAgICAgICAgIEZvciBEaXNhYmxl
Vk1FbnRyeSwgd2UnbGwgaGFuZGxlIGNvcHlpbmcgc2VtYW50aWNzIGFzIGZvbGxvd3M6IGNvcHlp
bmcgYQorICAgICAgICAgICBEaXNhYmxlVk1FbnRyeSB3aWxsIHJlZiB0aGUgVk06OmRpc2FsbG93
Vk1FbnRyeUNvdW50LiAgVGhlIGNvdW50IHdpbGwgYmUKKyAgICAgICAgICAgZGVjcmVtZW50ZWQg
d2hlbiBib3RoIGluc3RhbmNlcyBhcmUgZGVzdHJ1Y3RlZC4gIEFzIGEgcmVzdWx0LCBWTSBlbnRy
eSB3aWxsCisgICAgICAgICAgIGJlIGRpc2FsbG93ZWQgYXMgbG9uZyBhcyBvbmUgb2YgdGhlIGNv
cGllcyBhcmUgc3RpbGwgYWxpdmUuCisKKyAgICAgICAgNC4gRm9yIHRoZSBzZXRPYmplY3RUb1N0
cmluZ1ZhbHVlKCkgbWV0aG9kIG9mIFN0cnVjdHVyZSBhbmQgU3RydWN0dXJlUmFyZURhdGEsIHdl
CisgICAgICAgICAgIHdlcmUgcHJldmlvdXNseSBwYXNzaW5nIGEgUHJvcGVydHlTbG90IGJ5IGNv
cHkuICBXZSBkb24ndCByZWFsbHkgbmVlZCB0byBkbworICAgICAgICAgICB0aGlzLiAgVWx0aW1h
dGVseSwgb25seSBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSgpIG5l
ZWRzIHRvCisgICAgICAgICAgIGFjY2VzcyBhIGZldyBvZiB0aGUgUHJvcGVydHlTbG90IHF1ZXJ5
IG1ldGhvZHMuICBTbywgd2UgY2hhbmdlZCB0aGVzZSBtZXRob2RzCisgICAgICAgICAgIHRvIHBh
c3MgYSBgY29uc3QgUHJvcGVydHlTbG90JmAgaW5zdGVhZCB0byB2b2lkIHRoZSBuZWVkbGVzcyBj
b3B5aW5nLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlND
OjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKToKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVl
cnlJbnN0YW5jZXMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9E
aXNhbGxvd1ZNRW50cnkuaDoKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5SW1wbDo6RGlz
YWxsb3dWTUVudHJ5SW1wbCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoK
KyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnB1
dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpnZXRHZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJh
eVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcml2
YXRlRmllbGRTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAo
SlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoK
KyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmls
ZXI6OlN0YWNrRnJhbWU6Om5hbWVGcm9tQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5oOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlND
OjpmdW5jdGlvbkdldEdldHRlclNldHRlcik6CisKIDIwMjAtMDctMjEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IERpc2FsbG93U2NvcGUsIERpc2Fs
bG93R0MsIGFuZCBEaXNhbGxvd1ZNUmVlbnRyeSBpbXBsZW1lbnRhdGlvbnMuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw4ICsyOTgsMTAg
QEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0
aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0KSkgewog
ICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1
bmN0aW9ucy0+Z2V0KG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBn
ZXRTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpKQorICAg
ICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOworICAgICAgICAgICAg
ICAgICAgICBib29sIGZvdW5kID0gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpOworICAgICAgICAgICAgICAg
ICAgICBnZXRTbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZm91bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFyZW50OjpwdXQo
dGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY2OCw4ICs2NzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OgogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlkZSBwcm9wZXJ0
eS4KLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdDIodGhpc09iaiwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7Ci0gICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90MikpCisgICAgUHJv
cGVydHlTbG90IHNsb3QyKHRoaXNPYmosIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZ2bSk7CisgICAgYm9vbCBmb3VuZCA9IFBhcmVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmosIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Mik7CisgICAg
c2xvdDIuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKGZvdW5kKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKSk7CiAKICAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQo
KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90QnVpbGRlci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDksNyAr
NDA5LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3RpbwogICAgICAg
ICAgICAgLy8gIk9iamVjdCIgaW4gc25hcHNob3RzIGFuZCBub3QgZ2V0IHRoZSBuYW1lIG9mIHRo
ZSBwcm90b3R5cGUncyBwYXJlbnQuCiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3Qobm9kZS5jZWxsKTsKICAgICAgICAgICAgIGlmIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pKSB7Ci0gICAgICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHNsb3QpKQogICAgICAgICAgICAg
ICAgICAgICBjbGFzc05hbWUgPSBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3Qp
OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQ2LDcgKzY0Niw3IEBAIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGEKIAogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqZWN0
OwogCi0gICAgUHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgcHJvdG90
eXBlU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnksICZ2bSk7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGVTbG90KSkgewogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAocHJvdG90eXBlU2xv
dC5pc1ZhbHVlKCkpIHsKQEAgLTY1Nyw2ICs2NTcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpxdWVyeUluc3RhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAg
cHJvdG90eXBlU2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKIAogICAgIGlmIChvYmplY3Qt
PmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkgfHwgcHJvdG90eXBlLmluaGVyaXRzPFByb3h5T2Jq
ZWN0Pih2bSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGEgUHJveHkuIl9zKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5Nyw3ICsxMDk3LDcg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4odmFyaWFibGVPYmplY3QpLT5nbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytp
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHVubGlua2VkQ29kZUJs
b2NrLT52YXJpYWJsZShpKTsKLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExl
eGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7CisgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7
CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3Bl
cnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNs
b3QpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVw
bGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSks
ICInIikpKTsKICAgICAgICAgICAgIH0KQEAgLTExMDUsNyArMTEwNSw3IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzOyArK2kpIHsKICAgICAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsK
LSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAgICAgICBpZiAo
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQsIGdsb2JhbE9iamVjdCwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUg
Z2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rpb24tPm5hbWUoKS5pbXBs
KCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3
ICsxNzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiAgICAg
c3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJnZtKTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgaWRlbnQsIHNsb3QpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Lmdl
dFB1cmVSZXN1bHQoKSk7CkBAIC0xOTAsNyArMTkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UcgogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmdm0pOwogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgc2xvdCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0
UHVyZVJlc3VsdCgpKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRyCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnksICZ2bSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzQsNyArNjM0
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RyeV9nZXRfYgogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BUcnlHZXRCeUlkPigpOwogICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFz
ZSk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OlByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogCiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3Qu
Z2V0UHVyZVJlc3VsdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlz
YWxsb3dWTUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlzYWxsb3dWTUVudHJ5LmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw2IEBAIGNsYXNzIFZNOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWTVR5cGUgPSBWTT4KIGNs
YXNzIERpc2FsbG93Vk1FbnRyeUltcGwgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2Fs
bG93Vk1FbnRyeUltcGwpOwogcHVibGljOgogICAgIERpc2FsbG93Vk1FbnRyeUltcGwoVk1UeXBl
JiB2bSkKICAgICAgICAgOiBtX3ZtKCZ2bSkKQEAgLTQ0LDYgKzQzLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgbV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQrKzsKICAgICB9CiAKKyAgICBEaXNhbGxv
d1ZNRW50cnlJbXBsKGNvbnN0IERpc2FsbG93Vk1FbnRyeUltcGwmIG90aGVyKQorICAgICAgICA6
IG1fdm0ob3RoZXIubV92bSkKKyAgICB7CisgICAgICAgIG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNv
dW50Kys7CisgICAgfQorCiAgICAgfkRpc2FsbG93Vk1FbnRyeUltcGwoKQogICAgIHsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlz
aW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgU3RyaW5nIEVycm9ySW5z
dGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKAogCiAgICAgSlNWYWx1ZSBuYW1lVmFsdWU7CiAgICAg
YXV0byBuYW1lUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOwotICAgIFByb3Bl
cnR5U2xvdCBuYW1lU2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgbmFtZVNsb3QodGhpcywgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKIAogICAgIEpTVmFsdWUgY3Vy
cmVudE9iaiA9IHRoaXM7CiAgICAgdW5zaWduZWQgcHJvdG90eXBlRGVwdGggPSAwOwpAQCAtMTY3
LDcgKzE2Nyw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAog
ICAgIEpTVmFsdWUgbWVzc2FnZVZhbHVlOwogICAgIGF1dG8gbWVzc2FnZVByb3BlcnROYW1lID0g
dm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZTsKLSAgICBQcm9wZXJ0eVNsb3QgbWVzc2FnZVNsb3Qo
dGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
UHJvcGVydHlTbG90IG1lc3NhZ2VTbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgaWYgKEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUHJvcGVydE5hbWUsIG1lc3NhZ2VTbG90
KSAmJiBtZXNzYWdlU2xvdC5pc1ZhbHVlKCkpCiAgICAgICAgIG1lc3NhZ2VWYWx1ZSA9IG1lc3Nh
Z2VTbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgbWVzc2FnZVByb3BlcnROYW1lKTsKICAgICBz
Y29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAo
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxv
dmljaAogICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TgogICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSkgewogICAg
ICAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KLSAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZt
KTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBzbG90KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAKQEAgLTU2MywxMSArNTYzLDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCog
Y2VsbCwgSlNHbG8KICAgICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwogICAgICAgICAvLyBN
YWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25s
eSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQg
aW4gRUNNQS0yNjIgOC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3QgZ2V0U2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAg
ICAgUHJvcGVydHlTbG90IGdldFNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGdldFNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBmYWxzZSk7CiAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNP
YmplY3QtPnJhcmVEYXRhKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRv
IHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CisgICAgICAgIGdldFNsb3QuZGlz
YWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCkpOwogICAgIH0KIApAQCAtNjQyLDExICs2NDMsMTIgQEAgYm9vbCBKU0Z1bmN0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iagogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFz
IGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAg
ICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCi0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0p
OwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKEZ1bmN0aW9u
UmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+cmFyZURhdGEoKSkKICAgICAgICAgICAg
IHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rp
b24iKTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTU2LDkgKzE1NiwxMCBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFyCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBnZXRQcm9wZXJ0
eVNsb3Qgb3BlcmF0aW9uIHNob3VsZCBub3QgYmUgb2JzZXJ2ZWQgYnkgdGhlIFByb3h5LgogICAg
ICAgICAgICAgLy8gU28gd2UgdXNlIFZNSW5xdWlyeS4gQW5kIHB1cmdlIHRoZSBvcGFxdWUgb2Jq
ZWN0IGNhc2VzIChwcm94eSBhbmQgbmFtZXNwYWNlIG9iamVjdCkgYnkgaXNUYWludGVkQnlPcGFx
dWVPYmplY3QoKSBndWFyZC4KLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBsZW5ndGhTbG90KG9i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAgICAgICBvYmplY3QtPmdl
dFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwgbGVu
Z3RoU2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGxlbmd0aFNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAKICAg
ICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jID0gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA2LDggKzUwNiw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldEdsb2Jh
bFRoaXMoVk0mIHYKIAogc3RhdGljIEdldHRlclNldHRlciogZ2V0R2V0dGVyQnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCiB7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIHJldHVybiBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4o
c2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQpAQCAtMTM5NCwxMSArMTM5NSwxMyBAQCBib29sIEpT
R2xvYmFsT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKCiAKIGJvb2wgSlNHbG9iYWxPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihvYmplY3QpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgLy8gc2lsZW50bHkgaWdub3JlIGF0dGVtcHRzIHRv
IGFkZCBhY2Nlc3NvcnMgYWxpYXNpbmcgdmFycy4KICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpICYmIHN5bWJvbFRhYmxlR2V0KHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzbG90LmRpc2FsbG93Vk1FbnRy
eS5yZXNldCgpOwogICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwog
fQogCkBAIC0yMDY1LDcgKzIwNjgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxs
QXJyYXlTcGVjCiAgICAgICAgIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldC5pbnZhbGlkYXRl
KHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFibGUgdG8gc2V0IHVwIGFycmF5IHNwZWNp
ZXMgd2F0Y2hwb2ludC4iKSk7CiAgICAgfTsKIAotICAgIFByb3BlcnR5U2xvdCBjb25zdHJ1Y3Rv
clNsb3QoYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBjb25zdHJ1Y3RvclNsb3QoYXJyYXlQcm90b3R5
cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAg
ICAgYXJyYXlQcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xvdChhcnJheVByb3RvdHlwZSwgdGhp
cywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNvbnN0cnVjdG9yU2xvdCk7CiAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoY29uc3RydWN0b3JTbG90LnNsb3RC
YXNlKCkgIT0gYXJyYXlQcm90b3R5cGUKQEAgLTIwNzksNyArMjA4Miw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWMKICAgICBpZiAoY29uc3RydWN0b3JTdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBjb25zdHJ1Y3RvclN0cnVjdHVyZSA9IGNvbnN0
cnVjdG9yU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXJyYXlDb25z
dHJ1Y3Rvcik7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc3BlY2llc1Nsb3QoYXJyYXlDb25zdHJ1Y3Rv
ciwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJv
cGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgYXJyYXlDb25zdHJ1Y3Rvci0+
Z2V0T3duUHJvcGVydHlTbG90KGFycmF5Q29uc3RydWN0b3IsIHRoaXMsIHZtLnByb3BlcnR5TmFt
ZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTbG90KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwogICAgIGlmIChzcGVjaWVzU2xvdC5zbG90QmFzZSgpICE9IGFycmF5Q29uc3RydWN0
b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJl
dmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQg
KEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdo
dCAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC01MzQsNyArNTM0LDcgQEAgU3RyaW5nIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpT
TwogCiAgICAgLy8gQ2hlY2sgZm9yIGEgZGlzcGxheSBuYW1lIG9mIG9iai5jb25zdHJ1Y3Rvci4K
ICAgICAvLyBUaGlzIGlzIHVzZWZ1bCB0byBnZXQgYEZvb2AgZm9yIHRoZSBgKGNsYXNzIEZvbyku
cHJvdG90eXBlYCBvYmplY3QuCi0gICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnks
ICZ2bSk7CiAgICAgaWYgKG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCkpIHsKICAgICAgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICBpZiAoc2xvdC5p
c1ZhbHVlKCkpIHsKQEAgLTU1OCw3ICs1NTgsNyBAQCBTdHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0
ZWRDbGFzc05hbWUoSlNPCiAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvVmFsdWUgPSBvYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgICAgICBpZiAocHJvdG9WYWx1ZS5pc09i
amVjdCgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gYXNPYmpl
Y3QocHJvdG9WYWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QocHJvdG9W
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
ICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QocHJvdG9WYWx1ZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAgICAgICAgICBpZiAo
cHJvdG9PYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBzbG90KSkgewogICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05f
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzbG90
LmlzVmFsdWUoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsNiAr
NTg0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qo
b2Zmc2V0KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgaWYg
KHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgp
OwpAQCAtNTk0LDYgKzU5NSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJp
dmF0ZUYKICAgICAgICAgLy8gYXMgaW4gSlNPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlT
bG90KCkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDQzNQogICAgIH0KKyNlbmRpZgogCiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QsIGF0dHJp
YnV0ZXMsIHZhbHVlLCBvZmZzZXQpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTUyLDggKzE1Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0ds
b2IKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAgYm9vbCBoYXNP
d25Qcm9wZXJ0eSA9IGdsb2JhbE9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVu
dHJ5LnJlc2V0KCk7CiAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkpIHsKICAgICAgICAgICAg
IG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKFVucmVzb2x2ZWRQcm9wZXJ0eSwgbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MpLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRPTUFubm90YXRpb24uaCIKKyNpbmNsdWRlICJE
aXNhbGxvd1ZNRW50cnkuaCIKICNpbmNsdWRlICJHZXRWTS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIKQEAgLTExMiwxMCArMTEzLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgTW9kdWxlTmFtZXNwYWNlLCAvLyBNb2R1bGVOYW1lc3BhY2VPYmplY3Qn
cyBlbnZpcm9ubWVudCBhY2Nlc3MuCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IFByb3BlcnR5U2xv
dChjb25zdCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSW50ZXJuYWxNZXRob2RUeXBlIGludGVybmFsTWV0
aG9kVHlwZSkKKyAgICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFs
dWUsIEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUsIFZNKiB2bUZvcklucXVp
cnkgPSBudWxscHRyKQogICAgICAgICA6IG1fdGhpc1ZhbHVlKHRoaXNWYWx1ZSkKICAgICAgICAg
LCBtX2ludGVybmFsTWV0aG9kVHlwZShpbnRlcm5hbE1ldGhvZFR5cGUpCiAgICAgeworICAgICAg
ICBpZiAoaXNWTUlucXVpcnkoKSkKKyAgICAgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5lbXBsYWNl
KCp2bUZvcklucXVpcnkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzbG90
QmFzZSAvIHJlY2VpdmVyIGJlaGF2aW9yIGRpZmZlcmVuY2UgaW4gY3VzdG9tIHZhbHVlcyBhbmQg
Y3VzdG9tIGFjY2Vzc29ycy4KQEAgLTM5OSw2ICs0MDIsOSBAQCBwcml2YXRlOgogICAgIEludGVy
bmFsTWV0aG9kVHlwZSBtX2ludGVybmFsTWV0aG9kVHlwZTsKICAgICBBZGRpdGlvbmFsRGF0YVR5
cGUgbV9hZGRpdGlvbmFsRGF0YVR5cGUgeyBBZGRpdGlvbmFsRGF0YVR5cGU6Ok5vbmUgfTsKICAg
ICBib29sIG1faXNUYWludGVkQnlPcGFxdWVPYmplY3QgeyBmYWxzZSB9OworcHVibGljOgorICAg
IE9wdGlvbmFsPERpc2FsbG93Vk1FbnRyeT4gZGlzYWxsb3dWTUVudHJ5OworcHJpdmF0ZToKICAg
ICB1bmlvbiB7CiAgICAgICAgIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlOwog
ICAgICAgICBNb2R1bGVOYW1lc3BhY2VTbG90IG1vZHVsZU5hbWVzcGFjZVNsb3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyOCw3ICs3MjgsNyBAQCBTdHJp
bmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtCiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgYXV0byBnZXRQcm9wZXJ0eUlmUHVyZU9w
ZXJhdGlvbiA9IFsmXSAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIC0+IFN0cmluZyB7Ci0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KGNhbGxlZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGNhbGxlZSwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShpZGVudCk7CiAgICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkgPSBjYWxsZWUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjY0Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01MzYsNyArNTM2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmFyZURhdGEoKS0+
b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOwogICAgIH0KIAotICAgIHZvaWQgc2V0T2JqZWN0VG9TdHJp
bmdWYWx1ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNs
b3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KTsKKyAgICB2b2lkIHNldE9iamVjdFRvU3RyaW5nVmFs
dWUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIEpTU3RyaW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlT
bG90JiB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAy
NjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MjcsNyArNDI3LDcgQEAgaW5saW5lIHNpemVfdCBuZXh0
T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaQogICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiBvdXRP
ZkxpbmVHcm93dGhGYWN0b3I7CiB9CiAKLWlubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0T2JqZWN0
VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTU3Ry
aW5nKiB2YWx1ZSwgUHJvcGVydHlTbG90IHRvU3RyaW5nVGFnU3ltYm9sU2xvdCkKK2lubGluZSB2
b2lkIFN0cnVjdHVyZTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEpTU3RyaW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0
b1N0cmluZ1RhZ1N5bWJvbFNsb3QpCiB7CiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAg
ICBhbGxvY2F0ZVJhcmVEYXRhKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmVSYXJl
RGF0YSogbV9zdHJ1Y3R1cmVSYXJlRGF0YTsKIH07CiAKLXZvaWQgU3RydWN0dXJlUmFyZURhdGE6
OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBTdHJ1Y3R1cmUqIG93blN0cnVjdHVyZSwgSlNTdHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNs
b3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KQordm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2Jq
ZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0
cnVjdHVyZSogb3duU3RydWN0dXJlLCBKU1N0cmluZyogdmFsdWUsIGNvbnN0IFByb3BlcnR5U2xv
dCYgdG9TdHJpbmdUYWdTeW1ib2xTbG90KQogewogICAgIGlmIChjYW5DYWNoZU9iamVjdFRvU3Ry
aW5nVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAyNjQ2ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclByZXZp
b3VzSUQoKTsKIAogICAgIEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1
Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTU3RyaW5nKiB2YWx1ZSwgUHJvcGVydHlTbG90IHRvU3Ry
aW5nVGFnU3ltYm9sU2xvdCk7CisgICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xv
YmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTU3RyaW5nKiB2YWx1
ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwogICAgIHZvaWQg
Z2l2ZVVwT25PYmplY3RUb1N0cmluZ1ZhbHVlQ2FjaGUoKSB7IG1fb2JqZWN0VG9TdHJpbmdWYWx1
ZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKG9iamVjdFRvU3RyaW5nQ2FjaGVHaXZlVXBNYXJrZXIo
KSk7IH0KICAgICBib29sIGNhbkNhY2hlT2JqZWN0VG9TdHJpbmdWYWx1ZSgpIHsgcmV0dXJuIG1f
b2JqZWN0VG9TdHJpbmdWYWx1ZS51bnZhbGlkYXRlZEdldCgpID09IG9iamVjdFRvU3RyaW5nQ2Fj
aGVHaXZlVXBNYXJrZXIoKTsgfQogICAgIHN0YXRpYyBKU1N0cmluZyogb2JqZWN0VG9TdHJpbmdD
YWNoZUdpdmVVcE1hcmtlcigpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1N0cmluZyo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTUsNyArMjg5
NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9JZGVudGlmaWVyKGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIFByb3Bl
cnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh2YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNs
b3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDY4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXNhbGxvdyBWTSBlbnRyeSB3aGVuIGRvaW5nIGEgVk1JbnF1aXJ5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NjI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTkxNTMxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAxLiBDaGFuZ2UgYmluZGluZyB0byByZXNldCB0aGUgRGlzYWxsb3dWTUVudHJ5
IHNjb3BlIGluIFByb3BlcnR5U2xvdCBhZnRlciBkb2luZworICAgICAgICAgICBhIFZNSW5xdWly
eS4KKyAgICAgICAgMi4gUmViYXNlIGJpbmRpbmdzIHRlc3QgcmVzdWx0cyB0byBtYXRjaC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjppc1Zpc2libGVOYW1lZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFj
Y2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUHV0KToKKyAgICAgICAgKEdlbmVy
YXRlUHV0QnlJbmRleCk6CisgICAgICAgIChHZW5lcmF0ZURlZmluZU93blByb3BlcnR5KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZWZpbmVP
d25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwdXRCeUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRl
ZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnB1dEJ5SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OmRlZmlu
ZU93blByb3BlcnR5KToKKwogMjAyMC0wNy0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBDZXJ0aWZpY2F0ZUlu
Zm9CYXNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDcgKzU5LDcgQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gMi4gSWYgTyBoYXMgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIEpTQzo6UHJvcGVydHlTbG90
IHNsb3QgeyAmdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07CisgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0
LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCkgfTsKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtOTksNyArOTksNyBAQCBz
dGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQg
UCwgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlz
T2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKKyAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSB9OwogICAgIGlmIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRo
aXNPYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY0Njg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTk2NSw5ICs5NjUsMTEgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAg
IAogICAgICAgICBteSAkb3ZlcnJpZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0
c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7CiAgICAg
ICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSB9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghZm91bmQpIHtcbiIpOwogICAgICAgICAg
ICAgJGFkZGl0aW9uYWxJbmRlbnQgLj0gIiAgICAiOwogICAgICAgICB9CiAKQEAgLTEwNDEsOSAr
MTA0MywxMSBAQCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgIG15ICRhZGRpdGlvbmFsSW5kZW50ID0gIiI7CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJnZtIH07XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdCh2bSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
IShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQgPSBwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWZvdW5kKSB7XG4i
KTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTExNzYsOCArMTE4MCwxMCBAQCBzdWIgR2VuZXJhdGVEZWZpbmVPd25Qcm9w
ZXJ0eQogICAgICAgICAgICAgIyBGSVhNRTogSXMgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCB0aGUgcmlnaHQgZnVuY3Rpb24gdG8gY2FsbD8gSXMgdGhlcmUgYSBmdW5jdGlvbiB0aGF0IHdp
bGwKICAgICAgICAgICAgICMgICAgICAgIG9ubHkgbG9vayBhdCB0aGUgYWN0dWFsIHByb3BlcnRp
ZXMsIGFuZCBub3QgY2FsbCBpbnRvIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKICAgICAgICAg
ICAgICMgICAgICAgIFtbR2V0T3duUHJvcGVydHldXSBob29rPwotICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJ
bmRlbnQuICIgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAg
ICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgc2xvdC5k
aXNhbGxvd1ZNRW50cnkucmVzZXQoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgaWYgKCFmb3VuZCkge1xuIik7CiAgICAg
ICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCEkbmFtZWRTZXR0ZXJPcGVyYXRpb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyNjQ2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM0LDkgKzIzNCwxMSBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNjMsOSArMjY1LDExIEBAIGJvb2wgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGkKICAgICB9CiAKICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5k
ID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVy
dHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgc2xv
dC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI5Miw4ICsyOTYsMTAgQEAgYm9vbCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aQogICAgIH0KIAogICAgIGlmICghcHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAg
ICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKKyAgICAgICAgYm9vbCBmb3Vu
ZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50
cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9w
ZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsMTEgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1l
LmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07CisgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKICAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kID0g
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNs
b3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAg
ICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjYzLDkgKzI2
NSwxMSBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nCiAgICAgfQog
CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0g
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07CisgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0gfTsK
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2
bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CisgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0
KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYg
KCFmb3VuZCkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yOTIs
OCArMjk2LDEwIEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmcKICAg
ICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkg
eworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
IH07CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsK
ICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsOSArMjQzLDExIEBAIGJv
b2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KICAgICB9CiAKICAgICBpZiAo
IXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9
OworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
IH07CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAg
Ym9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSkt
PmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZv
dW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsK
QEAgLTI3Miw5ICsyNzQsMTEgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbgogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSwgJnZtIH07CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNl
dCgpOworICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRy
dWUpOwpAQCAtMzAxLDggKzMwNSwxMCBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVuCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewot
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSB9OworICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBp
ZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFE
ZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjA3LDkgKzIwNywxMSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyOjpwdXQoCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yMjgsOSArMjMwLDExIEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEIKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZ2bSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZN
RW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB0cnVlKTsKQEAgLTI0Nyw4ICsyNTEsMTAgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcjo6ZGVmaQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKSB7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCkgfTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYg
KCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRhRGVz
Y3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsyMDcsMTEgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9s
KCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07CisgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKICAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxs
b3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjI4LDkgKzIzMCwxMSBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07CisgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0gfTsKICAgICBKU1ZhbHVlIHByb3RvdHlw
ZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgYm9vbCBmb3Vu
ZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3Bl
cnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHNs
b3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgaWYgKCFmb3VuZCkgewogICAgICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01T
dHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNDcsOCArMjUxLDEwIEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjoKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7
CisgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlw
dG9yLmlzRGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsOSArMjEzLDExIEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OworICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07CiAgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRp
c2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTIzNCw5ICsyMzYsMTEg
QEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdQogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OworICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtIH07CiAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wg
Zm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgIGlmICghZm91bmQpIHsKICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjUzLDggKzI1NywxMCBAQCBib29s
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlCiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUu
aXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYg
KCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OworICAgICAgICBib29sIGZvdW5kID0gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNl
dCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVz
Y3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDkgKzIzNSwx
MSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9Owog
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGJvb2wg
Zm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6
OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0y
NTYsOSArMjU4LDExIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OwogICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsK
LSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkp
IHsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICBpZiAoIWZv
dW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3OCw4ICsy
ODIsMTAgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkgeworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFs
T2JqZWN0LT52bSgpIH07CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CisgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURl
c2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjY0Njg4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDMsOSArMjQzLDExIEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEK
ICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSB9OworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpIH07CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkpIHsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgp
OworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
ICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3Miw5ICsyNzQsMTEgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQQogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhp
c09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9Owor
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtIH07CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGJvb2wgZm91bmQgPSBw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBzbG90LmRp
c2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgIGlmICghZm91bmQpIHsKICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMzAxLDggKzMwNSwxMCBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBCiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAg
aWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OworICAgICAgICBib29sIGZvdW5kID0g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5y
ZXNldCgpOworICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5
RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAko
cmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMxLDkgKzIzMSwxMSBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCkpKSB7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKKyAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNTIsOSArMjU0LDExIEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZ2bSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgc2xvdC5kaXNhbGxvd1ZNRW50
cnkucmVzZXQoKTsKKyAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAg
ICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB0cnVlKTsKQEAgLTI3Nyw4ICsyODEsMTAgQEAgc3RhdGljIGJvb2wgaXNVbmZvcmdlYWJs
ZVByb3BlcnR5TmFtZShQcgogfQogCiAgICAgICAgIGlmICghaXNVbmZvcmdlYWJsZVByb3BlcnR5
TmFtZShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsK
LSAgICAgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07CisgICAg
ICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAg
ICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKKyAgICAgICAgICAgIGlmICghZm91bmQp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlw
dG9yKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCkpOwo=
</data>
<flag name="review"
          id="420315"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404984</attachid>
            <date>2020-07-22 15:25:47 -0700</date>
            <delta_ts>2020-07-22 16:57:55 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-214624b.patch</filename>
            <type>text/plain</type>
            <size>66900</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDIwLTA3LTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXNhbGxvdyBWTSBlbnRyeSB3aGVuIGRvaW5nIGEgVk1JbnF1aXJ5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NjI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTkxNTMxND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKwor
ICAgICAgICAxLiBJbiBQcm9wZXJ0eVNsb3QncyBjb25zdHJ1Y3RvciwgYXV0b21hdGljYWxseSBp
bnN0YWxsIGEgRGlzYWxsb3dWTUVudHJ5IHNjb3BlCisgICAgICAgICAgIGlmIHRoZSBwYXNzZWQg
aW4gaW50ZXJuYWwgbWV0aG9kIHR5cGUgaXMgVk1JbnF1aXJ5LiAgVGhpcyBlbnN1cmVzIHRoYXQg
d2Ugd29uJ3QKKyAgICAgICAgICAgYmUgYWJsZSB0byBlbnRlciB0aGUgVk0gdG8gY2FsbCBKUyBj
b2RlIHdoaWxlIGRvaW5nIHRoZSBpbnF1aXJ5LiAgQXMgYSByZXN1bHQsCisgICAgICAgICAgIHRo
ZSBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3Igd2lsbCBub3cgdGFrZSBhbiBvcHRpb25hbCBWTSBw
b2ludGVyLCB3aGljaCBpcyAKKyAgICAgICAgICAgbXVzdCBiZSBwYXNzZWQgaW4gaW4gd2hlbiB0
aGUgaW50ZXJuYWwgbWV0aG9kIHR5cGUgaXMgVk1JbnF1aXJ5LgorCisgICAgICAgICAgIE5vdGUg
dGhhdCB0aGUgaGFuZGxpbmcgb2YgYXR0ZW1wdHMgdG8gZW50ZXIgdGhlIFZNIGRlcGVuZHMgb24K
KyAgICAgICAgICAgT3B0aW9uczo6Y3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5KCkuCisKKyAgICAg
ICAgICAgT24gRGVidWcgYnVpbGQgKGR1ZSB0byBBU1NFUlRfRU5BQkxFRCksIE9wdGlvbnM6OmNy
YXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpCisgICAgICAgICAgIGRlZmF1bHRzIHRvIHRydWUgYW5k
IHRoZSBWTSB3aWxsIGNyYXNoIG9uIGRpc2FsbG93ZWQgZW50cnkuCisgICAgICAgICAgIE9uIFJl
bGVhc2UgYnVpbGQsIE9wdGlvbnM6OmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeSgpIGRlZmF1bHRz
IHRvIGZhbHNlIGFuZAorICAgICAgICAgICBkaXNhbGxvdyBlbnRyeSBhdHRlbXB0cyBpbnRvIHRo
ZSBWTSB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBjYWxsaW5nIGFuIGVtcHR5CisgICAgICAgICAgIGZ1
bmN0aW9uIHRoYXQgcmV0dXJucyB1bmRlZmluZWQuICBUaGlzIGlzIG5vdCBuZXcgYmVoYXZpb3Ig
aW4gdGhpcyBwYXRjaCwgYnV0CisgICAgICAgICAgIEkganVzdCB3YW50IHRvIGhhdmUgYSByZW1p
bmRlciBoZXJlIG9mIGhvdyBEaXNhbGxvd1ZNRW50cnkgd2lsbCBiZSBlbmZvcmNpbmcKKyAgICAg
ICAgICAgbm8gZW50cnkgaW50byB0aGUgVk0gd2hpbGUgZG9pbmcgYSBWTUlucXVpcnkuCisKKyAg
ICAgICAgMi4gQWZ0ZXIgVk1JbnF1aXJ5IGdldHMsIHNvbWV0aW1lcyB0aGUgY2xpZW50IGNvZGUg
d2FudHMgdG8gZG8gb3RoZXIgd29yayB0aGF0CisgICAgICAgICAgIGRvIGVudGFpbHMgZW50ZXJp
bmcgdGhlIFZNLiAgSW4gc3VjaCBjYXNlcywgd2UgbmVlZCB0byByZXNldCB0aGUgUHJvcGVydHlT
bG90J3MKKyAgICAgICAgICAgZGlzYWxsb3dWTUVudHJ5IHNjb3BlLiAgRml4ZWQgdXAgYSBmZXcg
cGxhY2VzIGluIGNsaWVudCBjb2RlIHRvIGRvIHRoaXMgcmVzZXQuCisKKyAgICAgICAgMy4gTWFr
ZSB0aGUgRGlzYWJsZVZNRW50cnkgc2NvcGUgY29weWFibGUuICBBdCBsZWFzdCBvbmUgcGxhY2Ug
d2FudHMgdG8gY29weSAKKyAgICAgICAgICAgUHJvcGVydHlTbG90LCBhbmQgYXMgYSByZXN1bHQs
IHdpbGwgbmVlZCB0byBjb3B5IGl0cyBlbWJlZGRlZCBEaXNhYmxlVk1FbnRyeQorICAgICAgICAg
ICBzY29wZSBhcyB3ZWxsIGlmIGluc3RhbGxlZC4KKworICAgICAgICAgICBGb3IgRGlzYWJsZVZN
RW50cnksIHdlJ2xsIGhhbmRsZSBjb3B5aW5nIHNlbWFudGljcyBhcyBmb2xsb3dzOiBjb3B5aW5n
IGEKKyAgICAgICAgICAgRGlzYWJsZVZNRW50cnkgd2lsbCByZWYgdGhlIFZNOjpkaXNhbGxvd1ZN
RW50cnlDb3VudC4gIFRoZSBjb3VudCB3aWxsIGJlCisgICAgICAgICAgIGRlY3JlbWVudGVkIHdo
ZW4gYm90aCBpbnN0YW5jZXMgYXJlIGRlc3RydWN0ZWQuICBBcyBhIHJlc3VsdCwgVk0gZW50cnkg
d2lsbAorICAgICAgICAgICBiZSBkaXNhbGxvd2VkIGFzIGxvbmcgYXMgb25lIG9mIHRoZSBjb3Bp
ZXMgYXJlIHN0aWxsIGFsaXZlLgorCisgICAgICAgIDQuIEZvciB0aGUgc2V0T2JqZWN0VG9TdHJp
bmdWYWx1ZSgpIG1ldGhvZCBvZiBTdHJ1Y3R1cmUgYW5kIFN0cnVjdHVyZVJhcmVEYXRhLCB3ZQor
ICAgICAgICAgICB3ZXJlIHByZXZpb3VzbHkgcGFzc2luZyBhIFByb3BlcnR5U2xvdCBieSBjb3B5
LiAgV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gZG8KKyAgICAgICAgICAgdGhpcy4gIFVsdGltYXRl
bHksIG9ubHkgU3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoKSBuZWVk
cyB0bworICAgICAgICAgICBhY2Nlc3MgYSBmZXcgb2YgdGhlIFByb3BlcnR5U2xvdCBxdWVyeSBt
ZXRob2RzLiAgU28sIHdlIGNoYW5nZWQgdGhlc2UgbWV0aG9kcworICAgICAgICAgICB0byBwYXNz
IGEgYGNvbnN0IFByb3BlcnR5U2xvdCZgIGluc3RlYWQgdG8gdm9pZCB0aGUgbmVlZGxlc3MgY29w
eWluZy4KKworICAgICAgICA1LiBBZGRlZCBKU09iamVjdDo6aGFzT3duUHJvcGVydHlTbG90Rm9y
Vk1JbnF1aXJ5KCkgYW5kCisgICAgICAgICAgIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eVNsb3RGb3JW
TUlucXVpcnkoKSBjb252ZW5pZW5jZSBtZXRob2RzLCBhbmQgdXNlIHRoZXNlCisgICAgICAgICAg
IHdoZXJlIHBvc3NpYmxlLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVy
KToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlND
OjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0
SG9zdDo6cXVlcnlJbnN0YW5jZXMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
cnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaDoKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dWTUVudHJ5
SW1wbDo6RGlzYWxsb3dWTUVudHJ5SW1wbCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpnZXRHZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUlu
c3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc093
blByb3BlcnR5U2xvdEZvclZNSW5xdWlyeSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNQ
cm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vz
cyk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6Om5h
bWVGcm9tQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNl
dE9iamVjdFRvU3RyaW5nVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJp
bmdWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAg
ICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldEdldHRl
clNldHRlcik6CisKIDIwMjAtMDctMjIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBKU1J1bkxvb3BUaW1lciBzaG91bGQgdXNlIFdURjo6UnVuTG9vcCByYXRo
ZXIgdGhhbiBjdXN0b20gQ0YgY29kZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsOCArMjk4LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoT3BhcXVl
SlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5z
dGF0aWNGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFNsb3QpKQorICAgICAgICAgICAgICAgICAgICBpZiAoUGFy
ZW50OjpoYXNPd25Qcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkodGhpc09iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QpKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFBhcmVudDo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02NjgsOCArNjY3LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqID0gYXND
YWxsYmFja09iamVjdCh0aGlzVmFsdWUpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBjYWNoZWQg
b3Igb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgUHJvcGVydHlTbG90IHNsb3QyKHRoaXNPYmosIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIGlmIChQYXJl
bnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdDIpKQorICAgIFByb3BlcnR5U2xvdCBzbG90Mih0aGlzT2JqLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOworICAgIGJvb2wgZm91bmQgPSBQ
YXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdDIpOworICAgIHNsb3QyLmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOworICAgIGlm
IChmb3VuZCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOwogCiAgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDA5LDcgKzQwOSw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpq
c29uKEZ1bmN0aW8KICAgICAgICAgICAgIC8vICJPYmplY3QiIGluIHNuYXBzaG90cyBhbmQgbm90
IGdldCB0aGUgbmFtZSBvZiB0aGUgcHJvdG90eXBlJ3MgcGFyZW50LgogICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KG5vZGUuY2VsbCk7CiAgICAgICAgICAgICBpZiAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKSkgewot
ICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5LCAmdm0pOwogICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBz
bG90KSkKICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gSlNPYmplY3Q6OmNhbGN1bGF0
ZWRDbGFzc05hbWUob2JqZWN0KTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0Niw3ICs2NDYsNyBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhCiAKICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IG9iamVjdDsKIAotICAgIFByb3BlcnR5U2xvdCBwcm90b3R5cGVTbG90KG9i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAg
UHJvcGVydHlTbG90IHByb3RvdHlwZVNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5
U2xvdChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBl
U2xvdCkpIHsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAg
ICAgaWYgKHByb3RvdHlwZVNsb3QuaXNWYWx1ZSgpKSB7CkBAIC02NTcsNiArNjU3LDcgQEAgSlNW
YWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0YQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQorICAgIHByb3RvdHlwZVNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7
CiAKICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxQcm94eU9iamVjdD4odm0pIHx8IHByb3RvdHlw
ZS5pbmhlcml0czxQcm94eU9iamVjdD4odm0pKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQg
d2l0aCBhIFByb3h5LiJfcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOTcsNyArMTA5Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4
ZWN1dGEKICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxF
bnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHZhcmlhYmxlT2JqZWN0KS0+Z2xv
YmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1WYXJpYWJsZXM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+dmFyaWFibGUoaSk7Ci0gICAgICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmdm0pOwogICAgICAgICAgICAgaWYgKEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBnbG9i
YWxPYmplY3QsIGlkZW50LCBzbG90KSkgewogICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgbWFrZVN0cmlu
ZygiQ2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0
cmluZyhpZGVudC5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CkBAIC0xMTA1LDcgKzEx
MDUsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvcExldmVsRnVuY3Rpb25EZWNsczsgKytp
KSB7CiAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2Nr
LT5mdW5jdGlvbkRlY2woaSk7Ci0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0p
OwogICAgICAgICAgICAgaWYgKEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9u
LT5uYW1lKCksIHNsb3QpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBtYWtlU3RyaW5nKCJDYW4n
dCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGZ1
bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjQ2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25UcgogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgYmFzZVZhbHVlLmdldFBy
b3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIKICAgICBJZGVudGlmaWVyIGlk
ZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CiAKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICBiYXNlVmFsdWUuZ2V0UHJv
cGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7CkBAIC0yMDYsNyArMjA2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcgogICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKIAogICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogCiAgICAgYmFzZVZhbHVlLmdldFBy
b3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjM0LDcgKzYzNCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90
cnlfZ2V0X2IKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wVHJ5R2V0QnlJZD4oKTsKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZy
YW1lLCBieXRlY29kZS5tX2Jhc2UpOwotICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwg
UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKIAogICAgIGJhc2VW
YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBzbG90LmdldFB1cmVSZXN1bHQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93Vk1FbnRyeS5oCShyZXZpc2lvbiAyNjQ2ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXNhbGxvd1ZNRW50cnkuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQCBjbGFzcyBWTTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVk1UeXBlID0gVk0+CiBjbGFzcyBEaXNhbGxvd1ZNRW50cnlJbXBsIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaXNhbGxvd1ZNRW50cnlJbXBsKTsKIHB1YmxpYzoKICAgICBEaXNhbGxv
d1ZNRW50cnlJbXBsKFZNVHlwZSYgdm0pCiAgICAgICAgIDogbV92bSgmdm0pCkBAIC00NCw2ICs0
MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdm0tPmRpc2FsbG93Vk1FbnRyeUNvdW50Kys7CiAg
ICAgfQogCisgICAgRGlzYWxsb3dWTUVudHJ5SW1wbChjb25zdCBEaXNhbGxvd1ZNRW50cnlJbXBs
JiBvdGhlcikKKyAgICAgICAgOiBtX3ZtKG90aGVyLm1fdm0pCisgICAgeworICAgICAgICBtX3Zt
LT5kaXNhbGxvd1ZNRW50cnlDb3VudCsrOworICAgIH0KKwogICAgIH5EaXNhbGxvd1ZNRW50cnlJ
bXBsKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdm0tPmRpc2FsbG93Vk1FbnRy
eUNvdW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3
IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIAogICAgIEpTVmFs
dWUgbmFtZVZhbHVlOwogICAgIGF1dG8gbmFtZVByb3BlcnROYW1lID0gdm0ucHJvcGVydHlOYW1l
cy0+bmFtZTsKLSAgICBQcm9wZXJ0eVNsb3QgbmFtZVNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IG5hbWVTbG90
KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7
CiAKICAgICBKU1ZhbHVlIGN1cnJlbnRPYmogPSB0aGlzOwogICAgIHVuc2lnbmVkIHByb3RvdHlw
ZURlcHRoID0gMDsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2Fu
aXRpemVkVG9TdHJpbmcoCiAKICAgICBKU1ZhbHVlIG1lc3NhZ2VWYWx1ZTsKICAgICBhdXRvIG1l
c3NhZ2VQcm9wZXJ0TmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPm1lc3NhZ2U7Ci0gICAgUHJvcGVy
dHlTbG90IG1lc3NhZ2VTbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBtZXNzYWdlU2xvdCh0aGlzLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogICAgIGlmIChKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVByb3Bl
cnROYW1lLCBtZXNzYWdlU2xvdCkgJiYgbWVzc2FnZVNsb3QuaXNWYWx1ZSgpKQogICAgICAgICBt
ZXNzYWdlVmFsdWUgPSBtZXNzYWdlU2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIG1lc3NhZ2VQ
cm9wZXJ0TmFtZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjQ2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEg
UGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
NyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgSlNGdW5jdGlv
bjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU4KICAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKCkpIHsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKSB7CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVu
IHJlaWZpZWQuCi0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2xvdCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCkBAIC01NjMsMTEgKzU2MywxMiBAQCBib29sIEpTRnVu
Y3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvCiAgICAgICAgIHNsb3QuZGlzYWJsZUNhY2hp
bmcoKTsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBz
dWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5n
IHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDguMTIuOS4KLSAgICAgICAgUHJvcGVydHlT
bG90IGdldFNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBnZXRTbG90KHRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgICAg
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRTbG90KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoRnVuY3Rpb25SYXJlRGF0
YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5yYXJlRGF0YSgpKQogICAgICAgICAgICAgcmFyZURh
dGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwor
ICAgICAgICBnZXRTbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICB9CiAKQEAgLTY0MiwxMSArNjQzLDEyIEBA
IGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkgewogICAgICAgICAvLyBNYWtl
IHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBi
ZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4g
RUNNQS0yNjIgOC4xMi45LgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSwgJnZtKTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVE
YXRhKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBw
cm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CisgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJl
c2V0KCk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3du
UHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
dGhyb3dFeGNlcHRpb24pKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Niw5ICsxNTYsMTAgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IC8vIFRoaXMgZ2V0UHJvcGVydHlTbG90IG9wZXJhdGlvbiBzaG91bGQgbm90IGJlIG9ic2VydmVk
IGJ5IHRoZSBQcm94eS4KICAgICAgICAgICAgIC8vIFNvIHdlIHVzZSBWTUlucXVpcnkuIEFuZCBw
dXJnZSB0aGUgb3BhcXVlIG9iamVjdCBjYXNlcyAocHJveHkgYW5kIG5hbWVzcGFjZSBvYmplY3Qp
IGJ5IGlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgZ3VhcmQuCi0gICAgICAgICAgICBQcm9wZXJ0
eVNsb3QgbGVuZ3RoU2xvdChvYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOworICAgICAgICAgICAgUHJvcGVydHlTbG90IGxlbmd0aFNsb3Qob2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogICAg
ICAgICAgICAgb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGxlbmd0aFNsb3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBsZW5ndGhTbG90LmRpc2FsbG93Vk1F
bnRyeS5yZXNldCgpOwogCiAgICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuYyA9IG9iamVj
dC0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNiw4ICs1MDYsOSBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpzZXRHbG9iYWxUaGlzKFZNJiB2CiAKIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGdl
dEdldHRlckJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogeworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWUoYmFzZSk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAgICAgYmFzZVZhbHVlLmdl
dFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICByZXR1cm4ganND
YXN0PEdldHRlclNldHRlcio+KHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KQEAgLTEzOTQsMTEg
KzEzOTUsMTMgQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSgogCiBi
b29sIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTR2xvYmFsT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KTsKLSAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogICAgIC8vIHNpbGVudGx5
IGlnbm9yZSBhdHRlbXB0cyB0byBhZGQgYWNjZXNzb3JzIGFsaWFzaW5nIHZhcnMuCiAgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBzeW1ib2xUYWJsZUdldCh0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
c2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3du
UHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKIH0KIApAQCAtMjA2NSw3ICsyMDY4LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlYwogICAgICAgICBtX2FycmF5U3BlY2llc1dhdGNo
cG9pbnRTZXQuaW52YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiV2FzIG5vdCBhYmxlIHRv
IHNldCB1cCBhcnJheSBzcGVjaWVzIHdhdGNocG9pbnQuIikpOwogICAgIH07CiAKLSAgICBQcm9w
ZXJ0eVNsb3QgY29uc3RydWN0b3JTbG90KGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0
b3JTbG90KGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmdm0pOwogICAgIGFycmF5UHJvdG90eXBlLT5nZXRPd25Qcm9wZXJ0eVNsb3Qo
YXJyYXlQcm90b3R5cGUsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25z
dHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKGNv
bnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFycmF5UHJvdG90eXBlCkBAIC0yMDc5LDcgKzIw
ODIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjCiAgICAgaWYg
KGNvbnN0cnVjdG9yU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgY29uc3RydWN0
b3JTdHJ1Y3R1cmUgPSBjb25zdHJ1Y3RvclN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1
Y3R1cmUodm0sIGFycmF5Q29uc3RydWN0b3IpOwogCi0gICAgUHJvcGVydHlTbG90IHNwZWNpZXNT
bG90KGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOworICAgIFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVjdG9y
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogICAg
IGFycmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCB0
aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU2xvdCk7CiAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoc3BlY2llc1Nsb3Quc2xvdEJhc2Uo
KSAhPSBhcnJheUNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9y
ZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtNTM0LDcgKzUzNCw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2Fs
Y3VsYXRlZENsYXNzTmFtZShKU08KIAogICAgIC8vIENoZWNrIGZvciBhIGRpc3BsYXkgbmFtZSBv
ZiBvYmouY29uc3RydWN0b3IuCiAgICAgLy8gVGhpcyBpcyB1c2VmdWwgdG8gZ2V0IGBGb29gIGZv
ciB0aGUgYChjbGFzcyBGb28pLnByb3RvdHlwZWAgb2JqZWN0LgotICAgIFByb3BlcnR5U2xvdCBz
bG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwogICAgIGlmIChvYmplY3QtPmdldE93blByb3BlcnR5
U2xvdChvYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IHNsb3QpKSB7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsK
ICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpKSB7CkBAIC01NTgsNyArNTU4LDcgQEAgU3RyaW5n
IEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKEpTTwogICAgICAgICAgICAgSlNWYWx1ZSBw
cm90b1ZhbHVlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICAgICAg
aWYgKHByb3RvVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBw
cm90b09iamVjdCA9IGFzT2JqZWN0KHByb3RvVmFsdWUpOwotICAgICAgICAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KHByb3RvVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOworICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHByb3RvVmFs
dWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHByb3RvT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgc2xvdCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoc2xvdC5pc1ZhbHVlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDEwICsx
NzYsMTYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hlbk5vRXhj
ZXB0aW9uPiB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihi
b29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgZ2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24+IHR5cGVuYW1lIHN0ZDo6cmVz
dWx0X29mPENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKGJvb2wsIFByb3BlcnR5U2xvdCYpPjo6dHlw
ZSBnZXRQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uKSBjb25zdDsKIAorICAgIC8vIHZhbHVlSW5p
dGlhdGluZ1F1ZXJ5IGlzIGZvciB0aGUgUHJvcGVydHlTbG90J3MgdGhpc1ZhbHVlLCB3aGljaCBp
cyBub3QgbmVjZXNzYXJpbHkKKyAgICAvLyB0aGUgc2FtZSBhcyBgdGhpc2Agb2JqZWN0LgorICAg
IHRlbXBsYXRlPGJvb2wgY2hlY2tOdWxsU3RydWN0dXJlID0gZmFsc2U+CisgICAgYm9vbCBoYXNQ
cm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWVJbml0aWF0aW5nUXVlcnkpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEltcGwoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEVf
SUZfQVNTRVJUX0VOQUJMRUQgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIGlu
bGluZSBzdGF0aWMgYm9vbCBoYXNPd25Qcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZUluaXRpYXRpbmdR
dWVyeSk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90SW5saW5l
KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTE0NjUs
NiArMTQ3MSwxMyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmRvUHV0UHJvcGVyCiB9
CiAjZW5kaWYKIAoraW5saW5lIGJvb2wgSlNPYmplY3Q6Omhhc093blByb3BlcnR5U2xvdEZvclZN
SW5xdWlyeShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlSW5pdGlhdGluZ1F1ZXJ5KQor
eworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QodmFsdWVJbml0aWF0aW5nUXVlcnksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZ2bSk7CisgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKwogLy8gSXQgbWF5IHNlZW0g
Y3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSBidXQgaXQgbWFrZXMgYSBiaWcg
ZGlmZmVyZW5jZQogLy8gc2luY2UgdGhpcyBpcyBmdW5jdGlvbiB2ZXJ5IGhvdCBpbiB2YXJpYWJs
ZSBsb29rdXAKIHRlbXBsYXRlPGJvb2wgY2hlY2tOdWxsU3RydWN0dXJlPgpAQCAtMTUwNiw2ICsx
NTE5LDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3RlbXBsYXRlPGJvb2wgY2hlY2tOdWxsU3RydWN0dXJlPgorQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZUluaXRpYXRpbmdRdWVyeSkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOworICAgIFByb3BlcnR5U2xvdCBzbG90KHZhbHVlSW5pdGlhdGluZ1F1ZXJ5LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOworICAgIHJldHVy
biBnZXRQcm9wZXJ0eVNsb3Q8Y2hlY2tOdWxsU3RydWN0dXJlPihnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7Cit9CisKIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QK
IHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI2NDY4
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01ODQsNiArNTg0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpnZXRQcml2YXRlRgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU1ZhbHVlIHZh
bHVlID0gb2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIEpTQ2Vs
bCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOwpAQCAtNTk0LDYgKzU5NSw3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUYKICAgICAgICAgLy8gYXMgaW4gSlNPYmplY3Q6
OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KCkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQogICAgIH0KKyNlbmRpZgogCiAgICAgc2xv
dC5zZXRWYWx1ZShvYmplY3QsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOwogICAgIHJldHVy
biB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJ
KHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDggKzE1Miw5IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBhYnN0cmFjdEFjY2VzcyhKU0dsb2IKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGds
b2JhbE9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JnZtKTsKICAgICAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eSA9IGdsb2JhbE9iamVjdC0+Z2V0T3du
UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7Cisg
ICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgICAgIGlmICghaGFzT3du
UHJvcGVydHkpIHsKICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKFVucmVzb2x2
ZWRQcm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCAwLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRPTUFu
bm90YXRpb24uaCIKKyNpbmNsdWRlICJEaXNhbGxvd1ZNRW50cnkuaCIKICNpbmNsdWRlICJHZXRW
TS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWUuaCIK
QEAgLTExMiwxMCArMTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgTW9kdWxlTmFtZXNwYWNlLCAv
LyBNb2R1bGVOYW1lc3BhY2VPYmplY3QncyBlbnZpcm9ubWVudCBhY2Nlc3MuCiAgICAgfTsKIAot
ICAgIGV4cGxpY2l0IFByb3BlcnR5U2xvdChjb25zdCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSW50ZXJu
YWxNZXRob2RUeXBlIGludGVybmFsTWV0aG9kVHlwZSkKKyAgICBleHBsaWNpdCBQcm9wZXJ0eVNs
b3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUsIEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1l
dGhvZFR5cGUsIFZNKiB2bUZvcklucXVpcnkgPSBudWxscHRyKQogICAgICAgICA6IG1fdGhpc1Zh
bHVlKHRoaXNWYWx1ZSkKICAgICAgICAgLCBtX2ludGVybmFsTWV0aG9kVHlwZShpbnRlcm5hbE1l
dGhvZFR5cGUpCiAgICAgeworICAgICAgICBpZiAoaXNWTUlucXVpcnkoKSkKKyAgICAgICAgICAg
IGRpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKCp2bUZvcklucXVpcnkpOwogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBzbG90QmFzZSAvIHJlY2VpdmVyIGJlaGF2aW9yIGRpZmZlcmVu
Y2UgaW4gY3VzdG9tIHZhbHVlcyBhbmQgY3VzdG9tIGFjY2Vzc29ycy4KQEAgLTM5OSw2ICs0MDIs
OSBAQCBwcml2YXRlOgogICAgIEludGVybmFsTWV0aG9kVHlwZSBtX2ludGVybmFsTWV0aG9kVHlw
ZTsKICAgICBBZGRpdGlvbmFsRGF0YVR5cGUgbV9hZGRpdGlvbmFsRGF0YVR5cGUgeyBBZGRpdGlv
bmFsRGF0YVR5cGU6Ok5vbmUgfTsKICAgICBib29sIG1faXNUYWludGVkQnlPcGFxdWVPYmplY3Qg
eyBmYWxzZSB9OworcHVibGljOgorICAgIE9wdGlvbmFsPERpc2FsbG93Vk1FbnRyeT4gZGlzYWxs
b3dWTUVudHJ5OworcHJpdmF0ZToKICAgICB1bmlvbiB7CiAgICAgICAgIERPTUF0dHJpYnV0ZUFu
bm90YXRpb24gZG9tQXR0cmlidXRlOwogICAgICAgICBNb2R1bGVOYW1lc3BhY2VTbG90IG1vZHVs
ZU5hbWVzcGFjZVNsb3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1w
bGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyOCw3ICs3MjgsNyBAQCBTdHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6
bmFtCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAg
YXV0byBnZXRQcm9wZXJ0eUlmUHVyZU9wZXJhdGlvbiA9IFsmXSAoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpIC0+IFN0cmluZyB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGNhbGxlZSwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90KGNhbGxlZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJnZtKTsKICAgICAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShpZGVudCk7
CiAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjYWxsZWUtPmdldFByb3BlcnR5U2xvdChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MzYsNyArNTM2LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcmFyZURhdGEoKS0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCosIFZNJiwgSlNT
dHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KTsKKyAgICB2
b2lkIHNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIEpTU3RyaW5n
KiB2YWx1ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwogCiAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5m
bzsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MjcsNyArNDI3
LDcgQEAgaW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaQogICAgIHJldHVy
biBjdXJyZW50Q2FwYWNpdHkgKiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7CiB9CiAKLWlubGluZSB2
b2lkIFN0cnVjdHVyZTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEpTU3RyaW5nKiB2YWx1ZSwgUHJvcGVydHlTbG90IHRvU3RyaW5n
VGFnU3ltYm9sU2xvdCkKK2lubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0T2JqZWN0VG9TdHJpbmdW
YWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTU3RyaW5nKiB2YWx1
ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpCiB7CiAgICAgaWYg
KCFoYXNSYXJlRGF0YSgpKQogICAgICAgICBhbGxvY2F0ZVJhcmVEYXRhKHZtKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk1LDcgKzk1LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogbV9zdHJ1Y3R1cmVSYXJlRGF0YTsKIH07CiAK
LXZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIG93blN0cnVjdHVyZSwgSlNT
dHJpbmcqIHZhbHVlLCBQcm9wZXJ0eVNsb3QgdG9TdHJpbmdUYWdTeW1ib2xTbG90KQordm9pZCBT
dHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogb3duU3RydWN0dXJlLCBKU1N0cmluZyog
dmFsdWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgdG9TdHJpbmdUYWdTeW1ib2xTbG90KQogewogICAg
IGlmIChjYW5DYWNoZU9iamVjdFRvU3RyaW5nVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5oCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhclByZXZpb3VzSUQoKTsKIAogICAgIEpTU3RyaW5nKiBvYmplY3RU
b1N0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEpT
R2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTU3RyaW5nKiB2
YWx1ZSwgUHJvcGVydHlTbG90IHRvU3RyaW5nVGFnU3ltYm9sU2xvdCk7CisgICAgdm9pZCBzZXRP
YmplY3RUb1N0cmluZ1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqIGJhc2VT
dHJ1Y3R1cmUsIEpTU3RyaW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0b1N0cmluZ1Rh
Z1N5bWJvbFNsb3QpOwogICAgIHZvaWQgZ2l2ZVVwT25PYmplY3RUb1N0cmluZ1ZhbHVlQ2FjaGUo
KSB7IG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKG9iamVjdFRv
U3RyaW5nQ2FjaGVHaXZlVXBNYXJrZXIoKSk7IH0KICAgICBib29sIGNhbkNhY2hlT2JqZWN0VG9T
dHJpbmdWYWx1ZSgpIHsgcmV0dXJuIG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS51bnZhbGlkYXRlZEdl
dCgpID09IG9iamVjdFRvU3RyaW5nQ2FjaGVHaXZlVXBNYXJrZXIoKTsgfQogICAgIHN0YXRpYyBK
U1N0cmluZyogb2JqZWN0VG9TdHJpbmdDYWNoZUdpdmVVcE1hcmtlcigpIHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxKU1N0cmluZyo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNjQ2
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4OTUsNyArMjg5NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmMKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHByb3BlcnR5
KS0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgIFByb3BlcnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh2
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsK
ICAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTA3LTIxICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXNhbGxvdyBWTSBlbnRyeSB3aGVuIGRvaW5nIGEgVk1J
bnF1aXJ5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0NjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTkxNTMxND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAxLiBDaGFuZ2UgYmluZGluZyB0byB1c2Ug
dGhlIGhhcypQcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkoKSBjb252ZW5pZW5jZSBtZXRob2RzLgor
ICAgICAgICAyLiBSZWJhc2UgYmluZGluZ3MgdGVzdCByZXN1bHRzIHRvIG1hdGNoLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzVmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNz
VmlzaWJsZU5hbWVkUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQdXQpOgorICAgICAgICAoR2VuZXJhdGVQ
dXRCeUluZGV4KToKKyAgICAgICAgKEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246
OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0QnlJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1dEJ5SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXM6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6ZGVmaW5lT3du
UHJvcGVydHkpOgorCiAyMDIwLTA3LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVubmVlZGVkIENlcnRpZmljYXRlSW5mb0Jh
c2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0
cmFjdE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
OCArNTksNyBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVy
dHkgbmFtZWQgUCwgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xv
dCB7ICZ0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTsKLSAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0
aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAg
ICBpZiAoSlNDOjpKU09iamVjdDo6aGFzT3duUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KCZ0aGlz
T2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCAmdGhpc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyAzLiBJZiBPIGltcGxlbWVudHMg
YW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBbT3ZlcnJpZGVCdWlsdGluc10gZXh0ZW5kZWQgYXR0
cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgpAQCAtOTksOCArOTgsNyBAQCBzdGF0aWMgYXV0byBh
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eShKCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQgUCwgdGhlbiByZXR1
cm4gZmFsc2UuCi0gICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0LCBKU0M6
OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBpZiAo
SlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICBpZiAoSlNDOjpKU09iamVjdDo6
aGFzT3duUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCAmdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICAvLyAzLiBJZiBPIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQg
aGFzIHRoZSBbT3ZlcnJpZGVCdWlsdGluc10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVy
biB0cnVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC05NjUs
OSArOTY1LDggQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAgIAogICAgICAgICBteSAkb3ZlcnJp
ZGVCdWlsdGlucyA9ICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRp
bnRlcmZhY2UsICJPdmVycmlkZUJ1aWx0aW5zIik7CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVp
bHRpbnMpIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+aGFzUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdGhpc09iamVjdCkpKSB7XG4iKTsKICAgICAgICAgICAgICRhZGRpdGlvbmFs
SW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQogCkBAIC0xMDQxLDkgKzEwNDAsOCBAQCBzdWIg
R2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIG15ICRhZGRpdGlv
bmFsSW5kZW50ID0gIiI7CiAgICAgICAgIGlmICghJG92ZXJyaWRlQnVpbHRpbnMpIHsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+aGFzUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdGhpc09iamVjdCkpKSB7XG4iKTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5k
ZW50IC49ICIgICAgIjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExNzYsOCArMTE3NCw3IEBA
IHN1YiBHZW5lcmF0ZURlZmluZU93blByb3BlcnR5CiAgICAgICAgICAgICAjIEZJWE1FOiBJcyBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90IHRoZSByaWdodCBmdW5jdGlvbiB0byBjYWxsPyBJ
cyB0aGVyZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbAogICAgICAgICAgICAgIyAgICAgICAgb25seSBs
b29rIGF0IHRoZSBhY3R1YWwgcHJvcGVydGllcywgYW5kIG5vdCBjYWxsIGludG8gb3VyIGltcGxl
bWVudGF0aW9uIG9mIHRoZQogICAgICAgICAgICAgIyAgICAgICAgW1tHZXRPd25Qcm9wZXJ0eV1d
IGhvb2s/Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50
LiAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgaWYgKCFKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAk
YWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgaWYgKCFKU09iamVjdDo6aGFzT3duUHJvcGVydHlT
bG90Rm9yVk1JbnF1aXJ5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdGhpc09iamVjdCkpIHtcbiIpOwogICAgICAgICAgICAgJGFkZGl0aW9uYWxJbmRlbnQg
Lj0gIiAgICAiOwogICAgICAgICB9CiAgICAgICAgIGlmICghJG5hbWVkU2V0dGVyT3BlcmF0aW9u
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsOCBAQCBib29sIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAgfQogCiAgICAgaWYgKCFwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlw
ZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBpZiAoIShw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eVNs
b3RGb3JWTUlucXVpcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB0aGlzT2Jq
ZWN0KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUp
OwpAQCAtMjYzLDkgKzI2Miw4IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGkKICAgICB9CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20o
dm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHlT
bG90Rm9yVk1JbnF1aXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdGhpc09i
amVjdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI5Miw4
ICsyOTAsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAgICAg
fQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsK
KyAgICAgICAgaWYgKCFKU09iamVjdDo6aGFzT3duUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KHRo
aXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCkp
IHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3Io
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsOSAr
MjM0LDggQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogICAgIH0K
IAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5IH07CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
KyAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+aGFzUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdGhpc09iamVjdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
ICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI2Myw5ICsyNjIsOCBAQCBib29sIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nCiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07CiAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSkt
PmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KSkgeworICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlw
ZSktPmhhc1Byb3BlcnR5U2xvdEZvclZNSW5xdWlyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHRoaXNPYmplY3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
dHJ1ZSk7CkBAIC0yOTIsOCArMjkwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZwogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
LSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGlmICghSlNPYmplY3Q6Omhhc093blByb3BlcnR5U2xv
dEZvclZNSW5xdWlyeSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHRoaXNPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5p
c0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjY0
Njg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQzLDkgKzI0Myw4IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4K
ICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
LSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CisgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmhhc1Byb3BlcnR5U2xvdEZvclZNSW5xdWlyeShsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNzIsOSArMjcxLDggQEAgYm9vbCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbgogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90
IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWly
eSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkpIHsKKyAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5oYXNQcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkobGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHRydWUpOwpAQCAtMzAxLDggKzI5OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW4KICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJv
bCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBpZiAoIUpTT2JqZWN0OjpoYXNPd25Qcm9w
ZXJ0eVNsb3RGb3JWTUlucXVpcnkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB0aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2Ny
aXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsyMDcsOCBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2wo
KSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0KSkpIHsKICAgICAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjI4LDkgKzIyNyw4
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEIKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3Qo
cHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpKSB7CisgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI0Nyw4ICsyNDUsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyOjpkZWZpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewot
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgaWYgKCFKU09iamVjdDo6aGFzT3duUHJvcGVydHlTbG90
Rm9yVk1JbnF1aXJ5KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdGhpc09iamVjdCkpIHsKICAgICAgICAgICAgIGlmICghcHJvcGVydHlEZXNjcmlwdG9yLmlz
RGF0YURlc2NyaXB0b3IoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjY0Njg4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOSArMjA3LDggQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07CiAgICAgICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICAgICAgaWYgKCEocHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHlTbG90Rm9yVk1JbnF1
aXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCkpKSB7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTIyOCw5
ICsyMjcsOCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pOwotICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmhhc1Byb3BlcnR5U2xvdEZvclZNSW5xdWlyeShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QpKSkgewogICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yNDcsOCArMjQ1LDcgQEAgYm9vbCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9s
KCkpIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIGlmICghSlNPYmplY3Q6Omhhc093blByb3Bl
cnR5U2xvdEZvclZNSW5xdWlyeSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHRoaXNPYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3Jp
cHRvci5pc0RhdGFEZXNjcmlwdG9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDkgKzIxMyw4IEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmhhc1Byb3BlcnR5U2xvdEZvclZNSW5xdWly
eShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QpKSkgewogICAg
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7CkBAIC0yMzQsOSAr
MjMzLDggQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdQogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5
U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSB9OwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHZtKTsKLSAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KSkpIHsKKyAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkobGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0KSkpIHsKICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAtMjUzLDggKzI1MSw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGUKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICBpZiAoIUpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0
eVNsb3RGb3JWTUlucXVpcnkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB0aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRW
TShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyNjQ2ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw5ICsyMzUsOCBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eVNsb3RGb3JW
TUlucXVpcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0KSkp
IHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlND
OjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpOwpAQCAt
MjU2LDkgKzI1NSw4IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjoK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKLSAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHlTbG90Rm9yVk1JbnF1aXJ5KGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCkpKSB7CiAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3OCw4ICsyNzYsNyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5IH07Ci0gICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7Cisg
ICAgICAgIGlmICghSlNPYmplY3Q6Omhhc093blByb3BlcnR5U2xvdEZvclZNSW5xdWlyeSh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHRoaXNPYmplY3QpKSB7
CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5RGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHJldmlzaW9uIDI2NDY4OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDkgKzI0Myw4
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckEKICAgICB9CiAKICAg
ICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICAgICAgaWYg
KCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVy
dHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAg
ICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmhh
c1Byb3BlcnR5U2xvdEZvclZNSW5xdWlyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHRoaXNPYmplY3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAg
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgdHJ1ZSk7CkBAIC0yNzIsOSArMjcxLDggQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQQogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgaW5kZXgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwogICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKLSAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
KyAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5o
YXNQcm9wZXJ0eVNsb3RGb3JWTUlucXVpcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB0aGlzT2JqZWN0KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUp
OwpAQCAtMzAxLDggKzI5OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckEKICAgICB9CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7Ci0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KSkgeworICAgICAgICBpZiAoIUpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eVNsb3RGb3JW
TUlucXVpcnkodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB0
aGlzT2JqZWN0KSkgewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURlc2NyaXB0b3IuaXNEYXRh
RGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI2NDY4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw5
ICsyMzEsOCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgeworICAgICAgICBp
ZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9w
ZXJ0eVNsb3RGb3JWTUlucXVpcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB0
aGlzT2JqZWN0KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHRydWUpOwpAQCAtMjUyLDkgKzI1MSw4IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3AKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7Ci0gICAgaWYgKCEocHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CisgICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHlTbG90Rm9y
Vk1JbnF1aXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCkp
KSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0cnVlKTsKQEAgLTI3Nyw4ICsyNzUs
NyBAQCBzdGF0aWMgYm9vbCBpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKFByCiB9CiAKICAgICAg
ICAgaWYgKCFpc1VuZm9yZ2VhYmxlUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKLSAgICAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICAgICAgaWYgKCFKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgICAgIGlmICghSlNPYmplY3Q6Omhhc093blByb3Bl
cnR5U2xvdEZvclZNSW5xdWlyeSh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHRoaXNPYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURl
c2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>