<?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>171155</bug_id>
          
          <creation_ts>2017-04-21 18:22:07 -0700</creation_ts>
          <short_desc>Respect fidelity order when reading web content from item providers</short_desc>
          <delta_ts>2017-04-24 20:19:27 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>171156</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300049</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-21 18:22:07 -0700</bug_when>
    <thetext>Work towards &lt;rdar://problem/31356937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300168</commentid>
    <comment_count>1</comment_count>
      <attachid>307902</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-22 01:52:06 -0700</bug_when>
    <thetext>Created attachment 307902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300184</commentid>
    <comment_count>2</comment_count>
      <attachid>307906</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-22 03:49:19 -0700</bug_when>
    <thetext>Created attachment 307906
Attempt to fix OpenSource iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300571</commentid>
    <comment_count>3</comment_count>
      <attachid>307906</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-24 11:03:42 -0700</bug_when>
    <thetext>Comment on attachment 307906
Attempt to fix OpenSource iOS builds

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

&gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:81
&gt; +    RetainPtr&lt;id&lt;UIItemProviderWriting&gt;&gt; _representingObject;

Space after id?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300788</commentid>
    <comment_count>4</comment_count>
      <attachid>308039</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-24 18:41:40 -0700</bug_when>
    <thetext>Created attachment 308039
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300796</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-24 18:45:37 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #3)
&gt; Comment on attachment 307906 [details]
&gt; Attempt to fix OpenSource iOS builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307906&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebItemProviderPasteboard.mm:81
&gt; &gt; +    RetainPtr&lt;id&lt;UIItemProviderWriting&gt;&gt; _representingObject;
&gt; 
&gt; Space after id?

Fixed -- thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300801</commentid>
    <comment_count>6</comment_count>
      <attachid>308042</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-24 18:54:54 -0700</bug_when>
    <thetext>Created attachment 308042
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300841</commentid>
    <comment_count>7</comment_count>
      <attachid>308042</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-24 19:35:06 -0700</bug_when>
    <thetext>Comment on attachment 308042
Patch for landing

Clearing flags on attachment: 308042

Committed r215714: &lt;http://trac.webkit.org/changeset/215714&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307902</attachid>
            <date>2017-04-22 01:52:06 -0700</date>
            <delta_ts>2017-04-22 03:49:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171155-20170422015206.patch</filename>
            <type>text/plain</type>
            <size>54884</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWExZDk3MWQ4MTU3ODUw
NWMwODU2YmFlMjg5YTg3MmUxYmExMjc3NC4uMTllZjUwMmQzMmZlOTgwYzg1YzczZWYxOGYzN2Vm
YmViNjgwOTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExMiBAQAogMjAxNy0wNC0yMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXNwZWN0IGZp
ZGVsaXR5IG9yZGVyIHdoZW4gcmVhZGluZyB3ZWIgY29udGVudCBmcm9tIGl0ZW0gcHJvdmlkZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgd2hlbiByZWFkaW5nIHdlYiBj
b250ZW50IGZyb20gcGFzdGVib2FyZHMsIHdlIGFzc3VtZSB0aGUgb2xkIFVJUGFzdGVib2FyZC9O
U1Bhc3RlYm9hcmQgbW9kZWwgd2hlcmVpbgorICAgICAgICB0aGUgZGVzdGluYXRpb24gbXVzdCBk
ZXRlcm1pbmUgd2hpY2ggb2YgdGhlIGl0ZW1zIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSB0aGUgaGln
aGVzdCBmaWRlbGl0eSBmb3IgdGhlIHB1cnBvc2VzIG9mCisgICAgICAgIGluc2VydGluZyBpbnRv
IGFuIGVkaXRhYmxlIGFyZWEuIFRoaXMgZGVzdGluYXRpb24tc2lkZSBmaWRlbGl0eSByYW5raW5n
IGlzIGRldGVybWluZWQgc29sZWx5IGJ5IHRoZSBOU0FycmF5CisgICAgICAgIHJldHVybmVkIGZy
b20gUGFzdGVib2FyZDo6c3VwcG9ydGVkUGFzdGVib2FyZFR5cGVzLCB3aGljaCBsaXN0cyBjb21w
YXRpYmxlIHR5cGVzIGluIG9yZGVyIGZyb20gaGlnaGVzdCBmaWRlbGl0eQorICAgICAgICB0byBs
b3dlc3QgZmlkZWxpdHkuIFBhc3RlYm9hcmQ6OnJlYWQgZWZmZWN0aXZlbHkgaXRlcmF0ZXMgb3Zl
ciB0aGlzIGxpc3Qgb2YgdHlwZXMgaW4gb3JkZXIsIGF0dGVtcHRpbmcgdG8gcmVhZAorICAgICAg
ICBoaWdoZXN0IGZpZGVsaXR5IHR5cGVzIGFuZCBiYWlsaW5nIHdoZW4gaXQgZmlyc3Qgc3VjY2Vz
c2Z1bGx5IHJlYWRzIGRhdGEuCisKKyAgICAgICAgSG93ZXZlciwgd2hlbiBvdXIgcGFzdGVib2Fy
ZCBpcyBiYWNrZWQgYnkgVUlJdGVtUHJvdmlkZXJzLCB3ZSBzaG91bGQgaW5zdGVhZCByZWFkIHBh
c3RlYm9hcmQgdHlwZXMgaW4gb3JkZXIgb2YKKyAgICAgICAgZmlkZWxpdHkgYXMgc3BlY2lmaWVk
IGJ5IHRoZSBzb3VyY2UgcmF0aGVyIHRoYW4gdGhlIGRlc3RpbmF0aW9uLiBUbyBhY2NvbXBsaXNo
IHRoaXMsIHdlIGludHJvZHVjZSBhbiBhbHRlcm5hdGUKKyAgICAgICAgY29kZXBhdGgsIFBhc3Rl
Ym9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcywgd2hpY2ggd2UgdGFrZSBpZiBQYXN0
ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMgaXMgdHJ1ZQorICAgICAgICAoY3VycmVudGx5
LCB0aGlzIG9ubHkgYXBwbGllcyBmb3IgdGhlIHB1cnBvc2VzIG9mIGRhdGEgaW50ZXJhY3Rpb24p
LiBUaGlzIHZlcnNpb24gZm9sbG93cyBhIGRpZmZlcmVudCBmbG93OgorICAgICAgICBmb3IgZWFj
aCBpdGVtIGluIHRoZSBwYXN0ZWJvYXJkLCB3ZSBhc2sgZm9yIGp1c3QgdGhlIFVUSXMgZm9yIHRo
YXQgaXRlbSwgaW4gb3JkZXIgb2YgZmlkZWxpdHkuIEZvciBlYWNoIGl0ZW0sCisgICAgICAgIHdl
IHRoZW4gY2FsbCByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZSB0byB0cnkgYW5k
IHJlYWQgZGF0YSBmb3IgdGhhdCB0eXBlLCBjb250aW51aW5nIHVudGlsIGVpdGhlcgorICAgICAg
ICBhbGwgVVRJcyBoYXZlIGJlZW4gYXR0ZW1wdGVkLCBvciByZWFkaW5nIHdhcyBzdWNjZXNzZnVs
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdHdvIGFkZGl0aW9uYWwgYWRqdXN0bWVudHMu
IEZpcnN0LCB3ZSBpbnRyb2R1Y2UgUGFzdGVib2FyZDo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRl
bUF0SW5kZXgsCisgICAgICAgIHdoaWNoIGlzIHVzZWQgYnkgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzIHdoZW4gcXVlcnlpbmcgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIFVU
SXMgZm9yIGVhY2gKKyAgICAgICAgcGFzdGVib2FyZCBpdGVtLCBzb3J0ZWQgYnkgaGlnaGVzdCB0
byBsb3dlc3QgZmlkZWxpdHkuCisKKyAgICAgICAgU2Vjb25kbHksIHdlIHJlZmFjdG9yIGxvZ2lj
IHRvIHdyaXRlIHRvIHRoZSBpdGVtIHByb3ZpZGVyIHBhc3RlYm9hcmQgaW4gUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLiBTaW5jZSB3ZSBhcmUKKyAgICAgICAgbm93IHJlc3BlY3RpbmcgZmlkZWxpdHkg
cmFua2luZ3Mgb24gdGhlIGRlc3RpbmF0aW9uLCB0aGUgc291cmNlIG11c3QgYWxzbyByZWdpc3Rl
ciBVVEkgdHlwZXMgaW4gdGhlIHJpZ2h0CisgICAgICAgIGZpZGVsaXR5IG9yZGVyLiBXaGlsZSB0
aGlzIHdhcyBtb3N0bHkgYWNoaWV2ZWQgdXNpbmcgb3VyIGV4aXN0aW5nIG1ldGhvZCBvZiB3cml0
aW5nIGEgbGlzdCBvZiBvYmplY3QKKyAgICAgICAgcmVwcmVzZW50YXRpb25zIHRvIHRoZSBwYXN0
ZWJvYXJkIGFuZCB0aGVuIGFsbCBvZiB0aGUgY29udGVudHMgb2YgYSBOU1N0cmluZyA9PiBOU0Rh
dGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICAgICAgIHByaXZhdGUgVVRJIGRhdGEsIHRoaXMg
YXBwcm9hY2ggaGFzIHR3byBmbGF3czoKKyAgICAgICAgMS4gIFdlIGFyZSB1bmFibGUgdG8gcmVn
aXN0ZXIgaGlnaC1wcmlvcml0eSBjdXN0b20gdHlwZXMsIGZvbGxvd2VkIGJ5IHJlcHJlc2VudGlu
ZyBvYmplY3RzLCBmb2xsb3dlZCBieSBtb3JlCisgICAgICAgICAgICBsb3dlci1wcmlvcml0eSBj
dXN0b20gdHlwZXMsIHNpbmNlIHdlIGFzc3VtZSB0aGF0IGFsbCBjdXN0b20gdHlwZXMgZm9sbG93
IGFsbCByZXByZXNlbnRpbmcgb2JqZWN0cy4KKyAgICAgICAgMi4gIFNpbmNlIHdlJ3JlIGp1c3Qg
aXRlcmF0aW5nIG92ZXIgYSBkaWN0aW9uYXJ5IG9mIE5TU3RyaW5nID0+IE5TRGF0YSB3aGVuIHJl
Z2lzdGVyaW5nIGN1c3RvbSBVVEkKKyAgICAgICAgICAgIHJlcHJlc2VudGF0aW9ucyB0byB0aGUg
aXRlbSBwcm92aWRlciwgdGhlcmUgY2Fubm90IGluaGVyZW50bHkgYmUgYW55IGZpZGVsaXR5IG9y
ZGVyaW5nIGZvciBjdXN0b20gdHlwZXMuCisKKyAgICAgICAgVG8gYWRkcmVzcyBib3RoIG9mIHRo
ZXNlIGlzc3Vlcywgd2UgaW50cm9kdWNlIHR3byBuZXcgb2JqZWN0cyB0aGF0IGVuY2Fwc3VsYXRl
IGhvdyB3ZSByZWdpc3RlciBkYXRhIHRvIHRoZSBpdGVtCisgICAgICAgIHByb3ZpZGVyIHBhc3Rl
Ym9hcmQuIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gcmVwcmVzZW50cyBzb21lIGRh
dGEgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCB0byBhbiBpdGVtCisgICAgICAgIHByb3ZpZGVyIChl
aXRoZXIgYW4gb2JqZWN0IGNvbmZvcm1pbmcgdG8gVUlJdGVtUHJvdmlkZXJXcml0aW5nLCBvciBh
biBOU1N0cmluZyBhbmQgTlNEYXRhKS4KKyAgICAgICAgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3QgcmVwcmVzZW50cyBhIGxpc3Qgb2YgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb3MgaW4gb3JkZXIgb2YgaGlnaGVzdCB0bworICAgICAgICBsb3dlc3QgZmlkZWxpdHku
IEluIFBsYXRmb3JtUGFzdGVib2FyZElPUywgd2UgdHJhbnNmb3JtIFBhc3RlYm9hcmRXZWJDb250
ZW50LCBQYXN0ZWJvYXJkSW1hZ2UsIGFuZCBQYXN0ZWJvYXJkVVJMCisgICAgICAgIGludG8gYSBX
ZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCwgd2hpY2ggd2UgdGhlbiBwYXNzIGFs
b25nIHRvIHRoZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLiBJbgorICAgICAgICBXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkLCB3ZSB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBXZWJJdGVtUHJvdmlk
ZXJSZWdpc3RyYXRpb25JbmZvcyBpbiB0aGUgbGlzdCBhbmQgcmVnaXN0ZXIKKyAgICAgICAgZWFj
aCBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvJ3MgcmVwcmVzZW50aW5nIG9iamVjdCBv
ciBkYXRhIHRvIHRoZSBpdGVtIHByb3ZpZGVyLgorCisgICAgICAgIFRlc3Q6IERhdGFJbnRlcmFj
dGlvblRlc3RzLlJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdzLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRm
b3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L0Fic3RyYWN0UGFzdGVib2FyZC5tbTogUmVtb3ZlZC4KKworICAgICAgICBNb3ZlcyBXZWJJdGVt
UHJvdmlkZXJEYXRhLCBmb3JtZXJseSBpbXBsZW1lbnRlZCBpbiBBYnN0cmFjdFBhc3RlYm9hcmQu
bW0sIGludG8gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbS4KKyAgICAgICAgV2UgY2FuIGRl
bGV0ZSBBYnN0cmFjdFBhc3RlYm9hcmQubW0gYXMgYSByZXN1bHQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRQYXN0ZWJv
YXJkV2ViQ29udGVudERhdGFGb3JUeXBlKToKKworICAgICAgICBQdWxsIG91dCBjb21tb24gbG9n
aWMgZm9yIHJlYWRpbmcgZGF0YSBnaXZlbiBhIFVUSSB0eXBlIGZyb20gdGhlIHBhc3RlYm9hcmQg
aW50byB0aGUgUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXIuCisgICAgICAgIFRoaXMgaXMgaW52
b2tlZCBmcm9tIGJvdGggdGhlIGV4aXN0aW5nIFBhc3RlYm9hcmQ6OnJlYWQgY29kZXBhdGgsIGFz
IHdlbGwgYXMgdGhlIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcworICAgICAgICBjb2RlcGF0
aC4KKworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisKKyAgICAgICAgUmVm
YWN0b3JlZCB0byBjYWxsIHRoZSBuZXcgcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5
cGUgaGVscGVyLiBCZWhhdmlvciBzaG91bGQgbm90IGhhdmUgY2hhbmdlZCwgdW5sZXNzCisgICAg
ICAgIHRoZSBwYXN0ZWJvYXJkIHN1cHBvcnRzIFVUSSBmaWRlbGl0aWVzLgorCisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToKKworICAgICAg
ICBBbiBhbHRlcm5hdGl2ZSB0byBQYXN0ZWJvYXJkOjpyZWFkIHRoYXQgY29uc2lkZXJzIHNvdXJj
ZS1zaWRlIGZpZGVsaXR5IHJhbmtpbmdzIG9mIFVUSXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKToK
KworICAgICAgICBSZWZhY3RvcmVkIHRvIGJ1aWxkIGEgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3QgYW5kIHBhc3MgaXQgdG8gdGhlIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
dG8KKyAgICAgICAgcmVnaXN0ZXIgaXRlbXMgYW5kIGRhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJh
dGlvbkluZm8gaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3Q6dHlwZUlkZW50aWZpZXI6ZGF0YTpd
KToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyByZXByZXNlbnRp
bmdPYmplY3RdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyB0
eXBlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvIGRhdGFdKToKKworICAgICAgICBSZXByZXNlbnRzIGEgc2luZ2xlIGNhbGxzIHRvIHJlZ2lz
dGVyIGRhdGEgb250byB0aGUgaXRlbSBwcm92aWRlciBwYXN0ZWJvYXJkLiBTZWUKKyAgICAgICAg
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGhlYWRlciBjb21tZW50cyBmb3IgbW9yZSBpbmZv
LgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGluaXRd
KToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWRkRGF0
YTpmb3JUeXBlOl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdCBhZGRSZXByZXNlbnRpbmdPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkluZm9MaXN0IG51bWJlck9mSXRlbXNdKToKKyAgICAgICAgKC1bV2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgaXRlbUF0SW5kZXg6XSk6CisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGVudW1lcmF0ZUl0ZW1zOl0pOgor
CisgICAgICAgIFJlcHJlc2VudHMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gcmVnaXN0ZXIgcmVwcmVz
ZW50YXRpb25zIG9udG8gdGhlIGl0ZW0gcHJvdmlkZXIgcGFzdGVib2FyZC4gU2VlCisgICAgICAg
IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBoZWFkZXIgY29tbWVudHMgZm9yIG1vcmUgaW5m
by4KKworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZCBzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOl0pOgorICAgICAg
ICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2Vu
dGF0aW9uczpdKTogRGVsZXRlZC4KKworMjAxNy0wNC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBTdXBwb3J0IHdyaXRpbmcgbGluayB0aXRsZXMg
dG8gdGhlIHBhc3RlYm9hcmQgd2hlbiBiZWdpbm5pbmcgZGF0YSBpbnRlcmFjdGlvbiBvbiBhIGxp
bmsKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1
NAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
YjI1Mjc5YTVlZjc3NGY1ZjUzMTk3MzA5NGVhNTcyNjgxYzg2MWQxZi4uMDY0NzlkZmQ4ZmViYzA1
ODIyYmFkM2E3MTNmYzJiNjdlODkxZjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5
IEBACiAyMDE3LTA0LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CisgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50
IGZyb20gaXRlbSBwcm92aWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTE1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0cyBm
b3IgY2hhbmdlcyBpbiBXZWJDb3JlIChzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0
YWlscykuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1B
dEluZGV4KToKKworMjAxNy0wNC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKwogICAgICAgICBTdXBwb3J0IHdyaXRpbmcgbGluayB0aXRsZXMgdG8gdGhlIHBhc3Rl
Ym9hcmQgd2hlbiBiZWdpbm5pbmcgZGF0YSBpbnRlcmFjdGlvbiBvbiBhIGxpbmsKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NAogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjI5MmQwNTc3YzdhYWY3MzMz
ODE5MTI4MDZhOTI2MjhlZjNkYzdiNS4uZmMyZDJmM2E0OTYxZjFmNzg5OGQzNDk4OTdiYjNiMWNl
YjJkZDQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE3LTA0LTIxICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFJlc3BlY3QgZmlkZWxp
dHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBwcm92aWRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0cyBmb3IgY2hhbmdlcyBpbiBXZWJDb3JlIGJ5
IGFkZGluZyBwbHVtYmluZyB0byBzdXBwb3J0IFBhc3RlYm9hcmQ6OmdldFR5cGVzQnlGaWRlbGl0
eUZvckl0ZW1BdEluZGV4LiBTZWUKKyAgICAgICAgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKworMjAxNy0w
NC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBT
dXBwb3J0IHdyaXRpbmcgbGluayB0aXRsZXMgdG8gdGhlIHBhc3RlYm9hcmQgd2hlbiBiZWdpbm5p
bmcgZGF0YSBpbnRlcmFjdGlvbiBvbiBhIGxpbmsKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEz
NTY5Mzc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOWE5MDU1YmIzYWQwZDdkNjJmYmU0NGY4M2YxYjk5Njg2MDdkNmQ5My4uMWI0
NTUwMTMxODhhNWEyN2EwNzY2MzE3MDdkODgzOTBjNzBjM2I5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjg3Miw3ICs2ODcy
LDYgQEAKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMTIx
RTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2MkMy
NCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRp
dGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0
aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0
aWwuanMgKi87IH07Ci0JCUY0RDgzMTYyMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3Rl
Ym9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEQ4MzE2MTFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1tICovOyB9Owog
CQlGNTA2NjRGNzE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUwNjY0RjUxNTdGNTJEQzAw
QUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJRjUwNjY0RjgxNTdGNTJEQzAw
QUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xs
ZXIuaCAqLzsgfTsKIAkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU0MzQs
NyArMTU0MzMsNiBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0
ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UGFzdGVi
b2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3
NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1w
RWRpdGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0
MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBT
Y3JpcHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUwNjY0RjUxNTdGNTJEQzAwQUMyMjZG
IC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZvcm1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUw
NjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0aW9uTWVzc2Fn
ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA5OTEsNyArMjA5ODks
NiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2IC8qIHdh
ayAqLywKIAkJCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
LmggKi8sCi0JCQkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2Fy
ZC5tbSAqLywKIAkJCQkyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNwcCAq
LywKIAkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNwcCAqLywKIAkJCQlB
MUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi8sCkBAIC0zMTgxOCw3ICszMTgx
NSw2IEBACiAJCQkJQTYxNDhBNzgxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRNTEtleWdlbkVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjEwQTFDRTYzQjAwQjQyQjI1IC8qIEpT
SFRNTExhYmVsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyMzBBMUNFNjNC
MDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlG
NEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMDBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1M
TGlua0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjcwQTFDRTYzQjAwQjQy
QjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggYjk0ZDcwYTFmNmE1MjBiMDE4MWMzZDIzNWJlMmZiYjhj
N2RjOGI2OS4uNDI5ZTFhZjE0MDAyNDcwYTdjOGNmNjgwNjI1MmVlMTUyOTMyNzQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjE3LDYgKzIxNywxMSBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCByZXNwZWN0
c1VUSUZpZGVsaXRpZXMoKSBjb25zdDsKKyAgICB2b2lkIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxp
dGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpOworI2VuZGlmCisKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdm9pZCBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQoKTsKICAgICB2b2lkIHdy
aXRlUmFuZ2VUb0RhdGFPYmplY3QoUmFuZ2UmLCBGcmFtZSYpOyAvLyBGSVhNRTogTGF5ZXJpbmcg
dmlvbGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aAppbmRleCBjMmE2MzQ3NDk1ZjA4Y2NkMDFlOGU3YzBhZjYwMGMxZDYxMGIyOWE3Li43ZDU5Y2Q1
MjE2MjI0Y2UwZGQ4NWU1MzcxMmMzMmFhMzg3YzlmN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRh
SW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJ
dGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggNzkyM2MyZjZiNzU5ZmEy
Mjk5NzUzZDY4MWE5MzBhOWRlNDQ4MzBmMS4uNTNiMmNkOTQ2ZWFkZDkxZjNhOTQ0OGJkNmFlMTZh
YzYxYjYxYzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBX
RUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgaW50IGluZGV4KTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTdHJpbmcgdW5pcXVlTmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKaW5kZXggYjdlMWE1MDEwZDYwOGMzYzM4Yzk3YmI0ZmRm
NDM2MDY0NTI3MDcyOC4uZTkwZDUzMTQ1Y2Y4MDUzOGFmMzQxOTBiNDY4YzlmODUzOWNkYTAxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQu
aApAQCAtMjcsMTQgKzI3LDkgQEAKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIAotV0VCQ09SRV9F
WFBPUlQgQGludGVyZmFjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEgOiBOU09iamVjdAorTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIAotKyAoaW5zdGFuY2V0eXBlKWl0ZW1XaXRoUmVwcmVzZW50aW5n
T2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5T
RGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhOwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIHN0cm9uZykgTlNBcnJheSAqcmVwcmVzZW50aW5nT2JqZWN0czsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBOU0RpY3Rpb25hcnkgKmFkZGl0aW9uYWxEYXRh
OwotCi1AZW5kCitAY2xhc3MgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q7CiAK
IEBwcm90b2NvbCBBYnN0cmFjdFBhc3RlYm9hcmQgPE5TT2JqZWN0PgogQHJlcXVpcmVkCkBAIC00
NywxMSArNDIsMTQgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJQYXN0ZWJvYXJkSXRl
bURhdGEgOiBOU09iamVjdAogLSAoTlNJbnRlZ2VyKWNoYW5nZUNvdW50OwogCiBAb3B0aW9uYWwK
LS0gKHZvaWQpc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOihOU0FycmF5PFdlYlBh
c3RlYm9hcmRJdGVtRGF0YSAqPiAqKWl0ZW1EYXRhOworLSAodm9pZClzZXRJdGVtc1VzaW5nUmVn
aXN0cmF0aW9uSW5mb0xpc3RzOihOU0FycmF5PFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbklu
Zm9MaXN0ICo+ICopaXRlbUxpc3RzOwogLSAodm9pZClzZXRJdGVtczooTlNBcnJheTxOU0RpY3Rp
b25hcnkgKj4gKilpdGVtczsKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlw
ZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7CiBAcHJvcGVydHkg
KHJlYWRvbmx5LCBub25hdG9taWMpIE5TSW50ZWdlciBudW1iZXJPZkZpbGVzOwogQHByb3BlcnR5
IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICpmaWxlbmFtZXNGb3JEYXRh
SW50ZXJhY3Rpb247CiAKIEBlbmQKIAorTlNfQVNTVU1FX05PTk5VTExfRU5ECisKICNlbmRpZiAv
LyBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fi
c3RyYWN0UGFzdGVib2FyZC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdhMmE1
N2E1NzFhZDEyNjczMDQxOTJhMTI5NTc0OTg2ZjQ3ZmMwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJz
dHJhY3RQYXN0ZWJvYXJkLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBYnN0cmFjdFBhc3RlYm9hcmQu
aCIKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1A
aW50ZXJmYWNlIFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAoKQotewotICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBfcmVwcmVzZW50aW5nT2JqZWN0czsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBf
YWRkaXRpb25hbERhdGE7Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlBhc3RlYm9h
cmRJdGVtRGF0YQotCi0rIChpbnN0YW5jZXR5cGUpaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3Rz
OihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9u
YXJ5ICopYWRkaXRpb25hbERhdGEKLXsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdp
dGhSZXByZXNlbnRpbmdPYmplY3RzOnJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6
YWRkaXRpb25hbERhdGFdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRk
aXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCi17Ci0gICAgaWYgKHNl
bGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX3JlcHJlc2VudGluZ09iamVjdHMgPSByZXBy
ZXNlbnRpbmdPYmplY3RzOwotICAgICAgICBfYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0
YTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKE5TQXJyYXkgKilyZXByZXNlbnRp
bmdPYmplY3RzCi17Ci0gICAgcmV0dXJuIF9yZXByZXNlbnRpbmdPYmplY3RzLmdldCgpOwotfQot
Ci0tIChOU0RpY3Rpb25hcnkgKilhZGRpdGlvbmFsRGF0YQotewotICAgIHJldHVybiBfYWRkaXRp
b25hbERhdGEuZ2V0KCk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggODEzNWUy
MzhiMDkyNzNiZWVhZjE3ODZhMjU3MjBlNWY3MTcwNTJmMi4uMTg4NzhmOGM1ODc0NmE4YmNiZjE4
MDUyZmFiODI1YjU4N2EwZWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KQEAgLTE2NSw4ICsxNjUsNTMgQEAgc3RhdGljIE5TQXJyYXkqIHN1cHBv
cnRlZEltYWdlVHlwZXMoKQogICAgIHJldHVybiBAWyhpZClrVVRUeXBlUE5HLCAoaWQpa1VUVHlw
ZVRJRkYsIChpZClrVVRUeXBlSlBFRywgKGlkKWtVVFR5cGVHSUZdOwogfQogCitzdGF0aWMgYm9v
bCByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYgcmVhZGVyLCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBOU1N0cmluZyAq
dHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAg
ICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgeworICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgcGFzdGVib2FyZE5h
bWUpOworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWRXZWJBcmNoaXZlKGJ1ZmZlci5nZXQoKSk7
CisgICAgfQorCisgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRU
eXBlSFRNTF0pIHsKKyAgICAgICAgU3RyaW5nIGh0bWxTdHJpbmcgPSBzdHJhdGVneS5yZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlSFRNTCwgcGFzdGVib2FyZE5hbWUp
OworICAgICAgICByZXR1cm4gIWh0bWxTdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRIVE1M
KGh0bWxTdHJpbmcpOworICAgIH0KKworICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5T
U3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBr
VVRUeXBlRmxhdFJURkQsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlciAm
JiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcik7CisgICAgfQorCisgICAgaWYgKFt0eXBlIGlzRXF1
YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgeworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRl
bUluZGV4LCBrVVRUeXBlUlRGLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHJldHVybiBidWZm
ZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcik7CisgICAgfQorCisgICAgaWYgKFtzdXBwb3J0
ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0
ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUpOworICAgICAgICByZXR1cm4gYnVmZmVyICYm
IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHR5cGUpOworICAgIH0K
KworICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVVSTF0p
IHsKKyAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxGcm9tUGFzdGVib2FyZChpdGVt
SW5kZXgsIGtVVFR5cGVVUkwsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJuICF1cmwu
aXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwodXJsLCBTdHJpbmcoKSk7CisgICAgfQorCisgICAg
aWYgKFVUVHlwZUNvbmZvcm1zVG8oKENGU3RyaW5nUmVmKXR5cGUsIGtVVFR5cGVUZXh0KSkgewor
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KGl0ZW1JbmRleCwga1VUVHlwZVRleHQsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJu
ICFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogeworICAgIGlmIChyZXNwZWN0c1VUSUZpZGVs
aXRpZXMoKSkgeworICAgICAgICByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMocmVhZGVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRl
Z3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCiAgICAg
aW50IG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bh
c3RlYm9hcmROYW1lKTsKQEAgLTE3OSw1NCArMjI0LDMyIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1iZXJPZkl0ZW1zOyBpKyspIHsKICAgICAgICAgZm9yIChpbnQgdHlwZUluZGV4
ID0gMDsgdHlwZUluZGV4IDwgbnVtYmVyT2ZUeXBlczsgdHlwZUluZGV4KyspIHsKLSAgICAgICAg
ICAgIE5TU3RyaW5nICp0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6dHlwZUluZGV4XTsKLQot
ICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJvYXJkVHlw
ZV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIFdlYkFyY2hpdmVQYm9hcmRUeXBl
LCBtX3Bhc3RlYm9hcmROYW1lKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVhZGVyLnJl
YWRXZWJBcmNoaXZlKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZUhUTUxdKSB7Ci0gICAgICAg
ICAgICAgICAgU3RyaW5nIGh0bWxTdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoaSwga1VUVHlwZUhUTUwsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgICAgICAgICAgICAg
IGlmICghaHRtbFN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZEhUTUwoaHRtbFN0cmluZykp
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0p
IHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0
ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkUlRGRCgq
YnVmZmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzooTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aSwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHJlYWRlci5yZWFkUlRGKCpidWZmZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
W3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICAg
ICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCks
IHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJl
YWRlciwgc3RyYXRlZ3ksIFt0eXBlcyBvYmplY3RBdEluZGV4OnR5cGVJbmRleF0sIGksIG1fcGFz
dGVib2FyZE5hbWUpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgfQor
fQogCi0gICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtV
VFR5cGVVUkxdKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxG
cm9tUGFzdGVib2FyZChpLCBrVVRUeXBlVVJMLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXVybC5pc051bGwoKSAmJiByZWFkZXIucmVhZFVSTCh1cmwsIFN0cmluZygp
KSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VU
VHlwZVRleHRdKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChpLCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFp
blRleHQoc3RyaW5nKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Citib29sIFBhc3RlYm9hcmQ6OnJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0Cit7CisgICAg
Ly8gRm9yIG5vdywgZGF0YSBpbnRlcmFjdGlvbiBpcyB0aGUgb25seSBmZWF0dXJlIHRoYXQgdXNl
cyBpdGVtLXByb3ZpZGVyLWJhc2VkIHBhc3RlYm9hcmQgcmVwcmVzZW50YXRpb25zLgorICAgIC8v
IEluIHRoZSBmdXR1cmUsIHdlIG1heSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNsaWVudCBsYXllciB0
byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHBhc3RlYm9hcmQgc3VwcG9ydHMKKyAgICAv
LyBpdGVtIHR5cGVzIHJhbmtlZCBieSBmaWRlbGl0eS4KKyAgICByZXR1cm4gbV9wYXN0ZWJvYXJk
TmFtZSA9PSBTdHJpbmcoImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworfQogCit2b2lk
IFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyKQoreworICAgIEFTU0VSVChyZXNwZWN0c1VUSUZpZGVsaXRpZXMo
KSk7CisgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpOworICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRl
bXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsg
aW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7CisgICAgICAgIC8vIFRyeSB0byByZWFk
IGRhdGEgZnJvbSBlYWNoIHR5cGUgaWRlbnRpZmllciB0aGF0IHRoaXMgcGFzdGVib2FyZCBpdGVt
IHN1cHBvcnRzLCBhbmQgV2ViS2l0IGFsc28gcmVjb2duaXplcy4gVHlwZSBpZGVudGlmaWVycyBh
cmUKKyAgICAgICAgLy8gcmVhZCBpbiBvcmRlciBvZiBmaWRlbGl0eSwgYXMgc3BlY2lmaWVkIGJ5
IGVhY2ggcGFzdGVib2FyZCBpdGVtLgorICAgICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc0Zvckl0
ZW1Jbk9yZGVyT2ZGaWRlbGl0eTsKKyAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgodHlwZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHksIGluZGV4LCBtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXNGb3JJdGVtSW5P
cmRlck9mRmlkZWxpdHkpIHsKKyAgICAgICAgICAgIGlmIChyZWFkUGFzdGVib2FyZFdlYkNvbnRl
bnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRleCwgbV9wYXN0ZWJvYXJk
TmFtZSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQppbmRleCA1OGFkYzk2ZTE5N2FmYWY2YTE0YzdlMjRmMzJiYjMzMzAyNmUxYjJkLi40MjRlZjYy
N2FkNDIyNzExYTAwNDMxYzdmZmQzNjcyNmE4ZGJkOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTM4LDcgKzM4
LDEwIEBACiAjaW1wb3J0IDxVSUtpdC9VSVBhc3RlYm9hcmQuaD4KIAogI2lmIEVOQUJMRShEQVRB
X0lOVEVSQUNUSU9OKQorI2ltcG9ydCA8VUlLaXQvTlNBdHRyaWJ1dGVkU3RyaW5nK1VJSXRlbVBy
b3ZpZGVyLmg+CisjaW1wb3J0IDxVSUtpdC9OU1N0cmluZytVSUl0ZW1Qcm92aWRlci5oPgogI2lt
cG9ydCA8VUlLaXQvTlNVUkwrVUlJdGVtUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFVJS2l0L1VJSW1h
Z2UrVUlJdGVtUHJvdmlkZXIuaD4KICNlbmRpZgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0
KQpAQCAtNzMsNiArNzYsMTYgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICAgICAgdHlwZXMuYXBwZW5kKHBhc3RlYm9hcmRUeXBl
KTsKIH0KIAordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0
ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgaW50IGluZGV4KQoreworICAgIGlmIChp
bmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdIHx8ICFbbV9wYXN0ZWJvYXJkIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0
ZW1BdEluZGV4OildKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0FycmF5ICpwYXN0ZWJvYXJk
VHlwZXNCeUZpZGVsaXR5ID0gW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXg6aW5kZXhdOworICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVy
IGluIHBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHkpCisgICAgICAgIHR5cGVzLmFwcGVuZCh0eXBl
SWRlbnRpZmllcik7Cit9CisKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTg3LDI0ICsyMDAsMzMgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJpY2hU
ZXh0UmVwcmVzZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQoY28KIAogdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9h
cmRXZWJDb250ZW50JiBjb250ZW50KQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
b2JqZWN0UmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gYWRkaXRpb25hbERhdGEgPSByaWNo
VGV4dFJlcHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250ZW50KGNvbnRlbnQpOworICAg
IFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gaXRlbXNUb1Jl
Z2lzdGVyID0gYWRvcHROUyhbW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGFs
bG9jXSBpbml0XSk7CisKKyAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0g
Y29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgW2l0
ZW1zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKworICAgIGlmIChjb250
ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpCisgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewogICAgICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0V2l0aERh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV07CiAgICAgICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5nKQotICAgICAgICAgICAgW29iamVj
dFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CisgICAgICAgICAg
ICBbaXRlbXNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5n
XTsKICAgICB9CiAKKyAgICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQpCisgICAgICAgIFtp
dGVtc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKKwogICAgIGlmICgh
Y29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQuaXNFbXB0eSgpKQotICAgICAgICBbb2JqZWN0UmVw
cmVzZW50YXRpb25zIGFkZE9iamVjdDooTlNTdHJpbmcgKiljb250ZW50LmRhdGFJblN0cmluZ0Zv
cm1hdF07CisgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OihO
U1N0cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0XTsKIAotICAgIFttX3Bhc3RlYm9h
cmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVt
RGF0YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdl
dCgpIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXV1dOworICAgIFttX3Bhc3Rl
Ym9hcmQgc2V0SXRlbXNVc2luZ1JlZ2lzdHJhdGlvbkluZm9MaXN0czpAWyBpdGVtc1RvUmVnaXN0
ZXIuZ2V0KCkgXV07CiB9CiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIHsKLSAgICBpZiAoW21fcGFzdGVib2FyZCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0
aW9uczopXSkgeworICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0SXRlbXNVc2luZ1JlZ2lzdHJhdGlvbkluZm9MaXN0czopXSkgewogICAgICAgICB3
cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb250ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTIxOCwzMCArMjQwLDI5IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYg
cGFzdGVib2FyZEltYWdlKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0
UmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8
V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9IGFk
b3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10gaW5pdF0p
OworCisgICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc051bGwoKSkK
KyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRhOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6cGFzdGVib2FyZEltYWdlLnJlc291
cmNlTUlNRVR5cGVdOwogCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXN0ZWJvYXJkSW1h
Z2UuaW1hZ2UtPm5hdGl2ZUltYWdlKCkpIHsKICAgICAgICAgVUlJbWFnZSAqdWlJbWFnZSA9IChV
SUltYWdlICopW2dldFVJSW1hZ2VDbGFzcygpIGltYWdlV2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2Uu
Z2V0KCldOwogICAgICAgICBpZiAodWlJbWFnZSkKLSAgICAgICAgICAgIFtvYmplY3RSZXByZXNl
bnRhdGlvbnMgYWRkT2JqZWN0OnVpSW1hZ2VdOworICAgICAgICAgICAgW2l0ZW1zVG9SZWdpc3Rl
ciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6dWlJbWFnZV07CiAgICAgfQogCiAgICAgaWYgKCFwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNVUkwgKm5zVVJMID0g
cGFzdGVib2FyZEltYWdlLnVybC51cmw7CiAgICAgICAgIGlmIChuc1VSTCkKLSAgICAgICAgICAg
IFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0Om5zVVJMXTsKKyAgICAgICAgICAgIFtp
dGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsKICAgICB9CiAKLSAg
ICBpZiAoIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzTnVsbCgpKQotICAgICAg
ICBbYWRkaXRpb25hbERhdGEgc2V0T2JqZWN0OnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvcktleTpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZV07Ci0KLSAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0
aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3Rz
Om9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0
YS5nZXQoKV1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25J
bmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgpIF1dOwogfQogCiB2b2lkIFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2Up
CiB7Ci0gICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihz
ZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICBpZiAoW21fcGFzdGVi
b2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRp
b25JbmZvTGlzdHM6KV0pIHsKICAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMocGFz
dGVib2FyZEltYWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NiwyNyArMjc3LDI0
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
IHBhc3RlYm9hcmRJbWFnZSkKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0
UmVwcmVzZW50YXRpb25zKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJlc2Vu
dGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0YSA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdlYkl0ZW1Q
cm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBpdGVtc1RvUmVnaXN0ZXIgPSBhZG9wdE5TKFtb
V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2NdIGluaXRdKTsKIAogICAg
IE5TU3RyaW5nICpwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcgPSBwYXN0ZWJvYXJkVHlwZTsKICAg
ICBOU1N0cmluZyAqdGV4dEFzTlNTdHJpbmcgPSB0ZXh0OwogICAgIGlmICh0ZXh0QXNOU1N0cmlu
ZyAmJiBwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcubGVuZ3RoKSB7CiAgICAgICAgIGlmIChVVFR5
cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJp
bmcsIGtVVFR5cGVVUkwpKQotICAgICAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRP
YmplY3Q6W1tbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRv
cmVsZWFzZV1dOworICAgICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdP
YmplY3Q6W1tbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRv
cmVsZWFzZV1dOwogCiAgICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0
cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcsIGtVVFR5cGVUZXh0KSkKLSAgICAgICAg
ICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0OnRleHRBc05TU3RyaW5nXTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgW2FkZGl0aW9uYWxEYXRhIHNldE9iamVjdDp0ZXh0QXNO
U1N0cmluZyBmb3JLZXk6cGFzdGVib2FyZFR5cGVBc05TU3RyaW5nXTsKKyAgICAgICAgICAgIFtp
dGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OnRleHRBc05TU3RyaW5nXTsKICAg
ICB9CiAKLSAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9u
czpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOm9i
amVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5n
ZXQoKV1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZv
TGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgpIF1dOwogfQogCiB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0KQogewotICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgaWYgKFtt
X3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc1VzaW5nUmVn
aXN0cmF0aW9uSW5mb0xpc3RzOildKSB7CiAgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRp
b25zKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI5
MywyMiArMzExLDIyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIHZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJkVVJM
JiB1cmwpCiB7Ci0gICAgYXV0byBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVt
UHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10gaW5pdF0pOwogCiAgICAgaWYgKE5T
VVJMICpuc1VSTCA9IHVybC51cmwpIHsKLSAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBh
ZGRPYmplY3Q6bnNVUkxdOworICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGlu
Z09iamVjdDpuc1VSTF07CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAgICAgICAgIGlm
ICghdXJsLnRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5zVVJMLl90aXRsZSA9IHVybC50
aXRsZTsKICNlbmRpZgogICAgIH0KIAotICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXNGcm9tT2Jq
ZWN0UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJl
c2VudGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdldCgpIGFkZGl0aW9uYWxEYXRh
Om5pbF1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZv
TGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgpIF1dOwogfQogCiB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQogewotICAgIGlmIChbbV9w
YXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0
UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOildKSB7
CiAgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKHVybCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRleCA4MzIzZTcyMDc4YjQ3YjdkMDc3MmU2NDIwOWE4
ZjEzNTRiMTZiMDk3Li43NTg1ZjAwYjZlNTQ0OGFkNzgzNWIyNTkyMTZkZWQwNTkyYTVjNDNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgKQEAgLTI4LDkgKzI4LDQ1IEBACiAjaWYgVEFSR0VUX09TX0lQSE9ORSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIAogQGNsYXNzIFVJ
SXRlbVByb3ZpZGVyOworQHByb3RvY29sIFVJSXRlbVByb3ZpZGVyV3JpdGluZzsKIAogTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIAorLyoqCisgKiBBIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm8gcmVwcmVzZW50cyBhIHNpbmdsZSBjYWxsIHRvIHJlZ2lzdGVyIHNvbWV0aGluZyB0byBh
biBpdGVtIHByb3ZpZGVyLgorICogRWl0aGVyIHRoZSByZXByZXNlbnRpbmcgb2JqZWN0IGV4aXN0
cyBhbmQgdGhlIHR5cGUgaWRlbnRpZmllciBhbmQgZGF0YSBhcmUgbmlsLCBvciB0aGUgcmVwcmVz
ZW50aW5nCisgKiBvYmplY3QgaXMgbmlsIGFuZCB0aGUgdHlwZSBpZGVudGlmaWVyIGFuZCBkYXRh
IGV4aXN0LiBUaGUgZm9ybWVyIHJlcHJlc2VudHMgYSBjYWxsIHRvIHJlZ2lzdGVyIGFuCisgKiBl
bnRpcmUgVUlJdGVtUHJvdmlkZXJXcml0aW5nLWNvbmZvcm1hbnQgb2JqZWN0IHRvIHRoZSBpdGVt
IHByb3ZpZGVyLCB3aGlsZSB0aGUgbGF0dGVyIHJlcHJlc2VudHMgYQorICogY2FsbCB0byByZWdp
c3RlciBvbmx5IGEgZGF0YSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGdpdmVuIHR5cGUgaWRlbnRp
Zmllci4KKyAqLworV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJSZWdp
c3RyYXRpb25JbmZvIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBudWxsYWJsZSwgc3Ryb25nKSBpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPiByZXByZXNlbnRp
bmdPYmplY3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBzdHJv
bmcpIE5TU3RyaW5nICp0eXBlSWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgbnVsbGFibGUsIHN0cm9uZykgTlNEYXRhICpkYXRhOworCitAZW5kCisKKy8qKgorICog
QSBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCByZXByZXNlbnRzIGEgc2VyaWVz
IG9mIHJlZ2lzdHJhdGlvbiBjYWxscyB1c2VkIHRvIHNldCB1cCBhCisgKiBzaW5nbGUgaXRlbSBw
cm92aWRlci4gVGhlIG9yZGVyIG9mIGl0ZW1zIHNwZWNpZmllZCBpbiB0aGUgbGlzdCAobG93ZXN0
IGluZGljZXMgZmlyc3QpIGlzIHRoZSBvcmRlcgorICogaW4gd2hpY2ggb2JqZWN0cyBvciBkYXRh
IGFyZSByZWdpc3RlcmVkIHRvIHRoZSBpdGVtIHByb3ZpZGVyLCBhbmQgdGhlcmVmb3JlIGluZGlj
YXRlcyB0aGUgcmVsYXRpdmUKKyAqIGZpZGVsaXR5IG9mIGVhY2ggaXRlbS4KKyAqCisgKiBQcml2
YXRlIFVUSSB0eXBlcywgc3VjaCBhcyB0aG9zZSB2ZW5kZWQgdGhyb3VnaCB0aGUgaW5qZWN0ZWQg
ZWRpdGluZyBidW5kbGUgU1BJLCBhcmUgY29uc2lkZXJlZCB0bworICogYmUgaGlnaGVyIGZpZGVs
aXR5IHRoYW4gdGhlIG90aGVyIGRlZmF1bHQgdHlwZXMuCisgKi8KK1dFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgOiBOU09iamVjdAor
CistICh2b2lkKWFkZFJlcHJlc2VudGluZ09iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGlu
Zz4pb2JqZWN0OworLSAodm9pZClhZGREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6KE5TU3Ry
aW5nICopdHlwZUlkZW50aWZpZXI7CisKKy0gKE5TVUludGVnZXIpbnVtYmVyT2ZJdGVtczsKKy0g
KG51bGxhYmxlIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gKilpdGVtQXRJbmRleDoo
TlNVSW50ZWdlcilpbmRleDsKKy0gKHZvaWQpZW51bWVyYXRlSXRlbXM6KHZvaWQoXikoV2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAqaXRlbSwgTlNVSW50ZWdlciBpbmRleCkpYmxvY2s7
CisKK0BlbmQKKwogdHlwZWRlZiB2b2lkICheV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9jayko
TlNBcnJheTxOU1VSTCAqPiAqKTsKIAogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJhY3RQYXN0ZWJvYXJkPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbQppbmRleCAwNjBmNTJjMjRjYTIwMTBlYWJhN2Q5YTFmYmJhM2Y5NTMyMzliNDk4Li5l
YWQ4Y2EwY2Q3OTllNThlYzc5NmIwN2FmMjkwYmJiYjczNjVmZDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5t
bQpAQCAtNzYsNiArNzYsOTYgQEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5
cGUpCiAgICAgcmV0dXJuIE1BVENIRVNfVVRJX1RZUEUodHlwZSwgUE5HKSB8fCBNQVRDSEVTX1VU
SV9UWVBFKHR5cGUsIEpQRUcpIHx8IE1BVENIRVNfVVRJX1RZUEUodHlwZSwgR0lGKSB8fCBNQVRD
SEVTX1VJS0lUX1RZUEUodHlwZSwgaW1hZ2UpOwogfQogCitAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm8gKCkKK3sKKyAgICBSZXRhaW5QdHI8aWQ8VUlJdGVtUHJvdmlk
ZXJXcml0aW5nPj4gX3JlcHJlc2VudGluZ09iamVjdDsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IF90eXBlSWRlbnRpZmllcjsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBfZGF0YTsKK30KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0OihpZCA8VUlJdGVtUHJvdmlk
ZXJXcml0aW5nPilyZXByZXNlbnRpbmdPYmplY3QgdHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICop
dHlwZUlkZW50aWZpZXIgZGF0YTooTlNEYXRhICopZGF0YQoreworICAgIGlmIChyZXByZXNlbnRp
bmdPYmplY3QpCisgICAgICAgIEFTU0VSVCghdHlwZUlkZW50aWZpZXIgJiYgIWRhdGEpOworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUKHR5cGVJZGVudGlmaWVyICYmIGRhdGEpOworCisgICAgaWYg
KHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX3JlcHJlc2VudGluZ09iamVjdCA9IHJl
cHJlc2VudGluZ09iamVjdDsKKyAgICAgICAgX3R5cGVJZGVudGlmaWVyID0gdHlwZUlkZW50aWZp
ZXI7CisgICAgICAgIF9kYXRhID0gZGF0YTsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky0gKGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGluZ09iamVjdAoreworICAg
IHJldHVybiBfcmVwcmVzZW50aW5nT2JqZWN0LmdldCgpOworfQorCistIChOU1N0cmluZyAqKXR5
cGVJZGVudGlmaWVyCit7CisgICAgcmV0dXJuIF90eXBlSWRlbnRpZmllci5nZXQoKTsKK30KKwor
LSAoTlNEYXRhICopZGF0YQoreworICAgIHJldHVybiBfZGF0YS5nZXQoKTsKK30KKworQGVuZAor
CitAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0ICgpCit7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfaXRlbXM7Cit9CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdAorCistIChpbnN0YW5j
ZXR5cGUpaW5pdAoreworICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKQorICAgICAgICBfaXRl
bXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKWFkZERhdGE6KE5TRGF0YSAqKWRhdGEgZm9yVHlwZTooTlNT
dHJpbmcgKil0eXBlSWRlbnRpZmllcgoreworICAgIFtfaXRlbXMgYWRkT2JqZWN0OltbW1dlYkl0
ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gYWxsb2NdIGluaXRXaXRoUmVwcmVzZW50aW5nT2Jq
ZWN0Om5pbCB0eXBlSWRlbnRpZmllcjp0eXBlSWRlbnRpZmllciBkYXRhOmRhdGFdIGF1dG9yZWxl
YXNlXV07Cit9CisKKy0gKHZvaWQpYWRkUmVwcmVzZW50aW5nT2JqZWN0OihpZCA8VUlJdGVtUHJv
dmlkZXJXcml0aW5nPilvYmplY3QKK3sKKyAgICBBU1NFUlQoW29iamVjdCBjb25mb3Jtc1RvUHJv
dG9jb2w6QHByb3RvY29sKFVJSXRlbVByb3ZpZGVyV3JpdGluZyldKTsKKyAgICBbX2l0ZW1zIGFk
ZE9iamVjdDpbW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvIGFsbG9jXSBpbml0V2l0
aFJlcHJlc2VudGluZ09iamVjdDpvYmplY3QgdHlwZUlkZW50aWZpZXI6bmlsIGRhdGE6bmlsXSBh
dXRvcmVsZWFzZV1dOworfQorCistIChOU1VJbnRlZ2VyKW51bWJlck9mSXRlbXMKK3sKKyAgICBy
ZXR1cm4gW19pdGVtcyBjb3VudF07Cit9CisKKy0gKFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm8gKilpdGVtQXRJbmRleDooTlNVSW50ZWdlcilpbmRleAoreworICAgIGlmIChpbmRleCA+
PSBzZWxmLm51bWJlck9mSXRlbXMpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4g
W19pdGVtcyBvYmplY3RBdEluZGV4OmluZGV4XTsKK30KKworLSAodm9pZCllbnVtZXJhdGVJdGVt
czoodm9pZCAoXikoV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAqLCBOU1VJbnRlZ2Vy
KSlibG9jaworeworICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDA7IGluZGV4IDwgc2VsZi5u
dW1iZXJPZkl0ZW1zOyArK2luZGV4KQorICAgICAgICBibG9jayhbc2VsZiBpdGVtQXRJbmRleDpp
bmRleF0sIGluZGV4KTsKK30KKworQGVuZAorCiBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQgKCkKIAogQHByb3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBudW1iZXJPZkl0
ZW1zOwpAQCAtMTExLDYgKzIwMSwxMSBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmlu
ZyAqdHlwZSkKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoTlNBcnJheTxOU1N0cmluZyAqPiAq
KXBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDooTlNVSW50ZWdlcilpbmRl
eAoreworICAgIHJldHVybiBbc2VsZiBpdGVtUHJvdmlkZXJBdEluZGV4OmluZGV4XS5yZWdpc3Rl
cmVkVHlwZUlkZW50aWZpZXJzID86IEBbIF07Cit9CisKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KilwYXN0ZWJvYXJkVHlwZXMKIHsKICAgICBpZiAoX2NhY2hlZFR5cGVJZGVudGlmaWVycykKQEAg
LTE1MywzNCArMjQ4LDI5IEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VUeXBlKE5TU3RyaW5nICp0eXBl
KQogICAgIHJldHVybiBbX2l0ZW1Qcm92aWRlcnMgY291bnRdOwogfQogCi0tICh2b2lkKXNldEl0
ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxXZWJQYXN0ZWJvYXJkSXRlbURh
dGEgKj4gKilpdGVtRGF0YQorLSAodm9pZClzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xp
c3RzOihOU0FycmF5PFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0ICo+ICopaXRl
bUxpc3RzCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnByb3ZpZGVycyA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07Ci0gICAgZm9yIChXZWJQYXN0ZWJvYXJkSXRlbURhdGEgKmRhdGEgaW4gaXRlbURh
dGEpIHsKLSAgICAgICAgaWYgKCFkYXRhLnJlcHJlc2VudGluZ09iamVjdHMuY291bnQgJiYgIWRh
dGEuYWRkaXRpb25hbERhdGEuY291bnQpCisgICAgZm9yIChXZWJJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25JbmZvTGlzdCAqaXRlbUxpc3QgaW4gaXRlbUxpc3RzKSB7CisgICAgICAgIGlmICghaXRl
bUxpc3QubnVtYmVyT2ZJdGVtcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJl
dGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW2dldFVJSXRl
bVByb3ZpZGVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOwotICAgICAgICAvLyBGaXJzdCwgcmVnaXN0
ZXIgYWxsIHBsYXRmb3JtIG9iamVjdHMsIHByaW9yaXRpemluZyBvYmplY3RzIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGFycmF5LgotICAgICAgICBmb3IgKGlkIHJlcHJlc2VudGluZ09iamVjdCBp
biBkYXRhLnJlcHJlc2VudGluZ09iamVjdHMpIHsKLSAgICAgICAgICAgIGlmICghW3JlcHJlc2Vu
dGluZ09iamVjdCBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKFVJSXRlbVByb3ZpZGVyV3Jp
dGluZyldKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIGl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tnZXRVSUl0ZW1Qcm92aWRlckNsYXNzKCkgYWxsb2NdIGluaXRdKTsK
KyAgICAgICAgW2l0ZW1MaXN0IGVudW1lcmF0ZUl0ZW1zOltpdGVtUHJvdmlkZXJdIChXZWJJdGVt
UHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvICppdGVtLCBOU1VJbnRlZ2VyKSB7CisgICAgICAgICAg
ICBpZiAoaXRlbS5yZXByZXNlbnRpbmdPYmplY3QpIHsKKyAgICAgICAgICAgICAgICBbaXRlbVBy
b3ZpZGVyIHJlZ2lzdGVyT2JqZWN0Oml0ZW0ucmVwcmVzZW50aW5nT2JqZWN0IHZpc2liaWxpdHk6
VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFtpdGVtUHJv
dmlkZXIgcmVnaXN0ZXJPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2Vu
dGluZ09iamVjdCB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25PcHRpb25z
VmlzaWJpbGl0eUFsbF07Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXRlbS50eXBlSWRl
bnRpZmllci5sZW5ndGggfHwgIWl0ZW0uZGF0YS5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIC8vIE5leHQsIHJlZ2lzdGVyIG90aGVyIGN1c3RvbSBkYXRhIHJlcHJl
c2VudGF0aW9ucyBmb3IgdHlwZSBpZGVudGlmaWVycy4KLSAgICAgICAgTlNEaWN0aW9uYXJ5IDxO
U1N0cmluZyAqLCBOU0RhdGEgKj4gKmFkZGl0aW9uYWxEYXRhID0gZGF0YS5hZGRpdGlvbmFsRGF0
YTsKLSAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gYWRkaXRpb25hbERh
dGEpIHsKLSAgICAgICAgICAgIGlmICghW2FkZGl0aW9uYWxEYXRhW3R5cGVJZGVudGlmaWVyXSBp
c0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJS
ZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNz
ICooSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxl
cikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZGRp
dGlvbmFsRGF0YVt0eXBlSWRlbnRpZmllcl0sIG5pbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAwXTsKKyAg
ICAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGl0ZW1EYXRhID0gaXRlbS5kYXRhOworICAgICAg
ICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVu
dGlmaWVyOml0ZW0udHlwZUlkZW50aWZpZXIgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJl
c2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W2l0ZW1EYXRhXSAoSXRl
bVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikgLT4g
TlNQcm9ncmVzcyAqIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpdGVtRGF0
YS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAgICAg
fV07Ci0gICAgICAgIH0KKyAgICAgICAgfV07CiAgICAgICAgIFtwcm92aWRlcnMgYWRkT2JqZWN0
Oml0ZW1Qcm92aWRlci5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDA0MzZi
MzMyNWQ0ZGJkMWVkMzM5NDBiNWVmNTYzOGM2Y2IxOGYzYzEuLmZhMzgzNDgwNGVjYjBkMjAxNmMz
MTM1MDYzNWYzM2Y5MGZiZGNlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02Nyw2ICs2Nyw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6VVJMIHJl
YWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICAg
ICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggN2U5
YmI0NGIyZjUwYThjYTc0ODJmNzA1YTZmYTU3MDYzYmIxZGQ0NS4uYWY0MGUxNzYzM2JkMGJmNzY1
MTQ5Y2QxNzQ1MmNlYTcxMmE1ZjNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTg2LDYgKzE4
NiwxMSBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB9CiAKICNpZiBQTEFURk9STShJT1MpCit2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK3sKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5
cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHR5cGVzLCBpbmRleCk7Cit9CisKIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4
IGI4MzY1MTY2ZmIzODI0NmM5OTFiYzY4NzdkY2MwOGZiYTVlNGZjYTEuLmM5NjgxOTdiZmEwNDNk
OTM3ZWIyN2M5YzQ2NDczMjY2NjRjY2NjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE0MCw2
ICsxNDAsMTEgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldE51bWJlck9mRmlsZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QKIH0KIAogI2lmIFBMQVRGT1JNKElP
UykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKK3sKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHR5cGVzLCBpbmRl
eCk7Cit9CisKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVVSTFRvUGFzdGVib2FyZChj
b25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7
CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDg2Yjkw
MmRkNDc4YzE2NTAxZWQzMjNhMWMzYTU3MWI2YTNjYzNjZWQuLmJmOTQ2YzQ1ZjY0NzkzMzVhM2I4
NjY1Y2M5YWM0YTU1ZWY2MTYzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9T
KQorICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpOwogICAgIHZvaWQgd3JpdGVVUkxUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQg
d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJD
b250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZUlt
YWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMjE0MGY2NGRlYTQ2ZjYz
YmNkMTQxMGE5ZWEzZTE1ZGVhZDFlMjU2Ni4uOGE5MzZjNTMwNDdmZjMzM2M1MGUxYWYxNjE2ZmY1
MWQzZjBmNTk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2
NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkg
LT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKQog
ICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVp
bnQ2NF90IGl0ZW1zQ291bnQpCiAgICAgR2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lcykKKyAgICBH
ZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKQogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCA4YmE3MzNhNWUzN2IxNjA4NTQ1MjlhMmMzNDIyN2E3ZjVlZWI3ZmIzLi4zZDRmOTYw
ZTUzYjdlN2ZjOTY2OTIzNWIyNmY1NDFlMzI2ZjEyZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCkBAIC0yODcsNiArMjg3LDExIEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIH0K
IAogI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6OlJlcGx5KHR5
cGVzKSwgMCk7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVi
b2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVVSTFRvUGFzdGVi
b2FyZCh1cmwsIHBhc3RlYm9hcmROYW1lKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCA3ZmUzNDkyODZmOTUxNTdiODA0ZjU3YzI2ZDY1MWY2OGUwMDA1OGMxLi4yM2I0
ZmVjNDhhZmVlNWFmMWEwZGY3MGM4NTIwZWIxOGNkYjAxNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rp
b24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlu
dCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYx
OGUwNDEzMTEzYmJlNGRjMDFjMzYxOTkzM2M2ZDc4ZGNiN2FlY2QuLmVlOWRiMzJhOGRlMDc1Yjdh
OTE3Y2MyZTA4YzZiZDFjMmUyMTczZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxNy0wNC0yMSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXNwZWN0IGZpZGVsaXR5
IG9yZGVyIHdoZW4gcmVhZGluZyB3ZWIgY29udGVudCBmcm9tIGl0ZW0gcHJvdmlkZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgdW5pdCB0ZXN0IChEYXRhSW50ZXJhY3Rp
b25UZXN0cy5SZXNwZWN0c0V4dGVybmFsU291cmNlRmlkZWxpdHlSYW5raW5ncykuIFNlZSBXZWJD
b3JlIENoYW5nZUxvZyBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKworMjAxNy0wNC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBTdXBwb3J0IHdyaXRpbmcgbGluayB0aXRsZXMg
dG8gdGhlIHBhc3RlYm9hcmQgd2hlbiBiZWdpbm5pbmcgZGF0YSBpbnRlcmFjdGlvbiBvbiBhIGxp
bmsKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1
NAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IDcwY2Nk
N2VhMzVjZTUyMmZlYjhhNWU2ZmQyOTc0MDY3ZjBkZmQ2ODAuLmZkZmVkZTFhNDU1ZTljNjk0Y2Iz
ZDBkZjM2N2YwYjU2NmY2NTE1MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC0zMiw3ICszMiw5IEBACiAjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0
cmFzLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+
CisjaW1wb3J0IDxVSUtpdC9OU1N0cmluZytVSUl0ZW1Qcm92aWRlci5oPgogI2ltcG9ydCA8VUlL
aXQvTlNVUkwrVUlJdGVtUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UrVUlJdGVt
UHJvdmlkZXIuaD4KICNpbXBvcnQgPFVJS2l0L1VJSXRlbVByb3ZpZGVyX1ByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CkBAIC00NDUsNiArNDQ3LDM5IEBAIFRFU1Qo
RGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlSW1hZ2VBbmRIVE1MVG9VcGxvYWRB
cmVhKQogICAgIGNsZWFuVXBEYXRhSW50ZXJhY3Rpb25UZW1wb3JhcnlQYXRoKCk7CiB9CiAKK1RF
U1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIFJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJh
bmtpbmdzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b2ZvY3VzLWNvbnRlbnRl
ZGl0YWJsZSJdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJn
ZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSJdOworCisgICAgYXV0byBkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworCisgICAgLy8gSGVyZSwgb3VyIHNv
dXJjZSBpdGVtIHByb3ZpZGVyIHZlbmRzIHR3byByZXByZXNlbnRhdGlvbnM6IHBsYWluIHRleHQs
IGFuZCB0aGVuIGFuIGltYWdlLiBJZiB3ZSBkb24ndCByZXNwZWN0IHRoZQorICAgIC8vIGZpZGVs
aXR5IG9yZGVyIHJlcXVlc3RlZCBieSB0aGUgc291cmNlLCB3ZSdsbCBlbmQgdXAgYXNzdW1pbmcg
dGhhdCB0aGUgaW1hZ2UgaXMgYSBoaWdoZXIgZmlkZWxpdHkgcmVwcmVzZW50YXRpb24KKyAgICAv
LyB0aGFuIHRoZSBwbGFpbiB0ZXh0LCBhbmQgZXJyb25lb3VzbHkgaW5zZXJ0IHRoZSBpbWFnZS4g
SWYgd2UgcmVzcGVjdCBzb3VyY2UgZmlkZWxpdGllcywgd2UnbGwgaW5zZXJ0IHRleHQgcmF0aGVy
CisgICAgLy8gdGhhbiBhbiBpbWFnZS4KKyAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlcldp
dGhUZXh0Rmlyc3QgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdpc3Rlck9iamVjdDpAIkhl
bGxvIHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmls
aXR5QWxsXTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdpc3Rl
ck9iamVjdDp0ZXN0SWNvbkltYWdlKCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2Vu
dGF0aW9uVmlzaWJpbGl0eUFsbF07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRF
eHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJz
dC5nZXQoKSBdXTsKKworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1Bv
aW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkhlbGxvIHdvcmxkIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImVkaXRvci50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
ZWRpdG9yQ29udGFpbnNJbWFnZUVsZW1lbnRdKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLmlubmVySFRNTCA9ICcnIl07CisKKyAgICAvLyBOb3cg
d2UgcmVnaXN0ZXIgdGhlIGl0ZW0gcHJvdmlkZXJzIGluIHJldmVyc2UsIGFuZCBleHBlY3QgdGhl
IGltYWdlIHRvIGJlIGluc2VydGVkIGluc3RlYWQgb2YgdGV4dC4KKyAgICBhdXRvIHNpbXVsYXRl
ZEl0ZW1Qcm92aWRlcldpdGhJbWFnZUZpcnN0ID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFs
bG9jXSBpbml0XSk7CisgICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlcldpdGhJbWFnZUZpcnN0IHJl
Z2lzdGVyT2JqZWN0OnRlc3RJY29uSW1hZ2UoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0
aEltYWdlRmlyc3QgcmVnaXN0ZXJPYmplY3Q6QCJIZWxsbyB3b3JsZCIgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CisgICAgW2RhdGFJbnRlcmFj
dGlvblNpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVBy
b3ZpZGVyV2l0aEltYWdlRmlyc3QuZ2V0KCkgXV07CisKKyAgICBbZGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwg
MzAwKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IGVkaXRvckNvbnRhaW5zSW1hZ2VFbGVtZW50XSk7Cit9CisKIFRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlVVRGOFBsYWluVGV4dE9ubHkpCiB7CiAgICAgUmV0
YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307906</attachid>
            <date>2017-04-22 03:49:19 -0700</date>
            <delta_ts>2017-04-24 11:03:42 -0700</delta_ts>
            <desc>Attempt to fix OpenSource iOS builds</desc>
            <filename>bug-171155-20170422034918.patch</filename>
            <type>text/plain</type>
            <size>55120</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWExZDk3MWQ4MTU3ODUw
NWMwODU2YmFlMjg5YTg3MmUxYmExMjc3NC4uMTllZjUwMmQzMmZlOTgwYzg1YzczZWYxOGYzN2Vm
YmViNjgwOTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExMiBAQAogMjAxNy0wNC0yMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXNwZWN0IGZp
ZGVsaXR5IG9yZGVyIHdoZW4gcmVhZGluZyB3ZWIgY29udGVudCBmcm9tIGl0ZW0gcHJvdmlkZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgd2hlbiByZWFkaW5nIHdlYiBj
b250ZW50IGZyb20gcGFzdGVib2FyZHMsIHdlIGFzc3VtZSB0aGUgb2xkIFVJUGFzdGVib2FyZC9O
U1Bhc3RlYm9hcmQgbW9kZWwgd2hlcmVpbgorICAgICAgICB0aGUgZGVzdGluYXRpb24gbXVzdCBk
ZXRlcm1pbmUgd2hpY2ggb2YgdGhlIGl0ZW1zIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSB0aGUgaGln
aGVzdCBmaWRlbGl0eSBmb3IgdGhlIHB1cnBvc2VzIG9mCisgICAgICAgIGluc2VydGluZyBpbnRv
IGFuIGVkaXRhYmxlIGFyZWEuIFRoaXMgZGVzdGluYXRpb24tc2lkZSBmaWRlbGl0eSByYW5raW5n
IGlzIGRldGVybWluZWQgc29sZWx5IGJ5IHRoZSBOU0FycmF5CisgICAgICAgIHJldHVybmVkIGZy
b20gUGFzdGVib2FyZDo6c3VwcG9ydGVkUGFzdGVib2FyZFR5cGVzLCB3aGljaCBsaXN0cyBjb21w
YXRpYmxlIHR5cGVzIGluIG9yZGVyIGZyb20gaGlnaGVzdCBmaWRlbGl0eQorICAgICAgICB0byBs
b3dlc3QgZmlkZWxpdHkuIFBhc3RlYm9hcmQ6OnJlYWQgZWZmZWN0aXZlbHkgaXRlcmF0ZXMgb3Zl
ciB0aGlzIGxpc3Qgb2YgdHlwZXMgaW4gb3JkZXIsIGF0dGVtcHRpbmcgdG8gcmVhZAorICAgICAg
ICBoaWdoZXN0IGZpZGVsaXR5IHR5cGVzIGFuZCBiYWlsaW5nIHdoZW4gaXQgZmlyc3Qgc3VjY2Vz
c2Z1bGx5IHJlYWRzIGRhdGEuCisKKyAgICAgICAgSG93ZXZlciwgd2hlbiBvdXIgcGFzdGVib2Fy
ZCBpcyBiYWNrZWQgYnkgVUlJdGVtUHJvdmlkZXJzLCB3ZSBzaG91bGQgaW5zdGVhZCByZWFkIHBh
c3RlYm9hcmQgdHlwZXMgaW4gb3JkZXIgb2YKKyAgICAgICAgZmlkZWxpdHkgYXMgc3BlY2lmaWVk
IGJ5IHRoZSBzb3VyY2UgcmF0aGVyIHRoYW4gdGhlIGRlc3RpbmF0aW9uLiBUbyBhY2NvbXBsaXNo
IHRoaXMsIHdlIGludHJvZHVjZSBhbiBhbHRlcm5hdGUKKyAgICAgICAgY29kZXBhdGgsIFBhc3Rl
Ym9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcywgd2hpY2ggd2UgdGFrZSBpZiBQYXN0
ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMgaXMgdHJ1ZQorICAgICAgICAoY3VycmVudGx5
LCB0aGlzIG9ubHkgYXBwbGllcyBmb3IgdGhlIHB1cnBvc2VzIG9mIGRhdGEgaW50ZXJhY3Rpb24p
LiBUaGlzIHZlcnNpb24gZm9sbG93cyBhIGRpZmZlcmVudCBmbG93OgorICAgICAgICBmb3IgZWFj
aCBpdGVtIGluIHRoZSBwYXN0ZWJvYXJkLCB3ZSBhc2sgZm9yIGp1c3QgdGhlIFVUSXMgZm9yIHRo
YXQgaXRlbSwgaW4gb3JkZXIgb2YgZmlkZWxpdHkuIEZvciBlYWNoIGl0ZW0sCisgICAgICAgIHdl
IHRoZW4gY2FsbCByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZSB0byB0cnkgYW5k
IHJlYWQgZGF0YSBmb3IgdGhhdCB0eXBlLCBjb250aW51aW5nIHVudGlsIGVpdGhlcgorICAgICAg
ICBhbGwgVVRJcyBoYXZlIGJlZW4gYXR0ZW1wdGVkLCBvciByZWFkaW5nIHdhcyBzdWNjZXNzZnVs
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdHdvIGFkZGl0aW9uYWwgYWRqdXN0bWVudHMu
IEZpcnN0LCB3ZSBpbnRyb2R1Y2UgUGFzdGVib2FyZDo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRl
bUF0SW5kZXgsCisgICAgICAgIHdoaWNoIGlzIHVzZWQgYnkgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzIHdoZW4gcXVlcnlpbmcgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIFVU
SXMgZm9yIGVhY2gKKyAgICAgICAgcGFzdGVib2FyZCBpdGVtLCBzb3J0ZWQgYnkgaGlnaGVzdCB0
byBsb3dlc3QgZmlkZWxpdHkuCisKKyAgICAgICAgU2Vjb25kbHksIHdlIHJlZmFjdG9yIGxvZ2lj
IHRvIHdyaXRlIHRvIHRoZSBpdGVtIHByb3ZpZGVyIHBhc3RlYm9hcmQgaW4gUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLiBTaW5jZSB3ZSBhcmUKKyAgICAgICAgbm93IHJlc3BlY3RpbmcgZmlkZWxpdHkg
cmFua2luZ3Mgb24gdGhlIGRlc3RpbmF0aW9uLCB0aGUgc291cmNlIG11c3QgYWxzbyByZWdpc3Rl
ciBVVEkgdHlwZXMgaW4gdGhlIHJpZ2h0CisgICAgICAgIGZpZGVsaXR5IG9yZGVyLiBXaGlsZSB0
aGlzIHdhcyBtb3N0bHkgYWNoaWV2ZWQgdXNpbmcgb3VyIGV4aXN0aW5nIG1ldGhvZCBvZiB3cml0
aW5nIGEgbGlzdCBvZiBvYmplY3QKKyAgICAgICAgcmVwcmVzZW50YXRpb25zIHRvIHRoZSBwYXN0
ZWJvYXJkIGFuZCB0aGVuIGFsbCBvZiB0aGUgY29udGVudHMgb2YgYSBOU1N0cmluZyA9PiBOU0Rh
dGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICAgICAgIHByaXZhdGUgVVRJIGRhdGEsIHRoaXMg
YXBwcm9hY2ggaGFzIHR3byBmbGF3czoKKyAgICAgICAgMS4gIFdlIGFyZSB1bmFibGUgdG8gcmVn
aXN0ZXIgaGlnaC1wcmlvcml0eSBjdXN0b20gdHlwZXMsIGZvbGxvd2VkIGJ5IHJlcHJlc2VudGlu
ZyBvYmplY3RzLCBmb2xsb3dlZCBieSBtb3JlCisgICAgICAgICAgICBsb3dlci1wcmlvcml0eSBj
dXN0b20gdHlwZXMsIHNpbmNlIHdlIGFzc3VtZSB0aGF0IGFsbCBjdXN0b20gdHlwZXMgZm9sbG93
IGFsbCByZXByZXNlbnRpbmcgb2JqZWN0cy4KKyAgICAgICAgMi4gIFNpbmNlIHdlJ3JlIGp1c3Qg
aXRlcmF0aW5nIG92ZXIgYSBkaWN0aW9uYXJ5IG9mIE5TU3RyaW5nID0+IE5TRGF0YSB3aGVuIHJl
Z2lzdGVyaW5nIGN1c3RvbSBVVEkKKyAgICAgICAgICAgIHJlcHJlc2VudGF0aW9ucyB0byB0aGUg
aXRlbSBwcm92aWRlciwgdGhlcmUgY2Fubm90IGluaGVyZW50bHkgYmUgYW55IGZpZGVsaXR5IG9y
ZGVyaW5nIGZvciBjdXN0b20gdHlwZXMuCisKKyAgICAgICAgVG8gYWRkcmVzcyBib3RoIG9mIHRo
ZXNlIGlzc3Vlcywgd2UgaW50cm9kdWNlIHR3byBuZXcgb2JqZWN0cyB0aGF0IGVuY2Fwc3VsYXRl
IGhvdyB3ZSByZWdpc3RlciBkYXRhIHRvIHRoZSBpdGVtCisgICAgICAgIHByb3ZpZGVyIHBhc3Rl
Ym9hcmQuIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gcmVwcmVzZW50cyBzb21lIGRh
dGEgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCB0byBhbiBpdGVtCisgICAgICAgIHByb3ZpZGVyIChl
aXRoZXIgYW4gb2JqZWN0IGNvbmZvcm1pbmcgdG8gVUlJdGVtUHJvdmlkZXJXcml0aW5nLCBvciBh
biBOU1N0cmluZyBhbmQgTlNEYXRhKS4KKyAgICAgICAgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3QgcmVwcmVzZW50cyBhIGxpc3Qgb2YgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb3MgaW4gb3JkZXIgb2YgaGlnaGVzdCB0bworICAgICAgICBsb3dlc3QgZmlkZWxpdHku
IEluIFBsYXRmb3JtUGFzdGVib2FyZElPUywgd2UgdHJhbnNmb3JtIFBhc3RlYm9hcmRXZWJDb250
ZW50LCBQYXN0ZWJvYXJkSW1hZ2UsIGFuZCBQYXN0ZWJvYXJkVVJMCisgICAgICAgIGludG8gYSBX
ZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCwgd2hpY2ggd2UgdGhlbiBwYXNzIGFs
b25nIHRvIHRoZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLiBJbgorICAgICAgICBXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkLCB3ZSB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBXZWJJdGVtUHJvdmlk
ZXJSZWdpc3RyYXRpb25JbmZvcyBpbiB0aGUgbGlzdCBhbmQgcmVnaXN0ZXIKKyAgICAgICAgZWFj
aCBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvJ3MgcmVwcmVzZW50aW5nIG9iamVjdCBv
ciBkYXRhIHRvIHRoZSBpdGVtIHByb3ZpZGVyLgorCisgICAgICAgIFRlc3Q6IERhdGFJbnRlcmFj
dGlvblRlc3RzLlJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdzLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRm
b3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L0Fic3RyYWN0UGFzdGVib2FyZC5tbTogUmVtb3ZlZC4KKworICAgICAgICBNb3ZlcyBXZWJJdGVt
UHJvdmlkZXJEYXRhLCBmb3JtZXJseSBpbXBsZW1lbnRlZCBpbiBBYnN0cmFjdFBhc3RlYm9hcmQu
bW0sIGludG8gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbS4KKyAgICAgICAgV2UgY2FuIGRl
bGV0ZSBBYnN0cmFjdFBhc3RlYm9hcmQubW0gYXMgYSByZXN1bHQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRQYXN0ZWJv
YXJkV2ViQ29udGVudERhdGFGb3JUeXBlKToKKworICAgICAgICBQdWxsIG91dCBjb21tb24gbG9n
aWMgZm9yIHJlYWRpbmcgZGF0YSBnaXZlbiBhIFVUSSB0eXBlIGZyb20gdGhlIHBhc3RlYm9hcmQg
aW50byB0aGUgUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXIuCisgICAgICAgIFRoaXMgaXMgaW52
b2tlZCBmcm9tIGJvdGggdGhlIGV4aXN0aW5nIFBhc3RlYm9hcmQ6OnJlYWQgY29kZXBhdGgsIGFz
IHdlbGwgYXMgdGhlIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcworICAgICAgICBjb2RlcGF0
aC4KKworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisKKyAgICAgICAgUmVm
YWN0b3JlZCB0byBjYWxsIHRoZSBuZXcgcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5
cGUgaGVscGVyLiBCZWhhdmlvciBzaG91bGQgbm90IGhhdmUgY2hhbmdlZCwgdW5sZXNzCisgICAg
ICAgIHRoZSBwYXN0ZWJvYXJkIHN1cHBvcnRzIFVUSSBmaWRlbGl0aWVzLgorCisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToKKworICAgICAg
ICBBbiBhbHRlcm5hdGl2ZSB0byBQYXN0ZWJvYXJkOjpyZWFkIHRoYXQgY29uc2lkZXJzIHNvdXJj
ZS1zaWRlIGZpZGVsaXR5IHJhbmtpbmdzIG9mIFVUSXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKToK
KworICAgICAgICBSZWZhY3RvcmVkIHRvIGJ1aWxkIGEgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3QgYW5kIHBhc3MgaXQgdG8gdGhlIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
dG8KKyAgICAgICAgcmVnaXN0ZXIgaXRlbXMgYW5kIGRhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJh
dGlvbkluZm8gaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3Q6dHlwZUlkZW50aWZpZXI6ZGF0YTpd
KToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyByZXByZXNlbnRp
bmdPYmplY3RdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyB0
eXBlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvIGRhdGFdKToKKworICAgICAgICBSZXByZXNlbnRzIGEgc2luZ2xlIGNhbGxzIHRvIHJlZ2lz
dGVyIGRhdGEgb250byB0aGUgaXRlbSBwcm92aWRlciBwYXN0ZWJvYXJkLiBTZWUKKyAgICAgICAg
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGhlYWRlciBjb21tZW50cyBmb3IgbW9yZSBpbmZv
LgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGluaXRd
KToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWRkRGF0
YTpmb3JUeXBlOl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdCBhZGRSZXByZXNlbnRpbmdPYmplY3Q6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkluZm9MaXN0IG51bWJlck9mSXRlbXNdKToKKyAgICAgICAgKC1bV2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgaXRlbUF0SW5kZXg6XSk6CisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGVudW1lcmF0ZUl0ZW1zOl0pOgor
CisgICAgICAgIFJlcHJlc2VudHMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gcmVnaXN0ZXIgcmVwcmVz
ZW50YXRpb25zIG9udG8gdGhlIGl0ZW0gcHJvdmlkZXIgcGFzdGVib2FyZC4gU2VlCisgICAgICAg
IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBoZWFkZXIgY29tbWVudHMgZm9yIG1vcmUgaW5m
by4KKworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZCBzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOl0pOgorICAgICAg
ICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2Vu
dGF0aW9uczpdKTogRGVsZXRlZC4KKworMjAxNy0wNC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBTdXBwb3J0IHdyaXRpbmcgbGluayB0aXRsZXMg
dG8gdGhlIHBhc3RlYm9hcmQgd2hlbiBiZWdpbm5pbmcgZGF0YSBpbnRlcmFjdGlvbiBvbiBhIGxp
bmsKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1
NAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
YjI1Mjc5YTVlZjc3NGY1ZjUzMTk3MzA5NGVhNTcyNjgxYzg2MWQxZi4uMDY0NzlkZmQ4ZmViYzA1
ODIyYmFkM2E3MTNmYzJiNjdlODkxZjZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5
IEBACiAyMDE3LTA0LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CisgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50
IGZyb20gaXRlbSBwcm92aWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTE1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0cyBm
b3IgY2hhbmdlcyBpbiBXZWJDb3JlIChzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0
YWlscykuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1B
dEluZGV4KToKKworMjAxNy0wNC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKwogICAgICAgICBTdXBwb3J0IHdyaXRpbmcgbGluayB0aXRsZXMgdG8gdGhlIHBhc3Rl
Ym9hcmQgd2hlbiBiZWdpbm5pbmcgZGF0YSBpbnRlcmFjdGlvbiBvbiBhIGxpbmsKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NAogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjI5MmQwNTc3YzdhYWY3MzMz
ODE5MTI4MDZhOTI2MjhlZjNkYzdiNS4uZmMyZDJmM2E0OTYxZjFmNzg5OGQzNDk4OTdiYjNiMWNl
YjJkZDQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE3LTA0LTIxICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFJlc3BlY3QgZmlkZWxp
dHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBwcm92aWRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0cyBmb3IgY2hhbmdlcyBpbiBXZWJDb3JlIGJ5
IGFkZGluZyBwbHVtYmluZyB0byBzdXBwb3J0IFBhc3RlYm9hcmQ6OmdldFR5cGVzQnlGaWRlbGl0
eUZvckl0ZW1BdEluZGV4LiBTZWUKKyAgICAgICAgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKworMjAxNy0w
NC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBT
dXBwb3J0IHdyaXRpbmcgbGluayB0aXRsZXMgdG8gdGhlIHBhc3RlYm9hcmQgd2hlbiBiZWdpbm5p
bmcgZGF0YSBpbnRlcmFjdGlvbiBvbiBhIGxpbmsKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEz
NTY5Mzc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOWE5MDU1YmIzYWQwZDdkNjJmYmU0NGY4M2YxYjk5Njg2MDdkNmQ5My4uMWI0
NTUwMTMxODhhNWEyN2EwNzY2MzE3MDdkODgzOTBjNzBjM2I5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjg3Miw3ICs2ODcy
LDYgQEAKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMTIx
RTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2MkMy
NCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRp
dGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0
aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0
aWwuanMgKi87IH07Ci0JCUY0RDgzMTYyMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3Rl
Ym9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEQ4MzE2MTFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1tICovOyB9Owog
CQlGNTA2NjRGNzE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUwNjY0RjUxNTdGNTJEQzAw
QUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJRjUwNjY0RjgxNTdGNTJEQzAw
QUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xs
ZXIuaCAqLzsgfTsKIAkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU0MzQs
NyArMTU0MzMsNiBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0
ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UGFzdGVi
b2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3
NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1w
RWRpdGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0
MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBT
Y3JpcHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUwNjY0RjUxNTdGNTJEQzAwQUMyMjZG
IC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZvcm1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUw
NjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0aW9uTWVzc2Fn
ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA5OTEsNyArMjA5ODks
NiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2IC8qIHdh
ayAqLywKIAkJCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
LmggKi8sCi0JCQkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2Fy
ZC5tbSAqLywKIAkJCQkyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNwcCAq
LywKIAkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNwcCAqLywKIAkJCQlB
MUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi8sCkBAIC0zMTgxOCw3ICszMTgx
NSw2IEBACiAJCQkJQTYxNDhBNzgxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRNTEtleWdlbkVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjEwQTFDRTYzQjAwQjQyQjI1IC8qIEpT
SFRNTExhYmVsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyMzBBMUNFNjNC
MDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlG
NEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMDBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1M
TGlua0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjcwQTFDRTYzQjAwQjQy
QjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggYjk0ZDcwYTFmNmE1MjBiMDE4MWMzZDIzNWJlMmZiYjhj
N2RjOGI2OS4uNDI5ZTFhZjE0MDAyNDcwYTdjOGNmNjgwNjI1MmVlMTUyOTMyNzQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjE3LDYgKzIxNywxMSBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCByZXNwZWN0
c1VUSUZpZGVsaXRpZXMoKSBjb25zdDsKKyAgICB2b2lkIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxp
dGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpOworI2VuZGlmCisKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdm9pZCBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQoKTsKICAgICB2b2lkIHdy
aXRlUmFuZ2VUb0RhdGFPYmplY3QoUmFuZ2UmLCBGcmFtZSYpOyAvLyBGSVhNRTogTGF5ZXJpbmcg
dmlvbGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aAppbmRleCBjMmE2MzQ3NDk1ZjA4Y2NkMDFlOGU3YzBhZjYwMGMxZDYxMGIyOWE3Li43ZDU5Y2Q1
MjE2MjI0Y2UwZGQ4NWU1MzcxMmMzMmFhMzg3YzlmN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRh
SW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJ
dGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggNzkyM2MyZjZiNzU5ZmEy
Mjk5NzUzZDY4MWE5MzBhOWRlNDQ4MzBmMS4uNTNiMmNkOTQ2ZWFkZDkxZjNhOTQ0OGJkNmFlMTZh
YzYxYjYxYzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBX
RUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgaW50IGluZGV4KTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTdHJpbmcgdW5pcXVlTmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKaW5kZXggYjdlMWE1MDEwZDYwOGMzYzM4Yzk3YmI0ZmRm
NDM2MDY0NTI3MDcyOC4uMTlmMzE5Mzk5Njk1MDdjMGI0ZTUwZDA2YzExNjE4ZWE0NzBjOGNmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQu
aApAQCAtMjcsMTQgKzI3LDcgQEAKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIAotV0VCQ09SRV9F
WFBPUlQgQGludGVyZmFjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEgOiBOU09iamVjdAotCi0rIChp
bnN0YW5jZXR5cGUpaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVwcmVz
ZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERh
dGE7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBOU0FycmF5ICpy
ZXByZXNlbnRpbmdPYmplY3RzOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBzdHJv
bmcpIE5TRGljdGlvbmFyeSAqYWRkaXRpb25hbERhdGE7Ci0KLUBlbmQKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKIEBwcm90b2NvbCBBYnN0cmFjdFBhc3RlYm9hcmQgPE5TT2JqZWN0PgogQHJl
cXVpcmVkCkBAIC00NywxMSArNDAsMTQgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJQ
YXN0ZWJvYXJkSXRlbURhdGEgOiBOU09iamVjdAogLSAoTlNJbnRlZ2VyKWNoYW5nZUNvdW50Owog
CiBAb3B0aW9uYWwKLS0gKHZvaWQpc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOihO
U0FycmF5PFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAqPiAqKWl0ZW1EYXRhOworLSAodm9pZClzZXRJ
dGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOihOU0FycmF5ICopaXRlbUxpc3RzOwogLSAo
dm9pZClzZXRJdGVtczooTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilpdGVtczsKKy0gKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6
KE5TVUludGVnZXIpaW5kZXg7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TSW50
ZWdlciBudW1iZXJPZkZpbGVzOwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0Fy
cmF5PE5TVVJMICo+ICpmaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb247CiAKIEBlbmQKIAorTlNf
QVNTVU1FX05PTk5VTExfRU5ECisKICNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdhMmE1N2E1NzFhZDEyNjczMDQxOTJhMTI5NTc0OTg2
ZjQ3ZmMwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBYnN0cmFjdFBhc3RlYm9hcmQuaCIKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1AaW50ZXJmYWNlIFdlYlBhc3RlYm9hcmRJdGVt
RGF0YSAoKQotewotICAgIFJldGFpblB0cjxOU0FycmF5PiBfcmVwcmVzZW50aW5nT2JqZWN0czsK
LSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBfYWRkaXRpb25hbERhdGE7Ci19Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIFdlYlBhc3RlYm9hcmRJdGVtRGF0YQotCi0rIChpbnN0YW5jZXR5
cGUpaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2Jq
ZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEKLXsKLSAg
ICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3RzOnJlcHJl
c2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGFdIGF1dG9yZWxlYXNl
XTsKLX0KLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNB
cnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAq
KWFkZGl0aW9uYWxEYXRhCi17Ci0gICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAg
ICAgX3JlcHJlc2VudGluZ09iamVjdHMgPSByZXByZXNlbnRpbmdPYmplY3RzOwotICAgICAgICBf
YWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKE5TQXJyYXkgKilyZXByZXNlbnRpbmdPYmplY3RzCi17Ci0gICAgcmV0dXJuIF9y
ZXByZXNlbnRpbmdPYmplY3RzLmdldCgpOwotfQotCi0tIChOU0RpY3Rpb25hcnkgKilhZGRpdGlv
bmFsRGF0YQotewotICAgIHJldHVybiBfYWRkaXRpb25hbERhdGEuZ2V0KCk7Ci19Ci0KLUBlbmQK
LQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggODEzNWUyMzhiMDkyNzNiZWVhZjE3ODZhMjU3MjBlNWY3
MTcwNTJmMi4uMzljYTU3YjgxOTZkNWIyZWJiNDg2ZjIzMzFlMDQ3Y2MzYjMyNzdmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE2NSw4ICsx
NjUsNTMgQEAgc3RhdGljIE5TQXJyYXkqIHN1cHBvcnRlZEltYWdlVHlwZXMoKQogICAgIHJldHVy
biBAWyhpZClrVVRUeXBlUE5HLCAoaWQpa1VUVHlwZVRJRkYsIChpZClrVVRUeXBlSlBFRywgKGlk
KWtVVFR5cGVHSUZdOwogfQogCitzdGF0aWMgYm9vbCByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZShQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBQYXN0ZWJvYXJk
U3RyYXRlZ3kmIHN0cmF0ZWd5LCBOU1N0cmluZyAqdHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5n
OldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBXZWJB
cmNoaXZlUGJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpOworICAgICAgICByZXR1cm4gcmVhZGVy
LnJlYWRXZWJBcmNoaXZlKGJ1ZmZlci5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlSFRNTF0pIHsKKyAgICAgICAgU3RyaW5n
IGh0bWxTdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlSFRNTCwgcGFzdGVib2FyZE5hbWUpOworICAgICAgICByZXR1cm4gIWh0bWxTdHJp
bmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRIVE1MKGh0bWxTdHJpbmcpOworICAgIH0KKworICAg
IGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkg
eworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIHBhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcik7
CisgICAgfQorCisgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRU
eXBlUlRGXSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBwYXN0ZWJv
YXJkTmFtZSk7CisgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZl
cik7CisgICAgfQorCisgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmpl
Y3Q6dHlwZV0pIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRl
Z3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5h
bWUpOworICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIHR5cGUpOworICAgIH0KKworICAgIGlmIChbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVVSTF0pIHsKKyAgICAgICAgVVJMIHVybCA9IHN0cmF0
ZWd5LnJlYWRVUkxGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVVUkwsIHBhc3RlYm9h
cmROYW1lKTsKKyAgICAgICAgcmV0dXJuICF1cmwuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwo
dXJsLCBTdHJpbmcoKSk7CisgICAgfQorCisgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKENGU3Ry
aW5nUmVmKXR5cGUsIGtVVFR5cGVUZXh0KSkgeworICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3Ry
YXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVRleHQsIHBh
c3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJuICFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVy
LnJlYWRQbGFpblRleHQoc3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVy
KQogeworICAgIGlmIChyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSkgeworICAgICAgICByZWFkUmVz
cGVjdGluZ1VUSUZpZGVsaXRpZXMocmVhZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCiAgICAgaW50IG51bWJlck9mSXRlbXMgPSBzdHJhdGVn
eS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsKQEAgLTE3OSw1NCAr
MjI0LDMyIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
ciYgcmVhZGVyKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zOyBpKysp
IHsKICAgICAgICAgZm9yIChpbnQgdHlwZUluZGV4ID0gMDsgdHlwZUluZGV4IDwgbnVtYmVyT2ZU
eXBlczsgdHlwZUluZGV4KyspIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICp0eXBlID0gW3R5cGVz
IG9iamVjdEF0SW5kZXg6dHlwZUluZGV4XTsKLQotICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1
YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJvYXJkVHlwZV0pIHsKLSAgICAgICAgICAgICAgICBpZiAo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAocmVhZGVyLnJlYWRXZWJBcmNoaXZlKGJ1ZmZlci5nZXQoKSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3Ry
aW5nICopa1VUVHlwZUhUTUxdKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGh0bWxTdHJpbmcg
PSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZUhUTUwsIG1fcGFz
dGVib2FyZE5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghaHRtbFN0cmluZy5pc051bGwoKSAm
JiByZWFkZXIucmVhZEhUTUwoaHRtbFN0cmluZykpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5n
OihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGksIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkg
ewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJh
dGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJk
TmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkUlRGKCpidWZmZXIp
KQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250
YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwgdHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFk
SW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHR5cGUpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlYWRQYXN0
ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIFt0eXBlcyBvYmpl
Y3RBdEluZGV4OnR5cGVJbmRleF0sIGksIG1fcGFzdGVib2FyZE5hbWUpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgfQorfQogCi0gICAgICAgICAgICBpZiAoW3R5cGUg
aXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVVUkxdKSB7Ci0gICAgICAgICAgICAg
ICAgVVJMIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxGcm9tUGFzdGVib2FyZChpLCBrVVRUeXBlVVJM
LCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXVybC5pc051bGwoKSAm
JiByZWFkZXIucmVhZFVSTCh1cmwsIFN0cmluZygpKSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChbdHlwZSBp
c0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVRleHRdKSB7Ci0gICAgICAgICAgICAg
ICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpLCBr
VVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHJp
bmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Citib29sIFBhc3RlYm9hcmQ6OnJlc3BlY3Rz
VVRJRmlkZWxpdGllcygpIGNvbnN0Cit7CisgICAgLy8gRm9yIG5vdywgZGF0YSBpbnRlcmFjdGlv
biBpcyB0aGUgb25seSBmZWF0dXJlIHRoYXQgdXNlcyBpdGVtLXByb3ZpZGVyLWJhc2VkIHBhc3Rl
Ym9hcmQgcmVwcmVzZW50YXRpb25zLgorICAgIC8vIEluIHRoZSBmdXR1cmUsIHdlIG1heSBuZWVk
IHRvIGNvbnN1bHQgdGhlIGNsaWVudCBsYXllciB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qg
dGhlIHBhc3RlYm9hcmQgc3VwcG9ydHMKKyAgICAvLyBpdGVtIHR5cGVzIHJhbmtlZCBieSBmaWRl
bGl0eS4KKyAgICByZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZSA9PSAiZGF0YSBpbnRlcmFjdGlvbiBw
YXN0ZWJvYXJkIjsKK30KIAordm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVs
aXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKK3sKKyAgICBBU1NFUlQo
cmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpOworICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKKyAgICBmb3IgKE5TVUludGVnZXIg
aW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgewor
ICAgICAgICAvLyBUcnkgdG8gcmVhZCBkYXRhIGZyb20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhh
dCB0aGlzIHBhc3RlYm9hcmQgaXRlbSBzdXBwb3J0cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6
ZXMuIFR5cGUgaWRlbnRpZmllcnMgYXJlCisgICAgICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlk
ZWxpdHksIGFzIHNwZWNpZmllZCBieSBlYWNoIHBhc3RlYm9hcmQgaXRlbS4KKyAgICAgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHk7CisgICAgICAgIHN0cmF0
ZWd5LmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHR5cGVzRm9ySXRlbUluT3JkZXJP
ZkZpZGVsaXR5LCBpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIGZvciAoYXV0byYg
dHlwZSA6IHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5KSB7CisgICAgICAgICAgICBpZiAo
cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlw
ZSwgaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggNThhZGM5NmUxOTdhZmFmNmExNGM3ZTI0ZjMy
YmIzMzMwMjZlMWIyZC4uYWU5MzBlMjBmMzZhNzQ0M2U2NjVhOWIyNzE5MDFkMjA4NDk4ZDA0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC0zOCw3ICszOCwxMCBAQAogI2ltcG9ydCA8VUlLaXQvVUlQYXN0ZWJvYXJk
Lmg+CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyNpbXBvcnQgPFVJS2l0L05TQXR0
cmlidXRlZFN0cmluZytVSUl0ZW1Qcm92aWRlci5oPgorI2ltcG9ydCA8VUlLaXQvTlNTdHJpbmcr
VUlJdGVtUHJvdmlkZXIuaD4KICNpbXBvcnQgPFVJS2l0L05TVVJMK1VJSXRlbVByb3ZpZGVyLmg+
CisjaW1wb3J0IDxVSUtpdC9VSUltYWdlK1VJSXRlbVByb3ZpZGVyLmg+CiAjZW5kaWYKIAogU09G
VF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKQEAgLTczLDYgKzc2LDE2IEBAIHZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgICAgIHR5cGVz
LmFwcGVuZChwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpn
ZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGlu
dCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1z
XSB8fCAhW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBhc3RlYm9h
cmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDopXSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTlNBcnJheSAqcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eSA9IFttX3Bhc3RlYm9hcmQgcGFz
dGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OmluZGV4XTsKKyAgICBmb3IgKE5T
U3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5KQorICAg
ICAgICB0eXBlcy5hcHBlbmQodHlwZUlkZW50aWZpZXIpOworfQorCiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJikKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4NywyNCArMjAwLDM3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PiByaWNoVGV4dFJlcHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJD
b250ZW50KGNvCiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2Vu
dGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIHsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IGFkZGl0aW9uYWxEYXRhID0gcmljaFRleHRSZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2Vi
Q29udGVudChjb250ZW50KTsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBSZXRh
aW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3Rl
ciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10g
aW5pdF0pOworCisgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRl
bnQuY2xpZW50RGF0YS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29u
dGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIFtpdGVtc1Rv
UmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisKKyAgICBpZiAoY29udGVudC5k
YXRhSW5XZWJBcmNoaXZlRm9ybWF0KQorICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQpIHsKICAgICAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOmNv
bnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
OwogICAgICAgICBpZiAoYXR0cmlidXRlZFN0cmluZykKLSAgICAgICAgICAgIFtvYmplY3RSZXBy
ZXNlbnRhdGlvbnMgYWRkT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOworICAgICAgICAgICAgW2l0
ZW1zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAg
ICAgfQogCisgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0KQorICAgICAgICBbaXRlbXNU
b1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CisKICAgICBpZiAoIWNvbnRl
bnQuZGF0YUluU3RyaW5nRm9ybWF0LmlzRW1wdHkoKSkKLSAgICAgICAgW29iamVjdFJlcHJlc2Vu
dGF0aW9ucyBhZGRPYmplY3Q6KE5TU3RyaW5nICopY29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXRd
OworICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDooTlNTdHJp
bmcgKiljb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdF07CiAKLSAgICBbbV9wYXN0ZWJvYXJkIHNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEg
aXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBh
ZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV1dXTsKKyAgICBbbV9wYXN0ZWJvYXJk
IHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdl
dCgpIF1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGVudCk7CisjZW5kaWYKIH0KIAog
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQogewotICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgaWYg
KFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc1VzaW5n
UmVnaXN0cmF0aW9uSW5mb0xpc3RzOildKSB7CiAgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50
YXRpb25zKGNvbnRlbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4LDMwICsyNDQs
MzMgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJD
b250ZW50JiBjb250ZW50KQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RS
ZXByZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7
Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlRGljdGlvbmFyeT4gYWRkaXRpb25hbERhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAg
IFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gaXRlbXNUb1Jl
Z2lzdGVyID0gYWRvcHROUyhbW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGFs
bG9jXSBpbml0XSk7CisKKyAgICBpZiAoIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBl
LmlzTnVsbCgpKQorICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6cGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZV07CiAKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHBh
c3RlYm9hcmRJbWFnZS5pbWFnZS0+bmF0aXZlSW1hZ2UoKSkgewogICAgICAgICBVSUltYWdlICp1
aUltYWdlID0gKFVJSW1hZ2UgKilbZ2V0VUlJbWFnZUNsYXNzKCkgaW1hZ2VXaXRoQ0dJbWFnZTpu
YXRpdmVJbWFnZS5nZXQoKV07CiAgICAgICAgIGlmICh1aUltYWdlKQotICAgICAgICAgICAgW29i
amVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6dWlJbWFnZV07CisgICAgICAgICAgICBbaXRl
bXNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDp1aUltYWdlXTsKICAgICB9CiAKICAg
ICBpZiAoIXBhc3RlYm9hcmRJbWFnZS51cmwudXJsLmlzRW1wdHkoKSkgewogICAgICAgICBOU1VS
TCAqbnNVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybDsKICAgICAgICAgaWYgKG5zVVJMKQot
ICAgICAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6bnNVUkxdOworICAg
ICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6bnNVUkxdOwog
ICAgIH0KIAotICAgIGlmICghcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNOdWxs
KCkpCi0gICAgICAgIFthZGRpdGlvbmFsRGF0YSBzZXRPYmplY3Q6cGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yS2V5OnBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZU1JTUVUeXBlXTsKLQotICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXNGcm9tT2JqZWN0
UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJlc2Vu
dGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdldCgpIGFkZGl0aW9uYWxEYXRhOmFk
ZGl0aW9uYWxEYXRhLmdldCgpXV1dOworICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXNVc2luZ1Jl
Z2lzdHJhdGlvbkluZm9MaXN0czpAWyBpdGVtc1RvUmVnaXN0ZXIuZ2V0KCkgXV07CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShwYXN0ZWJvYXJkSW1hZ2UpOworI2VuZGlmCiB9CiAKIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJ
bWFnZSkKIHsKLSAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgIGlmIChbbV9w
YXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNVc2luZ1JlZ2lz
dHJhdGlvbkluZm9MaXN0czopXSkgewogICAgICAgICB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9u
cyhwYXN0ZWJvYXJkSW1hZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjU2LDI3ICsy
ODUsMjkgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJ
bWFnZSYgcGFzdGVib2FyZEltYWdlKQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVP
YmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0KQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVw
cmVzZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0g
ICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKKyAgICBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5m
b0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25JbmZvTGlzdCBhbGxvY10gaW5pdF0pOwogCiAgICAgTlNTdHJpbmcgKnBhc3RlYm9hcmRU
eXBlQXNOU1N0cmluZyA9IHBhc3RlYm9hcmRUeXBlOwogICAgIE5TU3RyaW5nICp0ZXh0QXNOU1N0
cmluZyA9IHRleHQ7CiAgICAgaWYgKHRleHRBc05TU3RyaW5nICYmIHBhc3RlYm9hcmRUeXBlQXNO
U1N0cmluZy5sZW5ndGgpIHsKICAgICAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXBhc3RlYm9hcmRUeXBlQXNOU1N0cmluZywga1VUVHlwZVVSTCkpCi0gICAg
ICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDpbW1tOU1VSTCBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6dGV4dEFzTlNTdHJpbmddIGF1dG9yZWxlYXNlXV07CisgICAgICAgICAg
ICBbaXRlbXNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDpbW1tOU1VSTCBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6dGV4dEFzTlNTdHJpbmddIGF1dG9yZWxlYXNlXV07CiAKICAgICAgICAg
aWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBhc3RlYm9hcmRUeXBl
QXNOU1N0cmluZywga1VUVHlwZVRleHQpKQotICAgICAgICAgICAgW29iamVjdFJlcHJlc2VudGF0
aW9ucyBhZGRPYmplY3Q6dGV4dEFzTlNTdHJpbmddOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBbYWRkaXRpb25hbERhdGEgc2V0T2JqZWN0OnRleHRBc05TU3RyaW5nIGZvcktleTpwYXN0ZWJv
YXJkVHlwZUFzTlNTdHJpbmddOworICAgICAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGRSZXBy
ZXNlbnRpbmdPYmplY3Q6dGV4dEFzTlNTdHJpbmddOwogICAgIH0KIAotICAgIFttX3Bhc3RlYm9h
cmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVt
RGF0YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdl
dCgpIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXV1dOworICAgIFttX3Bhc3Rl
Ym9hcmQgc2V0SXRlbXNVc2luZ1JlZ2lzdHJhdGlvbkluZm9MaXN0czpAWyBpdGVtc1RvUmVnaXN0
ZXIuZ2V0KCkgXV07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRleHQpOworI2VuZGlmCiB9CiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQpCiB7Ci0gICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICBpZiAoW21fcGFz
dGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zVXNpbmdSZWdpc3Ry
YXRpb25JbmZvTGlzdHM6KV0pIHsKICAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
cGFzdGVib2FyZFR5cGUsIHRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjkzLDIy
ICszMjQsMjQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIAogdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVy
bCkKIHsKLSAgICBhdXRvIG9iamVjdFJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAg
IFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gaXRlbXNUb1Jl
Z2lzdGVyID0gYWRvcHROUyhbW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGFs
bG9jXSBpbml0XSk7CiAKICAgICBpZiAoTlNVUkwgKm5zVVJMID0gdXJsLnVybCkgewotICAgICAg
ICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDpuc1VSTF07Ci0jaWYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCisgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5n
T2JqZWN0Om5zVVJMXTsKICAgICAgICAgaWYgKCF1cmwudGl0bGUuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgbnNVUkwuX3RpdGxlID0gdXJsLnRpdGxlOwotI2VuZGlmCiAgICAgfQogCi0gICAgW21f
cGFzdGVib2FyZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFzdGVi
b2FyZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czpvYmplY3RSZXByZXNlbnRh
dGlvbnMuZ2V0KCkgYWRkaXRpb25hbERhdGE6bmlsXV1dOworICAgIFttX3Bhc3RlYm9hcmQgc2V0
SXRlbXNVc2luZ1JlZ2lzdHJhdGlvbkluZm9MaXN0czpAWyBpdGVtc1RvUmVnaXN0ZXIuZ2V0KCkg
XV07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh1cmwpOworI2VuZGlmCiB9CiAKIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCiB7Ci0gICAg
aWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc0Zy
b21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZvTGlz
dHM6KV0pIHsKICAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnModXJsKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCmluZGV4IDgzMjNlNzIwNzhiNDdiN2QwNzcy
ZTY0MjA5YThmMTM1NGIxNmIwOTcuLjc1ODVmMDBiNmU1NDQ4YWQ3ODM1YjI1OTIxNmRlZDA1OTJh
NWM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaApAQCAtMjgsOSArMjgsNDUgQEAKICNpZiBUQVJHRVRfT1Nf
SVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAogCiBA
Y2xhc3MgVUlJdGVtUHJvdmlkZXI7CitAcHJvdG9jb2wgVUlJdGVtUHJvdmlkZXJXcml0aW5nOwog
CiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCisvKioKKyAqIEEgV2ViSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uSW5mbyByZXByZXNlbnRzIGEgc2luZ2xlIGNhbGwgdG8gcmVnaXN0ZXIgc29tZXRo
aW5nIHRvIGFuIGl0ZW0gcHJvdmlkZXIuCisgKiBFaXRoZXIgdGhlIHJlcHJlc2VudGluZyBvYmpl
Y3QgZXhpc3RzIGFuZCB0aGUgdHlwZSBpZGVudGlmaWVyIGFuZCBkYXRhIGFyZSBuaWwsIG9yIHRo
ZSByZXByZXNlbnRpbmcKKyAqIG9iamVjdCBpcyBuaWwgYW5kIHRoZSB0eXBlIGlkZW50aWZpZXIg
YW5kIGRhdGEgZXhpc3QuIFRoZSBmb3JtZXIgcmVwcmVzZW50cyBhIGNhbGwgdG8gcmVnaXN0ZXIg
YW4KKyAqIGVudGlyZSBVSUl0ZW1Qcm92aWRlcldyaXRpbmctY29uZm9ybWFudCBvYmplY3QgdG8g
dGhlIGl0ZW0gcHJvdmlkZXIsIHdoaWxlIHRoZSBsYXR0ZXIgcmVwcmVzZW50cyBhCisgKiBjYWxs
IHRvIHJlZ2lzdGVyIG9ubHkgYSBkYXRhIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZ2l2ZW4gdHlw
ZSBpZGVudGlmaWVyLgorICovCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm8gOiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIG51bGxhYmxlLCBzdHJvbmcpIGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+IHJl
cHJlc2VudGluZ09iamVjdDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFi
bGUsIHN0cm9uZykgTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgc3Ryb25nKSBOU0RhdGEgKmRhdGE7CisKK0BlbmQKKwor
LyoqCisgKiBBIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IHJlcHJlc2VudHMg
YSBzZXJpZXMgb2YgcmVnaXN0cmF0aW9uIGNhbGxzIHVzZWQgdG8gc2V0IHVwIGEKKyAqIHNpbmds
ZSBpdGVtIHByb3ZpZGVyLiBUaGUgb3JkZXIgb2YgaXRlbXMgc3BlY2lmaWVkIGluIHRoZSBsaXN0
IChsb3dlc3QgaW5kaWNlcyBmaXJzdCkgaXMgdGhlIG9yZGVyCisgKiBpbiB3aGljaCBvYmplY3Rz
IG9yIGRhdGEgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIGl0ZW0gcHJvdmlkZXIsIGFuZCB0aGVyZWZv
cmUgaW5kaWNhdGVzIHRoZSByZWxhdGl2ZQorICogZmlkZWxpdHkgb2YgZWFjaCBpdGVtLgorICoK
KyAqIFByaXZhdGUgVVRJIHR5cGVzLCBzdWNoIGFzIHRob3NlIHZlbmRlZCB0aHJvdWdoIHRoZSBp
bmplY3RlZCBlZGl0aW5nIGJ1bmRsZSBTUEksIGFyZSBjb25zaWRlcmVkIHRvCisgKiBiZSBoaWdo
ZXIgZmlkZWxpdHkgdGhhbiB0aGUgb3RoZXIgZGVmYXVsdCB0eXBlcy4KKyAqLworV0VCQ09SRV9F
WFBPUlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCA6IE5T
T2JqZWN0CisKKy0gKHZvaWQpYWRkUmVwcmVzZW50aW5nT2JqZWN0OihpZCA8VUlJdGVtUHJvdmlk
ZXJXcml0aW5nPilvYmplY3Q7CistICh2b2lkKWFkZERhdGE6KE5TRGF0YSAqKWRhdGEgZm9yVHlw
ZTooTlNTdHJpbmcgKil0eXBlSWRlbnRpZmllcjsKKworLSAoTlNVSW50ZWdlciludW1iZXJPZkl0
ZW1zOworLSAobnVsbGFibGUgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAqKWl0ZW1B
dEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OworLSAodm9pZCllbnVtZXJhdGVJdGVtczoodm9pZChe
KShXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvICppdGVtLCBOU1VJbnRlZ2VyIGluZGV4
KSlibG9jazsKKworQGVuZAorCiB0eXBlZGVmIHZvaWQgKF5XZWJJdGVtUHJvdmlkZXJGaWxlTG9h
ZEJsb2NrKShOU0FycmF5PE5TVVJMICo+ICopOwogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgOiBOU09iamVjdDxBYnN0cmFjdFBhc3RlYm9hcmQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDA2MGY1MmMyNGNhMjAxMGVhYmE3ZDlhMWZiYmEzZjk1MzIz
OWI0OTguLmVhZDhjYTBjZDc5OWU1OGVjNzk2YjA3YWYyOTBiYmJiNzM2NWZkOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tCkBAIC03Niw2ICs3Niw5NiBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0
cmluZyAqdHlwZSkKICAgICByZXR1cm4gTUFUQ0hFU19VVElfVFlQRSh0eXBlLCBQTkcpIHx8IE1B
VENIRVNfVVRJX1RZUEUodHlwZSwgSlBFRykgfHwgTUFUQ0hFU19VVElfVFlQRSh0eXBlLCBHSUYp
IHx8IE1BVENIRVNfVUlLSVRfVFlQRSh0eXBlLCBpbWFnZSk7CiB9CiAKK0BpbnRlcmZhY2UgV2Vi
SXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAoKQoreworICAgIFJldGFpblB0cjxpZDxVSUl0
ZW1Qcm92aWRlcldyaXRpbmc+PiBfcmVwcmVzZW50aW5nT2JqZWN0OworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gX3R5cGVJZGVudGlmaWVyOworICAgIFJldGFpblB0cjxOU0RhdGE+IF9kYXRhOwor
fQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5m
bworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3Q6KGlkIDxVSUl0
ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGluZ09iamVjdCB0eXBlSWRlbnRpZmllcjooTlNT
dHJpbmcgKil0eXBlSWRlbnRpZmllciBkYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgaWYgKHJl
cHJlc2VudGluZ09iamVjdCkKKyAgICAgICAgQVNTRVJUKCF0eXBlSWRlbnRpZmllciAmJiAhZGF0
YSk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQodHlwZUlkZW50aWZpZXIgJiYgZGF0YSk7CisK
KyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBfcmVwcmVzZW50aW5nT2Jq
ZWN0ID0gcmVwcmVzZW50aW5nT2JqZWN0OworICAgICAgICBfdHlwZUlkZW50aWZpZXIgPSB0eXBl
SWRlbnRpZmllcjsKKyAgICAgICAgX2RhdGEgPSBkYXRhOworICAgIH0KKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAoaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0
Cit7CisgICAgcmV0dXJuIF9yZXByZXNlbnRpbmdPYmplY3QuZ2V0KCk7Cit9CisKKy0gKE5TU3Ry
aW5nICopdHlwZUlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gX3R5cGVJZGVudGlmaWVyLmdldCgp
OworfQorCistIChOU0RhdGEgKilkYXRhCit7CisgICAgcmV0dXJuIF9kYXRhLmdldCgpOworfQor
CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Qg
KCkKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9pdGVtczsKK30KK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAg
ICAgIF9pdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYWRkRGF0YTooTlNEYXRhICopZGF0YSBmb3JU
eXBlOihOU1N0cmluZyAqKXR5cGVJZGVudGlmaWVyCit7CisgICAgW19pdGVtcyBhZGRPYmplY3Q6
W1tbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyBhbGxvY10gaW5pdFdpdGhSZXByZXNl
bnRpbmdPYmplY3Q6bmlsIHR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIGRhdGE6ZGF0YV0g
YXV0b3JlbGVhc2VdXTsKK30KKworLSAodm9pZClhZGRSZXByZXNlbnRpbmdPYmplY3Q6KGlkIDxV
SUl0ZW1Qcm92aWRlcldyaXRpbmc+KW9iamVjdAoreworICAgIEFTU0VSVChbb2JqZWN0IGNvbmZv
cm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woVUlJdGVtUHJvdmlkZXJXcml0aW5nKV0pOworICAgIFtf
aXRlbXMgYWRkT2JqZWN0OltbW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gYWxsb2Nd
IGluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0Om9iamVjdCB0eXBlSWRlbnRpZmllcjpuaWwgZGF0
YTpuaWxdIGF1dG9yZWxlYXNlXV07Cit9CisKKy0gKE5TVUludGVnZXIpbnVtYmVyT2ZJdGVtcwor
eworICAgIHJldHVybiBbX2l0ZW1zIGNvdW50XTsKK30KKworLSAoV2ViSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uSW5mbyAqKWl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4Cit7CisgICAgaWYg
KGluZGV4ID49IHNlbGYubnVtYmVyT2ZJdGVtcykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IHJldHVybiBbX2l0ZW1zIG9iamVjdEF0SW5kZXg6aW5kZXhdOworfQorCistICh2b2lkKWVudW1l
cmF0ZUl0ZW1zOih2b2lkICheKShXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvICosIE5T
VUludGVnZXIpKWJsb2NrCit7CisgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMDsgaW5kZXgg
PCBzZWxmLm51bWJlck9mSXRlbXM7ICsraW5kZXgpCisgICAgICAgIGJsb2NrKFtzZWxmIGl0ZW1B
dEluZGV4OmluZGV4XSwgaW5kZXgpOworfQorCitAZW5kCisKIEBpbnRlcmZhY2UgV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZCAoKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNJbnRlZ2VyIG51
bWJlck9mSXRlbXM7CkBAIC0xMTEsNiArMjAxLDExIEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VUeXBl
KE5TU3RyaW5nICp0eXBlKQogICAgIHJldHVybiBzZWxmOwogfQogCistIChOU0FycmF5PE5TU3Ry
aW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRl
Z2VyKWluZGV4Cit7CisgICAgcmV0dXJuIFtzZWxmIGl0ZW1Qcm92aWRlckF0SW5kZXg6aW5kZXhd
LnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgPzogQFsgXTsKK30KKwogLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlcwogewogICAgIGlmIChfY2FjaGVkVHlwZUlkZW50aWZp
ZXJzKQpAQCAtMTUzLDM0ICsyNDgsMjkgQEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJp
bmcgKnR5cGUpCiAgICAgcmV0dXJuIFtfaXRlbVByb3ZpZGVycyBjb3VudF07CiB9CiAKLS0gKHZv
aWQpc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOihOU0FycmF5PFdlYlBhc3RlYm9h
cmRJdGVtRGF0YSAqPiAqKWl0ZW1EYXRhCistICh2b2lkKXNldEl0ZW1zVXNpbmdSZWdpc3RyYXRp
b25JbmZvTGlzdHM6KE5TQXJyYXk8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Qg
Kj4gKilpdGVtTGlzdHMKIHsKICAgICBOU011dGFibGVBcnJheSAqcHJvdmlkZXJzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAqZGF0YSBp
biBpdGVtRGF0YSkgewotICAgICAgICBpZiAoIWRhdGEucmVwcmVzZW50aW5nT2JqZWN0cy5jb3Vu
dCAmJiAhZGF0YS5hZGRpdGlvbmFsRGF0YS5jb3VudCkKKyAgICBmb3IgKFdlYkl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkluZm9MaXN0ICppdGVtTGlzdCBpbiBpdGVtTGlzdHMpIHsKKyAgICAgICAg
aWYgKCFpdGVtTGlzdC5udW1iZXJPZkl0ZW1zKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgUmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtb
Z2V0VUlJdGVtUHJvdmlkZXJDbGFzcygpIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZpcnN0
LCByZWdpc3RlciBhbGwgcGxhdGZvcm0gb2JqZWN0cywgcHJpb3JpdGl6aW5nIG9iamVjdHMgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkuCi0gICAgICAgIGZvciAoaWQgcmVwcmVzZW50aW5n
T2JqZWN0IGluIGRhdGEucmVwcmVzZW50aW5nT2JqZWN0cykgewotICAgICAgICAgICAgaWYgKCFb
cmVwcmVzZW50aW5nT2JqZWN0IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woVUlJdGVtUHJv
dmlkZXJXcml0aW5nKV0pCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8g
aXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW2dldFVJSXRlbVByb3ZpZGVyQ2xhc3MoKSBhbGxvY10g
aW5pdF0pOworICAgICAgICBbaXRlbUxpc3QgZW51bWVyYXRlSXRlbXM6W2l0ZW1Qcm92aWRlcl0g
KFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gKml0ZW0sIE5TVUludGVnZXIpIHsKKyAg
ICAgICAgICAgIGlmIChpdGVtLnJlcHJlc2VudGluZ09iamVjdCkgeworICAgICAgICAgICAgICAg
IFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6aXRlbS5yZXByZXNlbnRpbmdPYmplY3Qgdmlz
aWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGxd
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
W2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4p
cmVwcmVzZW50aW5nT2JqZWN0IHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlv
bk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpdGVt
LnR5cGVJZGVudGlmaWVyLmxlbmd0aCB8fCAhaXRlbS5kYXRhLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gTmV4dCwgcmVnaXN0ZXIgb3RoZXIgY3VzdG9tIGRh
dGEgcmVwcmVzZW50YXRpb25zIGZvciB0eXBlIGlkZW50aWZpZXJzLgotICAgICAgICBOU0RpY3Rp
b25hcnkgPE5TU3RyaW5nICosIE5TRGF0YSAqPiAqYWRkaXRpb25hbERhdGEgPSBkYXRhLmFkZGl0
aW9uYWxEYXRhOwotICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBhZGRp
dGlvbmFsRGF0YSkgewotICAgICAgICAgICAgaWYgKCFbYWRkaXRpb25hbERhdGFbdHlwZUlkZW50
aWZpZXJdIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIgdmlzaWJpbGl0eTpVSUl0ZW1Q
cm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5T
UHJvZ3Jlc3MgKihJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGFkZGl0aW9uYWxEYXRhW3R5cGVJZGVudGlmaWVyXSwgbmlsKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDox
MDBdOworICAgICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gaXRlbURhdGEgPSBpdGVtLmRhdGE7
CisgICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9y
VHlwZUlkZW50aWZpZXI6aXRlbS50eXBlSWRlbnRpZmllciB2aXNpYmlsaXR5OlVJSXRlbVByb3Zp
ZGVyUmVwcmVzZW50YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbaXRlbURh
dGFdIChJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyKSAtPiBOU1Byb2dyZXNzICogeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGl0ZW1EYXRhLmdldCgpLCBuaWwpOworICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
ICAgICAgICB9XTsKLSAgICAgICAgfQorICAgICAgICB9XTsKICAgICAgICAgW3Byb3ZpZGVycyBh
ZGRPYmplY3Q6aXRlbVByb3ZpZGVyLmdldCgpXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5k
ZXggMDQzNmIzMzI1ZDRkYmQxZWQzMzk0MGI1ZWY1NjM4YzZjYjE4ZjNjMS4uZmEzODM0ODA0ZWNi
MGQyMDE2YzMxMzUwNjM1ZjMzZjkwZmJkY2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY3LDYg
KzY3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNl
bmRpZgogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpp
bmRleCA3ZTliYjQ0YjJmNTBhOGNhNzQ4MmY3MDVhNmZhNTcwNjNiYjFkZDQ1Li5hZjQwZTE3NjMz
YmQwYmY3NjUxNDljZDE3NDUyY2VhNzEyYTVmM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0x
ODYsNiArMTg2LDExIEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmls
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIH0KIAogI2lmIFBMQVRGT1JNKElPUykK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJ
bmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQoreworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlwZXMsIGluZGV4KTsKK30KKwog
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHVybCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KaW5kZXggYjgzNjUxNjZmYjM4MjQ2Yzk5MWJjNjg3N2RjYzA4ZmJhNWU0ZmNhMS4uYzk2ODE5
N2JmYTA0M2Q5MzdlYjI3YzljNDY0NzMyNjY2NGNjY2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpA
QCAtMTQwLDYgKzE0MCwxMSBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZG
aWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdAogfQogCiAjaWYgUExB
VEZPUk0oSU9TKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQoreworICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlw
ZXMsIGluZGV4KTsKK30KKwogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKaW5k
ZXggODZiOTAyZGQ0NzhjMTY1MDFlZDMyM2ExYzNhNTcxYjZhM2NjM2NlZC4uYmY5NDZjNDVmNjQ3
OTMzNWEzYjg2NjVjYzlhYzRhNTVlZjYxNjMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtNjksNiArNjksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICNpZiBQTEFU
Rk9STShJT1MpCisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0
SW5kZXgodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcyk7CiAgICAgdm9pZCB3cml0ZVVSTFRvUGFzdGVib2FyZChjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lk
IHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyMTQwZjY0
ZGVhNDZmNjNiY2QxNDEwYTllYTNlMTVkZWFkMWUyNTY2Li44YTkzNmM1MzA0N2ZmMzMzYzUwZTFh
ZjE2MTZmZjUxZDNmMGY1OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9h
cmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90
IHNpemUpCiAgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkKICAgICBHZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJh
Y3Rpb24oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVz
KQorICAgIEdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMp
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCmluZGV4IDhiYTczM2E1ZTM3YjE2MDg1NDUyOWEyYzM0MjI3YTdmNWVlYjdmYjMu
LjNkNGY5NjBlNTNiN2U3ZmM5NjY5MjM1YjI2ZjU0MWUzMjZmMTJmY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI4Nyw2ICsyODcsMTEgQEAgaW50IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
dWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0
eUZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDo6
UmVwbHkodHlwZXMpLCAwKTsKK30KKwogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRl
VG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlVVJM
VG9QYXN0ZWJvYXJkKHVybCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCmluZGV4IDdmZTM0OTI4NmY5NTE1N2I4MDRmNTdjMjZkNjUxZjY4ZTAwMDU4
YzEuLjIzYjRmZWM0OGFmZWU1YWYxYTBkZjcwYzg1MjBlYjE4Y2RiMDE3NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjgsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9h
cmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJ
bnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1B
dEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNjE4ZTA0MTMxMTNiYmU0ZGMwMWMzNjE5OTMzYzZkNzhkY2I3YWVjZC4uZWU5ZGIzMmE4
ZGUwNzViN2E5MTdjYzJlMDhjNmJkMWMyZTIxNzNlMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE3LTA0LTIxICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFJlc3BlY3Qg
ZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50IGZyb20gaXRlbSBwcm92aWRl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTE1
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyB1bml0IHRlc3QgKERhdGFJ
bnRlcmFjdGlvblRlc3RzLlJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdzKS4g
U2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvcgorICAgICAgICBtb3JlIGRldGFpbHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisyMDE3LTA0LTIxICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFN1cHBvcnQgd3JpdGluZyBsaW5r
IHRpdGxlcyB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGJlZ2lubmluZyBkYXRhIGludGVyYWN0aW9u
IG9uIGEgbGluawogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcxMTU0CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTM1NjkzNz4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KaW5k
ZXggNzBjY2Q3ZWEzNWNlNTIyZmViOGE1ZTZmZDI5NzQwNjdmMGRmZDY4MC4uZmRmZWRlMWE0NTVl
OWM2OTRjYjNkMGRmMzY3ZjBiNTY2ZjY1MTUzMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KQEAgLTMyLDcgKzMyLDkg
QEAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3Vy
YXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vy
dmljZXMuaD4KKyNpbXBvcnQgPFVJS2l0L05TU3RyaW5nK1VJSXRlbVByb3ZpZGVyLmg+CiAjaW1w
b3J0IDxVSUtpdC9OU1VSTCtVSUl0ZW1Qcm92aWRlci5oPgorI2ltcG9ydCA8VUlLaXQvVUlJbWFn
ZStVSUl0ZW1Qcm92aWRlci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJfUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KQEAgLTQ0NSw2ICs0NDcsMzkg
QEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0ZXJuYWxTb3VyY2VJbWFnZUFuZEhUTUxU
b1VwbG9hZEFyZWEpCiAgICAgY2xlYW5VcERhdGFJbnRlcmFjdGlvblRlbXBvcmFyeVBhdGgoKTsK
IH0KIAorVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgUmVzcGVjdHNFeHRlcm5hbFNvdXJjZUZp
ZGVsaXR5UmFua2luZ3MpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvZm9jdXMt
Y29udGVudGVkaXRhYmxlIl07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07CisKKyAgICBhdXRvIGRh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisKKyAgICAvLyBIZXJl
LCBvdXIgc291cmNlIGl0ZW0gcHJvdmlkZXIgdmVuZHMgdHdvIHJlcHJlc2VudGF0aW9uczogcGxh
aW4gdGV4dCwgYW5kIHRoZW4gYW4gaW1hZ2UuIElmIHdlIGRvbid0IHJlc3BlY3QgdGhlCisgICAg
Ly8gZmlkZWxpdHkgb3JkZXIgcmVxdWVzdGVkIGJ5IHRoZSBzb3VyY2UsIHdlJ2xsIGVuZCB1cCBh
c3N1bWluZyB0aGF0IHRoZSBpbWFnZSBpcyBhIGhpZ2hlciBmaWRlbGl0eSByZXByZXNlbnRhdGlv
bgorICAgIC8vIHRoYW4gdGhlIHBsYWluIHRleHQsIGFuZCBlcnJvbmVvdXNseSBpbnNlcnQgdGhl
IGltYWdlLiBJZiB3ZSByZXNwZWN0IHNvdXJjZSBmaWRlbGl0aWVzLCB3ZSdsbCBpbnNlcnQgdGV4
dCByYXRoZXIKKyAgICAvLyB0aGFuIGFuIGltYWdlLgorICAgIGF1dG8gc2ltdWxhdGVkSXRlbVBy
b3ZpZGVyV2l0aFRleHRGaXJzdCA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5p
dF0pOworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoVGV4dEZpcnN0IHJlZ2lzdGVyT2Jq
ZWN0OkAiSGVsbG8gd29ybGQiIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlv
blZpc2liaWxpdHlBbGxdOworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoVGV4dEZpcnN0
IHJlZ2lzdGVyT2JqZWN0OnRlc3RJY29uSW1hZ2UoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVy
UmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRo
VGV4dEZpcnN0LmdldCgpIF1dOworCisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5G
cm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworICAg
IEVYUEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9GQUxTRShb
d2ViVmlldyBlZGl0b3JDb250YWluc0ltYWdlRWxlbWVudF0pOworICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IuaW5uZXJIVE1MID0gJyciXTsKKworICAg
IC8vIE5vdyB3ZSByZWdpc3RlciB0aGUgaXRlbSBwcm92aWRlcnMgaW4gcmV2ZXJzZSwgYW5kIGV4
cGVjdCB0aGUgaW1hZ2UgdG8gYmUgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0ZXh0LgorICAgIGF1dG8g
c2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgPSBhZG9wdE5TKFtbVUlJdGVtUHJv
dmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdl
Rmlyc3QgcmVnaXN0ZXJPYmplY3Q6dGVzdEljb25JbWFnZSgpIHZpc2liaWxpdHk6TlNJdGVtUHJv
dmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtzaW11bGF0ZWRJdGVtUHJv
dmlkZXJXaXRoSW1hZ2VGaXJzdCByZWdpc3Rlck9iamVjdDpAIkhlbGxvIHdvcmxkIiB2aXNpYmls
aXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBzaW11bGF0
ZWRJdGVtUHJvdmlkZXJXaXRoSW1hZ2VGaXJzdC5nZXQoKSBdXTsKKworICAgIFtkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1h
a2UoMTAwLCAzMDApXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgZWRpdG9yQ29udGFpbnNJbWFnZUVsZW1lbnRdKTsKK30KKwogVEVTVChE
YXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0ZXJuYWxTb3VyY2VVVEY4UGxhaW5UZXh0T25seSkKIHsK
ICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7
Cg==
</data>
<flag name="review"
          id="329110"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308039</attachid>
            <date>2017-04-24 18:41:40 -0700</date>
            <delta_ts>2017-04-24 18:47:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171155-20170424184139.patch</filename>
            <type>text/plain</type>
            <size>54592</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiODZlNjFiMDE1ZmIz
NmNjZjA2YjYxMjI5ZTRmOWIwODQwMmVlNC4uNTlhNjRiZmYyYjA3ZmFlMDFlMTFlN2U0YmU5ZDM0
MjY1OTk1YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxNy0wNC0yMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNwZWN0IGZp
ZGVsaXR5IG9yZGVyIHdoZW4gcmVhZGluZyB3ZWIgY29udGVudCBmcm9tIGl0ZW0gcHJvdmlkZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgQ3VycmVudGx5LCB3aGVuIHJlYWRpbmcgd2ViIGNvbnRl
bnQgZnJvbSBwYXN0ZWJvYXJkcywgd2UgYXNzdW1lIHRoZSBvbGQgVUlQYXN0ZWJvYXJkL05TUGFz
dGVib2FyZCBtb2RlbCB3aGVyZWluCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBtdXN0IGRldGVy
bWluZSB3aGljaCBvZiB0aGUgaXRlbXMgaXMgY29uc2lkZXJlZCB0byBoYXZlIHRoZSBoaWdoZXN0
IGZpZGVsaXR5IGZvciB0aGUgcHVycG9zZXMgb2YKKyAgICAgICAgaW5zZXJ0aW5nIGludG8gYW4g
ZWRpdGFibGUgYXJlYS4gVGhpcyBkZXN0aW5hdGlvbi1zaWRlIGZpZGVsaXR5IHJhbmtpbmcgaXMg
ZGV0ZXJtaW5lZCBzb2xlbHkgYnkgdGhlIE5TQXJyYXkKKyAgICAgICAgcmV0dXJuZWQgZnJvbSBQ
YXN0ZWJvYXJkOjpzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXMsIHdoaWNoIGxpc3RzIGNvbXBhdGli
bGUgdHlwZXMgaW4gb3JkZXIgZnJvbSBoaWdoZXN0IGZpZGVsaXR5CisgICAgICAgIHRvIGxvd2Vz
dCBmaWRlbGl0eS4gUGFzdGVib2FyZDo6cmVhZCBlZmZlY3RpdmVseSBpdGVyYXRlcyBvdmVyIHRo
aXMgbGlzdCBvZiB0eXBlcyBpbiBvcmRlciwgYXR0ZW1wdGluZyB0byByZWFkCisgICAgICAgIGhp
Z2hlc3QgZmlkZWxpdHkgdHlwZXMgYW5kIGJhaWxpbmcgd2hlbiBpdCBmaXJzdCBzdWNjZXNzZnVs
bHkgcmVhZHMgZGF0YS4KKworICAgICAgICBIb3dldmVyLCB3aGVuIG91ciBwYXN0ZWJvYXJkIGlz
IGJhY2tlZCBieSBVSUl0ZW1Qcm92aWRlcnMsIHdlIHNob3VsZCBpbnN0ZWFkIHJlYWQgcGFzdGVi
b2FyZCB0eXBlcyBpbiBvcmRlciBvZgorICAgICAgICBmaWRlbGl0eSBhcyBzcGVjaWZpZWQgYnkg
dGhlIHNvdXJjZSByYXRoZXIgdGhhbiB0aGUgZGVzdGluYXRpb24uIFRvIGFjY29tcGxpc2ggdGhp
cywgd2UgaW50cm9kdWNlIGFuIGFsdGVybmF0ZQorICAgICAgICBjb2RlcGF0aCwgUGFzdGVib2Fy
ZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzLCB3aGljaCB3ZSB0YWtlIGlmIFBhc3RlYm9h
cmQ6OnJlc3BlY3RzVVRJRmlkZWxpdGllcyBpcyB0cnVlCisgICAgICAgIChjdXJyZW50bHksIHRo
aXMgb25seSBhcHBsaWVzIGZvciB0aGUgcHVycG9zZXMgb2YgZGF0YSBpbnRlcmFjdGlvbikuIFRo
aXMgdmVyc2lvbiBmb2xsb3dzIGEgZGlmZmVyZW50IGZsb3c6CisgICAgICAgIGZvciBlYWNoIGl0
ZW0gaW4gdGhlIHBhc3RlYm9hcmQsIHdlIGFzayBmb3IganVzdCB0aGUgVVRJcyBmb3IgdGhhdCBp
dGVtLCBpbiBvcmRlciBvZiBmaWRlbGl0eS4gRm9yIGVhY2ggaXRlbSwKKyAgICAgICAgd2UgdGhl
biBjYWxsIHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlIHRvIHRyeSBhbmQgcmVh
ZCBkYXRhIGZvciB0aGF0IHR5cGUsIGNvbnRpbnVpbmcgdW50aWwgZWl0aGVyCisgICAgICAgIGFs
bCBVVElzIGhhdmUgYmVlbiBhdHRlbXB0ZWQsIG9yIHJlYWRpbmcgd2FzIHN1Y2Nlc3NmdWwuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyB0d28gYWRkaXRpb25hbCBhZGp1c3RtZW50cy4gRmly
c3QsIHdlIGludHJvZHVjZSBQYXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJ
bmRleCwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCBieSBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGlu
Z1VUSUZpZGVsaXRpZXMgd2hlbiBxdWVyeWluZyB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgVVRJcyBm
b3IgZWFjaAorICAgICAgICBwYXN0ZWJvYXJkIGl0ZW0sIHNvcnRlZCBieSBoaWdoZXN0IHRvIGxv
d2VzdCBmaWRlbGl0eS4KKworICAgICAgICBTZWNvbmRseSwgd2UgcmVmYWN0b3IgbG9naWMgdG8g
d3JpdGUgdG8gdGhlIGl0ZW0gcHJvdmlkZXIgcGFzdGVib2FyZCBpbiBQbGF0Zm9ybVBhc3RlYm9h
cmRJT1MuIFNpbmNlIHdlIGFyZQorICAgICAgICBub3cgcmVzcGVjdGluZyBmaWRlbGl0eSByYW5r
aW5ncyBvbiB0aGUgZGVzdGluYXRpb24sIHRoZSBzb3VyY2UgbXVzdCBhbHNvIHJlZ2lzdGVyIFVU
SSB0eXBlcyBpbiB0aGUgcmlnaHQKKyAgICAgICAgZmlkZWxpdHkgb3JkZXIuIFdoaWxlIHRoaXMg
d2FzIG1vc3RseSBhY2hpZXZlZCB1c2luZyBvdXIgZXhpc3RpbmcgbWV0aG9kIG9mIHdyaXRpbmcg
YSBsaXN0IG9mIG9iamVjdAorICAgICAgICByZXByZXNlbnRhdGlvbnMgdG8gdGhlIHBhc3RlYm9h
cmQgYW5kIHRoZW4gYWxsIG9mIHRoZSBjb250ZW50cyBvZiBhIE5TU3RyaW5nID0+IE5TRGF0YSBk
aWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgICAgICAgcHJpdmF0ZSBVVEkgZGF0YSwgdGhpcyBhcHBy
b2FjaCBoYXMgdHdvIGZsYXdzOgorICAgICAgICAxLiAgV2UgYXJlIHVuYWJsZSB0byByZWdpc3Rl
ciBoaWdoLXByaW9yaXR5IGN1c3RvbSB0eXBlcywgZm9sbG93ZWQgYnkgcmVwcmVzZW50aW5nIG9i
amVjdHMsIGZvbGxvd2VkIGJ5IG1vcmUKKyAgICAgICAgICAgIGxvd2VyLXByaW9yaXR5IGN1c3Rv
bSB0eXBlcywgc2luY2Ugd2UgYXNzdW1lIHRoYXQgYWxsIGN1c3RvbSB0eXBlcyBmb2xsb3cgYWxs
IHJlcHJlc2VudGluZyBvYmplY3RzLgorICAgICAgICAyLiAgU2luY2Ugd2UncmUganVzdCBpdGVy
YXRpbmcgb3ZlciBhIGRpY3Rpb25hcnkgb2YgTlNTdHJpbmcgPT4gTlNEYXRhIHdoZW4gcmVnaXN0
ZXJpbmcgY3VzdG9tIFVUSQorICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zIHRvIHRoZSBpdGVt
IHByb3ZpZGVyLCB0aGVyZSBjYW5ub3QgaW5oZXJlbnRseSBiZSBhbnkgZmlkZWxpdHkgb3JkZXJp
bmcgZm9yIGN1c3RvbSB0eXBlcy4KKworICAgICAgICBUbyBhZGRyZXNzIGJvdGggb2YgdGhlc2Ug
aXNzdWVzLCB3ZSBpbnRyb2R1Y2UgdHdvIG5ldyBvYmplY3RzIHRoYXQgZW5jYXBzdWxhdGUgaG93
IHdlIHJlZ2lzdGVyIGRhdGEgdG8gdGhlIGl0ZW0KKyAgICAgICAgcHJvdmlkZXIgcGFzdGVib2Fy
ZC4gV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyByZXByZXNlbnRzIHNvbWUgZGF0YSB0
aGF0IGNhbiBiZSByZWdpc3RlcmVkIHRvIGFuIGl0ZW0KKyAgICAgICAgcHJvdmlkZXIgKGVpdGhl
ciBhbiBvYmplY3QgY29uZm9ybWluZyB0byBVSUl0ZW1Qcm92aWRlcldyaXRpbmcsIG9yIGFuIE5T
U3RyaW5nIGFuZCBOU0RhdGEpLgorICAgICAgICBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvTGlzdCByZXByZXNlbnRzIGEgbGlzdCBvZiBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvcyBpbiBvcmRlciBvZiBoaWdoZXN0IHRvCisgICAgICAgIGxvd2VzdCBmaWRlbGl0eS4gSW4g
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLCB3ZSB0cmFuc2Zvcm0gUGFzdGVib2FyZFdlYkNvbnRlbnQs
IFBhc3RlYm9hcmRJbWFnZSwgYW5kIFBhc3RlYm9hcmRVUkwKKyAgICAgICAgaW50byBhIFdlYkl0
ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0LCB3aGljaCB3ZSB0aGVuIHBhc3MgYWxvbmcg
dG8gdGhlIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuIEluCisgICAgICAgIFdlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQsIHdlIHRyYXZlcnNlIHRoZSBsaXN0IG9mIFdlYkl0ZW1Qcm92aWRlclJl
Z2lzdHJhdGlvbkluZm9zIGluIHRoZSBsaXN0IGFuZCByZWdpc3RlcgorICAgICAgICBlYWNoIFdl
Ykl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8ncyByZXByZXNlbnRpbmcgb2JqZWN0IG9yIGRh
dGEgdG8gdGhlIGl0ZW0gcHJvdmlkZXIuCisKKyAgICAgICAgVGVzdDogRGF0YUludGVyYWN0aW9u
VGVzdHMuUmVzcGVjdHNFeHRlcm5hbFNvdXJjZUZpZGVsaXR5UmFua2luZ3MuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQWJz
dHJhY3RQYXN0ZWJvYXJkLm1tOiBSZW1vdmVkLgorCisgICAgICAgIE1vdmVzIFdlYkl0ZW1Qcm92
aWRlckRhdGEsIGZvcm1lcmx5IGltcGxlbWVudGVkIGluIEFic3RyYWN0UGFzdGVib2FyZC5tbSwg
aW50byBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tLgorICAgICAgICBXZSBjYW4gZGVsZXRl
IEFic3RyYWN0UGFzdGVib2FyZC5tbSBhcyBhIHJlc3VsdC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFBhc3RlYm9hcmRX
ZWJDb250ZW50RGF0YUZvclR5cGUpOgorCisgICAgICAgIFB1bGwgb3V0IGNvbW1vbiBsb2dpYyBm
b3IgcmVhZGluZyBkYXRhIGdpdmVuIGEgVVRJIHR5cGUgZnJvbSB0aGUgcGFzdGVib2FyZCBpbnRv
IHRoZSBQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlci4KKyAgICAgICAgVGhpcyBpcyBpbnZva2Vk
IGZyb20gYm90aCB0aGUgZXhpc3RpbmcgUGFzdGVib2FyZDo6cmVhZCBjb2RlcGF0aCwgYXMgd2Vs
bCBhcyB0aGUgcmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzCisgICAgICAgIGNvZGVwYXRoLgor
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKworICAgICAgICBSZWZhY3Rv
cmVkIHRvIGNhbGwgdGhlIG5ldyByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZSBo
ZWxwZXIuIEJlaGF2aW9yIHNob3VsZCBub3QgaGF2ZSBjaGFuZ2VkLCB1bmxlc3MKKyAgICAgICAg
dGhlIHBhc3RlYm9hcmQgc3VwcG9ydHMgVVRJIGZpZGVsaXRpZXMuCisKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlc3BlY3RzVVRJRmlkZWxpdGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorCisgICAgICAgIEFu
IGFsdGVybmF0aXZlIHRvIFBhc3RlYm9hcmQ6OnJlYWQgdGhhdCBjb25zaWRlcnMgc291cmNlLXNp
ZGUgZmlkZWxpdHkgcmFua2luZ3Mgb2YgVVRJcy4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMpOgorCisg
ICAgICAgIFJlZmFjdG9yZWQgdG8gYnVpbGQgYSBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvTGlzdCBhbmQgcGFzcyBpdCB0byB0aGUgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB0bwor
ICAgICAgICByZWdpc3RlciBpdGVtcyBhbmQgZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9u
SW5mbyBpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdDp0eXBlSWRlbnRpZmllcjpkYXRhOl0pOgor
ICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvIHJlcHJlc2VudGluZ09i
amVjdF0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvIHR5cGVJ
ZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8g
ZGF0YV0pOgorCisgICAgICAgIFJlcHJlc2VudHMgYSBzaW5nbGUgY2FsbHMgdG8gcmVnaXN0ZXIg
ZGF0YSBvbnRvIHRoZSBpdGVtIHByb3ZpZGVyIHBhc3RlYm9hcmQuIFNlZQorICAgICAgICBXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggaGVhZGVyIGNvbW1lbnRzIGZvciBtb3JlIGluZm8uCisK
KyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgaW5pdF0pOgor
ICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhZGREYXRhOmZv
clR5cGU6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0
IGFkZFJlcHJlc2VudGluZ09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uSW5mb0xpc3QgbnVtYmVyT2ZJdGVtc10pOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBpdGVtQXRJbmRleDpdKToKKyAgICAgICAgKC1bV2Vi
SXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgZW51bWVyYXRlSXRlbXM6XSk6CisKKyAg
ICAgICAgUmVwcmVzZW50cyBhIHNlcmllcyBvZiBjYWxscyB0byByZWdpc3RlciByZXByZXNlbnRh
dGlvbnMgb250byB0aGUgaXRlbSBwcm92aWRlciBwYXN0ZWJvYXJkLiBTZWUKKyAgICAgICAgV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGhlYWRlciBjb21tZW50cyBmb3IgbW9yZSBpbmZvLgor
CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4Ol0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkIHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6XSk6CisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRp
b25zOl0pOiBEZWxldGVkLgorCiAyMDE3LTA0LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgY3JlYXRlRWxlbWVudE5TKCkgc2hvdWxkIG5vdyB0aHJvdyBvbmx5
IEludmFsaWRDaGFyYWN0ZXJFcnJvciwgbm90IE5hbWVzcGFjZUVycm9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggMGZhNDU5YjI2Yjk4M2UzYjI0ZDA2MTc3OWJiNWQyYjUzN2U2MTQ0MS4uMzk4MWMzNzU4
NTk2ZmFiOWFjODExNmQ2NTMwYmQ1NzhkZTFlOWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE3LTA0LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBj
b250ZW50IGZyb20gaXRlbSBwcm92aWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5
Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGp1c3Rz
IGZvciBjaGFuZ2VzIGluIFdlYkNvcmUgKHNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBk
ZXRhaWxzKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRl
bUF0SW5kZXgpOgorCiAyMDE3LTA0LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVkdWNlIGNvcGllcyBhbmQgYWxsb2NhdGlvbnMgaW4g
U2hhcmVkQnVmZmVyOjphcHBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MGI4YTQ5MmE1OGEwNDcwMDdjN2My
ZWQ5OGYwY2M0ZDI3Mjc5MjQ4Li5jMGE5ZTBjODM4Mzk1ZTIwODIyNjVlMmJiZmEwOGIwOGE0Mzgx
MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDQtMjEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzcGVjdCBmaWRlbGl0eSBv
cmRlciB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTU1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMTM1NjkzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgIEFkanVzdHMgZm9yIGNoYW5nZXMgaW4gV2ViQ29yZSBieSBhZGRpbmcg
cGx1bWJpbmcgdG8gc3VwcG9ydCBQYXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleC4gU2VlCisgICAgICAgIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVz
QnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMDQtMjQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0YWJzIHdpdGgg
Y2FwdHVyaW5nIGF1ZGlvIG9yIHZpZGVvIHRvIGV4Y2VlZCBiYWNrZ3JvdW5kIENQVSBsaW1pdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDgzYzhmNDJhNzk2YTBiOGNjNDI3Yjg2NDA2YzU5YTcwYTg2MjFmYmMuLjg4OGNkYzE0YzIz
YzFmM2FkNDQwODY1MmYzNzY2NmE0YjczOWE1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4NjcsNyArNjg2Nyw2IEBACiAJ
CUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJDMjQgLyogRHVt
cEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0
b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGluZ0hpc3Rv
cnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICov
OyB9OwotCQlGNEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREODMxNjEx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjUwNjY0
RjcxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUY1MDY2NEY4MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi87
IH07CiAJCUY1MTNBM0VBMTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUxM0Ez
RTkxNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1NDI0LDcgKzE1NDIz
LDYgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8q
IER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
bmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsgcGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdI
aXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJC
MDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9F
ZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0RDgz
MTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3Jt
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3Jt
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY2MTU3
RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb3JtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTY5LDcgKzIwOTY3LDYgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8sCiAJ
CQkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovLAot
CQkJCUY0RDgzMTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8s
CiAJCQkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNvcklPUy5jcHAgKi8sCiAJCQkJ
QTFFRDc3OEExQkUzMjkzRjAwREMxNzkxIC8qIERldmljZS5jcHAgKi8sCiAJCQkJQTFFRDc3OEIx
QkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oICovLApAQCAtMzE3OTIsNyArMzE3ODksNiBAQAog
CQkJCUE2MTQ4QTc4MTJFNDFFM0IwMDQ0QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJl
bEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1
IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRjREODMxNjIx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTJBQjI1MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgwRTdCMTAwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjI3MEExQ0U2M0IwMEI0MkIyNSAvKiBK
U0hUTUxNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCmluZGV4IGI5NGQ3MGExZjZhNTIwYjAxODFjM2QyMzViZTJmYmI4YzdkYzhiNjku
LjQyOWUxYWYxNDAwMjQ3MGE3YzhjZjY4MDYyNTJlZTE1MjkzMjc0MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTIxNyw2ICsyMTcsMTEgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgcmVzcGVjdHNVVElGaWRl
bGl0aWVzKCkgY29uc3Q7CisgICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXImKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpbmdQYXN0ZWJvYXJkKCk7CiAgICAgdm9pZCB3cml0ZVJhbmdl
VG9EYXRhT2JqZWN0KFJhbmdlJiwgRnJhbWUmKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXgg
YzJhNjM0NzQ5NWYwOGNjZDAxZThlN2MwYWY2MDBjMWQ2MTBiMjlhNy4uN2Q1OWNkNTIxNjIyNGNl
MGRkODVlNTM3MTJjMzJhYTM4N2M5ZjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0
aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5k
ZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDc5MjNjMmY2Yjc1OWZhMjI5OTc1M2Q2
ODFhOTMwYTlkZTQ0ODMwZjEuLjUzYjJjZDk0NmVhZGQ5MWYzYTk0NDhiZDZhZTE2YWM2MWI2MWMx
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9F
WFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0
cmluZz4gZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGludCBpbmRleCk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IHVuaXF1ZU5hbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0Fic3RyYWN0UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3Ry
YWN0UGFzdGVib2FyZC5oCmluZGV4IGI3ZTFhNTAxMGQ2MDhjM2MzOGM5N2JiNGZkZjQzNjA2NDUy
NzA3MjguLjE5ZjMxOTM5OTY5NTA3YzBiNGU1MGQwNmMxMTYxOGVhNDcwYzhjZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTI3
LDE0ICsyNyw3IEBACiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViUGFzdGVib2FyZEl0ZW1EYXRhIDogTlNPYmplY3QKLQotKyAoaW5zdGFuY2V0
eXBlKWl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09i
amVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhOwotCi1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgTlNBcnJheSAqcmVwcmVzZW50
aW5nT2JqZWN0czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBOU0Rp
Y3Rpb25hcnkgKmFkZGl0aW9uYWxEYXRhOwotCi1AZW5kCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogCiBAcHJvdG9jb2wgQWJzdHJhY3RQYXN0ZWJvYXJkIDxOU09iamVjdD4KIEByZXF1aXJlZApA
QCAtNDcsMTEgKzQwLDE0IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViUGFzdGVib2Fy
ZEl0ZW1EYXRhIDogTlNPYmplY3QKIC0gKE5TSW50ZWdlciljaGFuZ2VDb3VudDsKIAogQG9wdGlv
bmFsCi0tICh2b2lkKXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxX
ZWJQYXN0ZWJvYXJkSXRlbURhdGEgKj4gKilpdGVtRGF0YTsKKy0gKHZvaWQpc2V0SXRlbXNVc2lu
Z1JlZ2lzdHJhdGlvbkluZm9MaXN0czooTlNBcnJheSAqKWl0ZW1MaXN0czsKIC0gKHZvaWQpc2V0
SXRlbXM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopaXRlbXM7CistIChOU0FycmF5PE5TU3Ry
aW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRl
Z2VyKWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVnZXIgbnVt
YmVyT2ZGaWxlczsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VS
TCAqPiAqZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uOwogCiBAZW5kCiAKK05TX0FTU1VNRV9O
T05OVUxMX0VORAorCiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI3YTJhNTdhNTcxYWQxMjY3MzA0MTkyYTEyOTU3NDk4NmY0N2ZjMGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQWJzdHJhY3RQYXN0ZWJvYXJkLmgiCi0KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQot
I2lmIFBMQVRGT1JNKElPUykKLQotQGludGVyZmFjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEgKCkK
LXsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3JlcHJlc2VudGluZ09iamVjdHM7Ci0gICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gX2FkZGl0aW9uYWxEYXRhOwotfQotCi1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBXZWJQYXN0ZWJvYXJkSXRlbURhdGEKLQotKyAoaW5zdGFuY2V0eXBlKWl0ZW1X
aXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRk
aXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCi17Ci0gICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czpyZXByZXNlbnRpbmdP
YmplY3RzIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhXSBhdXRvcmVsZWFzZV07Ci19Ci0K
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdHM6KE5TQXJyYXkgKily
ZXByZXNlbnRpbmdPYmplY3RzIGFkZGl0aW9uYWxEYXRhOihOU0RpY3Rpb25hcnkgKilhZGRpdGlv
bmFsRGF0YQotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgICAgIF9yZXBy
ZXNlbnRpbmdPYmplY3RzID0gcmVwcmVzZW50aW5nT2JqZWN0czsKLSAgICAgICAgX2FkZGl0aW9u
YWxEYXRhID0gYWRkaXRpb25hbERhdGE7Ci0gICAgfQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
IChOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cwotewotICAgIHJldHVybiBfcmVwcmVzZW50
aW5nT2JqZWN0cy5nZXQoKTsKLX0KLQotLSAoTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEK
LXsKLSAgICByZXR1cm4gX2FkZGl0aW9uYWxEYXRhLmdldCgpOwotfQotCi1AZW5kCi0KLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDgxMzVlMjM4YjA5MjczYmVlYWYxNzg2YTI1NzIwZTVmNzE3MDUyZjIu
LjM5Y2E1N2I4MTk2ZDViMmViYjQ4NmYyMzMxZTA0N2NjM2IzMjc3ZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xNjUsOCArMTY1LDUzIEBA
IHN0YXRpYyBOU0FycmF5KiBzdXBwb3J0ZWRJbWFnZVR5cGVzKCkKICAgICByZXR1cm4gQFsoaWQp
a1VUVHlwZVBORywgKGlkKWtVVFR5cGVUSUZGLCAoaWQpa1VUVHlwZUpQRUcsIChpZClrVVRUeXBl
R0lGXTsKIH0KIAorc3RhdGljIGJvb2wgcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5
cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCit7CisgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNo
aXZlUGJvYXJkVHlwZV0pIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgV2ViQXJjaGl2ZVBi
b2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkV2Vi
QXJjaGl2ZShidWZmZXIuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZUhUTUxdKSB7CisgICAgICAgIFN0cmluZyBodG1sU3Ry
aW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlw
ZUhUTUwsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJuICFodG1sU3RyaW5nLmlzTnVs
bCgpICYmIHJlYWRlci5yZWFkSFRNTChodG1sU3RyaW5nKTsKKyAgICB9CisKKyAgICBpZiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKKyAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpOworICAgIH0K
KworICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVJURl0p
IHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgcGFzdGVib2FyZE5hbWUp
OworICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpOworICAg
IH0KKworICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRhaW5zT2JqZWN0OnR5cGVd
KSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpLCB0eXBlKTsKKyAgICB9CisKKyAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihO
U1N0cmluZyAqKWtVVFR5cGVVUkxdKSB7CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVneS5yZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlVVJMLCBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHJldHVybiAhdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgU3Ry
aW5nKCkpOworICAgIH0KKworICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZil0
eXBlLCBrVVRUeXBlVGV4dCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVUZXh0LCBwYXN0ZWJvYXJk
TmFtZSk7CisgICAgICAgIHJldHVybiAhc3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkUGxh
aW5UZXh0KHN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKIHsKKyAg
ICBpZiAocmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpIHsKKyAgICAgICAgcmVhZFJlc3BlY3RpbmdV
VElGaWRlbGl0aWVzKHJlYWRlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBQYXN0
ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKTsKIAogICAgIGludCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0xNzksNTQgKzIyNCwzMiBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
cikKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtczsgaSsrKSB7CiAgICAg
ICAgIGZvciAoaW50IHR5cGVJbmRleCA9IDA7IHR5cGVJbmRleCA8IG51bWJlck9mVHlwZXM7IHR5
cGVJbmRleCsrKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqdHlwZSA9IFt0eXBlcyBvYmplY3RB
dEluZGV4OnR5cGVJbmRleF07Ci0KLSAgICAgICAgICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
LCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlYWRlci5yZWFkV2ViQXJjaGl2ZShidWZmZXIuZ2V0KCkpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtV
VFR5cGVIVE1MXSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBodG1sU3RyaW5nID0gc3RyYXRl
Z3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVIVE1MLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIWh0bWxTdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVy
LnJlYWRIVE1MKGh0bWxTdHJpbmcpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJp
bmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpLCBr
VVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChyZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
IChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVJURl0pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZFJURigqYnVmZmVyKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmpl
Y3Q6dHlwZV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGUsIG1fcGFzdGVi
b2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZEltYWdlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZWFkUGFzdGVib2FyZFdl
YkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCBbdHlwZXMgb2JqZWN0QXRJbmRl
eDp0eXBlSW5kZXhdLCBpLCBtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgIH0KK30KIAotICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAgICAgICAgICAgIFVSTCB1
cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZVVSTCwgbV9wYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF1cmwuaXNOdWxsKCkgJiYgcmVhZGVy
LnJlYWRVUkwodXJsLCBTdHJpbmcoKSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVUZXh0XSkgewotICAgICAgICAgICAgICAgIFN0cmlu
ZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZVRl
eHQsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVs
bCgpICYmIHJlYWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykpCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQorYm9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVs
aXRpZXMoKSBjb25zdAoreworICAgIC8vIEZvciBub3csIGRhdGEgaW50ZXJhY3Rpb24gaXMgdGhl
IG9ubHkgZmVhdHVyZSB0aGF0IHVzZXMgaXRlbS1wcm92aWRlci1iYXNlZCBwYXN0ZWJvYXJkIHJl
cHJlc2VudGF0aW9ucy4KKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgbmVlZCB0byBjb25z
dWx0IHRoZSBjbGllbnQgbGF5ZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBwYXN0
ZWJvYXJkIHN1cHBvcnRzCisgICAgLy8gaXRlbSB0eXBlcyByYW5rZWQgYnkgZmlkZWxpdHkuCisg
ICAgcmV0dXJuIG1fcGFzdGVib2FyZE5hbWUgPT0gImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2Fy
ZCI7Cit9CiAKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBh
c3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCit7CisgICAgQVNTRVJUKHJlc3BlY3Rz
VVRJRmlkZWxpdGllcygpKTsKKyAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CisgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0g
MCwgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFz
dGVib2FyZE5hbWUpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsraW5kZXgpIHsKKyAgICAgICAg
Ly8gVHJ5IHRvIHJlYWQgZGF0YSBmcm9tIGVhY2ggdHlwZSBpZGVudGlmaWVyIHRoYXQgdGhpcyBw
YXN0ZWJvYXJkIGl0ZW0gc3VwcG9ydHMsIGFuZCBXZWJLaXQgYWxzbyByZWNvZ25pemVzLiBUeXBl
IGlkZW50aWZpZXJzIGFyZQorICAgICAgICAvLyByZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5LCBh
cyBzcGVjaWZpZWQgYnkgZWFjaCBwYXN0ZWJvYXJkIGl0ZW0uCisgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5OworICAgICAgICBzdHJhdGVneS5nZXRU
eXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh0eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZGaWRlbGl0
eSwgaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0
eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZGaWRlbGl0eSkgeworICAgICAgICAgICAgaWYgKHJlYWRQYXN0
ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGluZGV4
LCBtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IGFiMWJlODNjYjcwZWJhNGE3NTFiNzdhNmRkNGU4MzhjMjIy
MzE0MWIuLmQyNjViMTZjNmQ4MzVjZDMzMWI3MzY4YTFmNDhjODIwOGE0ZGRkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQpAQCAtMzgsNyArMzgsMTAgQEAKICNpbXBvcnQgPFVJS2l0L1VJUGFzdGVib2FyZC5oPgogCiAj
aWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisjaW1wb3J0IDxVSUtpdC9OU0F0dHJpYnV0ZWRT
dHJpbmcrVUlJdGVtUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFVJS2l0L05TU3RyaW5nK1VJSXRlbVBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxVSUtpdC9OU1VSTCtVSUl0ZW1Qcm92aWRlci5oPgorI2ltcG9y
dCA8VUlLaXQvVUlJbWFnZStVSUl0ZW1Qcm92aWRlci5oPgogI2VuZGlmCiAKIFNPRlRfTElOS19G
UkFNRVdPUksoVUlLaXQpCkBAIC03Myw2ICs3NiwxNiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgICAgICB0eXBlcy5hcHBlbmQo
cGFzdGVib2FyZFR5cGUpOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBpbnQgaW5kZXgp
Cit7CisgICAgaWYgKGluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10gfHwgIVtt
X3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYXN0ZWJvYXJkVHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJy
YXkgKnBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHkgPSBbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRU
eXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDppbmRleF07CisgICAgZm9yIChOU1N0cmluZyAq
dHlwZUlkZW50aWZpZXIgaW4gcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eSkKKyAgICAgICAgdHlw
ZXMuYXBwZW5kKHR5cGVJZGVudGlmaWVyKTsKK30KKwogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xODcsMjQgKzIwMCwzNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gcmljaFRleHRSZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2ViQ29udGVudChj
bwogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiB7Ci0gICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhZGRpdGlv
bmFsRGF0YSA9IHJpY2hUZXh0UmVwcmVzZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQo
Y29udGVudCk7CisjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisgICAgUmV0YWluUHRyPFdl
Ykl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBpdGVtc1RvUmVnaXN0ZXIgPSBhZG9w
dE5TKFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2NdIGluaXRdKTsK
KworICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVu
dERhdGEuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xp
ZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBbaXRlbXNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworCisgICAgaWYgKGNvbnRlbnQuZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdCkKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQu
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpXZWJB
cmNoaXZlUGJvYXJkVHlwZV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0KSB7CiAgICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVPYmplY3RXaXRoRGF0YTpjb250ZW50LmRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKICAgICAg
ICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcpCi0gICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRp
b25zIGFkZE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKKyAgICAgICAgICAgIFtpdGVtc1RvUmVn
aXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIAor
ICAgIGlmIChjb250ZW50LmRhdGFJblJURkZvcm1hdCkKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3Rl
ciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOworCiAgICAgaWYgKCFjb250ZW50LmRhdGFJ
blN0cmluZ0Zvcm1hdC5pc0VtcHR5KCkpCi0gICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMg
YWRkT2JqZWN0OihOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0XTsKKyAgICAg
ICAgW2l0ZW1zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6KE5TU3RyaW5nICopY29u
dGVudC5kYXRhSW5TdHJpbmdGb3JtYXRdOwogCi0gICAgW21fcGFzdGVib2FyZCBzZXRJdGVtc0Zy
b21PYmplY3RSZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRo
UmVwcmVzZW50aW5nT2JqZWN0czpvYmplY3RSZXByZXNlbnRhdGlvbnMuZ2V0KCkgYWRkaXRpb25h
bERhdGE6YWRkaXRpb25hbERhdGEuZ2V0KCldXV07CisgICAgW21fcGFzdGVib2FyZCBzZXRJdGVt
c1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOkBbIGl0ZW1zVG9SZWdpc3Rlci5nZXQoKSBdXTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRlbnQpOworI2VuZGlmCiB9CiAKIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVu
dCkKIHsKLSAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgIGlmIChbbV9wYXN0
ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNVc2luZ1JlZ2lzdHJh
dGlvbkluZm9MaXN0czopXSkgewogICAgICAgICB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhj
b250ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOCwzMCArMjQ0LDMzIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYg
Y29udGVudCkKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50
YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBSZXRhaW5Q
dHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9
IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10gaW5p
dF0pOworCisgICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc051bGwo
KSkKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRhOnBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6cGFzdGVib2FyZEltYWdlLnJl
c291cmNlTUlNRVR5cGVdOwogCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXN0ZWJvYXJk
SW1hZ2UuaW1hZ2UtPm5hdGl2ZUltYWdlKCkpIHsKICAgICAgICAgVUlJbWFnZSAqdWlJbWFnZSA9
IChVSUltYWdlICopW2dldFVJSW1hZ2VDbGFzcygpIGltYWdlV2l0aENHSW1hZ2U6bmF0aXZlSW1h
Z2UuZ2V0KCldOwogICAgICAgICBpZiAodWlJbWFnZSkKLSAgICAgICAgICAgIFtvYmplY3RSZXBy
ZXNlbnRhdGlvbnMgYWRkT2JqZWN0OnVpSW1hZ2VdOworICAgICAgICAgICAgW2l0ZW1zVG9SZWdp
c3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6dWlJbWFnZV07CiAgICAgfQogCiAgICAgaWYgKCFw
YXN0ZWJvYXJkSW1hZ2UudXJsLnVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNVUkwgKm5zVVJM
ID0gcGFzdGVib2FyZEltYWdlLnVybC51cmw7CiAgICAgICAgIGlmIChuc1VSTCkKLSAgICAgICAg
ICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0Om5zVVJMXTsKKyAgICAgICAgICAg
IFtpdGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsKICAgICB9CiAK
LSAgICBpZiAoIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzTnVsbCgpKQotICAg
ICAgICBbYWRkaXRpb25hbERhdGEgc2V0T2JqZWN0OnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvcktleTpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZV07Ci0KLSAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2Vu
dGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNlbnRpbmdPYmpl
Y3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFs
RGF0YS5nZXQoKV1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRp
b25JbmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgpIF1dOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocGFzdGVib2FyZEltYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7
Ci0gICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJ
dGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICBpZiAoW21fcGFzdGVib2Fy
ZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25J
bmZvTGlzdHM6KV0pIHsKICAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMocGFzdGVi
b2FyZEltYWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NiwyNyArMjg1LDI5IEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBh
c3RlYm9hcmRJbWFnZSkKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVw
cmVzZW50YXRpb25zKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJlc2VudGF0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0YSA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJ
T04pCisgICAgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBp
dGVtc1RvUmVnaXN0ZXIgPSBhZG9wdE5TKFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5m
b0xpc3QgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpwYXN0ZWJvYXJkVHlwZUFzTlNT
dHJpbmcgPSBwYXN0ZWJvYXJkVHlwZTsKICAgICBOU1N0cmluZyAqdGV4dEFzTlNTdHJpbmcgPSB0
ZXh0OwogICAgIGlmICh0ZXh0QXNOU1N0cmluZyAmJiBwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcu
bGVuZ3RoKSB7CiAgICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcsIGtVVFR5cGVVUkwpKQotICAgICAgICAgICAg
W29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6W1tbTlNVUkwgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW2l0ZW1z
VG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6W1tbTlNVUkwgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRvcmVsZWFzZV1dOwogCiAgICAgICAgIGlmIChVVFR5
cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJp
bmcsIGtVVFR5cGVUZXh0KSkKLSAgICAgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRk
T2JqZWN0OnRleHRBc05TU3RyaW5nXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW2FkZGl0
aW9uYWxEYXRhIHNldE9iamVjdDp0ZXh0QXNOU1N0cmluZyBmb3JLZXk6cGFzdGVib2FyZFR5cGVB
c05TU3RyaW5nXTsKKyAgICAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5n
T2JqZWN0OnRleHRBc05TU3RyaW5nXTsKICAgICB9CiAKLSAgICBbbV9wYXN0ZWJvYXJkIHNldEl0
ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRl
bVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRp
dGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNl
dEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgp
IF1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGFzdGVib2FyZFR5cGUpOworICAgIFVOVVNF
RF9QQVJBTSh0ZXh0KTsKKyNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewot
ICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRl
bXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5m
b0xpc3RzOildKSB7CiAgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKHBhc3RlYm9h
cmRUeXBlLCB0ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI5MywyMiArMzI0LDI0
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCiB7Ci0g
ICAgYXV0byBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBSZXRhaW5Q
dHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9
IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10gaW5p
dF0pOwogCiAgICAgaWYgKE5TVVJMICpuc1VSTCA9IHVybC51cmwpIHsKLSAgICAgICAgW29iamVj
dFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6bnNVUkxdOwotI2lmIEVOQUJMRShEQVRBX0lOVEVS
QUNUSU9OKQorICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDpu
c1VSTF07CiAgICAgICAgIGlmICghdXJsLnRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5z
VVJMLl90aXRsZSA9IHVybC50aXRsZTsKLSNlbmRpZgogICAgIH0KIAotICAgIFttX3Bhc3RlYm9h
cmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVt
RGF0YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdl
dCgpIGFkZGl0aW9uYWxEYXRhOm5pbF1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zVXNp
bmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgpIF1dOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQogewotICAgIGlmIChbbV9w
YXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0
UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOildKSB7
CiAgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKHVybCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRleCA4MzIzZTcyMDc4YjQ3YjdkMDc3MmU2NDIwOWE4
ZjEzNTRiMTZiMDk3Li43NTg1ZjAwYjZlNTQ0OGFkNzgzNWIyNTkyMTZkZWQwNTkyYTVjNDNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgKQEAgLTI4LDkgKzI4LDQ1IEBACiAjaWYgVEFSR0VUX09TX0lQSE9ORSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIAogQGNsYXNzIFVJ
SXRlbVByb3ZpZGVyOworQHByb3RvY29sIFVJSXRlbVByb3ZpZGVyV3JpdGluZzsKIAogTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIAorLyoqCisgKiBBIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm8gcmVwcmVzZW50cyBhIHNpbmdsZSBjYWxsIHRvIHJlZ2lzdGVyIHNvbWV0aGluZyB0byBh
biBpdGVtIHByb3ZpZGVyLgorICogRWl0aGVyIHRoZSByZXByZXNlbnRpbmcgb2JqZWN0IGV4aXN0
cyBhbmQgdGhlIHR5cGUgaWRlbnRpZmllciBhbmQgZGF0YSBhcmUgbmlsLCBvciB0aGUgcmVwcmVz
ZW50aW5nCisgKiBvYmplY3QgaXMgbmlsIGFuZCB0aGUgdHlwZSBpZGVudGlmaWVyIGFuZCBkYXRh
IGV4aXN0LiBUaGUgZm9ybWVyIHJlcHJlc2VudHMgYSBjYWxsIHRvIHJlZ2lzdGVyIGFuCisgKiBl
bnRpcmUgVUlJdGVtUHJvdmlkZXJXcml0aW5nLWNvbmZvcm1hbnQgb2JqZWN0IHRvIHRoZSBpdGVt
IHByb3ZpZGVyLCB3aGlsZSB0aGUgbGF0dGVyIHJlcHJlc2VudHMgYQorICogY2FsbCB0byByZWdp
c3RlciBvbmx5IGEgZGF0YSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGdpdmVuIHR5cGUgaWRlbnRp
Zmllci4KKyAqLworV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJSZWdp
c3RyYXRpb25JbmZvIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBudWxsYWJsZSwgc3Ryb25nKSBpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPiByZXByZXNlbnRp
bmdPYmplY3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBzdHJv
bmcpIE5TU3RyaW5nICp0eXBlSWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgbnVsbGFibGUsIHN0cm9uZykgTlNEYXRhICpkYXRhOworCitAZW5kCisKKy8qKgorICog
QSBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCByZXByZXNlbnRzIGEgc2VyaWVz
IG9mIHJlZ2lzdHJhdGlvbiBjYWxscyB1c2VkIHRvIHNldCB1cCBhCisgKiBzaW5nbGUgaXRlbSBw
cm92aWRlci4gVGhlIG9yZGVyIG9mIGl0ZW1zIHNwZWNpZmllZCBpbiB0aGUgbGlzdCAobG93ZXN0
IGluZGljZXMgZmlyc3QpIGlzIHRoZSBvcmRlcgorICogaW4gd2hpY2ggb2JqZWN0cyBvciBkYXRh
IGFyZSByZWdpc3RlcmVkIHRvIHRoZSBpdGVtIHByb3ZpZGVyLCBhbmQgdGhlcmVmb3JlIGluZGlj
YXRlcyB0aGUgcmVsYXRpdmUKKyAqIGZpZGVsaXR5IG9mIGVhY2ggaXRlbS4KKyAqCisgKiBQcml2
YXRlIFVUSSB0eXBlcywgc3VjaCBhcyB0aG9zZSB2ZW5kZWQgdGhyb3VnaCB0aGUgaW5qZWN0ZWQg
ZWRpdGluZyBidW5kbGUgU1BJLCBhcmUgY29uc2lkZXJlZCB0bworICogYmUgaGlnaGVyIGZpZGVs
aXR5IHRoYW4gdGhlIG90aGVyIGRlZmF1bHQgdHlwZXMuCisgKi8KK1dFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgOiBOU09iamVjdAor
CistICh2b2lkKWFkZFJlcHJlc2VudGluZ09iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGlu
Zz4pb2JqZWN0OworLSAodm9pZClhZGREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6KE5TU3Ry
aW5nICopdHlwZUlkZW50aWZpZXI7CisKKy0gKE5TVUludGVnZXIpbnVtYmVyT2ZJdGVtczsKKy0g
KG51bGxhYmxlIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gKilpdGVtQXRJbmRleDoo
TlNVSW50ZWdlcilpbmRleDsKKy0gKHZvaWQpZW51bWVyYXRlSXRlbXM6KHZvaWQoXikoV2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAqaXRlbSwgTlNVSW50ZWdlciBpbmRleCkpYmxvY2s7
CisKK0BlbmQKKwogdHlwZWRlZiB2b2lkICheV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9jayko
TlNBcnJheTxOU1VSTCAqPiAqKTsKIAogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJhY3RQYXN0ZWJvYXJkPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbQppbmRleCAwNjBmNTJjMjRjYTIwMTBlYWJhN2Q5YTFmYmJhM2Y5NTMyMzliNDk4Li5j
ZDc2MzlhOTA5NmQ2NmY1ODBlNGQ2Y2Y3MDBhZjVmZDIyZmRkNmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5t
bQpAQCAtNzYsNiArNzYsOTYgQEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5
cGUpCiAgICAgcmV0dXJuIE1BVENIRVNfVVRJX1RZUEUodHlwZSwgUE5HKSB8fCBNQVRDSEVTX1VU
SV9UWVBFKHR5cGUsIEpQRUcpIHx8IE1BVENIRVNfVVRJX1RZUEUodHlwZSwgR0lGKSB8fCBNQVRD
SEVTX1VJS0lUX1RZUEUodHlwZSwgaW1hZ2UpOwogfQogCitAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm8gKCkKK3sKKyAgICBSZXRhaW5QdHI8aWQgPFVJSXRlbVByb3Zp
ZGVyV3JpdGluZz4+IF9yZXByZXNlbnRpbmdPYmplY3Q7CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBfdHlwZUlkZW50aWZpZXI7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gX2RhdGE7Cit9CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvCisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdDooaWQgPFVJSXRlbVByb3Zp
ZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0IHR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAq
KXR5cGVJZGVudGlmaWVyIGRhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBpZiAocmVwcmVzZW50
aW5nT2JqZWN0KQorICAgICAgICBBU1NFUlQoIXR5cGVJZGVudGlmaWVyICYmICFkYXRhKTsKKyAg
ICBlbHNlCisgICAgICAgIEFTU0VSVCh0eXBlSWRlbnRpZmllciAmJiBkYXRhKTsKKworICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9yZXByZXNlbnRpbmdPYmplY3QgPSBy
ZXByZXNlbnRpbmdPYmplY3Q7CisgICAgICAgIF90eXBlSWRlbnRpZmllciA9IHR5cGVJZGVudGlm
aWVyOworICAgICAgICBfZGF0YSA9IGRhdGE7CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQor
CistIChpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPilyZXByZXNlbnRpbmdPYmplY3QKK3sKKyAg
ICByZXR1cm4gX3JlcHJlc2VudGluZ09iamVjdC5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKil0
eXBlSWRlbnRpZmllcgoreworICAgIHJldHVybiBfdHlwZUlkZW50aWZpZXIuZ2V0KCk7Cit9CisK
Ky0gKE5TRGF0YSAqKWRhdGEKK3sKKyAgICByZXR1cm4gX2RhdGEuZ2V0KCk7Cit9CisKK0BlbmQK
KworQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCAoKQorewor
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2l0ZW1zOworfQorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QKKworLSAoaW5zdGFu
Y2V0eXBlKWluaXQKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICAgICAgX2l0
ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZClhZGREYXRhOihOU0RhdGEgKilkYXRhIGZvclR5cGU6KE5T
U3RyaW5nICopdHlwZUlkZW50aWZpZXIKK3sKKyAgICBbX2l0ZW1zIGFkZE9iamVjdDpbW1tXZWJJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvIGFsbG9jXSBpbml0V2l0aFJlcHJlc2VudGluZ09i
amVjdDpuaWwgdHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIgZGF0YTpkYXRhXSBhdXRvcmVs
ZWFzZV1dOworfQorCistICh2b2lkKWFkZFJlcHJlc2VudGluZ09iamVjdDooaWQgPFVJSXRlbVBy
b3ZpZGVyV3JpdGluZz4pb2JqZWN0Cit7CisgICAgQVNTRVJUKFtvYmplY3QgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChVSUl0ZW1Qcm92aWRlcldyaXRpbmcpXSk7CisgICAgW19pdGVtcyBh
ZGRPYmplY3Q6W1tbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyBhbGxvY10gaW5pdFdp
dGhSZXByZXNlbnRpbmdPYmplY3Q6b2JqZWN0IHR5cGVJZGVudGlmaWVyOm5pbCBkYXRhOm5pbF0g
YXV0b3JlbGVhc2VdXTsKK30KKworLSAoTlNVSW50ZWdlciludW1iZXJPZkl0ZW1zCit7CisgICAg
cmV0dXJuIFtfaXRlbXMgY291bnRdOworfQorCistIChXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRp
b25JbmZvICopaXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKK3sKKyAgICBpZiAoaW5kZXgg
Pj0gc2VsZi5udW1iZXJPZkl0ZW1zKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJu
IFtfaXRlbXMgb2JqZWN0QXRJbmRleDppbmRleF07Cit9CisKKy0gKHZvaWQpZW51bWVyYXRlSXRl
bXM6KHZvaWQgKF4pKFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gKiwgTlNVSW50ZWdl
cikpYmxvY2sKK3sKKyAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwOyBpbmRleCA8IHNlbGYu
bnVtYmVyT2ZJdGVtczsgKytpbmRleCkKKyAgICAgICAgYmxvY2soW3NlbGYgaXRlbUF0SW5kZXg6
aW5kZXhdLCBpbmRleCk7Cit9CisKK0BlbmQKKwogQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkICgpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU0ludGVnZXIgbnVtYmVyT2ZJ
dGVtczsKQEAgLTExMSw2ICsyMDEsMTEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICByZXR1
cm4gc2VsZjsKIH0KIAorLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleDooTlNVSW50ZWdlcilpbmRleAoreworICAgIHJldHVybiBb
c2VsZiBpdGVtUHJvdmlkZXJBdEluZGV4OmluZGV4XS5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJz
ID86IEBbIF07Cit9CisKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXMK
IHsKICAgICBpZiAoX2NhY2hlZFR5cGVJZGVudGlmaWVycykKQEAgLTE1MywzNCArMjQ4LDI5IEBA
IC0gKE5TSW50ZWdlciludW1iZXJPZkl0ZW1zCiAgICAgcmV0dXJuIFtfaXRlbVByb3ZpZGVycyBj
b3VudF07CiB9CiAKLS0gKHZvaWQpc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOihO
U0FycmF5PFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAqPiAqKWl0ZW1EYXRhCistICh2b2lkKXNldEl0
ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6KE5TQXJyYXk8V2ViSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uSW5mb0xpc3QgKj4gKilpdGVtTGlzdHMKIHsKICAgICBOU011dGFibGVBcnJheSAq
cHJvdmlkZXJzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKFdlYlBhc3RlYm9h
cmRJdGVtRGF0YSAqZGF0YSBpbiBpdGVtRGF0YSkgewotICAgICAgICBpZiAoIWRhdGEucmVwcmVz
ZW50aW5nT2JqZWN0cy5jb3VudCAmJiAhZGF0YS5hZGRpdGlvbmFsRGF0YS5jb3VudCkKKyAgICBm
b3IgKFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0ICppdGVtTGlzdCBpbiBpdGVt
TGlzdHMpIHsKKyAgICAgICAgaWYgKCFpdGVtTGlzdC5udW1iZXJPZkl0ZW1zKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgUmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBpdGVtUHJv
dmlkZXIgPSBhZG9wdE5TKFtbZ2V0VUlJdGVtUHJvdmlkZXJDbGFzcygpIGFsbG9jXSBpbml0XSk7
Ci0gICAgICAgIC8vIEZpcnN0LCByZWdpc3RlciBhbGwgcGxhdGZvcm0gb2JqZWN0cywgcHJpb3Jp
dGl6aW5nIG9iamVjdHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkuCi0gICAgICAgIGZv
ciAoaWQgcmVwcmVzZW50aW5nT2JqZWN0IGluIGRhdGEucmVwcmVzZW50aW5nT2JqZWN0cykgewot
ICAgICAgICAgICAgaWYgKCFbcmVwcmVzZW50aW5nT2JqZWN0IGNvbmZvcm1zVG9Qcm90b2NvbDpA
cHJvdG9jb2woVUlJdGVtUHJvdmlkZXJXcml0aW5nKV0pCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW2dldFVJSXRlbVByb3Zp
ZGVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgICAgICBbaXRlbUxpc3QgZW51bWVyYXRlSXRl
bXM6W2l0ZW1Qcm92aWRlcl0gKFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gKml0ZW0s
IE5TVUludGVnZXIpIHsKKyAgICAgICAgICAgIGlmIChpdGVtLnJlcHJlc2VudGluZ09iamVjdCkg
eworICAgICAgICAgICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6aXRlbS5yZXBy
ZXNlbnRpbmdPYmplY3QgdmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0
aW9uc1Zpc2liaWxpdHlBbGxdOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDooaWQgPFVJSXRl
bVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0IHZpc2liaWxpdHk6VUlJdGVtUHJv
dmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsXTsKLSAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCFpdGVtLnR5cGVJZGVudGlmaWVyLmxlbmd0aCB8fCAhaXRlbS5kYXRhLmxl
bmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gTmV4dCwgcmVnaXN0
ZXIgb3RoZXIgY3VzdG9tIGRhdGEgcmVwcmVzZW50YXRpb25zIGZvciB0eXBlIGlkZW50aWZpZXJz
LgotICAgICAgICBOU0RpY3Rpb25hcnkgPE5TU3RyaW5nICosIE5TRGF0YSAqPiAqYWRkaXRpb25h
bERhdGEgPSBkYXRhLmFkZGl0aW9uYWxEYXRhOwotICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBl
SWRlbnRpZmllciBpbiBhZGRpdGlvbmFsRGF0YSkgewotICAgICAgICAgICAgaWYgKCFbYWRkaXRp
b25hbERhdGFbdHlwZUlkZW50aWZpZXJdIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJl
Z2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIg
dmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlB
bGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRp
b25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkZGl0aW9uYWxEYXRhW3R5cGVJZGVudGlmaWVyXSwgbmls
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dp
dGhUb3RhbFVuaXRDb3VudDoxMDBdOworICAgICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gaXRl
bURhdGEgPSBpdGVtLmRhdGE7CisgICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0
YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6aXRlbS50eXBlSWRlbnRpZmllciB2aXNp
YmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbCBs
b2FkSGFuZGxlcjpbaXRlbURhdGFdIChJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNzICogeworICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGl0ZW1EYXRhLmdldCgpLCBuaWwpOworICAgICAgICAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgICAgICAgICB9XTsKLSAgICAgICAgfQorICAgICAgICB9XTsKICAg
ICAgICAgW3Byb3ZpZGVycyBhZGRPYmplY3Q6aXRlbVByb3ZpZGVyLmdldCgpXTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKaW5kZXggMDQzNmIzMzI1ZDRkYmQxZWQzMzk0MGI1ZWY1NjM4YzZjYjE4
ZjNjMS4uZmEzODM0ODA0ZWNiMGQyMDE2YzMxMzUwNjM1ZjMzZjkwZmJkY2VlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICNlbmRpZgogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQppbmRleCA3ZTliYjQ0YjJmNTBhOGNhNzQ4MmY3MDVhNmZhNTcwNjNi
YjFkZDQ1Li5hZjQwZTE3NjMzYmQwYmY3NjUxNDljZDE3NDUyY2VhNzEyYTVmM2Y5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCkBAIC0xODYsNiArMTg2LDExIEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIH0KIAog
I2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlc0J5
RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlw
ZXMsIGluZGV4KTsKK30KKwogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggYjgzNjUxNjZmYjM4MjQ2Yzk5MWJjNjg3N2RjYzA4
ZmJhNWU0ZmNhMS4uYzk2ODE5N2JmYTA0M2Q5MzdlYjI3YzljNDY0NzMyNjY2NGNjY2NjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQpAQCAtMTQwLDYgKzE0MCwxMSBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50
NjRfdAogfQogCiAjaWYgUExBVEZPUk0oSU9TKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQorewor
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgodHlwZXMsIGluZGV4KTsKK30KKwogdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLndyaXRlKHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5LmgKaW5kZXggODZiOTAyZGQ0NzhjMTY1MDFlZDMyM2ExYzNhNTcxYjZhM2Nj
M2NlZC4uYmY5NDZjNDVmNjQ3OTMzNWEzYjg2NjVjYzlhYzRhNTVlZjYxNjMzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtNjksNiArNjks
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAKICNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7CiAgICAgdm9pZCB3cml0ZVVSTFRv
UGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdl
cy5pbgppbmRleCAyMTQwZjY0ZGVhNDZmNjNiY2QxNDEwYTllYTNlMTVkZWFkMWUyNTY2Li44YTkz
NmM1MzA0N2ZmMzMzYzUwZTFhZjE2MTZmZjUxZDNmMGY1OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAg
LTMxLDYgKzMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBSZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3Ry
aW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkKICAgICBHZXRGaWxl
bmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9y
PFN0cmluZz4gZmlsZW5hbWVzKQorICAgIEdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJ
dGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVj
dG9yPFN0cmluZz4gdHlwZXMpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDhiYTczM2E1ZTM3YjE2MDg1NDUyOWEy
YzM0MjI3YTdmNWVlYjdmYjMuLjNkNGY5NjBlNTNiN2U3ZmM5NjY5MjM1YjI2ZjU0MWUzMjZmMTJm
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI4Nyw2ICsyODcs
MTEgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxp
dHlGb3JJdGVtQXRJbmRleDo6UmVwbHkodHlwZXMpLCAwKTsKK30KKwogdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OldyaXRlVVJMVG9QYXN0ZWJvYXJkKHVybCwgcGFzdGVib2FyZE5hbWUpLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDdmZTM0OTI4NmY5NTE1N2I4MDRm
NTdjMjZkNjUxZjY4ZTAwMDU4YzEuLjIzYjRmZWM0OGFmZWU1YWYxYTBkZjcwYzg1MjBlYjE4Y2Ri
MDE3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjgsNiArNjgsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlVSTCBy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFR5cGVz
QnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzc2NjE1ZWU3OWYzNTE4YWMzYjU2N2VkYWJjYmY3NzNh
YzBmZjk5NS4uMTBjOTM1MmQ4Y2E2NDQ0MDBlNGI5Mjk2ZTcyNTMwN2QxMDI3MjExMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE3LTA0LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBjb250ZW50
IGZyb20gaXRlbSBwcm92aWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTE1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5Mzc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGRzIGEgbmV3IHVu
aXQgdGVzdCAoRGF0YUludGVyYWN0aW9uVGVzdHMuUmVzcGVjdHNFeHRlcm5hbFNvdXJjZUZpZGVs
aXR5UmFua2luZ3MpLiBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yCisgICAgICAgIG1vcmUgZGV0
YWlscy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlv
blRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMDQtMjQg
IEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFBhY2thZ2Ug
SW1hZ2VEaWZmIGJ1aWx0IHdpdGggaG9zdCBTREsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KaW5kZXggZWIyZDM0NmE0ZDJj
NDJiOWQ1Y2IxNDQ2ZGRkYmE4Njc0N2MyZjhhZi4uZjQwZDZiZTNhZjIwMWFlZTNmNmMyOTQ5Yjhl
NzdjMmVkMDIwYmM4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
RGF0YUludGVyYWN0aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KQEAgLTMyLDcgKzMyLDkgQEAKICNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIK
ICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNpbXBv
cnQgPFVJS2l0L05TU3RyaW5nK1VJSXRlbVByb3ZpZGVyLmg+CiAjaW1wb3J0IDxVSUtpdC9OU1VS
TCtVSUl0ZW1Qcm92aWRlci5oPgorI2ltcG9ydCA8VUlLaXQvVUlJbWFnZStVSUl0ZW1Qcm92aWRl
ci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJdGVtUHJvdmlkZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaD4KQEAgLTQ2Miw2ICs0NjQsMzkgQEAgVEVTVChEYXRhSW50
ZXJhY3Rpb25UZXN0cywgRXh0ZXJuYWxTb3VyY2VJbWFnZUFuZEhUTUxUb1VwbG9hZEFyZWEpCiAg
ICAgY2xlYW5VcERhdGFJbnRlcmFjdGlvblRlbXBvcmFyeVBhdGgoKTsKIH0KIAorVEVTVChEYXRh
SW50ZXJhY3Rpb25UZXN0cywgUmVzcGVjdHNFeHRlcm5hbFNvdXJjZUZpZGVsaXR5UmFua2luZ3Mp
Cit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvZm9jdXMtY29udGVudGVkaXRhYmxl
Il07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVj
dGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07CisKKyAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNp
bXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRX
aXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisKKyAgICAvLyBIZXJlLCBvdXIgc291cmNlIGl0
ZW0gcHJvdmlkZXIgdmVuZHMgdHdvIHJlcHJlc2VudGF0aW9uczogcGxhaW4gdGV4dCwgYW5kIHRo
ZW4gYW4gaW1hZ2UuIElmIHdlIGRvbid0IHJlc3BlY3QgdGhlCisgICAgLy8gZmlkZWxpdHkgb3Jk
ZXIgcmVxdWVzdGVkIGJ5IHRoZSBzb3VyY2UsIHdlJ2xsIGVuZCB1cCBhc3N1bWluZyB0aGF0IHRo
ZSBpbWFnZSBpcyBhIGhpZ2hlciBmaWRlbGl0eSByZXByZXNlbnRhdGlvbgorICAgIC8vIHRoYW4g
dGhlIHBsYWluIHRleHQsIGFuZCBlcnJvbmVvdXNseSBpbnNlcnQgdGhlIGltYWdlLiBJZiB3ZSBy
ZXNwZWN0IHNvdXJjZSBmaWRlbGl0aWVzLCB3ZSdsbCBpbnNlcnQgdGV4dCByYXRoZXIKKyAgICAv
LyB0aGFuIGFuIGltYWdlLgorICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRG
aXJzdCA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtzaW11
bGF0ZWRJdGVtUHJvdmlkZXJXaXRoVGV4dEZpcnN0IHJlZ2lzdGVyT2JqZWN0OkAiSGVsbG8gd29y
bGQiIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxd
OworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoVGV4dEZpcnN0IHJlZ2lzdGVyT2JqZWN0
OnRlc3RJY29uSW1hZ2UoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsXTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldEV4dGVybmFs
SXRlbVByb3ZpZGVyczpAWyBzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoVGV4dEZpcnN0LmdldCgp
IF1dOworCisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtl
KDMwMCwgNDAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworICAgIEVYUEVDVF9XS19TVFJF
USgiSGVsbG8gd29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZWRpdG9yLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBlZGl0b3JD
b250YWluc0ltYWdlRWxlbWVudF0pOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJlZGl0b3IuaW5uZXJIVE1MID0gJyciXTsKKworICAgIC8vIE5vdyB3ZSByZWdp
c3RlciB0aGUgaXRlbSBwcm92aWRlcnMgaW4gcmV2ZXJzZSwgYW5kIGV4cGVjdCB0aGUgaW1hZ2Ug
dG8gYmUgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0ZXh0LgorICAgIGF1dG8gc2ltdWxhdGVkSXRlbVBy
b3ZpZGVyV2l0aEltYWdlRmlyc3QgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgcmVnaXN0ZXJP
YmplY3Q6dGVzdEljb25JbWFnZSgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGxdOworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXJXaXRoSW1hZ2VG
aXJzdCByZWdpc3Rlck9iamVjdDpAIkhlbGxvIHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3Zp
ZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBzaW11bGF0ZWRJdGVtUHJvdmlkZXJX
aXRoSW1hZ2VGaXJzdC5nZXQoKSBdXTsKKworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
cnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJlZGl0b3IudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
ZWRpdG9yQ29udGFpbnNJbWFnZUVsZW1lbnRdKTsKK30KKwogVEVTVChEYXRhSW50ZXJhY3Rpb25U
ZXN0cywgRXh0ZXJuYWxTb3VyY2VVVEY4UGxhaW5UZXh0T25seSkKIHsKICAgICBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7Cg==
</data>
<flag name="commit-queue"
          id="329236"
          type_id="3"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308042</attachid>
            <date>2017-04-24 18:54:54 -0700</date>
            <delta_ts>2017-04-24 19:35:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171155-20170424185453.patch</filename>
            <type>text/plain</type>
            <size>54584</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiODZlNjFiMDE1ZmIz
NmNjZjA2YjYxMjI5ZTRmOWIwODQwMmVlNC4uNTlhNjRiZmYyYjA3ZmFlMDFlMTFlN2U0YmU5ZDM0
MjY1OTk1YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxNy0wNC0yMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNwZWN0IGZp
ZGVsaXR5IG9yZGVyIHdoZW4gcmVhZGluZyB3ZWIgY29udGVudCBmcm9tIGl0ZW0gcHJvdmlkZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzExNTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgQ3VycmVudGx5LCB3aGVuIHJlYWRpbmcgd2ViIGNvbnRl
bnQgZnJvbSBwYXN0ZWJvYXJkcywgd2UgYXNzdW1lIHRoZSBvbGQgVUlQYXN0ZWJvYXJkL05TUGFz
dGVib2FyZCBtb2RlbCB3aGVyZWluCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBtdXN0IGRldGVy
bWluZSB3aGljaCBvZiB0aGUgaXRlbXMgaXMgY29uc2lkZXJlZCB0byBoYXZlIHRoZSBoaWdoZXN0
IGZpZGVsaXR5IGZvciB0aGUgcHVycG9zZXMgb2YKKyAgICAgICAgaW5zZXJ0aW5nIGludG8gYW4g
ZWRpdGFibGUgYXJlYS4gVGhpcyBkZXN0aW5hdGlvbi1zaWRlIGZpZGVsaXR5IHJhbmtpbmcgaXMg
ZGV0ZXJtaW5lZCBzb2xlbHkgYnkgdGhlIE5TQXJyYXkKKyAgICAgICAgcmV0dXJuZWQgZnJvbSBQ
YXN0ZWJvYXJkOjpzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXMsIHdoaWNoIGxpc3RzIGNvbXBhdGli
bGUgdHlwZXMgaW4gb3JkZXIgZnJvbSBoaWdoZXN0IGZpZGVsaXR5CisgICAgICAgIHRvIGxvd2Vz
dCBmaWRlbGl0eS4gUGFzdGVib2FyZDo6cmVhZCBlZmZlY3RpdmVseSBpdGVyYXRlcyBvdmVyIHRo
aXMgbGlzdCBvZiB0eXBlcyBpbiBvcmRlciwgYXR0ZW1wdGluZyB0byByZWFkCisgICAgICAgIGhp
Z2hlc3QgZmlkZWxpdHkgdHlwZXMgYW5kIGJhaWxpbmcgd2hlbiBpdCBmaXJzdCBzdWNjZXNzZnVs
bHkgcmVhZHMgZGF0YS4KKworICAgICAgICBIb3dldmVyLCB3aGVuIG91ciBwYXN0ZWJvYXJkIGlz
IGJhY2tlZCBieSBVSUl0ZW1Qcm92aWRlcnMsIHdlIHNob3VsZCBpbnN0ZWFkIHJlYWQgcGFzdGVi
b2FyZCB0eXBlcyBpbiBvcmRlciBvZgorICAgICAgICBmaWRlbGl0eSBhcyBzcGVjaWZpZWQgYnkg
dGhlIHNvdXJjZSByYXRoZXIgdGhhbiB0aGUgZGVzdGluYXRpb24uIFRvIGFjY29tcGxpc2ggdGhp
cywgd2UgaW50cm9kdWNlIGFuIGFsdGVybmF0ZQorICAgICAgICBjb2RlcGF0aCwgUGFzdGVib2Fy
ZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzLCB3aGljaCB3ZSB0YWtlIGlmIFBhc3RlYm9h
cmQ6OnJlc3BlY3RzVVRJRmlkZWxpdGllcyBpcyB0cnVlCisgICAgICAgIChjdXJyZW50bHksIHRo
aXMgb25seSBhcHBsaWVzIGZvciB0aGUgcHVycG9zZXMgb2YgZGF0YSBpbnRlcmFjdGlvbikuIFRo
aXMgdmVyc2lvbiBmb2xsb3dzIGEgZGlmZmVyZW50IGZsb3c6CisgICAgICAgIGZvciBlYWNoIGl0
ZW0gaW4gdGhlIHBhc3RlYm9hcmQsIHdlIGFzayBmb3IganVzdCB0aGUgVVRJcyBmb3IgdGhhdCBp
dGVtLCBpbiBvcmRlciBvZiBmaWRlbGl0eS4gRm9yIGVhY2ggaXRlbSwKKyAgICAgICAgd2UgdGhl
biBjYWxsIHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlIHRvIHRyeSBhbmQgcmVh
ZCBkYXRhIGZvciB0aGF0IHR5cGUsIGNvbnRpbnVpbmcgdW50aWwgZWl0aGVyCisgICAgICAgIGFs
bCBVVElzIGhhdmUgYmVlbiBhdHRlbXB0ZWQsIG9yIHJlYWRpbmcgd2FzIHN1Y2Nlc3NmdWwuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyB0d28gYWRkaXRpb25hbCBhZGp1c3RtZW50cy4gRmly
c3QsIHdlIGludHJvZHVjZSBQYXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJ
bmRleCwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCBieSBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGlu
Z1VUSUZpZGVsaXRpZXMgd2hlbiBxdWVyeWluZyB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgVVRJcyBm
b3IgZWFjaAorICAgICAgICBwYXN0ZWJvYXJkIGl0ZW0sIHNvcnRlZCBieSBoaWdoZXN0IHRvIGxv
d2VzdCBmaWRlbGl0eS4KKworICAgICAgICBTZWNvbmRseSwgd2UgcmVmYWN0b3IgbG9naWMgdG8g
d3JpdGUgdG8gdGhlIGl0ZW0gcHJvdmlkZXIgcGFzdGVib2FyZCBpbiBQbGF0Zm9ybVBhc3RlYm9h
cmRJT1MuIFNpbmNlIHdlIGFyZQorICAgICAgICBub3cgcmVzcGVjdGluZyBmaWRlbGl0eSByYW5r
aW5ncyBvbiB0aGUgZGVzdGluYXRpb24sIHRoZSBzb3VyY2UgbXVzdCBhbHNvIHJlZ2lzdGVyIFVU
SSB0eXBlcyBpbiB0aGUgcmlnaHQKKyAgICAgICAgZmlkZWxpdHkgb3JkZXIuIFdoaWxlIHRoaXMg
d2FzIG1vc3RseSBhY2hpZXZlZCB1c2luZyBvdXIgZXhpc3RpbmcgbWV0aG9kIG9mIHdyaXRpbmcg
YSBsaXN0IG9mIG9iamVjdAorICAgICAgICByZXByZXNlbnRhdGlvbnMgdG8gdGhlIHBhc3RlYm9h
cmQgYW5kIHRoZW4gYWxsIG9mIHRoZSBjb250ZW50cyBvZiBhIE5TU3RyaW5nID0+IE5TRGF0YSBk
aWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgICAgICAgcHJpdmF0ZSBVVEkgZGF0YSwgdGhpcyBhcHBy
b2FjaCBoYXMgdHdvIGZsYXdzOgorICAgICAgICAxLiAgV2UgYXJlIHVuYWJsZSB0byByZWdpc3Rl
ciBoaWdoLXByaW9yaXR5IGN1c3RvbSB0eXBlcywgZm9sbG93ZWQgYnkgcmVwcmVzZW50aW5nIG9i
amVjdHMsIGZvbGxvd2VkIGJ5IG1vcmUKKyAgICAgICAgICAgIGxvd2VyLXByaW9yaXR5IGN1c3Rv
bSB0eXBlcywgc2luY2Ugd2UgYXNzdW1lIHRoYXQgYWxsIGN1c3RvbSB0eXBlcyBmb2xsb3cgYWxs
IHJlcHJlc2VudGluZyBvYmplY3RzLgorICAgICAgICAyLiAgU2luY2Ugd2UncmUganVzdCBpdGVy
YXRpbmcgb3ZlciBhIGRpY3Rpb25hcnkgb2YgTlNTdHJpbmcgPT4gTlNEYXRhIHdoZW4gcmVnaXN0
ZXJpbmcgY3VzdG9tIFVUSQorICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zIHRvIHRoZSBpdGVt
IHByb3ZpZGVyLCB0aGVyZSBjYW5ub3QgaW5oZXJlbnRseSBiZSBhbnkgZmlkZWxpdHkgb3JkZXJp
bmcgZm9yIGN1c3RvbSB0eXBlcy4KKworICAgICAgICBUbyBhZGRyZXNzIGJvdGggb2YgdGhlc2Ug
aXNzdWVzLCB3ZSBpbnRyb2R1Y2UgdHdvIG5ldyBvYmplY3RzIHRoYXQgZW5jYXBzdWxhdGUgaG93
IHdlIHJlZ2lzdGVyIGRhdGEgdG8gdGhlIGl0ZW0KKyAgICAgICAgcHJvdmlkZXIgcGFzdGVib2Fy
ZC4gV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyByZXByZXNlbnRzIHNvbWUgZGF0YSB0
aGF0IGNhbiBiZSByZWdpc3RlcmVkIHRvIGFuIGl0ZW0KKyAgICAgICAgcHJvdmlkZXIgKGVpdGhl
ciBhbiBvYmplY3QgY29uZm9ybWluZyB0byBVSUl0ZW1Qcm92aWRlcldyaXRpbmcsIG9yIGFuIE5T
U3RyaW5nIGFuZCBOU0RhdGEpLgorICAgICAgICBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvTGlzdCByZXByZXNlbnRzIGEgbGlzdCBvZiBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvcyBpbiBvcmRlciBvZiBoaWdoZXN0IHRvCisgICAgICAgIGxvd2VzdCBmaWRlbGl0eS4gSW4g
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLCB3ZSB0cmFuc2Zvcm0gUGFzdGVib2FyZFdlYkNvbnRlbnQs
IFBhc3RlYm9hcmRJbWFnZSwgYW5kIFBhc3RlYm9hcmRVUkwKKyAgICAgICAgaW50byBhIFdlYkl0
ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0LCB3aGljaCB3ZSB0aGVuIHBhc3MgYWxvbmcg
dG8gdGhlIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuIEluCisgICAgICAgIFdlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQsIHdlIHRyYXZlcnNlIHRoZSBsaXN0IG9mIFdlYkl0ZW1Qcm92aWRlclJl
Z2lzdHJhdGlvbkluZm9zIGluIHRoZSBsaXN0IGFuZCByZWdpc3RlcgorICAgICAgICBlYWNoIFdl
Ykl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8ncyByZXByZXNlbnRpbmcgb2JqZWN0IG9yIGRh
dGEgdG8gdGhlIGl0ZW0gcHJvdmlkZXIuCisKKyAgICAgICAgVGVzdDogRGF0YUludGVyYWN0aW9u
VGVzdHMuUmVzcGVjdHNFeHRlcm5hbFNvdXJjZUZpZGVsaXR5UmFua2luZ3MuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQWJz
dHJhY3RQYXN0ZWJvYXJkLm1tOiBSZW1vdmVkLgorCisgICAgICAgIE1vdmVzIFdlYkl0ZW1Qcm92
aWRlckRhdGEsIGZvcm1lcmx5IGltcGxlbWVudGVkIGluIEFic3RyYWN0UGFzdGVib2FyZC5tbSwg
aW50byBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tLgorICAgICAgICBXZSBjYW4gZGVsZXRl
IEFic3RyYWN0UGFzdGVib2FyZC5tbSBhcyBhIHJlc3VsdC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFBhc3RlYm9hcmRX
ZWJDb250ZW50RGF0YUZvclR5cGUpOgorCisgICAgICAgIFB1bGwgb3V0IGNvbW1vbiBsb2dpYyBm
b3IgcmVhZGluZyBkYXRhIGdpdmVuIGEgVVRJIHR5cGUgZnJvbSB0aGUgcGFzdGVib2FyZCBpbnRv
IHRoZSBQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlci4KKyAgICAgICAgVGhpcyBpcyBpbnZva2Vk
IGZyb20gYm90aCB0aGUgZXhpc3RpbmcgUGFzdGVib2FyZDo6cmVhZCBjb2RlcGF0aCwgYXMgd2Vs
bCBhcyB0aGUgcmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzCisgICAgICAgIGNvZGVwYXRoLgor
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKworICAgICAgICBSZWZhY3Rv
cmVkIHRvIGNhbGwgdGhlIG5ldyByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZSBo
ZWxwZXIuIEJlaGF2aW9yIHNob3VsZCBub3QgaGF2ZSBjaGFuZ2VkLCB1bmxlc3MKKyAgICAgICAg
dGhlIHBhc3RlYm9hcmQgc3VwcG9ydHMgVVRJIGZpZGVsaXRpZXMuCisKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlc3BlY3RzVVRJRmlkZWxpdGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorCisgICAgICAgIEFu
IGFsdGVybmF0aXZlIHRvIFBhc3RlYm9hcmQ6OnJlYWQgdGhhdCBjb25zaWRlcnMgc291cmNlLXNp
ZGUgZmlkZWxpdHkgcmFua2luZ3Mgb2YgVVRJcy4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMpOgorCisg
ICAgICAgIFJlZmFjdG9yZWQgdG8gYnVpbGQgYSBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvTGlzdCBhbmQgcGFzcyBpdCB0byB0aGUgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB0bwor
ICAgICAgICByZWdpc3RlciBpdGVtcyBhbmQgZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9u
SW5mbyBpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdDp0eXBlSWRlbnRpZmllcjpkYXRhOl0pOgor
ICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvIHJlcHJlc2VudGluZ09i
amVjdF0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvIHR5cGVJ
ZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8g
ZGF0YV0pOgorCisgICAgICAgIFJlcHJlc2VudHMgYSBzaW5nbGUgY2FsbHMgdG8gcmVnaXN0ZXIg
ZGF0YSBvbnRvIHRoZSBpdGVtIHByb3ZpZGVyIHBhc3RlYm9hcmQuIFNlZQorICAgICAgICBXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggaGVhZGVyIGNvbW1lbnRzIGZvciBtb3JlIGluZm8uCisK
KyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgaW5pdF0pOgor
ICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhZGREYXRhOmZv
clR5cGU6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0
IGFkZFJlcHJlc2VudGluZ09iamVjdDpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uSW5mb0xpc3QgbnVtYmVyT2ZJdGVtc10pOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBpdGVtQXRJbmRleDpdKToKKyAgICAgICAgKC1bV2Vi
SXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgZW51bWVyYXRlSXRlbXM6XSk6CisKKyAg
ICAgICAgUmVwcmVzZW50cyBhIHNlcmllcyBvZiBjYWxscyB0byByZWdpc3RlciByZXByZXNlbnRh
dGlvbnMgb250byB0aGUgaXRlbSBwcm92aWRlciBwYXN0ZWJvYXJkLiBTZWUKKyAgICAgICAgV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGhlYWRlciBjb21tZW50cyBmb3IgbW9yZSBpbmZvLgor
CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzQnlG
aWRlbGl0eUZvckl0ZW1BdEluZGV4Ol0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkIHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6XSk6CisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRp
b25zOl0pOiBEZWxldGVkLgorCiAyMDE3LTA0LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgY3JlYXRlRWxlbWVudE5TKCkgc2hvdWxkIG5vdyB0aHJvdyBvbmx5
IEludmFsaWRDaGFyYWN0ZXJFcnJvciwgbm90IE5hbWVzcGFjZUVycm9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggMGZhNDU5YjI2Yjk4M2UzYjI0ZDA2MTc3OWJiNWQyYjUzN2U2MTQ0MS4uMzk4MWMzNzU4
NTk2ZmFiOWFjODExNmQ2NTMwYmQ1NzhkZTFlOWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE3LTA0LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlc3BlY3QgZmlkZWxpdHkgb3JkZXIgd2hlbiByZWFkaW5nIHdlYiBj
b250ZW50IGZyb20gaXRlbSBwcm92aWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MTE1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEzNTY5
Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGp1c3Rz
IGZvciBjaGFuZ2VzIGluIFdlYkNvcmUgKHNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBk
ZXRhaWxzKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRl
bUF0SW5kZXgpOgorCiAyMDE3LTA0LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVkdWNlIGNvcGllcyBhbmQgYWxsb2NhdGlvbnMgaW4g
U2hhcmVkQnVmZmVyOjphcHBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MGI4YTQ5MmE1OGEwNDcwMDdjN2My
ZWQ5OGYwY2M0ZDI3Mjc5MjQ4Li5jMGE5ZTBjODM4Mzk1ZTIwODIyNjVlMmJiZmEwOGIwOGE0Mzgx
MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDQtMjEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzcGVjdCBmaWRlbGl0eSBv
cmRlciB3aGVuIHJlYWRpbmcgd2ViIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMTU1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMTM1NjkzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgIEFkanVzdHMgZm9yIGNoYW5nZXMgaW4gV2ViQ29yZSBieSBhZGRpbmcg
cGx1bWJpbmcgdG8gc3VwcG9ydCBQYXN0ZWJvYXJkOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleC4gU2VlCisgICAgICAgIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVz
QnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMDQtMjQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0YWJzIHdpdGgg
Y2FwdHVyaW5nIGF1ZGlvIG9yIHZpZGVvIHRvIGV4Y2VlZCBiYWNrZ3JvdW5kIENQVSBsaW1pdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDgzYzhmNDJhNzk2YTBiOGNjNDI3Yjg2NDA2YzU5YTcwYTg2MjFmYmMuLjg4OGNkYzE0YzIz
YzFmM2FkNDQwODY1MmYzNzY2NmE0YjczOWE1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4NjcsNyArNjg2Nyw2IEBACiAJ
CUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJDMjQgLyogRHVt
cEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0
b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGluZ0hpc3Rv
cnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICov
OyB9OwotCQlGNEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREODMxNjEx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjUwNjY0
RjcxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUY1MDY2NEY4MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi87
IH07CiAJCUY1MTNBM0VBMTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUxM0Ez
RTkxNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1NDI0LDcgKzE1NDIz
LDYgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8q
IER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
bmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsgcGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdI
aXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJC
MDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9F
ZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0RDgz
MTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3Jt
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3Jt
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY2MTU3
RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb3JtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTY5LDcgKzIwOTY3LDYgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8sCiAJ
CQkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovLAot
CQkJCUY0RDgzMTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8s
CiAJCQkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNvcklPUy5jcHAgKi8sCiAJCQkJ
QTFFRDc3OEExQkUzMjkzRjAwREMxNzkxIC8qIERldmljZS5jcHAgKi8sCiAJCQkJQTFFRDc3OEIx
QkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oICovLApAQCAtMzE3OTIsNyArMzE3ODksNiBAQAog
CQkJCUE2MTQ4QTc4MTJFNDFFM0IwMDQ0QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJl
bEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1
IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRjREODMxNjIx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTJBQjI1MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgwRTdCMTAwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjI3MEExQ0U2M0IwMEI0MkIyNSAvKiBK
U0hUTUxNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCmluZGV4IGI5NGQ3MGExZjZhNTIwYjAxODFjM2QyMzViZTJmYmI4YzdkYzhiNjku
LjQyOWUxYWYxNDAwMjQ3MGE3YzhjZjY4MDYyNTJlZTE1MjkzMjc0MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTIxNyw2ICsyMTcsMTEgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgcmVzcGVjdHNVVElGaWRl
bGl0aWVzKCkgY29uc3Q7CisgICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXImKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpbmdQYXN0ZWJvYXJkKCk7CiAgICAgdm9pZCB3cml0ZVJhbmdl
VG9EYXRhT2JqZWN0KFJhbmdlJiwgRnJhbWUmKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXgg
YzJhNjM0NzQ5NWYwOGNjZDAxZThlN2MwYWY2MDBjMWQ2MTBiMjlhNy4uN2Q1OWNkNTIxNjIyNGNl
MGRkODVlNTM3MTJjMzJhYTM4N2M5ZjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0
aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5k
ZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDc5MjNjMmY2Yjc1OWZhMjI5OTc1M2Q2
ODFhOTMwYTlkZTQ0ODMwZjEuLjUzYjJjZDk0NmVhZGQ5MWYzYTk0NDhiZDZhZTE2YWM2MWI2MWMx
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9F
WFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0
cmluZz4gZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGludCBpbmRleCk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IHVuaXF1ZU5hbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0Fic3RyYWN0UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3Ry
YWN0UGFzdGVib2FyZC5oCmluZGV4IGI3ZTFhNTAxMGQ2MDhjM2MzOGM5N2JiNGZkZjQzNjA2NDUy
NzA3MjguLjE5ZjMxOTM5OTY5NTA3YzBiNGU1MGQwNmMxMTYxOGVhNDcwYzhjZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTI3
LDE0ICsyNyw3IEBACiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViUGFzdGVib2FyZEl0ZW1EYXRhIDogTlNPYmplY3QKLQotKyAoaW5zdGFuY2V0
eXBlKWl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09i
amVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhOwotCi1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgTlNBcnJheSAqcmVwcmVzZW50
aW5nT2JqZWN0czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBOU0Rp
Y3Rpb25hcnkgKmFkZGl0aW9uYWxEYXRhOwotCi1AZW5kCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogCiBAcHJvdG9jb2wgQWJzdHJhY3RQYXN0ZWJvYXJkIDxOU09iamVjdD4KIEByZXF1aXJlZApA
QCAtNDcsMTEgKzQwLDE0IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViUGFzdGVib2Fy
ZEl0ZW1EYXRhIDogTlNPYmplY3QKIC0gKE5TSW50ZWdlciljaGFuZ2VDb3VudDsKIAogQG9wdGlv
bmFsCi0tICh2b2lkKXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxX
ZWJQYXN0ZWJvYXJkSXRlbURhdGEgKj4gKilpdGVtRGF0YTsKKy0gKHZvaWQpc2V0SXRlbXNVc2lu
Z1JlZ2lzdHJhdGlvbkluZm9MaXN0czooTlNBcnJheSAqKWl0ZW1MaXN0czsKIC0gKHZvaWQpc2V0
SXRlbXM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopaXRlbXM7CistIChOU0FycmF5PE5TU3Ry
aW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRl
Z2VyKWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVnZXIgbnVt
YmVyT2ZGaWxlczsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VS
TCAqPiAqZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uOwogCiBAZW5kCiAKK05TX0FTU1VNRV9O
T05OVUxMX0VORAorCiAjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI3YTJhNTdhNTcxYWQxMjY3MzA0MTkyYTEyOTU3NDk4NmY0N2ZjMGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQWJzdHJhY3RQYXN0ZWJvYXJkLmgiCi0KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQot
I2lmIFBMQVRGT1JNKElPUykKLQotQGludGVyZmFjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEgKCkK
LXsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3JlcHJlc2VudGluZ09iamVjdHM7Ci0gICAgUmV0
YWluUHRyPE5TRGljdGlvbmFyeT4gX2FkZGl0aW9uYWxEYXRhOwotfQotCi1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBXZWJQYXN0ZWJvYXJkSXRlbURhdGEKLQotKyAoaW5zdGFuY2V0eXBlKWl0ZW1X
aXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRk
aXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCi17Ci0gICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czpyZXByZXNlbnRpbmdP
YmplY3RzIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhXSBhdXRvcmVsZWFzZV07Ci19Ci0K
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdHM6KE5TQXJyYXkgKily
ZXByZXNlbnRpbmdPYmplY3RzIGFkZGl0aW9uYWxEYXRhOihOU0RpY3Rpb25hcnkgKilhZGRpdGlv
bmFsRGF0YQotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgICAgIF9yZXBy
ZXNlbnRpbmdPYmplY3RzID0gcmVwcmVzZW50aW5nT2JqZWN0czsKLSAgICAgICAgX2FkZGl0aW9u
YWxEYXRhID0gYWRkaXRpb25hbERhdGE7Ci0gICAgfQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
IChOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cwotewotICAgIHJldHVybiBfcmVwcmVzZW50
aW5nT2JqZWN0cy5nZXQoKTsKLX0KLQotLSAoTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEK
LXsKLSAgICByZXR1cm4gX2FkZGl0aW9uYWxEYXRhLmdldCgpOwotfQotCi1AZW5kCi0KLSNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDgxMzVlMjM4YjA5MjczYmVlYWYxNzg2YTI1NzIwZTVmNzE3MDUyZjIu
LjM5Y2E1N2I4MTk2ZDViMmViYjQ4NmYyMzMxZTA0N2NjM2IzMjc3ZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xNjUsOCArMTY1LDUzIEBA
IHN0YXRpYyBOU0FycmF5KiBzdXBwb3J0ZWRJbWFnZVR5cGVzKCkKICAgICByZXR1cm4gQFsoaWQp
a1VUVHlwZVBORywgKGlkKWtVVFR5cGVUSUZGLCAoaWQpa1VUVHlwZUpQRUcsIChpZClrVVRUeXBl
R0lGXTsKIH0KIAorc3RhdGljIGJvb2wgcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5
cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCit7CisgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNo
aXZlUGJvYXJkVHlwZV0pIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgV2ViQXJjaGl2ZVBi
b2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkV2Vi
QXJjaGl2ZShidWZmZXIuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZUhUTUxdKSB7CisgICAgICAgIFN0cmluZyBodG1sU3Ry
aW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlw
ZUhUTUwsIHBhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgcmV0dXJuICFodG1sU3RyaW5nLmlzTnVs
bCgpICYmIHJlYWRlci5yZWFkSFRNTChodG1sU3RyaW5nKTsKKyAgICB9CisKKyAgICBpZiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKKyAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpOworICAgIH0K
KworICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVJURl0p
IHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgcGFzdGVib2FyZE5hbWUp
OworICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpOworICAg
IH0KKworICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRhaW5zT2JqZWN0OnR5cGVd
KSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lKTsKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpLCB0eXBlKTsKKyAgICB9CisKKyAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihO
U1N0cmluZyAqKWtVVFR5cGVVUkxdKSB7CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVneS5yZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlVVJMLCBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHJldHVybiAhdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgU3Ry
aW5nKCkpOworICAgIH0KKworICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZil0
eXBlLCBrVVRUeXBlVGV4dCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVUZXh0LCBwYXN0ZWJvYXJk
TmFtZSk7CisgICAgICAgIHJldHVybiAhc3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkUGxh
aW5UZXh0KHN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKIHsKKyAg
ICBpZiAocmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpIHsKKyAgICAgICAgcmVhZFJlc3BlY3RpbmdV
VElGaWRlbGl0aWVzKHJlYWRlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBQYXN0
ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKTsKIAogICAgIGludCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0xNzksNTQgKzIyNCwzMiBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
cikKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtczsgaSsrKSB7CiAgICAg
ICAgIGZvciAoaW50IHR5cGVJbmRleCA9IDA7IHR5cGVJbmRleCA8IG51bWJlck9mVHlwZXM7IHR5
cGVJbmRleCsrKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqdHlwZSA9IFt0eXBlcyBvYmplY3RB
dEluZGV4OnR5cGVJbmRleF07Ci0KLSAgICAgICAgICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
LCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlYWRlci5yZWFkV2ViQXJjaGl2ZShidWZmZXIuZ2V0KCkpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtV
VFR5cGVIVE1MXSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBodG1sU3RyaW5nID0gc3RyYXRl
Z3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVIVE1MLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIWh0bWxTdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVy
LnJlYWRIVE1MKGh0bWxTdHJpbmcpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJp
bmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpLCBr
VVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChyZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
IChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVJURl0pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZFJURigqYnVmZmVyKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmpl
Y3Q6dHlwZV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5cGUsIG1fcGFzdGVi
b2FyZE5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZEltYWdlKGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZWFkUGFzdGVib2FyZFdl
YkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCBbdHlwZXMgb2JqZWN0QXRJbmRl
eDp0eXBlSW5kZXhdLCBpLCBtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgIH0KK30KIAotICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewotICAgICAgICAgICAgICAgIFVSTCB1
cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZVVSTCwgbV9wYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF1cmwuaXNOdWxsKCkgJiYgcmVhZGVy
LnJlYWRVUkwodXJsLCBTdHJpbmcoKSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVUZXh0XSkgewotICAgICAgICAgICAgICAgIFN0cmlu
ZyBzdHJpbmcgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZVRl
eHQsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVs
bCgpICYmIHJlYWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykpCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQorYm9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVs
aXRpZXMoKSBjb25zdAoreworICAgIC8vIEZvciBub3csIGRhdGEgaW50ZXJhY3Rpb24gaXMgdGhl
IG9ubHkgZmVhdHVyZSB0aGF0IHVzZXMgaXRlbS1wcm92aWRlci1iYXNlZCBwYXN0ZWJvYXJkIHJl
cHJlc2VudGF0aW9ucy4KKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgbmVlZCB0byBjb25z
dWx0IHRoZSBjbGllbnQgbGF5ZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBwYXN0
ZWJvYXJkIHN1cHBvcnRzCisgICAgLy8gaXRlbSB0eXBlcyByYW5rZWQgYnkgZmlkZWxpdHkuCisg
ICAgcmV0dXJuIG1fcGFzdGVib2FyZE5hbWUgPT0gImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2Fy
ZCI7Cit9CiAKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBh
c3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCit7CisgICAgQVNTRVJUKHJlc3BlY3Rz
VVRJRmlkZWxpdGllcygpKTsKKyAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CisgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0g
MCwgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFz
dGVib2FyZE5hbWUpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsraW5kZXgpIHsKKyAgICAgICAg
Ly8gVHJ5IHRvIHJlYWQgZGF0YSBmcm9tIGVhY2ggdHlwZSBpZGVudGlmaWVyIHRoYXQgdGhpcyBw
YXN0ZWJvYXJkIGl0ZW0gc3VwcG9ydHMsIGFuZCBXZWJLaXQgYWxzbyByZWNvZ25pemVzLiBUeXBl
IGlkZW50aWZpZXJzIGFyZQorICAgICAgICAvLyByZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5LCBh
cyBzcGVjaWZpZWQgYnkgZWFjaCBwYXN0ZWJvYXJkIGl0ZW0uCisgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5OworICAgICAgICBzdHJhdGVneS5nZXRU
eXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh0eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZGaWRlbGl0
eSwgaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0
eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZGaWRlbGl0eSkgeworICAgICAgICAgICAgaWYgKHJlYWRQYXN0
ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGluZGV4
LCBtX3Bhc3RlYm9hcmROYW1lKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IGFiMWJlODNjYjcwZWJhNGE3NTFiNzdhNmRkNGU4MzhjMjIy
MzE0MWIuLmQyNjViMTZjNmQ4MzVjZDMzMWI3MzY4YTFmNDhjODIwOGE0ZGRkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQpAQCAtMzgsNyArMzgsMTAgQEAKICNpbXBvcnQgPFVJS2l0L1VJUGFzdGVib2FyZC5oPgogCiAj
aWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisjaW1wb3J0IDxVSUtpdC9OU0F0dHJpYnV0ZWRT
dHJpbmcrVUlJdGVtUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFVJS2l0L05TU3RyaW5nK1VJSXRlbVBy
b3ZpZGVyLmg+CiAjaW1wb3J0IDxVSUtpdC9OU1VSTCtVSUl0ZW1Qcm92aWRlci5oPgorI2ltcG9y
dCA8VUlLaXQvVUlJbWFnZStVSUl0ZW1Qcm92aWRlci5oPgogI2VuZGlmCiAKIFNPRlRfTElOS19G
UkFNRVdPUksoVUlLaXQpCkBAIC03Myw2ICs3NiwxNiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgICAgICB0eXBlcy5hcHBlbmQo
cGFzdGVib2FyZFR5cGUpOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBpbnQgaW5kZXgp
Cit7CisgICAgaWYgKGluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10gfHwgIVtt
X3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwYXN0ZWJvYXJkVHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KV0pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJy
YXkgKnBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHkgPSBbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRU
eXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleDppbmRleF07CisgICAgZm9yIChOU1N0cmluZyAq
dHlwZUlkZW50aWZpZXIgaW4gcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eSkKKyAgICAgICAgdHlw
ZXMuYXBwZW5kKHR5cGVJZGVudGlmaWVyKTsKK30KKwogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xODcsMjQgKzIwMCwzNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gcmljaFRleHRSZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2ViQ29udGVudChj
bwogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiB7Ci0gICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhZGRpdGlv
bmFsRGF0YSA9IHJpY2hUZXh0UmVwcmVzZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQo
Y29udGVudCk7CisjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisgICAgUmV0YWluUHRyPFdl
Ykl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBpdGVtc1RvUmVnaXN0ZXIgPSBhZG9w
dE5TKFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2NdIGluaXRdKTsK
KworICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVu
dERhdGEuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xp
ZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBbaXRlbXNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworCisgICAgaWYgKGNvbnRlbnQuZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdCkKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQu
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpXZWJB
cmNoaXZlUGJvYXJkVHlwZV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0KSB7CiAgICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVPYmplY3RXaXRoRGF0YTpjb250ZW50LmRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKICAgICAg
ICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcpCi0gICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRp
b25zIGFkZE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKKyAgICAgICAgICAgIFtpdGVtc1RvUmVn
aXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIAor
ICAgIGlmIChjb250ZW50LmRhdGFJblJURkZvcm1hdCkKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3Rl
ciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOworCiAgICAgaWYgKCFjb250ZW50LmRhdGFJ
blN0cmluZ0Zvcm1hdC5pc0VtcHR5KCkpCi0gICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMg
YWRkT2JqZWN0OihOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0XTsKKyAgICAg
ICAgW2l0ZW1zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6KE5TU3RyaW5nICopY29u
dGVudC5kYXRhSW5TdHJpbmdGb3JtYXRdOwogCi0gICAgW21fcGFzdGVib2FyZCBzZXRJdGVtc0Zy
b21PYmplY3RSZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRo
UmVwcmVzZW50aW5nT2JqZWN0czpvYmplY3RSZXByZXNlbnRhdGlvbnMuZ2V0KCkgYWRkaXRpb25h
bERhdGE6YWRkaXRpb25hbERhdGEuZ2V0KCldXV07CisgICAgW21fcGFzdGVib2FyZCBzZXRJdGVt
c1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOkBbIGl0ZW1zVG9SZWdpc3Rlci5nZXQoKSBdXTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRlbnQpOworI2VuZGlmCiB9CiAKIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVu
dCkKIHsKLSAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgIGlmIChbbV9wYXN0
ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNVc2luZ1JlZ2lzdHJh
dGlvbkluZm9MaXN0czopXSkgewogICAgICAgICB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhj
b250ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxOCwzMCArMjQ0LDMzIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYg
Y29udGVudCkKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50
YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBSZXRhaW5Q
dHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9
IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10gaW5p
dF0pOworCisgICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc051bGwo
KSkKKyAgICAgICAgW2l0ZW1zVG9SZWdpc3RlciBhZGREYXRhOnBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6cGFzdGVib2FyZEltYWdlLnJl
c291cmNlTUlNRVR5cGVdOwogCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXN0ZWJvYXJk
SW1hZ2UuaW1hZ2UtPm5hdGl2ZUltYWdlKCkpIHsKICAgICAgICAgVUlJbWFnZSAqdWlJbWFnZSA9
IChVSUltYWdlICopW2dldFVJSW1hZ2VDbGFzcygpIGltYWdlV2l0aENHSW1hZ2U6bmF0aXZlSW1h
Z2UuZ2V0KCldOwogICAgICAgICBpZiAodWlJbWFnZSkKLSAgICAgICAgICAgIFtvYmplY3RSZXBy
ZXNlbnRhdGlvbnMgYWRkT2JqZWN0OnVpSW1hZ2VdOworICAgICAgICAgICAgW2l0ZW1zVG9SZWdp
c3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6dWlJbWFnZV07CiAgICAgfQogCiAgICAgaWYgKCFw
YXN0ZWJvYXJkSW1hZ2UudXJsLnVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNVUkwgKm5zVVJM
ID0gcGFzdGVib2FyZEltYWdlLnVybC51cmw7CiAgICAgICAgIGlmIChuc1VSTCkKLSAgICAgICAg
ICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0Om5zVVJMXTsKKyAgICAgICAgICAg
IFtpdGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsKICAgICB9CiAK
LSAgICBpZiAoIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzTnVsbCgpKQotICAg
ICAgICBbYWRkaXRpb25hbERhdGEgc2V0T2JqZWN0OnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvcktleTpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZV07Ci0KLSAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2Vu
dGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNlbnRpbmdPYmpl
Y3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFs
RGF0YS5nZXQoKV1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRp
b25JbmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgpIF1dOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocGFzdGVib2FyZEltYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7
Ci0gICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJ
dGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICBpZiAoW21fcGFzdGVib2Fy
ZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25J
bmZvTGlzdHM6KV0pIHsKICAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMocGFzdGVi
b2FyZEltYWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NiwyNyArMjg1LDI5IEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBh
c3RlYm9hcmRJbWFnZSkKIAogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVw
cmVzZW50YXRpb25zKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCkKIHsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJlc2VudGF0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0YSA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJ
T04pCisgICAgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBp
dGVtc1RvUmVnaXN0ZXIgPSBhZG9wdE5TKFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5m
b0xpc3QgYWxsb2NdIGluaXRdKTsKIAogICAgIE5TU3RyaW5nICpwYXN0ZWJvYXJkVHlwZUFzTlNT
dHJpbmcgPSBwYXN0ZWJvYXJkVHlwZTsKICAgICBOU1N0cmluZyAqdGV4dEFzTlNTdHJpbmcgPSB0
ZXh0OwogICAgIGlmICh0ZXh0QXNOU1N0cmluZyAmJiBwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcu
bGVuZ3RoKSB7CiAgICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcsIGtVVFR5cGVVUkwpKQotICAgICAgICAgICAg
W29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6W1tbTlNVUkwgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRvcmVsZWFzZV1dOworICAgICAgICAgICAgW2l0ZW1z
VG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6W1tbTlNVUkwgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRvcmVsZWFzZV1dOwogCiAgICAgICAgIGlmIChVVFR5
cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJp
bmcsIGtVVFR5cGVUZXh0KSkKLSAgICAgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRk
T2JqZWN0OnRleHRBc05TU3RyaW5nXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW2FkZGl0
aW9uYWxEYXRhIHNldE9iamVjdDp0ZXh0QXNOU1N0cmluZyBmb3JLZXk6cGFzdGVib2FyZFR5cGVB
c05TU3RyaW5nXTsKKyAgICAgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5n
T2JqZWN0OnRleHRBc05TU3RyaW5nXTsKICAgICB9CiAKLSAgICBbbV9wYXN0ZWJvYXJkIHNldEl0
ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRl
bVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRp
dGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNl
dEl0ZW1zVXNpbmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgp
IF1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGFzdGVib2FyZFR5cGUpOworICAgIFVOVVNF
RF9QQVJBTSh0ZXh0KTsKKyNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewot
ICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRl
bXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5m
b0xpc3RzOildKSB7CiAgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKHBhc3RlYm9h
cmRUeXBlLCB0ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI5MywyMiArMzI0LDI0
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCiB7Ci0g
ICAgYXV0byBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBSZXRhaW5Q
dHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9
IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10gaW5p
dF0pOwogCiAgICAgaWYgKE5TVVJMICpuc1VSTCA9IHVybC51cmwpIHsKLSAgICAgICAgW29iamVj
dFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6bnNVUkxdOwotI2lmIEVOQUJMRShEQVRBX0lOVEVS
QUNUSU9OKQorICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDpu
c1VSTF07CiAgICAgICAgIGlmICghdXJsLnRpdGxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5z
VVJMLl90aXRsZSA9IHVybC50aXRsZTsKLSNlbmRpZgogICAgIH0KIAotICAgIFttX3Bhc3RlYm9h
cmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVt
RGF0YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdl
dCgpIGFkZGl0aW9uYWxEYXRhOm5pbF1dXTsKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zVXNp
bmdSZWdpc3RyYXRpb25JbmZvTGlzdHM6QFsgaXRlbXNUb1JlZ2lzdGVyLmdldCgpIF1dOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQogewotICAgIGlmIChbbV9w
YXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0
UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc1VzaW5nUmVnaXN0cmF0aW9uSW5mb0xpc3RzOildKSB7
CiAgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKHVybCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRleCA4MzIzZTcyMDc4YjQ3YjdkMDc3MmU2NDIwOWE4
ZjEzNTRiMTZiMDk3Li40N2Y1OTY0M2MzMjg2MDA3ZTY4OTVlM2U3OWJlMjIwYjBmM2Q4ODllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgKQEAgLTI4LDkgKzI4LDQxIEBACiAjaWYgVEFSR0VUX09TX0lQSE9ORSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKIAogQGNsYXNzIFVJ
SXRlbVByb3ZpZGVyOworQHByb3RvY29sIFVJSXRlbVByb3ZpZGVyV3JpdGluZzsKIAogTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KIAorLyohIEEgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5m
byByZXByZXNlbnRzIGEgc2luZ2xlIGNhbGwgdG8gcmVnaXN0ZXIgc29tZXRoaW5nIHRvIGFuIGl0
ZW0gcHJvdmlkZXIuCisgQGRpc2N1c3Npb24gRWl0aGVyIHRoZSByZXByZXNlbnRpbmcgb2JqZWN0
IGV4aXN0cyBhbmQgdGhlIHR5cGUgaWRlbnRpZmllciBhbmQgZGF0YSBhcmUgbmlsLCBvciB0aGUK
KyByZXByZXNlbnRpbmcgb2JqZWN0IGlzIG5pbCBhbmQgdGhlIHR5cGUgaWRlbnRpZmllciBhbmQg
ZGF0YSBleGlzdC4gVGhlIGZvcm1lciByZXByZXNlbnRzIGEgY2FsbCB0bworIHJlZ2lzdGVyIGFu
IGVudGlyZSBVSUl0ZW1Qcm92aWRlcldyaXRpbmctY29uZm9ybWFudCBvYmplY3QgdG8gdGhlIGl0
ZW0gcHJvdmlkZXIsIHdoaWxlIHRoZSBsYXR0ZXIKKyByZXByZXNlbnRzIGEgY2FsbCB0byByZWdp
c3RlciBvbmx5IGEgZGF0YSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGdpdmVuIHR5cGUgaWRlbnRp
Zmllci4KKyAqLworV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJSZWdp
c3RyYXRpb25JbmZvIDogTlNPYmplY3QKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBudWxsYWJsZSwgc3Ryb25nKSBpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPiByZXByZXNlbnRp
bmdPYmplY3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBzdHJv
bmcpIE5TU3RyaW5nICp0eXBlSWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgbnVsbGFibGUsIHN0cm9uZykgTlNEYXRhICpkYXRhOworCitAZW5kCisKKy8qISBBIFdl
Ykl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IHJlcHJlc2VudHMgYSBzZXJpZXMgb2Yg
cmVnaXN0cmF0aW9uIGNhbGxzIHVzZWQgdG8gc2V0IHVwIGEKKyBAZGlzY3Vzc2lvbiBzaW5nbGUg
aXRlbSBwcm92aWRlci4gVGhlIG9yZGVyIG9mIGl0ZW1zIHNwZWNpZmllZCBpbiB0aGUgbGlzdCAo
bG93ZXN0IGluZGljZXMgZmlyc3QpIGlzCisgdGhlIG9yZGVyIGluIHdoaWNoIG9iamVjdHMgb3Ig
ZGF0YSBhcmUgcmVnaXN0ZXJlZCB0byB0aGUgaXRlbSBwcm92aWRlciwgYW5kIHRoZXJlZm9yZSBp
bmRpY2F0ZXMgdGhlCisgcmVsYXRpdmUgZmlkZWxpdHkgb2YgZWFjaCBpdGVtLiBQcml2YXRlIFVU
SSB0eXBlcywgc3VjaCBhcyB0aG9zZSB2ZW5kZWQgdGhyb3VnaCB0aGUgaW5qZWN0ZWQgZWRpdGlu
ZworIGJ1bmRsZSBTUEksIGFyZSBjb25zaWRlcmVkIHRvIGJlIGhpZ2hlciBmaWRlbGl0eSB0aGFu
IHRoZSBvdGhlciBkZWZhdWx0IHR5cGVzLgorICovCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IDogTlNPYmplY3QKKworLSAodm9p
ZClhZGRSZXByZXNlbnRpbmdPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+KW9iamVj
dDsKKy0gKHZvaWQpYWRkRGF0YTooTlNEYXRhICopZGF0YSBmb3JUeXBlOihOU1N0cmluZyAqKXR5
cGVJZGVudGlmaWVyOworCistIChOU1VJbnRlZ2VyKW51bWJlck9mSXRlbXM7CistIChudWxsYWJs
ZSBXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvICopaXRlbUF0SW5kZXg6KE5TVUludGVn
ZXIpaW5kZXg7CistICh2b2lkKWVudW1lcmF0ZUl0ZW1zOih2b2lkKF4pKFdlYkl0ZW1Qcm92aWRl
clJlZ2lzdHJhdGlvbkluZm8gKml0ZW0sIE5TVUludGVnZXIgaW5kZXgpKWJsb2NrOworCitAZW5k
CisKIHR5cGVkZWYgdm9pZCAoXldlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spKE5TQXJyYXk8
TlNVUkwgKj4gKik7CiAKIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZCA6IE5TT2JqZWN0PEFic3RyYWN0UGFzdGVib2FyZD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0K
aW5kZXggMDYwZjUyYzI0Y2EyMDEwZWFiYTdkOWExZmJiYTNmOTUzMjM5YjQ5OC4uY2Q3NjM5YTkw
OTZkNjZmNTgwZTRkNmNmNzAwYWY1ZmQyMmZkZDZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTc2
LDYgKzc2LDk2IEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VUeXBlKE5TU3RyaW5nICp0eXBlKQogICAg
IHJldHVybiBNQVRDSEVTX1VUSV9UWVBFKHR5cGUsIFBORykgfHwgTUFUQ0hFU19VVElfVFlQRSh0
eXBlLCBKUEVHKSB8fCBNQVRDSEVTX1VUSV9UWVBFKHR5cGUsIEdJRikgfHwgTUFUQ0hFU19VSUtJ
VF9UWVBFKHR5cGUsIGltYWdlKTsKIH0KIAorQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJSZWdp
c3RyYXRpb25JbmZvICgpCit7CisgICAgUmV0YWluUHRyPGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRp
bmc+PiBfcmVwcmVzZW50aW5nT2JqZWN0OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3R5cGVJ
ZGVudGlmaWVyOworICAgIFJldGFpblB0cjxOU0RhdGE+IF9kYXRhOworfQorQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbworCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRp
bmc+KXJlcHJlc2VudGluZ09iamVjdCB0eXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKil0eXBlSWRl
bnRpZmllciBkYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgaWYgKHJlcHJlc2VudGluZ09iamVj
dCkKKyAgICAgICAgQVNTRVJUKCF0eXBlSWRlbnRpZmllciAmJiAhZGF0YSk7CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlQodHlwZUlkZW50aWZpZXIgJiYgZGF0YSk7CisKKyAgICBpZiAoc2VsZiA9
IFtzdXBlciBpbml0XSkgeworICAgICAgICBfcmVwcmVzZW50aW5nT2JqZWN0ID0gcmVwcmVzZW50
aW5nT2JqZWN0OworICAgICAgICBfdHlwZUlkZW50aWZpZXIgPSB0eXBlSWRlbnRpZmllcjsKKyAg
ICAgICAgX2RhdGEgPSBkYXRhOworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaWQg
PFVJSXRlbVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0Cit7CisgICAgcmV0dXJu
IF9yZXByZXNlbnRpbmdPYmplY3QuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopdHlwZUlkZW50
aWZpZXIKK3sKKyAgICByZXR1cm4gX3R5cGVJZGVudGlmaWVyLmdldCgpOworfQorCistIChOU0Rh
dGEgKilkYXRhCit7CisgICAgcmV0dXJuIF9kYXRhLmdldCgpOworfQorCitAZW5kCisKK0BpbnRl
cmZhY2UgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgKCkKK3sKKyAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9pdGVtczsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0CisKKy0gKGluc3RhbmNldHlwZSlp
bml0Cit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF9pdGVtcyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpYWRkRGF0YTooTlNEYXRhICopZGF0YSBmb3JUeXBlOihOU1N0cmluZyAq
KXR5cGVJZGVudGlmaWVyCit7CisgICAgW19pdGVtcyBhZGRPYmplY3Q6W1tbV2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmF0aW9uSW5mbyBhbGxvY10gaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3Q6bmls
IHR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIGRhdGE6ZGF0YV0gYXV0b3JlbGVhc2VdXTsK
K30KKworLSAodm9pZClhZGRSZXByZXNlbnRpbmdPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRlcldy
aXRpbmc+KW9iamVjdAoreworICAgIEFTU0VSVChbb2JqZWN0IGNvbmZvcm1zVG9Qcm90b2NvbDpA
cHJvdG9jb2woVUlJdGVtUHJvdmlkZXJXcml0aW5nKV0pOworICAgIFtfaXRlbXMgYWRkT2JqZWN0
OltbW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gYWxsb2NdIGluaXRXaXRoUmVwcmVz
ZW50aW5nT2JqZWN0Om9iamVjdCB0eXBlSWRlbnRpZmllcjpuaWwgZGF0YTpuaWxdIGF1dG9yZWxl
YXNlXV07Cit9CisKKy0gKE5TVUludGVnZXIpbnVtYmVyT2ZJdGVtcworeworICAgIHJldHVybiBb
X2l0ZW1zIGNvdW50XTsKK30KKworLSAoV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAq
KWl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4Cit7CisgICAgaWYgKGluZGV4ID49IHNlbGYu
bnVtYmVyT2ZJdGVtcykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBbX2l0ZW1z
IG9iamVjdEF0SW5kZXg6aW5kZXhdOworfQorCistICh2b2lkKWVudW1lcmF0ZUl0ZW1zOih2b2lk
ICheKShXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvICosIE5TVUludGVnZXIpKWJsb2Nr
Cit7CisgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMDsgaW5kZXggPCBzZWxmLm51bWJlck9m
SXRlbXM7ICsraW5kZXgpCisgICAgICAgIGJsb2NrKFtzZWxmIGl0ZW1BdEluZGV4OmluZGV4XSwg
aW5kZXgpOworfQorCitAZW5kCisKIEBpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCAoKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNJbnRlZ2VyIG51bWJlck9mSXRlbXM7CkBA
IC0xMTEsNiArMjAxLDExIEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKK3sKKyAgICByZXR1cm4gW3NlbGYgaXRl
bVByb3ZpZGVyQXRJbmRleDppbmRleF0ucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA/OiBAWyBd
OworfQorCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzCiB7CiAgICAg
aWYgKF9jYWNoZWRUeXBlSWRlbnRpZmllcnMpCkBAIC0xNTMsMzQgKzI0OCwyOSBAQCAtIChOU0lu
dGVnZXIpbnVtYmVyT2ZJdGVtcwogICAgIHJldHVybiBbX2l0ZW1Qcm92aWRlcnMgY291bnRdOwog
fQogCi0tICh2b2lkKXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxX
ZWJQYXN0ZWJvYXJkSXRlbURhdGEgKj4gKilpdGVtRGF0YQorLSAodm9pZClzZXRJdGVtc1VzaW5n
UmVnaXN0cmF0aW9uSW5mb0xpc3RzOihOU0FycmF5PFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm9MaXN0ICo+ICopaXRlbUxpc3RzCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnByb3ZpZGVy
cyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yIChXZWJQYXN0ZWJvYXJkSXRlbURh
dGEgKmRhdGEgaW4gaXRlbURhdGEpIHsKLSAgICAgICAgaWYgKCFkYXRhLnJlcHJlc2VudGluZ09i
amVjdHMuY291bnQgJiYgIWRhdGEuYWRkaXRpb25hbERhdGEuY291bnQpCisgICAgZm9yIChXZWJJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCAqaXRlbUxpc3QgaW4gaXRlbUxpc3RzKSB7
CisgICAgICAgIGlmICghaXRlbUxpc3QubnVtYmVyT2ZJdGVtcykKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4gaXRlbVByb3ZpZGVyID0g
YWRvcHROUyhbW2dldFVJSXRlbVByb3ZpZGVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOwotICAgICAg
ICAvLyBGaXJzdCwgcmVnaXN0ZXIgYWxsIHBsYXRmb3JtIG9iamVjdHMsIHByaW9yaXRpemluZyBv
YmplY3RzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5LgotICAgICAgICBmb3IgKGlkIHJl
cHJlc2VudGluZ09iamVjdCBpbiBkYXRhLnJlcHJlc2VudGluZ09iamVjdHMpIHsKLSAgICAgICAg
ICAgIGlmICghW3JlcHJlc2VudGluZ09iamVjdCBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29s
KFVJSXRlbVByb3ZpZGVyV3JpdGluZyldKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tnZXRVSUl0ZW1Qcm92aWRlckNsYXNz
KCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2l0ZW1MaXN0IGVudW1lcmF0ZUl0ZW1zOltpdGVt
UHJvdmlkZXJdIChXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvICppdGVtLCBOU1VJbnRl
Z2VyKSB7CisgICAgICAgICAgICBpZiAoaXRlbS5yZXByZXNlbnRpbmdPYmplY3QpIHsKKyAgICAg
ICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0Oml0ZW0ucmVwcmVzZW50aW5n
T2JqZWN0IHZpc2liaWxpdHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNp
YmlsaXR5QWxsXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRl
cldyaXRpbmc+KXJlcHJlc2VudGluZ09iamVjdCB2aXNpYmlsaXR5OlVJSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25PcHRpb25zVmlzaWJpbGl0eUFsbF07Ci0gICAgICAgIH0KKyAgICAgICAgICAg
IGlmICghaXRlbS50eXBlSWRlbnRpZmllci5sZW5ndGggfHwgIWl0ZW0uZGF0YS5sZW5ndGgpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIE5leHQsIHJlZ2lzdGVyIG90aGVy
IGN1c3RvbSBkYXRhIHJlcHJlc2VudGF0aW9ucyBmb3IgdHlwZSBpZGVudGlmaWVycy4KLSAgICAg
ICAgTlNEaWN0aW9uYXJ5IDxOU1N0cmluZyAqLCBOU0RhdGEgKj4gKmFkZGl0aW9uYWxEYXRhID0g
ZGF0YS5hZGRpdGlvbmFsRGF0YTsKLSAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZp
ZXIgaW4gYWRkaXRpb25hbERhdGEpIHsKLSAgICAgICAgICAgIGlmICghW2FkZGl0aW9uYWxEYXRh
W3R5cGVJZGVudGlmaWVyXSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRh
dGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIHZpc2liaWxp
dHk6VUlJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvbk9wdGlvbnNWaXNpYmlsaXR5QWxsIGxvYWRI
YW5kbGVyOl5OU1Byb2dyZXNzICooSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihhZGRpdGlvbmFsRGF0YVt0eXBlSWRlbnRpZmllcl0sIG5pbCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxV
bml0Q291bnQ6MTAwXTsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGl0ZW1EYXRhID0g
aXRlbS5kYXRhOworICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOml0ZW0udHlwZUlkZW50aWZpZXIgdmlzaWJpbGl0eTpV
SUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlBbGwgbG9hZEhhbmRs
ZXI6W2l0ZW1EYXRhXSAoSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAqIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihpdGVtRGF0YS5nZXQoKSwgbmlsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOwogICAgICAgICAgICAgfV07Ci0gICAgICAgIH0KKyAgICAgICAgfV07CiAgICAgICAgIFtw
cm92aWRlcnMgYWRkT2JqZWN0Oml0ZW1Qcm92aWRlci5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IDA0MzZiMzMyNWQ0ZGJkMWVkMzM5NDBiNWVmNTYzOGM2Y2IxOGYzYzEuLmZh
MzgzNDgwNGVjYjBkMjAxNmMzMTM1MDYzNWYzM2Y5MGZiZGNlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgV2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJp
bmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAjZW5kaWYKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KaW5kZXggN2U5YmI0NGIyZjUwYThjYTc0ODJmNzA1YTZmYTU3MDYzYmIxZGQ0NS4u
YWY0MGUxNzYzM2JkMGJmNzY1MTQ5Y2QxNzQ1MmNlYTcxMmE1ZjNmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQpAQCAtMTg2LDYgKzE4NiwxMSBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRO
dW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB9CiAKICNpZiBQTEFU
Rk9STShJT1MpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXNCeUZpZGVsaXR5
Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHR5cGVzLCBpbmRl
eCk7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChj
b25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7
CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tCmluZGV4IGI4MzY1MTY2ZmIzODI0NmM5OTFiYzY4NzdkY2MwOGZiYTVlNGZj
YTEuLmM5NjgxOTdiZmEwNDNkOTM3ZWIyN2M5YzQ2NDczMjY2NjRjY2NjY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KQEAgLTE0MCw2ICsxNDAsMTEgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QKIH0K
IAogI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKK3sKKyAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1B
dEluZGV4KHR5cGVzLCBpbmRleCk7Cit9CisKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0
ZVVSTFRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS53cml0ZSh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
c3RlYm9hcmRQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5oCmluZGV4IDg2YjkwMmRkNDc4YzE2NTAxZWQzMjNhMWMzYTU3MWI2YTNjYzNjZWQuLmJm
OTQ2YzQ1ZjY0NzkzMzVhM2I4NjY1Y2M5YWM0YTU1ZWY2MTYzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwog
CiAjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0
eUZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogICAgIHZvaWQgd3JpdGVVUkxUb1Bhc3RlYm9h
cmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMjE0MGY2NGRlYTQ2ZjYzYmNkMTQxMGE5ZWEzZTE1ZGVhZDFlMjU2Ni4uOGE5MzZjNTMwNDdm
ZjMzM2M1MGUxYWYxNjE2ZmY1MWQzZjBmNTk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMSw2ICsz
MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgUmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxl
LCB1aW50NjRfdCBzaXplKQogICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpCiAgICAgR2V0RmlsZW5hbWVzRm9y
RGF0YUludGVyYWN0aW9uKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+
IGZpbGVuYW1lcykKKyAgICBHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5k
ZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJp
bmc+IHR5cGVzKQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA4YmE3MzNhNWUzN2IxNjA4NTQ1MjlhMmMzNDIyN2E3
ZjVlZWI3ZmIzLi4zZDRmOTYwZTUzYjdlN2ZjOTY2OTIzNWIyNmY1NDFlMzI2ZjEyZmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yODcsNiArMjg3LDExIEBAIGlu
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
eworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBl
c0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRl
bUF0SW5kZXg6OlJlcGx5KHR5cGVzKSwgMCk7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpXcml0ZVVSTFRvUGFzdGVib2FyZCh1cmwsIHBhc3RlYm9hcmROYW1lKSwgMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCA3ZmUzNDkyODZmOTUxNTdiODA0ZjU3YzI2ZDY1
MWY2OGUwMDA1OGMxLi4yM2I0ZmVjNDhhZmVlNWFmMWEwZGY3MGM4NTIwZWIxOGNkYjAxNzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRGaWxlbmFt
ZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxp
dHlGb3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDM3NjYxNWVlNzlmMzUxOGFjM2I1NjdlZGFiY2JmNzczYWMwZmY5OTUu
LjEwYzkzNTJkOGNhNjQ0NDAwZTRiOTI5NmU3MjUzMDdkMTAyNzIxMTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ny0wNC0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXNwZWN0IGZpZGVsaXR5IG9yZGVyIHdoZW4gcmVhZGluZyB3ZWIgY29udGVudCBmcm9tIGl0
ZW0gcHJvdmlkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzExNTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMzU2OTM3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkcyBhIG5ldyB1bml0IHRlc3Qg
KERhdGFJbnRlcmFjdGlvblRlc3RzLlJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtp
bmdzKS4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvcgorICAgICAgICBtb3JlIGRldGFpbHMuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTA0LTI0ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBQYWNrYWdlIEltYWdlRGlm
ZiBidWlsdCB3aXRoIGhvc3QgU0RLCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IGViMmQzNDZhNGQyYzQyYjlkNWNi
MTQ0NmRkZGJhODY3NDdjMmY4YWYuLmY0MGQ2YmUzYWYyMDFhZWUzZjZjMjk0OWI4ZTc3YzJlZDAy
MGJjODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRl
cmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJ
bnRlcmFjdGlvblRlc3RzLm1tCkBAIC0zMiw3ICszMiw5IEBACiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0
IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxVSUtp
dC9OU1N0cmluZytVSUl0ZW1Qcm92aWRlci5oPgogI2ltcG9ydCA8VUlLaXQvTlNVUkwrVUlJdGVt
UHJvdmlkZXIuaD4KKyNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UrVUlJdGVtUHJvdmlkZXIuaD4KICNp
bXBvcnQgPFVJS2l0L1VJSXRlbVByb3ZpZGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmg+CkBAIC00NjIsNiArNDY0LDM5IEBAIFRFU1QoRGF0YUludGVyYWN0aW9u
VGVzdHMsIEV4dGVybmFsU291cmNlSW1hZ2VBbmRIVE1MVG9VcGxvYWRBcmVhKQogICAgIGNsZWFu
VXBEYXRhSW50ZXJhY3Rpb25UZW1wb3JhcnlQYXRoKCk7CiB9CiAKK1RFU1QoRGF0YUludGVyYWN0
aW9uVGVzdHMsIFJlc3BlY3RzRXh0ZXJuYWxTb3VyY2VGaWRlbGl0eVJhbmtpbmdzKQoreworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJsZSJdOworICAg
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5y
ZW1vdmVBbGxSYW5nZXMoKSJdOworCisgICAgYXV0byBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
PSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZp
ZXc6d2ViVmlldy5nZXQoKV0pOworCisgICAgLy8gSGVyZSwgb3VyIHNvdXJjZSBpdGVtIHByb3Zp
ZGVyIHZlbmRzIHR3byByZXByZXNlbnRhdGlvbnM6IHBsYWluIHRleHQsIGFuZCB0aGVuIGFuIGlt
YWdlLiBJZiB3ZSBkb24ndCByZXNwZWN0IHRoZQorICAgIC8vIGZpZGVsaXR5IG9yZGVyIHJlcXVl
c3RlZCBieSB0aGUgc291cmNlLCB3ZSdsbCBlbmQgdXAgYXNzdW1pbmcgdGhhdCB0aGUgaW1hZ2Ug
aXMgYSBoaWdoZXIgZmlkZWxpdHkgcmVwcmVzZW50YXRpb24KKyAgICAvLyB0aGFuIHRoZSBwbGFp
biB0ZXh0LCBhbmQgZXJyb25lb3VzbHkgaW5zZXJ0IHRoZSBpbWFnZS4gSWYgd2UgcmVzcGVjdCBz
b3VyY2UgZmlkZWxpdGllcywgd2UnbGwgaW5zZXJ0IHRleHQgcmF0aGVyCisgICAgLy8gdGhhbiBh
biBpbWFnZS4KKyAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlcldpdGhUZXh0Rmlyc3QgPSBh
ZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2ltdWxhdGVkSXRl
bVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdpc3Rlck9iamVjdDpAIkhlbGxvIHdvcmxkIiB2aXNp
YmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBb
c2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdCByZWdpc3Rlck9iamVjdDp0ZXN0SWNv
bkltYWdlKCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0
eUFsbF07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92
aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aFRleHRGaXJzdC5nZXQoKSBdXTsKKwor
ICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQw
MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbGxv
IHdvcmxkIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci50
ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZWRpdG9yQ29udGFpbnNJ
bWFnZUVsZW1lbnRdKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZWRpdG9yLmlubmVySFRNTCA9ICcnIl07CisKKyAgICAvLyBOb3cgd2UgcmVnaXN0ZXIgdGhl
IGl0ZW0gcHJvdmlkZXJzIGluIHJldmVyc2UsIGFuZCBleHBlY3QgdGhlIGltYWdlIHRvIGJlIGlu
c2VydGVkIGluc3RlYWQgb2YgdGV4dC4KKyAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlcldp
dGhJbWFnZUZpcnN0ID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgW3NpbXVsYXRlZEl0ZW1Qcm92aWRlcldpdGhJbWFnZUZpcnN0IHJlZ2lzdGVyT2JqZWN0OnRl
c3RJY29uSW1hZ2UoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNp
YmlsaXR5QWxsXTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdlRmlyc3QgcmVn
aXN0ZXJPYmplY3Q6QCJIZWxsbyB3b3JsZCIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJl
c2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBz
ZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyV2l0aEltYWdl
Rmlyc3QuZ2V0KCkgXV07CisKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206
Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZWRpdG9yLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IGVkaXRvckNv
bnRhaW5zSW1hZ2VFbGVtZW50XSk7Cit9CisKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4
dGVybmFsU291cmNlVVRGOFBsYWluVGV4dE9ubHkpCiB7CiAgICAgUmV0YWluUHRyPFRlc3RXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>