<?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>185968</bug_id>
          
          <creation_ts>2018-05-24 17:52:10 -0700</creation_ts>
          <short_desc>Enforce invariant that GetterSetter objects are immutable.</short_desc>
          <delta_ts>2018-05-27 19:51:26 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mitz</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427127</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-05-24 17:52:10 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427130</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-24 17:52:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/40541416&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427131</commentid>
    <comment_count>2</comment_count>
      <attachid>341237</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-05-24 17:55:43 -0700</bug_when>
    <thetext>Created attachment 341237
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427150</commentid>
    <comment_count>3</comment_count>
      <attachid>341237</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-05-24 19:13:50 -0700</bug_when>
    <thetext>Comment on attachment 341237
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Enforce invariant that GetterSetter objects are invariant.

This should say that GetterSetters are immutable, not “invariant”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427174</commentid>
    <comment_count>4</comment_count>
      <attachid>341237</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-24 21:23:58 -0700</bug_when>
    <thetext>Comment on attachment 341237
proposed patch.

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

r=me

&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt; +        Enforce invariant that GetterSetter objects are invariant.
&gt; 
&gt; This should say that GetterSetters are immutable, not “invariant”.

is there a test or some explanation here of what&apos;s going on?

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:3582
&gt; +    RETURN_IF_EXCEPTION(scope, false);

Why can this throw?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427388</commentid>
    <comment_count>5</comment_count>
      <attachid>341237</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-05-25 12:05:43 -0700</bug_when>
    <thetext>Comment on attachment 341237
proposed patch.

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt;&gt; +        Enforce invariant that GetterSetter objects are invariant.
&gt;&gt; 
&gt;&gt; This should say that GetterSetters are immutable, not “invariant”.
&gt; 
&gt; is there a test or some explanation here of what&apos;s going on?

I&apos;ll add some commentary here:

&quot;The code already assumes the invariant that GetterSetter objects are immutable.  For example, the use of @tryGetById in builtins expect this invariant to be true.  The existing code mostly enforces this except for one case: JSObject&apos;s validateAndApplyPropertyDescriptor, where it will re-use the same GetterSetter object.  This patch enforces this invariant by removing the setGetter and setSetter methods of GetterSetter, and requiring the getter/setter callback functions to be specified at construction time.&quot;

&gt;&gt; Source/JavaScriptCore/runtime/JSObject.cpp:3582
&gt;&gt; +    RETURN_IF_EXCEPTION(scope, false);
&gt; 
&gt; Why can this throw?

I carried this over from LLIntSlowPath&apos;s slow_path_put_getter_setter_by_id, and was thinking OOM at the time.  After thinking about it some more, I believe this is not needed.  I&apos;ll remove it (along with the LLIntSlowPath exception check) and retest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427421</commentid>
    <comment_count>6</comment_count>
      <attachid>341314</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-05-25 13:07:08 -0700</bug_when>
    <thetext>Created attachment 341314
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427533</commentid>
    <comment_count>7</comment_count>
      <attachid>341314</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 16:18:21 -0700</bug_when>
    <thetext>Comment on attachment 341314
patch for landing.

Clearing flags on attachment: 341314

Committed r232211: &lt;https://trac.webkit.org/changeset/232211&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427534</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 16:18:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427863</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-05-27 19:51:26 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #7)
&gt; Comment on attachment 341314 [details]
&gt; patch for landing.
&gt; 
&gt; Clearing flags on attachment: 341314
&gt; 
&gt; Committed r232211: &lt;https://trac.webkit.org/changeset/232211&gt;

This broke the 32-bit !ASSERT_DISABLED build. I attempted to fix it in &lt;https://trac.webkit.org/r232231&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341237</attachid>
            <date>2018-05-24 17:55:43 -0700</date>
            <delta_ts>2018-05-25 13:07:08 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-185968.patch</filename>
            <type>text/plain</type>
            <size>25270</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyMTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE4LTA1LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmZvcmNlIGludmFyaWFudCB0aGF0IEdldHRlclNldHRlciBvYmplY3RzIGFyZSBpbnZhcmlhbnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU5NjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwNTQxNDE2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxM
SU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5jcHA6
CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6d2l0aEdldHRlcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkdldHRlclNldHRlcjo6d2l0aFNldHRlcik6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5kZXhlZERl
c2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlSW50cmlu
c2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6cHV0RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6
OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1
cC5jcHA6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljQWNjZXNzb3IpOgorICAgICAgICAqIHJ1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlEZXNj
cmlwdG9yOjpzbG93R2V0dGVyU2V0dGVyKToKKwogMjAxOC0wNS0yMyAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgJHZtIGlmIHdpbmRvdy5p
bnRlcm5hbHMgaXMgZXhwb3NlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMzIxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgxLDIzICsxNzgx
LDE1IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXQKICAgICBBU1NF
UlQob2JqZWN0ICYmIG9iamVjdC0+aXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBhc09iamVjdChvYmplY3QpOwogCi0gICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotCiAg
ICAgSlNWYWx1ZSBnZXR0ZXIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEdldHRlclZhbHVlKTsK
ICAgICBKU1ZhbHVlIHNldHRlciA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU2V0dGVyVmFsdWUp
OwotICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBnZXR0ZXIuaXNVbmRlZmluZWQoKSk7
Ci0gICAgQVNTRVJUKHNldHRlci5pc09iamVjdCgpIHx8IHNldHRlci5pc1VuZGVmaW5lZCgpKTsK
ICAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzT2JqZWN0KCkpOwotCi0g
ICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgYWNjZXNzb3ItPnNldEdldHRl
cih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhc09iamVjdChnZXR0ZXIpKTsKLSAg
ICBpZiAoIXNldHRlci5pc1VuZGVmaW5lZCgpKQotICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0dGVy
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFzT2JqZWN0KHNldHRlcikpOworICAg
IEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXR0ZXIsIHNldHRlcik7CiAgICAgQ29tbW9uU2xvd1Bh
dGhzOjpwdXREaXJlY3RBY2Nlc3NvcldpdGhSZWlmeSh2bSwgZXhlYywgYmFzZU9iamVjdCwgdWlk
LCBhY2Nlc3NvciwgYXR0cmlidXRlKTsKIH0KIAogI2Vsc2UKLXZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9iamVjdCwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgaW50MzJfdCBhdHRyaWJ1dGUsIEpTQ2VsbCogZ2V0dGVy
LCBKU0NlbGwqIHNldHRlcikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgaW50MzJfdCBhdHRyaWJ1dGUsIEpTQ2VsbCogZ2V0dGVyQ2VsbCwgSlNDZWxsKiBzZXR0
ZXJDZWxsKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAtMTgwNSwxNiArMTc5NywxMCBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyU2V0CiAgICAgQVNTRVJUKG9iamVjdCAmJiBv
YmplY3QtPmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3Qo
b2JqZWN0KTsKIAotICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLQotICAgIEFTU0VSVCghZ2V0
dGVyIHx8IGdldHRlci0+aXNPYmplY3QoKSk7Ci0gICAgQVNTRVJUKCFzZXR0ZXIgfHwgc2V0dGVy
LT5pc09iamVjdCgpKTsKICAgICBBU1NFUlQoZ2V0dGVyIHx8IHNldHRlcik7Ci0KLSAgICBpZiAo
Z2V0dGVyKQotICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGdldHRlci0+Z2V0T2JqZWN0KCkpOwotICAgIGlmIChzZXR0ZXIpCi0gICAg
ICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
c2V0dGVyLT5nZXRPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGdldHRlciA9IGdldHRlckNlbGwg
PyBnZXR0ZXJDZWxsLT5nZXRPYmplY3QoKSA6IG51bGxwdHI7CisgICAgSlNPYmplY3QqIHNldHRl
ciA9IHNldHRlckNlbGwgPyBzZXR0ZXJDZWxsLT5nZXRPYmplY3QoKSA6IG51bGxwdHI7CisgICAg
R2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldHRlciwgc2V0dGVyKTsKICAgICBDb21tb25TbG93UGF0
aHM6OnB1dERpcmVjdEFjY2Vzc29yV2l0aFJlaWZ5KHZtLCBleGVjLCBiYXNlT2JqZWN0LCB1aWQs
IGFjY2Vzc29yLCBhdHRyaWJ1dGUpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIzMjE1NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNzgsMjAgKzEwNzgsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9nZXR0ZQogICAgIExMSU5UX0JFR0lOKCk7CiAgICAgQVNTRVJUKExMSU5UX09QKDEp
LmpzVmFsdWUoKS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Ci0gICAgCi0gICAgR2V0dGVyU2V0dGVyKiBhY2Nl
c3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCiAgICAgSlNWYWx1ZSBnZXR0ZXIg
PSBMTElOVF9PUCg0KS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUCg1
KS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRlci5pc1Vu
ZGVmaW5lZCgpKTsKLSAgICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5k
ZWZpbmVkKCkpOwogICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmpl
Y3QoKSk7Ci0gICAgCi0gICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgYWNj
ZXNzb3ItPnNldEdldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhc09iamVj
dChnZXR0ZXIpKTsKLSAgICBpZiAoIXNldHRlci5pc1VuZGVmaW5lZCgpKQotICAgICAgICBhY2Nl
c3Nvci0+c2V0U2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFzT2JqZWN0
KHNldHRlcikpOworICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXR0ZXIsIHNldHRlcik7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdEFjY2Vzc29yV2l0aFJlaWZ5KHZtLCBleGVjLCBiYXNlT2JqZWN0LCBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBhY2Nlc3NvciwgcGNbM10udS5vcGVy
YW5kKTsKICAgICBMTElOVF9FTkQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkocmV2aXNpb24gMjMyMTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsMzIgKzQ1LDYgQEAgdm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KgogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0dGVyKTsKIH0KIAotR2V0dGVy
U2V0dGVyKiBHZXR0ZXJTZXR0ZXI6OndpdGhHZXR0ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogbmV3R2V0dGVyKQotewotICAgIGlmIChpc0dldHRlck51
bGwoKSkgewotICAgICAgICBzZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgbmV3R2V0dGVyKTsK
LSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIAotICAgIEdldHRlclNldHRlciogcmVz
dWx0ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgcmVzdWx0
LT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgbmV3R2V0dGVyKTsKLSAgICByZXN1bHQtPnNl
dFNldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBzZXR0ZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotR2V0dGVyU2V0dGVyKiBHZXR0ZXJTZXR0ZXI6OndpdGhTZXR0ZXIoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogbmV3U2V0dGVyKQotewotICAgIGlm
IChpc1NldHRlck51bGwoKSkgewotICAgICAgICBzZXRTZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwg
bmV3U2V0dGVyKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIAotICAgIEdldHRl
clNldHRlciogcmVzdWx0ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7
Ci0gICAgcmVzdWx0LT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyKCkpOwotICAg
IHJlc3VsdC0+c2V0U2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIG5ld1NldHRlcik7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmgJKHJldmlzaW9uIDIzMjE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyNCArNDQsMzggQEAgY2xhc3MgR2V0
dGVyU2V0dGVyIGZpbmFsIDogcHVibGljIEpTTm9uRgogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiBwcml2YXRlOgotICAgIEdldHRlclNl
dHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgR2V0dGVyU2V0
dGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRl
ciwgSlNPYmplY3QqIHNldHRlcikKICAgICAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPmdl
dHRlclNldHRlclN0cnVjdHVyZSgpKQogICAgIHsKLSAgICAgICAgbV9nZXR0ZXIuc2V0KHZtLCB0
aGlzLCBnbG9iYWxPYmplY3QtPm51bGxHZXR0ZXJGdW5jdGlvbigpKTsKLSAgICAgICAgbV9zZXR0
ZXIuc2V0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QtPm51bGxTZXR0ZXJGdW5jdGlvbigpKTsKKyAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICAgICAgbV9nZXR0ZXIuc2V0KHZtLCB0
aGlzLCBnZXR0ZXIgPyBnZXR0ZXIgOiBnbG9iYWxPYmplY3QtPm51bGxHZXR0ZXJGdW5jdGlvbigp
KTsKKyAgICAgICAgbV9zZXR0ZXIuc2V0KHZtLCB0aGlzLCBzZXR0ZXIgPyBzZXR0ZXIgOiBnbG9i
YWxPYmplY3QtPm51bGxTZXR0ZXJGdW5jdGlvbigpKTsKICAgICB9CiAKIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
IAotICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3Qq
IHNldHRlcikKICAgICB7Ci0gICAgICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0dGVyPih2bS5oZWFwKSkgR2V0dGVyU2V0
dGVyKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRl
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdldHRlclNldHRlcj4odm0uaGVhcCkpIEdl
dHRlclNldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBnZXR0ZXIsIHNldHRlcik7CiAgICAgICAgIGdl
dHRlclNldHRlci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZ2V0dGVyU2V0
dGVyOwogICAgIH0KIAorICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRl
cikKKyAgICB7CisgICAgICAgIEFTU0VSVChnZXR0ZXIuaXNVbmRlZmluZWQoKSB8fCBnZXR0ZXIu
aXNPYmplY3QoKSk7CisgICAgICAgIEFTU0VSVChzZXR0ZXIuaXNVbmRlZmluZWQoKSB8fCBzZXR0
ZXIuaXNPYmplY3QoKSk7CisgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXJPYmplY3QgeyBudWxscHRy
IH07CisgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJPYmplY3QgeyBudWxscHRyIH07CisgICAgICAg
IGlmIChnZXR0ZXIuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIGdldHRlck9iamVjdCA9IGFzT2Jq
ZWN0KGdldHRlcik7CisgICAgICAgIGlmIChzZXR0ZXIuaXNPYmplY3QoKSkKKyAgICAgICAgICAg
IHNldHRlck9iamVjdCA9IGFzT2JqZWN0KHNldHRlcik7CisgICAgICAgIHJldHVybiBjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyT2JqZWN0LCBzZXR0ZXJPYmplY3QpOworICAgIH0KKwog
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRlci5nZXQoKTsgfQpA
QCAtNzYsMTggKzkwLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNHZXR0ZXJOdWxsKCkgY29uc3Qg
eyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PE51bGxHZXR0ZXJGdW5jdGlvbio+KCptX2dldHRlci5n
ZXQoKS0+dm0oKSwgbV9nZXR0ZXIuZ2V0KCkpOyB9CiAgICAgYm9vbCBpc1NldHRlck51bGwoKSBj
b25zdCB7IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8TnVsbFNldHRlckZ1bmN0aW9uKj4oKm1fc2V0
dGVyLmdldCgpLT52bSgpLCBtX3NldHRlci5nZXQoKSk7IH0KIAotICAgIC8vIFNldCB0aGUgZ2V0
dGVyLiBJdCdzIG9ubHkgdmFsaWQgdG8gY2FsbCB0aGlzIGlmIHlvdSd2ZSBuZXZlciBzZXQgdGhl
IGdldHRlciBvbiB0aGlzCi0gICAgLy8gb2JqZWN0LgotICAgIHZvaWQgc2V0R2V0dGVyKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRlcikKLSAgICB7
Ci0gICAgICAgIGlmICghZ2V0dGVyKQotICAgICAgICAgICAgZ2V0dGVyID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0LT5udWxsR2V0dGVyRnVuY3Rpb24oKSk7Ci0KLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaXNHZXR0ZXJOdWxsKCkpOwotICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5j
ZSgpOwotICAgICAgICBtX2dldHRlci5zZXQodm0sIHRoaXMsIGdldHRlcik7Ci0gICAgfQotCiAg
ICAgSlNPYmplY3QqIHNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyLmdldCgpOyB9CiAK
ICAgICBKU09iamVjdCogc2V0dGVyQ29uY3VycmVudGx5KCkgY29uc3QKQEAgLTk3LDIxICs5OSw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICAvLyBTZXQg
dGhlIHNldHRlci4gSXQncyBvbmx5IHZhbGlkIHRvIGNhbGwgdGhpcyBpZiB5b3UndmUgbmV2ZXIg
c2V0IHRoZSBzZXR0ZXIgb24gdGhpcwotICAgIC8vIG9iamVjdC4KLSAgICB2b2lkIHNldFNldHRl
cihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBzZXR0ZXIp
Ci0gICAgewotICAgICAgICBpZiAoIXNldHRlcikKLSAgICAgICAgICAgIHNldHRlciA9IGpzQ2Fz
dDxKU09iamVjdCo+KGdsb2JhbE9iamVjdC0+bnVsbFNldHRlckZ1bmN0aW9uKCkpOwotCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzU2V0dGVyTnVsbCgpKTsKLSAgICAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKLSAgICAgICAgbV9zZXR0ZXIuc2V0KHZtLCB0aGlzLCBzZXR0ZXIpOwotICAg
IH0KLQotICAgIEdldHRlclNldHRlciogd2l0aEdldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqIGdldHRlcik7Ci0gICAgR2V0dGVyU2V0dGVyKiB3aXRoU2V0dGVyKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCogc2V0dGVyKTsKLQogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oR2V0dGVyU2V0dGVyVHlwZSks
IGluZm8oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NiwzMyAr
NDY2LDI4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fdGhyb3dU
eXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgewogICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhy
b3dlciA9IGluaXQub3duZXItPnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKLSAgICAgICAgICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52
bSwgaW5pdC5vd25lcik7Ci0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0
LnZtLCBpbml0Lm93bmVyLCB0aHJvd2VyKTsKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0
U2V0dGVyKGluaXQudm0sIGluaXQub3duZXIsIHRocm93ZXIpOworICAgICAgICAgICAgR2V0dGVy
U2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShpbml0LnZtLCBpbml0
Lm93bmVyLCB0aHJvd2VyLCB0aHJvd2VyKTsKICAgICAgICAgICAgIGluaXQuc2V0KGdldHRlclNl
dHRlcik7CiAgICAgICAgIH0pOwogCiAgICAgbV9udWxsR2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0
aGlzLCBOdWxsR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbEdldHRlckZ1bmN0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAg
ICAgbV9udWxsU2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBOdWxsU2V0dGVyRnVuY3Rpb246
OmNyZWF0ZSh2bSwgTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0
KHZtLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSkpOwotICAgIEdldHRlclNl
dHRlciogcHJvdG9BY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCB0aGlzKTsKLSAg
ICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgbWFrZVN0cmluZygiZ2V0ICIsIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90by5zdHJpbmcoKSksIGdsb2JhbEZ1bmNQcm90b0dldHRlciwgVW5kZXJzY29yZVByb3Rv
SW50cmluc2ljKSk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKHZtLCB0aGlzLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoInNldCAiLCB2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIp
KTsKKyAgICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgdGhpcywKKyAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBtYWtl
U3RyaW5nKCJnZXQgIiwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLnN0cmluZygp
KSwgZ2xvYmFsRnVuY1Byb3RvR2V0dGVyLCBVbmRlcnNjb3JlUHJvdG9JbnRyaW5zaWMpLAorICAg
ICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoInNldCAiLCB2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJv
dG9TZXR0ZXIpKTsKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0Tm9uSW5kZXhBY2Nl
c3Nvcih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vzc29y
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbih2bSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2Jq
ZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCB2bS5zdHJ1Y3R1
cmVDYWNoZS5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSh0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpKTsK
ICAgICBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpT
RnVuY3Rpb24qPihvYmplY3RQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZU9mKSkpOwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJy
b3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIpOwotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMpOwotICAgIGdldHRlclNldHRlci0+
c2V0R2V0dGVyKHZtLCB0aGlzLCB0aHJvd2VyKTsKLSAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRl
cih2bSwgdGhpcywgdGhyb3dlcik7CisgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBH
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgdGhpcywgdGhyb3dlciwgdGhyb3dlcik7CiAgICAgbV90
aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlci5zZXQodm0s
IHRoaXMsIGdldHRlclNldHRlcik7CiAgICAgCiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+aW5p
dFJlc3RyaWN0ZWRQcm9wZXJ0aWVzKGV4ZWMsIHRoaXMpOwogCi0gICAgbV9zcGVjaWVzR2V0dGVy
U2V0dGVyLnNldCh2bSwgdGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMpKTsKLSAg
ICBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSk7CisgICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLnNldCh2bSwgdGhpcywgR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT3Bl
cmF0aW9uc1NwZWNpZXNHZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIG51bGxwdHIpKTsK
IAogICAgIG1fdHlwZWRBcnJheVByb3RvLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+JiBpbml0KSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxNTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0NTYsMjIgKzI0NTYsMTggQEAgYm9vbCBKU09iamVjdDo6cHV0SW5kZXhlZERl
c2NyaXB0b3IoRXhlYwogICAgIH0KIAogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkpIHsKLSAgICAgICAgSlNPYmplY3QqIGdldHRlciA9IDA7CisgICAgICAgIEpTT2Jq
ZWN0KiBnZXR0ZXIgPSBudWxscHRyOwogICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVz
ZW50KCkpCiAgICAgICAgICAgICBnZXR0ZXIgPSBkZXNjcmlwdG9yLmdldHRlck9iamVjdCgpOwog
ICAgICAgICBlbHNlIGlmIChvbGREZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCiAg
ICAgICAgICAgICBnZXR0ZXIgPSBvbGREZXNjcmlwdG9yLmdldHRlck9iamVjdCgpOwotICAgICAg
ICBKU09iamVjdCogc2V0dGVyID0gMDsKKyAgICAgICAgSlNPYmplY3QqIHNldHRlciA9IG51bGxw
dHI7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKICAgICAgICAgICAg
IHNldHRlciA9IGRlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCk7CiAgICAgICAgIGVsc2UgaWYgKG9s
ZERlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkKICAgICAgICAgICAgIHNldHRlciA9
IG9sZERlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCk7CiAKLSAgICAgICAgR2V0dGVyU2V0dGVyKiBh
Y2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOwotICAgICAgICBpZiAoZ2V0dGVyKQotICAgICAgICAgICAgYWNjZXNzb3ItPnNldEdl
dHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXR0ZXIpOwotICAgICAgICBp
ZiAoc2V0dGVyKQotICAgICAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzZXR0ZXIpOworICAgICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vz
c29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgZ2V0dGVyLCBzZXR0ZXIpOwogCiAgICAgICAgIGVudHJ5SW5NYXAtPnNldCh2bSwgbWFwLCBh
Y2Nlc3Nvcik7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5Qcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHk7CkBAIC0zMDU0LDkgKzMwNTAsOCBAQCBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbmRleFNsb3dPckJleW9uCiAKIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUlu
dHJpbnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3Nv
ciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIG1h
a2VTdHJpbmcoImdldCAiLCBuYW1lLnN0cmluZygpKSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNp
Yyk7Ci0gICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbik7
CisgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBudWxscHRyKTsKICAgICByZXR1cm4gcHV0RGlyZWN0Tm9u
SW5kZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMpOwogfQogCkBAIC0z
NDE0LDExICszNDA5LDkgQEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5lcmlj
RGVzY3JpcHRvcigpIHx8IGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAgICAgICAg
IGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSAmJiBvbGREZXNjcmlwdG9yLmlz
QWNjZXNzb3JEZXNjcmlwdG9yKCkpIHsKLSAgICAgICAgICAgIEdldHRlclNldHRlciogYWNjZXNz
b3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKLSAgICAgICAgICAgIGlmIChvbGREZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkKLSAgICAg
ICAgICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIG9sZERlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwotICAgICAgICAgICAgaWYgKG9s
ZERlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKQotICAgICAgICAgICAgICAgIGFjY2Vzc29yLT5z
ZXRTZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgb2xkRGVzY3JpcHRvci5z
ZXR0ZXJPYmplY3QoKSk7CisgICAgICAgICAgICBKU09iamVjdCogZ2V0dGVyID0gb2xkRGVzY3Jp
cHRvci5nZXR0ZXJQcmVzZW50KCkgPyBvbGREZXNjcmlwdG9yLmdldHRlck9iamVjdCgpIDogbnVs
bHB0cjsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBvbGREZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSA/IG9sZERlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCkgOiBudWxscHRyOworICAg
ICAgICAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldHRlciwgc2V0dGVyKTsKICAgICAgICAg
ICAgIHRhcmdldC0+cHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBhY2Nlc3Nv
ciwgYXR0cmlidXRlcyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzQzMywxNiArMzQyNiwxNCBAQCBzdGF0aWMg
Ym9vbCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBhdHRyaWJ1dGVzICY9IH5Qcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7Ci0g
ICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogCi0gICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJl
c2VudCgpKQotICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwotICAgIGVsc2UgaWYgKG9s
ZERlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKQotICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVy
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG9sZERlc2NyaXB0b3IuZ2V0dGVyT2Jq
ZWN0KCkpOwotICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKLSAgICAgICAgYWNj
ZXNzb3ItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlw
dG9yLnNldHRlck9iamVjdCgpKTsKLSAgICBlbHNlIGlmIChvbGREZXNjcmlwdG9yLnNldHRlclBy
ZXNlbnQoKSkKLSAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBvbGREZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKKyAgICBKU09iamVj
dCogZ2V0dGVyID0gZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkKKyAgICAgICAgPyBkZXNjcmlw
dG9yLmdldHRlck9iamVjdCgpIDogb2xkRGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkKKyAgICAg
ICAgPyBvbGREZXNjcmlwdG9yLmdldHRlck9iamVjdCgpIDogbnVsbHB0cjsKKyAgICBKU09iamVj
dCogc2V0dGVyID0gZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkKKyAgICAgICAgPyBkZXNjcmlw
dG9yLnNldHRlck9iamVjdCgpIDogb2xkRGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkKKyAgICAg
ICAgPyBvbGREZXNjcmlwdG9yLnNldHRlck9iamVjdCgpIDogbnVsbHB0cjsKKyAgICBHZXR0ZXJT
ZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgZ2V0dGVyLCBzZXR0ZXIpOwogCiAgICAgdGFyZ2V0LT5wdXREaXJlY3RB
Y2Nlc3NvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1NTksMjkgKzM1
NTAsMzcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIEpT
VmFsdWUgYWNjZXNzb3IgPSBvYmplY3QtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoIWFjY2Vzc29yKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgR2V0dGVyU2V0dGVy
KiBnZXR0ZXJTZXR0ZXI7CisgICAgSlNPYmplY3QqIGdldHRlciA9IG51bGxwdHI7CisgICAgSlNP
YmplY3QqIHNldHRlciA9IG51bGxwdHI7CiAgICAgYm9vbCBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0g
ZmFsc2U7CisKICAgICBpZiAoYWNjZXNzb3IuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgewotICAg
ICAgICBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0ganND
YXN0PEN1c3RvbUdldHRlclNldHRlcio+KGFjY2Vzc29yKTsKICAgICAgICAgaWYgKGN1c3RvbUdl
dHRlclNldHRlci0+c2V0dGVyKCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRl
cih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNl
dHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKSk7CisgICAg
ICAgICAgICBzZXR0ZXIgPSBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNl
dHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKTsKICAgICAgICAgaWYgKGN1c3RvbUdldHRl
clNldHRlci0+Z2V0dGVyKCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRl
ciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7CisgICAgICAg
ICAgICBnZXR0ZXIgPSBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRl
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQoYWNjZXNzb3IuaXNHZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgICAgIGdldHRlclNldHRlciA9IGpz
Q2FzdDxHZXR0ZXJTZXR0ZXIqPihhY2Nlc3Nvcik7CisgICAgICAgIGF1dG8qIGdldHRlclNldHRl
ciA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihhY2Nlc3Nvcik7CisgICAgICAgIGdldHRlciA9IGdl
dHRlclNldHRlci0+Z2V0dGVyKCk7CisgICAgICAgIHNldHRlciA9IGdldHRlclNldHRlci0+c2V0
dGVyKCk7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkgewotICAg
ICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhTZXR0ZXIodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7CisgICAgICAg
IHNldHRlciA9IGRlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCk7CiAgICAgICAgIGdldHRlclNldHRl
ckNoYW5nZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50
KCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoR2V0dGVyKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkp
OworICAgICAgICBnZXR0ZXIgPSBkZXNjcmlwdG9yLmdldHRlck9iamVjdCgpOwogICAgICAgICBn
ZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CisKICAgICBpZiAoY3VycmVudC5hdHRy
aWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYgIWdldHRlclNldHRlckNoYW5nZWQpCiAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXR0ZXIsIHNl
dHRlcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworCiAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgdW5z
aWduZWQgYXR0cnMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJy
ZW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMzIxNTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDggKzMyNiw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZTo6ZmluaXNoQ3IKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+dG9Mb2NhbGVTdHJpbmcsIHR5cGVkQXJyYXlQcm90
b3R5cGVUb0xvY2FsZVN0cmluZ0NvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAgIEpTRnVuY3Rpb24qIHRvU3RyaW5n
VGFnRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgQVND
SUlMaXRlcmFsKCJnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10iKSwgdHlwZWRBcnJheVZpZXdQcm90
b0dldHRlckZ1bmNUb1N0cmluZ1RhZywgTm9JbnRyaW5zaWMpOwotICAgIEdldHRlclNldHRlciog
dG9TdHJpbmdUYWdBY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QpOwotICAgIHRvU3RyaW5nVGFnQWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0
LCB0b1N0cmluZ1RhZ0Z1bmN0aW9uKTsKKyAgICBHZXR0ZXJTZXR0ZXIqIHRvU3RyaW5nVGFnQWNj
ZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1Rh
Z0Z1bmN0aW9uLCBudWxscHRyKTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwgdG9TdHJpbmdUYWdBY2Nlc3Nvciwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIAogICAgIEpTRnVuY3Rpb24qIHZhbHVl
c0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0eXBlZEFycmF5UHJvdG90eXBlVmFs
dWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAJKHJldmlzaW9uIDIzMjE1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE5
ICsyOSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIHZvaWQgcmVpZnlTdGF0aWNBY2Nlc3NvcihWTSYg
dm0sIGNvbnN0IEhhc2hUYWJsZVZhbHVlJiB2YWx1ZSwgSlNPYmplY3QmIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgR2V0dGVyU2V0dGVyKiBhY2Nl
c3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiBnZXR0ZXIgPSBudWxscHRyOwogICAgIGlmICh2YWx1ZS5hY2Nlc3NvckdldHRlcigpKSB7
Ci0gICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICAgICAgaWYgKHZh
bHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluKQotICAgICAgICAg
ICAgZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHZhbHVlLmJ1aWx0aW5BY2Nlc3Nv
ckdldHRlckdlbmVyYXRvcigpKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGdldHRl
ciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFsdWUuYnVpbHRpbkFjY2Vzc29yR2V0dGVyR2Vu
ZXJhdG9yKCkodm0pLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IFN0cmluZyBnZXR0ZXJOYW1lID0gdHJ5TWFrZVN0cmluZyhBU0NJSUxpdGVyYWwoImdldCAiKSwg
U3RyaW5nKCpwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CiAgICAgICAgICAgICBpZiAoIWdl
dHRlck5hbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgZ2V0dGVyTmFtZSwgdmFs
dWUuYWNjZXNzb3JHZXR0ZXIoKSk7CisgICAgICAgICAgICBnZXR0ZXIgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgZ2V0dGVyTmFtZSwgdmFsdWUuYWNjZXNzb3JHZXR0
ZXIoKSk7CiAgICAgICAgIH0KLSAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFs
T2JqZWN0LCBmdW5jdGlvbik7CiAgICAgfQorICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBH
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnZXR0ZXIsIG51bGxwdHIpOwog
ICAgIHRoaXNPYmplY3QucHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcih2bSwgcHJvcGVydHlOYW1l
LCBhY2Nlc3NvciwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlw
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuY3BwCShyZXZpc2lvbiAyMzIxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSwxNyArNzUsMTAgQEAgdm9pZCBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldFVuZGVmaW5lZCgpCiBH
ZXR0ZXJTZXR0ZXIqIFByb3BlcnR5RGVzY3JpcHRvcjo6c2xvd0dldHRlclNldHRlcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIEdldHRlclNldHRlciogZ2V0
dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgaWYgKG1fZ2V0dGVyICYm
ICFtX2dldHRlci5pc1VuZGVmaW5lZCgpKQotICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRl
cih2bSwgZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNPYmplY3QqPihtX2dldHRlcikpOwotICAgIGlm
IChtX3NldHRlciAmJiAhbV9zZXR0ZXIuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgZ2V0dGVyU2V0
dGVyLT5zZXRTZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4obV9zZXR0
ZXIpKTsKLQotICAgIHJldHVybiBnZXR0ZXJTZXR0ZXI7CisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBt
X2dldHRlciAmJiAhbV9nZXR0ZXIuaXNVbmRlZmluZWQoKSA/IGpzQ2FzdDxKU09iamVjdCo+KG1f
Z2V0dGVyKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBtX3NldHRlciAm
JiAhbV9zZXR0ZXIuaXNVbmRlZmluZWQoKSA/IGpzQ2FzdDxKU09iamVjdCo+KG1fc2V0dGVyKSA6
IGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKIH0KIAogSlNWYWx1ZSBQcm9wZXJ0eURlc2NyaXB0
b3I6OmdldHRlcigpIGNvbnN0Cg==
</data>
<flag name="review"
          id="359435"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341314</attachid>
            <date>2018-05-25 13:07:08 -0700</date>
            <delta_ts>2018-05-25 16:18:21 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-185968.patch</filename>
            <type>text/plain</type>
            <size>25797</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyMTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDE4LTA1LTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmZvcmNlIGludmFyaWFudCB0aGF0IEdldHRlclNldHRlciBvYmplY3RzIGFyZSBpbnZhcmlhbnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU5NjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwNTQxNDE2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRoZSBjb2RlIGFscmVhZHkgYXNzdW1lcyB0aGUgaW52
YXJpYW50IHRoYXQgR2V0dGVyU2V0dGVyIG9iamVjdHMgYXJlIGltbXV0YWJsZS4KKyAgICAgICAg
Rm9yIGV4YW1wbGUsIHRoZSB1c2Ugb2YgQHRyeUdldEJ5SWQgaW4gYnVpbHRpbnMgZXhwZWN0IHRo
aXMgaW52YXJpYW50IHRvIGJlIHRydWUuCisgICAgICAgIFRoZSBleGlzdGluZyBjb2RlIG1vc3Rs
eSBlbmZvcmNlcyB0aGlzIGV4Y2VwdCBmb3Igb25lIGNhc2U6IEpTT2JqZWN0J3MKKyAgICAgICAg
dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvciwgd2hlcmUgaXQgd2lsbCByZS11c2Ug
dGhlIHNhbWUgR2V0dGVyU2V0dGVyCisgICAgICAgIG9iamVjdC4KKworICAgICAgICBUaGlzIHBh
dGNoIGVuZm9yY2VzIHRoaXMgaW52YXJpYW50IGJ5IHJlbW92aW5nIHRoZSBzZXRHZXR0ZXIgYW5k
IHNldFNldHRlciBtZXRob2RzCisgICAgICAgIG9mIEdldHRlclNldHRlciwgYW5kIHJlcXVpcmlu
ZyB0aGUgZ2V0dGVyL3NldHRlciBjYWxsYmFjayBmdW5jdGlvbnMgdG8gYmUKKyAgICAgICAgc3Bl
Y2lmaWVkIGF0IGNvbnN0cnVjdGlvbiB0aW1lLgorCisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0dldHRl
clNldHRlci5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6d2l0aEdldHRlcik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkdldHRlclNldHRlcjo6d2l0aFNldHRlcik6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0SW5kZXhlZERlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
TmF0aXZlSW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6cHV0RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OnZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnJlaWZ5U3RhdGljQWNjZXNzb3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlEZXNjcmlwdG9yOjpzbG93R2V0dGVyU2V0dGVyKToKKwogMjAxOC0wNS0yNSAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIGEgbWVtb3J5IHRl
c3Qgd2hlcmUgd2UgY2FuIHZhbGlkYXRlIEpTQ3MgbWluaSBtZW1vcnkgbW9kZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMzIx
OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzgxLDIzICsxNzgxLDE1IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRHZXR0ZXJTZXQKICAgICBBU1NFUlQob2JqZWN0ICYmIG9iamVjdC0+aXNPYmplY3Qo
KSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChvYmplY3QpOwogCi0gICAg
R2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotCiAgICAgSlNWYWx1ZSBnZXR0ZXIgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEdldHRlclZhbHVlKTsKICAgICBKU1ZhbHVlIHNldHRlciA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkU2V0dGVyVmFsdWUpOwotICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3Qo
KSB8fCBnZXR0ZXIuaXNVbmRlZmluZWQoKSk7Ci0gICAgQVNTRVJUKHNldHRlci5pc09iamVjdCgp
IHx8IHNldHRlci5pc1VuZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0KCkg
fHwgc2V0dGVyLmlzT2JqZWN0KCkpOwotCi0gICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkK
LSAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBhc09iamVjdChnZXR0ZXIpKTsKLSAgICBpZiAoIXNldHRlci5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGFzT2JqZWN0KHNldHRlcikpOworICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXR0ZXIs
IHNldHRlcik7CiAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RBY2Nlc3NvcldpdGhSZWlm
eSh2bSwgZXhlYywgYmFzZU9iamVjdCwgdWlkLCBhY2Nlc3NvciwgYXR0cmlidXRlKTsKIH0KIAog
I2Vsc2UKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgaW50MzJf
dCBhdHRyaWJ1dGUsIEpTQ2VsbCogZ2V0dGVyLCBKU0NlbGwqIHNldHRlcikKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwq
IG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgaW50MzJfdCBhdHRyaWJ1dGUsIEpTQ2Vs
bCogZ2V0dGVyQ2VsbCwgSlNDZWxsKiBzZXR0ZXJDZWxsKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwpAQCAt
MTgwNSwxNiArMTc5NywxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVy
U2V0CiAgICAgQVNTRVJUKG9iamVjdCAmJiBvYmplY3QtPmlzT2JqZWN0KCkpOwogICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3Qob2JqZWN0KTsKIAotICAgIEdldHRlclNldHRlciog
YWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKTsKLQotICAgIEFTU0VSVCghZ2V0dGVyIHx8IGdldHRlci0+aXNPYmplY3QoKSk7Ci0g
ICAgQVNTRVJUKCFzZXR0ZXIgfHwgc2V0dGVyLT5pc09iamVjdCgpKTsKICAgICBBU1NFUlQoZ2V0
dGVyIHx8IHNldHRlcik7Ci0KLSAgICBpZiAoZ2V0dGVyKQotICAgICAgICBhY2Nlc3Nvci0+c2V0
R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldHRlci0+Z2V0T2JqZWN0
KCkpOwotICAgIGlmIChzZXR0ZXIpCi0gICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2V0dGVyLT5nZXRPYmplY3QoKSk7CisgICAgSlNP
YmplY3QqIGdldHRlciA9IGdldHRlckNlbGwgPyBnZXR0ZXJDZWxsLT5nZXRPYmplY3QoKSA6IG51
bGxwdHI7CisgICAgSlNPYmplY3QqIHNldHRlciA9IHNldHRlckNlbGwgPyBzZXR0ZXJDZWxsLT5n
ZXRPYmplY3QoKSA6IG51bGxwdHI7CisgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRl
clNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldHRlciwg
c2V0dGVyKTsKICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdEFjY2Vzc29yV2l0aFJlaWZ5
KHZtLCBleGVjLCBiYXNlT2JqZWN0LCB1aWQsIGFjY2Vzc29yLCBhdHRyaWJ1dGUpOwogfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDIzMjE5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzgsMjAgKzEwNzgsMTIgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZQogICAgIExMSU5UX0JFR0lO
KCk7CiAgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKICAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Ci0g
ICAgCi0gICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOwogCiAgICAgSlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9PUCg0KS5qc1ZhbHVlKCk7CiAgICAg
SlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUCg1KS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKGdldHRl
ci5pc09iamVjdCgpIHx8IGdldHRlci5pc1VuZGVmaW5lZCgpKTsKLSAgICBBU1NFUlQoc2V0dGVy
LmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5kZWZpbmVkKCkpOwogICAgIEFTU0VSVChnZXR0ZXIu
aXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmplY3QoKSk7Ci0gICAgCi0gICAgaWYgKCFnZXR0ZXIu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBhc09iamVjdChnZXR0ZXIpKTsKLSAgICBpZiAoIXNldHRlci5p
c1VuZGVmaW5lZCgpKQotICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0dGVyKHZtLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGFzT2JqZWN0KHNldHRlcikpOworICAgIEdldHRlclNldHRlciog
YWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBnZXR0ZXIsIHNldHRlcik7CisKICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVj
dEFjY2Vzc29yV2l0aFJlaWZ5KHZtLCBleGVjLCBiYXNlT2JqZWN0LCBleGVjLT5jb2RlQmxvY2so
KS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBhY2Nlc3NvciwgcGNbM10udS5vcGVyYW5k
KTsKICAgICBMTElOVF9FTkQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dldHRlclNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkocmV2aXNpb24gMjMyMTk3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsMzIgKzQ1LDYgQEAgdm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0dGVyKTsKIH0KIAotR2V0dGVyU2V0
dGVyKiBHZXR0ZXJTZXR0ZXI6OndpdGhHZXR0ZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogbmV3R2V0dGVyKQotewotICAgIGlmIChpc0dldHRlck51bGwo
KSkgewotICAgICAgICBzZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgbmV3R2V0dGVyKTsKLSAg
ICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIAotICAgIEdldHRlclNldHRlciogcmVzdWx0
ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgcmVzdWx0LT5z
ZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgbmV3R2V0dGVyKTsKLSAgICByZXN1bHQtPnNldFNl
dHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBzZXR0ZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotR2V0dGVyU2V0dGVyKiBHZXR0ZXJTZXR0ZXI6OndpdGhTZXR0ZXIoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogbmV3U2V0dGVyKQotewotICAgIGlmIChp
c1NldHRlck51bGwoKSkgewotICAgICAgICBzZXRTZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgbmV3
U2V0dGVyKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIAotICAgIEdldHRlclNl
dHRlciogcmVzdWx0ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7Ci0g
ICAgcmVzdWx0LT5zZXRHZXR0ZXIodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyKCkpOwotICAgIHJl
c3VsdC0+c2V0U2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIG5ld1NldHRlcik7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQogSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJ
KHJldmlzaW9uIDIzMjE5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwyNCArNDQsMzggQEAgY2xhc3MgR2V0dGVy
U2V0dGVyIGZpbmFsIDogcHVibGljIEpTTm9uRgogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiBwcml2YXRlOgotICAgIEdldHRlclNldHRl
cihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgR2V0dGVyU2V0dGVy
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRlciwg
SlNPYmplY3QqIHNldHRlcikKICAgICAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPmdldHRl
clNldHRlclN0cnVjdHVyZSgpKQogICAgIHsKLSAgICAgICAgbV9nZXR0ZXIuc2V0KHZtLCB0aGlz
LCBnbG9iYWxPYmplY3QtPm51bGxHZXR0ZXJGdW5jdGlvbigpKTsKLSAgICAgICAgbV9zZXR0ZXIu
c2V0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QtPm51bGxTZXR0ZXJGdW5jdGlvbigpKTsKKyAgICAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICAgICAgbV9nZXR0ZXIuc2V0KHZtLCB0aGlz
LCBnZXR0ZXIgPyBnZXR0ZXIgOiBnbG9iYWxPYmplY3QtPm51bGxHZXR0ZXJGdW5jdGlvbigpKTsK
KyAgICAgICAgbV9zZXR0ZXIuc2V0KHZtLCB0aGlzLCBzZXR0ZXIgPyBzZXR0ZXIgOiBnbG9iYWxP
YmplY3QtPm51bGxTZXR0ZXJGdW5jdGlvbigpKTsKICAgICB9CiAKIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAot
ICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCisgICAgc3RhdGljIEdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNl
dHRlcikKICAgICB7Ci0gICAgICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0dGVyPih2bS5oZWFwKSkgR2V0dGVyU2V0dGVy
KHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdldHRlclNldHRlcj4odm0uaGVhcCkpIEdldHRl
clNldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBnZXR0ZXIsIHNldHRlcik7CiAgICAgICAgIGdldHRl
clNldHRlci0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZ2V0dGVyU2V0dGVy
OwogICAgIH0KIAorICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRlcikK
KyAgICB7CisgICAgICAgIEFTU0VSVChnZXR0ZXIuaXNVbmRlZmluZWQoKSB8fCBnZXR0ZXIuaXNP
YmplY3QoKSk7CisgICAgICAgIEFTU0VSVChzZXR0ZXIuaXNVbmRlZmluZWQoKSB8fCBzZXR0ZXIu
aXNPYmplY3QoKSk7CisgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXJPYmplY3QgeyBudWxscHRyIH07
CisgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJPYmplY3QgeyBudWxscHRyIH07CisgICAgICAgIGlm
IChnZXR0ZXIuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIGdldHRlck9iamVjdCA9IGFzT2JqZWN0
KGdldHRlcik7CisgICAgICAgIGlmIChzZXR0ZXIuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHNl
dHRlck9iamVjdCA9IGFzT2JqZWN0KHNldHRlcik7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgZ2V0dGVyT2JqZWN0LCBzZXR0ZXJPYmplY3QpOworICAgIH0KKwogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAg
IEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRlci5nZXQoKTsgfQpAQCAt
NzYsMTggKzkwLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNHZXR0ZXJOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gISFqc0R5bmFtaWNDYXN0PE51bGxHZXR0ZXJGdW5jdGlvbio+KCptX2dldHRlci5nZXQo
KS0+dm0oKSwgbV9nZXR0ZXIuZ2V0KCkpOyB9CiAgICAgYm9vbCBpc1NldHRlck51bGwoKSBjb25z
dCB7IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8TnVsbFNldHRlckZ1bmN0aW9uKj4oKm1fc2V0dGVy
LmdldCgpLT52bSgpLCBtX3NldHRlci5nZXQoKSk7IH0KIAotICAgIC8vIFNldCB0aGUgZ2V0dGVy
LiBJdCdzIG9ubHkgdmFsaWQgdG8gY2FsbCB0aGlzIGlmIHlvdSd2ZSBuZXZlciBzZXQgdGhlIGdl
dHRlciBvbiB0aGlzCi0gICAgLy8gb2JqZWN0LgotICAgIHZvaWQgc2V0R2V0dGVyKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRlcikKLSAgICB7Ci0g
ICAgICAgIGlmICghZ2V0dGVyKQotICAgICAgICAgICAgZ2V0dGVyID0ganNDYXN0PEpTT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0LT5udWxsR2V0dGVyRnVuY3Rpb24oKSk7Ci0KLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNHZXR0ZXJOdWxsKCkpOwotICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OwotICAgICAgICBtX2dldHRlci5zZXQodm0sIHRoaXMsIGdldHRlcik7Ci0gICAgfQotCiAgICAg
SlNPYmplY3QqIHNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyLmdldCgpOyB9CiAKICAg
ICBKU09iamVjdCogc2V0dGVyQ29uY3VycmVudGx5KCkgY29uc3QKQEAgLTk3LDIxICs5OSw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICAvLyBTZXQgdGhl
IHNldHRlci4gSXQncyBvbmx5IHZhbGlkIHRvIGNhbGwgdGhpcyBpZiB5b3UndmUgbmV2ZXIgc2V0
IHRoZSBzZXR0ZXIgb24gdGhpcwotICAgIC8vIG9iamVjdC4KLSAgICB2b2lkIHNldFNldHRlcihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBzZXR0ZXIpCi0g
ICAgewotICAgICAgICBpZiAoIXNldHRlcikKLSAgICAgICAgICAgIHNldHRlciA9IGpzQ2FzdDxK
U09iamVjdCo+KGdsb2JhbE9iamVjdC0+bnVsbFNldHRlckZ1bmN0aW9uKCkpOwotCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKGlzU2V0dGVyTnVsbCgpKTsKLSAgICAgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsKLSAgICAgICAgbV9zZXR0ZXIuc2V0KHZtLCB0aGlzLCBzZXR0ZXIpOwotICAgIH0K
LQotICAgIEdldHRlclNldHRlciogd2l0aEdldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIGdldHRlcik7Ci0gICAgR2V0dGVyU2V0dGVyKiB3aXRoU2V0dGVyKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogc2V0dGVyKTsKLQogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oR2V0dGVyU2V0dGVyVHlwZSksIGlu
Zm8oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NiwzMyArNDY2
LDI4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fdGhyb3dUeXBl
RXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgewogICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dl
ciA9IGluaXQub3duZXItPnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKLSAgICAgICAgICAgIEdl
dHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52bSwg
aW5pdC5vd25lcik7Ci0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0LnZt
LCBpbml0Lm93bmVyLCB0aHJvd2VyKTsKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0
dGVyKGluaXQudm0sIGluaXQub3duZXIsIHRocm93ZXIpOworICAgICAgICAgICAgR2V0dGVyU2V0
dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93
bmVyLCB0aHJvd2VyLCB0aHJvd2VyKTsKICAgICAgICAgICAgIGluaXQuc2V0KGdldHRlclNldHRl
cik7CiAgICAgICAgIH0pOwogCiAgICAgbV9udWxsR2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlz
LCBOdWxsR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbEdldHRlckZ1bmN0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAg
bV9udWxsU2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBOdWxsU2V0dGVyRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSkpOwotICAgIEdldHRlclNldHRl
ciogcHJvdG9BY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCB0aGlzKTsKLSAgICBw
cm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMCwgbWFrZVN0cmluZygiZ2V0ICIsIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQ
cm90by5zdHJpbmcoKSksIGdsb2JhbEZ1bmNQcm90b0dldHRlciwgVW5kZXJzY29yZVByb3RvSW50
cmluc2ljKSk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKHZtLCB0aGlzLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoInNldCAiLCB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpKTsK
KyAgICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgdGhpcywKKyAgICAgICAgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBtYWtlU3Ry
aW5nKCJnZXQgIiwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLnN0cmluZygpKSwg
Z2xvYmFsRnVuY1Byb3RvR2V0dGVyLCBVbmRlcnNjb3JlUHJvdG9JbnRyaW5zaWMpLAorICAgICAg
ICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoInNldCAiLCB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJvdG9T
ZXR0ZXIpKTsKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vzc29yLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRo
b3V0VHJhbnNpdGlvbih2bSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0
U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCB2bS5zdHJ1Y3R1cmVD
YWNoZS5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSh0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpKTsKICAg
ICBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVu
Y3Rpb24qPihvYmplY3RQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT52YWx1ZU9mKSkpOwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVBbmRDYWxsZXIpOwotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVy
ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMpOwotICAgIGdldHRlclNldHRlci0+c2V0
R2V0dGVyKHZtLCB0aGlzLCB0aHJvd2VyKTsKLSAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcih2
bSwgdGhpcywgdGhyb3dlcik7CisgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgdGhpcywgdGhyb3dlciwgdGhyb3dlcik7CiAgICAgbV90aHJv
d1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlci5zZXQodm0sIHRo
aXMsIGdldHRlclNldHRlcik7CiAgICAgCiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+aW5pdFJl
c3RyaWN0ZWRQcm9wZXJ0aWVzKGV4ZWMsIHRoaXMpOwogCi0gICAgbV9zcGVjaWVzR2V0dGVyU2V0
dGVyLnNldCh2bSwgdGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMpKTsKLSAgICBt
X3NwZWNpZXNHZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLCB0
aGlzKSk7CisgICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLnNldCh2bSwgdGhpcywgR2V0dGVyU2V0
dGVyOjpjcmVhdGUodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT3BlcmF0
aW9uc1NwZWNpZXNHZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIG51bGxwdHIpKTsKIAog
ICAgIG1fdHlwZWRBcnJheVByb3RvLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+JiBpbml0KSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxOTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NTYsMjIgKzI0NTYsMTggQEAgYm9vbCBKU09iamVjdDo6cHV0SW5kZXhlZERlc2Ny
aXB0b3IoRXhlYwogICAgIH0KIAogICAgIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkpIHsKLSAgICAgICAgSlNPYmplY3QqIGdldHRlciA9IDA7CisgICAgICAgIEpTT2JqZWN0
KiBnZXR0ZXIgPSBudWxscHRyOwogICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50
KCkpCiAgICAgICAgICAgICBnZXR0ZXIgPSBkZXNjcmlwdG9yLmdldHRlck9iamVjdCgpOwogICAg
ICAgICBlbHNlIGlmIChvbGREZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCiAgICAg
ICAgICAgICBnZXR0ZXIgPSBvbGREZXNjcmlwdG9yLmdldHRlck9iamVjdCgpOwotICAgICAgICBK
U09iamVjdCogc2V0dGVyID0gMDsKKyAgICAgICAgSlNPYmplY3QqIHNldHRlciA9IG51bGxwdHI7
CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKICAgICAgICAgICAgIHNl
dHRlciA9IGRlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCk7CiAgICAgICAgIGVsc2UgaWYgKG9sZERl
c2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkKICAgICAgICAgICAgIHNldHRlciA9IG9s
ZERlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCk7CiAKLSAgICAgICAgR2V0dGVyU2V0dGVyKiBhY2Nl
c3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgICAgICBpZiAoZ2V0dGVyKQotICAgICAgICAgICAgYWNjZXNzb3ItPnNldEdldHRl
cih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXR0ZXIpOwotICAgICAgICBpZiAo
c2V0dGVyKQotICAgICAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBzZXR0ZXIpOworICAgICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29y
ID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
Z2V0dGVyLCBzZXR0ZXIpOwogCiAgICAgICAgIGVudHJ5SW5NYXAtPnNldCh2bSwgbWFwLCBhY2Nl
c3Nvcik7CiAgICAgICAgIGVudHJ5SW5NYXAtPmF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmF0dHJp
YnV0ZXNPdmVycmlkaW5nQ3VycmVudChvbGREZXNjcmlwdG9yKSAmIH5Qcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHk7CkBAIC0zMDU0LDkgKzMwNTAsOCBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbmRleFNsb3dPckJleW9uCiAKIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUludHJp
bnNpY0dldHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElkZW50aWZp
ZXIgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5z
aWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIG1ha2VT
dHJpbmcoImdldCAiLCBuYW1lLnN0cmluZygpKSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7
Ci0gICAgYWNjZXNzb3ItPnNldEdldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbik7Cisg
ICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uLCBudWxscHRyKTsKICAgICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5k
ZXhBY2Nlc3Nvcih2bSwgbmFtZSwgYWNjZXNzb3IsIGF0dHJpYnV0ZXMpOwogfQogCkBAIC0zNDE0
LDExICszNDA5LDkgQEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVz
Y3JpcHRvcigpIHx8IGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlm
IChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSAmJiBvbGREZXNjcmlwdG9yLmlzQWNj
ZXNzb3JEZXNjcmlwdG9yKCkpIHsKLSAgICAgICAgICAgIEdldHRlclNldHRlciogYWNjZXNzb3Ig
PSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
LSAgICAgICAgICAgIGlmIChvbGREZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkKLSAgICAgICAg
ICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIG9sZERlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwotICAgICAgICAgICAgaWYgKG9sZERl
c2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKQotICAgICAgICAgICAgICAgIGFjY2Vzc29yLT5zZXRT
ZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgb2xkRGVzY3JpcHRvci5zZXR0
ZXJPYmplY3QoKSk7CisgICAgICAgICAgICBKU09iamVjdCogZ2V0dGVyID0gb2xkRGVzY3JpcHRv
ci5nZXR0ZXJQcmVzZW50KCkgPyBvbGREZXNjcmlwdG9yLmdldHRlck9iamVjdCgpIDogbnVsbHB0
cjsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzZXR0ZXIgPSBvbGREZXNjcmlwdG9yLnNldHRlclBy
ZXNlbnQoKSA/IG9sZERlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCkgOiBudWxscHRyOworICAgICAg
ICAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldHRlciwgc2V0dGVyKTsKICAgICAgICAgICAg
IHRhcmdldC0+cHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBhY2Nlc3Nvciwg
YXR0cmlidXRlcyB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzQzMywxNiArMzQyNiwxNCBAQCBzdGF0aWMgYm9v
bCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBhdHRyaWJ1dGVzICY9IH5Qcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7Ci0gICAg
R2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogCi0gICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2Vu
dCgpKQotICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwotICAgIGVsc2UgaWYgKG9sZERl
c2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKQotICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG9sZERlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0
KCkpOwotICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKLSAgICAgICAgYWNjZXNz
b3ItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9y
LnNldHRlck9iamVjdCgpKTsKLSAgICBlbHNlIGlmIChvbGREZXNjcmlwdG9yLnNldHRlclByZXNl
bnQoKSkKLSAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBvbGREZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKKyAgICBKU09iamVjdCog
Z2V0dGVyID0gZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkKKyAgICAgICAgPyBkZXNjcmlwdG9y
LmdldHRlck9iamVjdCgpIDogb2xkRGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkKKyAgICAgICAg
PyBvbGREZXNjcmlwdG9yLmdldHRlck9iamVjdCgpIDogbnVsbHB0cjsKKyAgICBKU09iamVjdCog
c2V0dGVyID0gZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkKKyAgICAgICAgPyBkZXNjcmlwdG9y
LnNldHRlck9iamVjdCgpIDogb2xkRGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkKKyAgICAgICAg
PyBvbGREZXNjcmlwdG9yLnNldHRlck9iamVjdCgpIDogbnVsbHB0cjsKKyAgICBHZXR0ZXJTZXR0
ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZ2V0dGVyLCBzZXR0ZXIpOwogCiAgICAgdGFyZ2V0LT5wdXREaXJlY3RBY2Nl
c3NvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1NTksMjkgKzM1NTAs
MzYgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIEpTVmFs
dWUgYWNjZXNzb3IgPSBvYmplY3QtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoIWFjY2Vzc29yKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgR2V0dGVyU2V0dGVyKiBn
ZXR0ZXJTZXR0ZXI7CisgICAgSlNPYmplY3QqIGdldHRlciA9IG51bGxwdHI7CisgICAgSlNPYmpl
Y3QqIHNldHRlciA9IG51bGxwdHI7CiAgICAgYm9vbCBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gZmFs
c2U7CisKICAgICBpZiAoYWNjZXNzb3IuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgewotICAgICAg
ICBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKICAgICAgICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0ganNDYXN0
PEN1c3RvbUdldHRlclNldHRlcio+KGFjY2Vzc29yKTsKICAgICAgICAgaWYgKGN1c3RvbUdldHRl
clNldHRlci0+c2V0dGVyKCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcih2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRl
ciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKSk7CisgICAgICAg
ICAgICBzZXR0ZXIgPSBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRl
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKTsKICAgICAgICAgaWYgKGN1c3RvbUdldHRlclNl
dHRlci0+Z2V0dGVyKCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwg
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7CisgICAgICAgICAg
ICBnZXR0ZXIgPSBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQo
YWNjZXNzb3IuaXNHZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgICAgIGdldHRlclNldHRlciA9IGpzQ2Fz
dDxHZXR0ZXJTZXR0ZXIqPihhY2Nlc3Nvcik7CisgICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9
IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihhY2Nlc3Nvcik7CisgICAgICAgIGdldHRlciA9IGdldHRl
clNldHRlci0+Z2V0dGVyKCk7CisgICAgICAgIHNldHRlciA9IGdldHRlclNldHRlci0+c2V0dGVy
KCk7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkgewotICAgICAg
ICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhTZXR0ZXIodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7CisgICAgICAgIHNl
dHRlciA9IGRlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCk7CiAgICAgICAgIGdldHRlclNldHRlckNo
YW5nZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkp
IHsKLSAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoR2V0dGVyKHZtLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwor
ICAgICAgICBnZXR0ZXIgPSBkZXNjcmlwdG9yLmdldHRlck9iamVjdCgpOwogICAgICAgICBnZXR0
ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CisKICAgICBpZiAoY3VycmVudC5hdHRyaWJ1
dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYgIWdldHRlclNldHRlckNoYW5nZWQpCiAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXR0ZXIsIHNldHRl
cik7CisKICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRp
bmdDdXJyZW50KGN1cnJlbnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDIzMjE5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsOCArMzI2LDcgQEAgdm9pZCBK
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcgogICAgIEpTQ19CVUlMVElOX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT50b0xvY2FsZVN0cmluZywg
dHlwZWRBcnJheVByb3RvdHlwZVRvTG9jYWxlU3RyaW5nQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgSlNGdW5j
dGlvbiogdG9TdHJpbmdUYWdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAwLCBBU0NJSUxpdGVyYWwoImdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSIpLCB0eXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnLCBOb0ludHJpbnNpYyk7Ci0gICAg
R2V0dGVyU2V0dGVyKiB0b1N0cmluZ1RhZ0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgdG9TdHJpbmdUYWdBY2Nlc3Nvci0+c2V0R2V0dGVyKHZt
LCBnbG9iYWxPYmplY3QsIHRvU3RyaW5nVGFnRnVuY3Rpb24pOworICAgIEdldHRlclNldHRlciog
dG9TdHJpbmdUYWdBY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHRvU3RyaW5nVGFnRnVuY3Rpb24sIG51bGxwdHIpOwogICAgIHB1dERpcmVjdE5vbkluZGV4
QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmlu
Z1RhZ0FjY2Vzc29yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCiAgICAgSlNG
dW5jdGlvbiogdmFsdWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHR5cGVkQXJy
YXlQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAkocmV2aXNpb24gMjMyMTk3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTkgKzI5LDE4IEBAIG5hbWVzcGFjZSBKU0Mgewogdm9pZCByZWlmeVN0YXRp
Y0FjY2Vzc29yKFZNJiB2bSwgY29uc3QgSGFzaFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYg
dGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKTsKLSAgICBHZXR0
ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIGdldHRlciA9IG51bGxwdHI7CiAgICAgaWYgKHZhbHVlLmFjY2Vz
c29yR2V0dGVyKCkpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBudWxscHRyOwog
ICAgICAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0
aW4pCi0gICAgICAgICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdmFsdWUu
YnVpbHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkodm0pLCBnbG9iYWxPYmplY3QpOworICAg
ICAgICAgICAgZ2V0dGVyID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB2YWx1ZS5idWlsdGluQWNj
ZXNzb3JHZXR0ZXJHZW5lcmF0b3IoKSh2bSksIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgU3RyaW5nIGdldHRlck5hbWUgPSB0cnlNYWtlU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiZ2V0ICIpLCBTdHJpbmcoKnByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKICAgICAg
ICAgICAgIGlmICghZ2V0dGVyTmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBn
ZXR0ZXJOYW1lLCB2YWx1ZS5hY2Nlc3NvckdldHRlcigpKTsKKyAgICAgICAgICAgIGdldHRlciA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCBnZXR0ZXJOYW1lLCB2YWx1
ZS5hY2Nlc3NvckdldHRlcigpKTsKICAgICAgICAgfQotICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0
dGVyKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uKTsKICAgICB9CisgICAgR2V0dGVyU2V0dGVy
KiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdldHRl
ciwgbnVsbHB0cik7CiAgICAgdGhpc09iamVjdC5wdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKHZt
LCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0
dHJpYnV0ZXMoKSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAJKHJldmlzaW9uIDIzMjE5NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc1LDE3ICs3NSwxMCBAQCB2b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0
VW5kZWZpbmVkKCkKIEdldHRlclNldHRlciogUHJvcGVydHlEZXNjcmlwdG9yOjpzbG93R2V0dGVy
U2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgR2V0
dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBp
ZiAobV9nZXR0ZXIgJiYgIW1fZ2V0dGVyLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGdldHRlclNl
dHRlci0+c2V0R2V0dGVyKHZtLCBnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KG1fZ2V0
dGVyKSk7Ci0gICAgaWYgKG1fc2V0dGVyICYmICFtX3NldHRlci5pc1VuZGVmaW5lZCgpKQotICAg
ICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcih2bSwgZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNP
YmplY3QqPihtX3NldHRlcikpOwotCi0gICAgcmV0dXJuIGdldHRlclNldHRlcjsKKyAgICBKU1Zh
bHVlIGdldHRlciA9IG1fZ2V0dGVyICYmICFtX2dldHRlci5pc1VuZGVmaW5lZCgpID8ganNDYXN0
PEpTT2JqZWN0Kj4obV9nZXR0ZXIpIDoganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHNldHRl
ciA9IG1fc2V0dGVyICYmICFtX3NldHRlci5pc1VuZGVmaW5lZCgpID8ganNDYXN0PEpTT2JqZWN0
Kj4obV9zZXR0ZXIpIDoganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIpOwogfQogCiBKU1ZhbHVlIFBy
b3BlcnR5RGVzY3JpcHRvcjo6Z2V0dGVyKCkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>