<?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>203161</bug_id>
          
          <creation_ts>2019-10-18 12:57:42 -0700</creation_ts>
          <short_desc>[Clipboard API] Refactor Pasteboard::read() to take an optional item index</short_desc>
          <delta_ts>2019-10-18 17:48:17 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581492</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-18 12:57:42 -0700</bug_when>
    <thetext>Work towards supporting multiple types in the Clipboard API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581496</commentid>
    <comment_count>1</comment_count>
      <attachid>381324</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-18 13:18:26 -0700</bug_when>
    <thetext>Created attachment 381324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581497</commentid>
    <comment_count>2</comment_count>
      <attachid>381325</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-18 13:26:42 -0700</bug_when>
    <thetext>Created attachment 381325
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581648</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 17:46:48 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 381325:

inspector/console/webcore-logging.html bug 203118 (authors: drousso@apple.com and eric.carlson@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581649</commentid>
    <comment_count>4</comment_count>
      <attachid>381325</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 17:47:37 -0700</bug_when>
    <thetext>Comment on attachment 381325
Fix GTK/WPE builds

Clearing flags on attachment: 381325

Committed r251316: &lt;https://trac.webkit.org/changeset/251316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581650</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 17:47:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581651</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-18 17:48:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/56426173&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381324</attachid>
            <date>2019-10-18 13:18:26 -0700</date>
            <delta_ts>2019-10-18 13:26:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203161-20191018131826.patch</filename>
            <type>text/plain</type>
            <size>36522</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAyMjc3NDQ0YzZlN2I5
Y2I3YjMwZDg1ZTJiYjIxMTMzZWNkN2MxZi4uYjNlYmNkZjdmOGJiZjYwMmQ4NzZlZmVjZTA1MDFh
NTZiMjRhYmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEwLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkOjpyZWFkKCkgdG8gdGFrZSBhbiBvcHRpb25hbCBpdGVt
IGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDMxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRzIGFuIG9wdGlvbmFsIGBpdGVtSW5kZXhgIGFyZ3VtZW50IHRvIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYpIGFuZAorICAgICAgICBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpLiBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0czogIENvcHlIVE1MLkl0ZW1UeXBl
c1doZW5Db3B5aW5nV2ViQ29udGVudAorICAgICAgICAgICAgICAgIFBhc3RlV2ViQXJjaGl2ZS5X
ZWJBcmNoaXZlVHlwZUlkZW50aWZpZXIKKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorCisgICAgICAgIFJlY29nbml6ZSAiY29tLmFwcGxlLndlYmFyY2hpdmUiIGFsb25nc2lk
ZSAiQXBwbGUgV2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIiB3aGVuIHdyaXRpbmcgYW5kIHJl
YWRpbmcgZnJvbSB0aGUKKyAgICAgICAgcGxhdGZvcm0gcGFzdGVib2FyZCBvbiBtYWNPUy4gV2Ug
YWRkIHN1cHBvcnQgZm9yIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBleGlzdGluZyBwcml2YXRlIHR5
cGUgY2Fubm90IGJlIHdyaXR0ZW4KKyAgICAgICAgdG8gYW4gTlNQYXN0ZWJvYXJkSXRlbSwgc2lu
Y2UgaXQgZG9lcyBub3QgY29uZm9ybSB0byBhIHZhbGlkIFVUSSBmb3JtYXQuIEx1Y2tpbHksIHRo
ZXJlIGFscmVhZHkgZXhpc3RzIGEgVVRJCisgICAgICAgIHRoYXQgcmVwcmVzZW50cyBhIHdlYiBh
cmNoaXZlLCBzbyB3ZSBjYW4gdXNlIGl0IGluc3RlYWQuCisKKyAgICAgICAgV2UgbmVlZCB0byB3
cml0ZSBhbmQgcmVhZCB3ZWIgYXJjaGl2ZSBkYXRhIGZyb20gTlNQYXN0ZWJvYXJkSXRlbSBpbiBv
cmRlciB0byBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZQorICAgICAgICBtdWx0aXBs
ZSBpdGVtcyBpbiB0aGUgcGFzdGVib2FyZCB0aGF0IGNvbnRhaW4gZGlmZmVyZW50IHdlYiBhcmNo
aXZlIGRhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICog
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisKKyAg
ICAgICAgUmVhZCB0aGUgc3RyaW5nIGZyb20gYGl0ZW1JbmRleGAgaWYgc3BlY2lmaWVkOyBvdGhl
cndpc2UsIGZhbGwgYmFjayB0byBpbmRleCAwLiBUaGlzIGNvdWxkIGFjdHVhbGx5IGJlIGZpeGVk
IGluCisgICAgICAgIHRoZSBmdXR1cmUgdG8gc2NhbiBhbGwgcGFzdGVib2FyZCBpdGVtcyBmb3Ig
YSBzdWl0YWJsZSBzdHJpbmcgaW5zdGVhZCBvZiBmYWxsaW5nIGJhY2sgb24gdGhlIGZpcnN0IGl0
ZW0sIGJ1dCBmb3IKKyAgICAgICAgbm93LCB3ZSBtYWludGFpbiB0aGUgZXhpc3RpbmcgYmVoYXZp
b3IuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlk
ZWxpdGllcyk6CisKKyAgICAgICAgSWYgYW4gYGl0ZW1JbmRleGAgaXMgc3BlY2lmaWVkLCBpZ25v
cmUgYWxsIG90aGVyIGl0ZW0gaW5kaWNlcyB3aGVuIGxvb2tpbmcgZm9yIHN1aXRhYmxlIGNvbnRl
bnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KToKKworICAgICAgICBBZGQgaGVscGVyIG1ldGhvZHMgdG8gcmVhZCBzdHJpbmdzIGFu
ZCBidWZmZXJzIGZyb20gdGhlIHBhc3RlYm9hcmQsIGF0IGFuIG9wdGlvbmFsIGBpdGVtSW5kZXhg
IGlmIHNwZWNpZmllZC4KKworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisK
KyAgICAgICAgQWRvcHQgdGhlIGhlbHBlciBmdW5jdGlvbnMgd2hlbiByZWFkaW5nIHBsYWluIHRl
eHQgYW5kIHdlYiBjb250ZW50LCBhbmQgcmVzcGVjdCB0aGUgZ2l2ZW4gYGl0ZW1JbmRleGAuIFRv
IGRvCisgICAgICAgIHRoaXMsIHdlIG5lZWQgdG8gcmVhZCBib3RoIGxlZ2FjeSBhbmQgbW9kZXJu
IHR5cGVzIGZyb20gdGhlIHBhc3RlYm9hcmQsIGluc3RlYWQgb2YganVzdCBsZWdhY3kgdHlwZXMu
IFRoaXMgaXMKKyAgICAgICAgYmVjYXVzZSBOU1Bhc3RlYm9hcmRJdGVtIG9uIG1hY09TIG9ubHkg
YWNjZXB0cyBhbmQgcHJvdmlkZXMgZGF0YSBpbiB0aGUgZm9ybSBvZiBtb2Rlcm4gcGFzdGVib2Fy
ZCB0eXBlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpzYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlRm9yUGxh
dGZvcm1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRT
dHJpbmcgY29uc3QpOgorCisgICAgICAgIEZpeCB0aGVzZSBtZXRob2RzIHRvIGFjY2VwdCBwbGF0
Zm9ybSBwYXN0ZWJvYXJkIHR5cGVzIGluc3RlYWQgb2YgTUlNRSB0eXBlcywgdG8gbWF0Y2ggdGhl
IGJlaGF2aW9yIG9mIGV4aXN0aW5nCisgICAgICAgIHJlYWRCdWZmZXIgYW5kIHJlYWRTdHJpbmcg
bWV0aG9kcyBpbiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MuCisKIDIwMTktMTAtMTcgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NsaXBib2FyZCBBUEld
IFN1cHBvcnQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjllNjUwNTE0
MDhlMjdkNjBkNTdiMWM1NTdiNTJlMjA1ZTRjNzAxZC4uMDJhM2Y0YTIyZTJlOWJjMmM5YjlkYmFk
MTZmMWZiOTg2OTE3ZWMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0xMC0xOCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJv
YXJkIEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZDo6cmVhZCgpIHRvIHRha2UgYW4gb3B0aW9uYWwg
aXRlbSBpbmRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFz
dGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5
cGVzOjpmb3JTZWxlY3Rpb24pOgorCisgICAgICAgIFN1cHBvcnQgImNvbS5hcHBsZS53ZWJhcmNo
aXZlIiBhbG9uZ3NpZGUgdGhlIHByaXZhdGUgIkFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQg
dHlwZSIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisKIDIw
MTktMTAtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IEF2b2lkIGNyYXNoZXMgb24gR0NDLWNvbXBpbGVkIGJpbmFyaWVzIGJ5IGF2b2lkaW5nIGEgdXNl
LWFmdGVyLW1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBj
MTIzNTBjMjU2MWUxMjUxNWIxYjdhM2ZkMjk4ODlkMmMwMmQ3ZDMxLi44MGFiYmUyZDkwZTdiMzIw
M2Q1ZTA4YzAyMjNkMDlhMmU4YWZkZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCkBAIC0xODUsNyArMTg1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmQKICAg
ICBpZiAoIWNhbkNvcHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAocGFz
dGVib2FyZFR5cGUgPT0gV2ViQXJjaGl2ZVBib2FyZFR5cGUpCisgICAgaWYgKHBhc3RlYm9hcmRU
eXBlID09IFdlYkFyY2hpdmVQYm9hcmRUeXBlIHx8IHBhc3RlYm9hcmRUeXBlID09IFN0cmluZyhr
VVRUeXBlV2ViQXJjaGl2ZSkpCiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25JbldlYkFyY2hpdmVG
b3JtYXQoKTsKIAogICAgIGlmIChwYXN0ZWJvYXJkVHlwZSA9PSBTdHJpbmcobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IGQ1
MThhOTU5YTcyMzM1MjdkM2VlZGU0MjdmMjEyMTE4ZTJiMTk2ZjkuLjMxNDEzMjVjYjJlMjQxMzhi
YzQ2NDUxMmIwYTQyOWQ5MDNhYzkwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKQEAgLTE5OCw4ICsxOTgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyKCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNv
bnN0IFN0cmluZyYgdHlwZSk7CiAKLSAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVh
ZChQYXN0ZWJvYXJkUGxhaW5UZXh0Jik7Ci0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eSA9IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpBbnlUeXBlKTsKKyAgICB2aXJ0dWFsIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgT3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kgPSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSwgT3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJik7CiAKICAgICB2aXJ0dWFsIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgQ29sb3ImKTsKQEAgLTI4Miw3ICsyODIsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCByZXNwZWN0
c1VUSUZpZGVsaXRpZXMoKSBjb25zdDsKLSAgICB2b2lkIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxp
dGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5
KTsKKyAgICB2b2lkIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBPcHRpb25hbDxzaXplX3Q+KTsK
IAogICAgIGVudW0gY2xhc3MgUmVhZGVyUmVzdWx0IHsKICAgICAgICAgUmVhZFR5cGUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggYzliZmY2Zjc4MDVl
ZDY0MzIzNDk1YjBkZTAxZDdiMjJjMmI4NjRhYy4uMGU3NjRlYWM0NDRjNjYxMmI4OGJjZGE4MzU3
ZmExMDVjY2QzOWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsOwog
ICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAotICAgIHZvaWQgcmVh
ZChQYXN0ZWJvYXJkUGxhaW5UZXh0JikgZmluYWwgeyB9Ci0gICAgdm9pZCByZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpIGZpbmFsIHsgfQor
ICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgT3B0aW9uYWw8c2l6ZV90PiA9IFdU
Rjo6bnVsbG9wdCkgZmluYWwgeyB9CisgICAgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gPSBXVEY6
Om51bGxvcHQpIGZpbmFsIHsgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
JikgZmluYWwgeyB9CiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5h
bCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5k
ZXggZTFjZTJmMzRiNWMxNGJhMjg5NzdiOGI4MWU3ZDZkMmNjNjJiODQ2OS4uZjYyNzNmMGFlN2Iz
YTZhMmYwOTUwOGQxNDMwNGZiYjBiYWRjOTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE1MCwxOCArMTUwLDIwIEBAIGJvb2wgUGFzdGVi
b2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQYXN0
ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCit2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXgpCiB7CisgICAgYXV0byBpdGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4LnZhbHVlT3IoMCk7
CisKICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVVSTCwgbV9wYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGlmICghdGV4dC50
ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICB0ZXh0LmlzVVJMID0gdHJ1ZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZCgwLCBrVVRUeXBlUGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICB0ZXh0
LnRleHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4VG9RdWVy
eSwga1VUVHlwZVBsYWluVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKHRleHQudGV4
dC5pc0VtcHR5KCkpCi0gICAgICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZCgwLCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHRl
eHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpdGVtSW5kZXhUb1F1
ZXJ5LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAKICAgICB0ZXh0LmlzVVJMID0g
ZmFsc2U7CiB9CkBAIC0yNzYsMTcgKzI3OCwxNyBAQCBzdGF0aWMgYm9vbCBwcmVmZXJzQXR0YWNo
bWVudFJlcHJlc2VudGF0aW9uKGNvbnN0IFBhc3RlYm9hcmRJdGVtSW5mbyYgaW5mbykKICAgICBy
ZXR1cm4gaW5mby5jYW5CZVRyZWF0ZWRBc0F0dGFjaG1lbnRPckZpbGUoKSB8fCBVVFR5cGVDb25m
b3Jtc1RvKGNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBrVVRUeXBlVkNhcmQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9s
aWN5KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiBy
ZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiBp
dGVtSW5kZXgpCiB7CiAgICAgcmVhZGVyLmNvbnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CiAg
ICAgaWYgKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKSB7Ci0gICAgICAgIHJlYWRSZXNwZWN0aW5n
VVRJRmlkZWxpdGllcyhyZWFkZXIsIHBvbGljeSk7CisgICAgICAgIHJlYWRSZXNwZWN0aW5nVVRJ
RmlkZWxpdGllcyhyZWFkZXIsIHBvbGljeSwgaXRlbUluZGV4KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCi0gICAgaW50IG51bWJlck9mSXRlbXMg
PSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsKKyAg
ICBzaXplX3QgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAgaWYgKCFudW1iZXJPZkl0ZW1zKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMDAsNyArMzAyLDEwIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAg
Ym9vbCBjYW5SZWFkQXR0YWNobWVudCA9IGZhbHNlOwogI2VuZGlmCiAKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bWJlck9mSXRlbXM7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZJdGVtczsgaSsrKSB7CisgICAgICAgIGlmIChpdGVtSW5kZXggJiYgaSAhPSAq
aXRlbUluZGV4KQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgYXV0byBpbmZvID0g
c3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpLCBtX3Bhc3RlYm9hcmROYW1lKTsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICBpZiAoY2FuUmVhZEF0dGFj
aG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZvKSkgewpAQCAtMzM2
LDExICszNDEsMTQgQEAgYm9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSBj
b25zdAogICAgIHJldHVybiBtX3Bhc3RlYm9hcmROYW1lID09ICJkYXRhIGludGVyYWN0aW9uIHBh
c3RlYm9hcmQiOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxp
dGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljeSBwb2xpY3kpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxp
dGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljeSBwb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQogewogICAgIEFTU0VS
VChyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSk7CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogICAgIGZvciAoTlNVSW50ZWdl
ciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChtX3Bhc3RlYm9hcmROYW1lKTsgaW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7
CisgICAgICAgIGlmIChpdGVtSW5kZXggJiYgaW5kZXggIT0gKml0ZW1JbmRleCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAg
YXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9w
YXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIGF1dG8gYXR0YWNobWVudEZpbGVQYXRoID0gaW5mby5w
YXRoRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdEYXRhTWFjLm1tCmluZGV4IDY0ZTQ4OTQzOTMxMzJmZDMzMTY2NjRhMThjYjk3YzVkMTc4
YWEyMzAuLmFhM2IwM2IxYTJkODQwZjg4Yzk1YzI4NWNiYmM2NmRmOTE1YjQ5NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTIzNyw2ICsyMzcsNyBA
QCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KERyYWdnaW5nUHVycG9z
ZSBwdXJwb3NlKSBjb25zdAogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIHJldHVybiB0
eXBlcy5jb250YWlucyhTdHJpbmcoV2ViQXJjaGl2ZVBib2FyZFR5cGUpKQogICAgICAgICB8fCB0
eXBlcy5jb250YWlucyhodG1sUGFzdGVib2FyZFR5cGUoKSkKKyAgICAgICAgfHwgdHlwZXMuY29u
dGFpbnMoU3RyaW5nKGtVVFR5cGVXZWJBcmNoaXZlKSkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
ICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlw
ZSgpKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVzUHJvbWlz
ZVBhc3RlYm9hcmRUeXBlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQppbmRleCBjMWVjZWYxNGNhY2M3MWU3YzY0ZjY5MDQ2MWMzYjkwMTUxOWNmZDhl
Li5hM2U0YjI5YjYyNThmN2Q5ZGFhOTUyNjg1NTU4Y2NkNGNhNDM5MDZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMTI5LDggKzEyOSwxMCBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250
ZW50KQogCiAgICAgaWYgKGNvbnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUpCiAgICAgICAgIHR5
cGVzLmFwcGVuZChXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSk7Ci0gICAgaWYgKGNvbnRlbnQuZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdCkKKyAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9y
bWF0KSB7CiAgICAgICAgIHR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7CisgICAg
ICAgIHR5cGVzLmFwcGVuZChrVVRUeXBlV2ViQXJjaGl2ZSk7CisgICAgfQogICAgIGlmIChjb250
ZW50LmRhdGFJblJURkRGb3JtYXQpCiAgICAgICAgIHR5cGVzLmFwcGVuZChTdHJpbmcobGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCkpKTsKICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQp
CkBAIC0xNDQsMTMgKzE0NiwxOCBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFz
dGVib2FyZE5hbWUpOwogCisgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgY29kZSBzaG91bGQg
YmUgcmVmYWN0b3JlZCwgc3VjaCB0aGF0IGl0IG9ubHkgcmVxdWlyZXMgYSBzaW5nbGUgY2FsbCBv
dXQgdG8gdGhlIGNsaWVudCBsYXllci4KKyAgICAvLyBJbiBXZWJLaXQyLCB0aGlzIGN1cnJlbnRs
eSByZXN1bHRzIGluIG1hbnkgdW5uZWNlc3Nhcnkgc3luY2hyb25vdXMgcm91bmQtdHJpcCBJUEMg
bWVzc2FnZXMuCisKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29u
dGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKICAgICAgICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
QnVmZmVyRm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0uZ2V0KCksIGNvbnRlbnQuY2xpZW50
VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGlmIChjb250ZW50LmNhblNtYXJ0Q29w
eU9yRGVsZXRlKQogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKG51bGxwdHIsIFdlYlNtYXJ0
UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICBpZiAoY29udGVudC5kYXRh
SW5XZWJBcmNoaXZlRm9ybWF0KQorICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQpIHsKICAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJbldlYkFyY2hp
dmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQuZ2V0KCksIGtVVFR5cGVXZWJBcmNoaXZlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICB9CiAg
ICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCkKICAgICAgICAgbV9jaGFuZ2VDb3VudCA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9y
VHlwZShjb250ZW50LmRhdGFJblJURkRGb3JtYXQuZ2V0KCksIGxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3Jt
YXQpCkBAIC0yNTgsMTMgKzI2NSwxNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGUpKTsKIAogICAgIGF1dG8gdHlwZXMgPSB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKTsKLSAg
ICBpZiAocGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpCisgICAgaWYgKHBh
c3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIHR5cGVzLmFw
cGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7CisgICAgICAgIHR5cGVzLmFwcGVuZChrVVRUeXBl
V2ViQXJjaGl2ZSk7CisgICAgfQogCiAgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJMRm9yVHlw
ZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwpOwogICAgIG1f
Y2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwg
bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOwotICAgIGlmIChw
YXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkKLSAgICAgICAgbV9jaGFuZ2VD
b3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVm
ZmVyRm9yVHlwZShwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC5nZXQoKSwg
V2ViQXJjaGl2ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIGlmIChhdXRvIGFy
Y2hpdmVEYXRhID0gcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKKyAg
ICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBi
b2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBl
KGFyY2hpdmVEYXRhLmdldCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgfQogICAgIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVy
KHBhc3RlYm9hcmRJbWFnZSksIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpOwogfQog
CkBAIC0yOTMsMjggKzMwNCw1NSBAQCBzdGF0aWMgU3RyaW5nIGpvaW5QYXRobmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcykKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkK
K3N0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmlu
ZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGFzdGVib2Fy
ZFN0cmF0ZWd5JiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCk7CisgICAgaWYgKGl0ZW1JbmRleCkKKyAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7
CisgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUp
OworfQorCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVk
SXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgs
IFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCit7CisgICAgaWYgKGl0ZW1JbmRleCkKKyAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgcmV0dXJuIHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUpOwor
fQorCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgT3B0
aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCit7CisgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXM7Ci0gICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUp
OworICAgIGlmIChpdGVtSW5kZXgpCisgICAgICAgIHR5cGVzID0gc3RyYXRlZ3kuaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleCgqaXRlbUluZGV4ICwgbV9wYXN0ZWJvYXJkTmFtZSkucGxhdGZvcm1U
eXBlc0J5RmlkZWxpdHk7CisgICAgZWxzZQorICAgICAgICBzdHJhdGVneS5nZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSk7CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5T
UGFzdGVib2FyZFR5cGVTdHJpbmcpKSkgewotICAgICAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5z
dHJpbmdGb3JUeXBlKE5TUGFzdGVib2FyZFR5cGVTdHJpbmcsIG1fcGFzdGVib2FyZE5hbWUpOwor
ICAgICAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0
ZWJvYXJkVHlwZVN0cmluZywgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CiAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KSkpKSB7Ci0gICAgICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUobGVnYWN5
U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHRleHQu
dGV4dCA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lTdHJpbmdQYXN0ZWJv
YXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAg
ICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAg
IGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IHN0cmF0ZWd5LmJ1ZmZl
ckZvclR5cGUobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpOVUxMXSkpIHsKKyAgICAgICAgaWYgKGF1dG8gZGF0YSA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0
ZWRTdHJpbmcgc3RyaW5nXTsKKyAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7
CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgo
TlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRl
eHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4
dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMyw4ICszNjEs
MTggQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAg
ICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZQYXN0ZWJvYXJk
VHlwZSgpKSkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBzdHJh
dGVneS5idWZmZXJGb3JUeXBlKGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2Fy
ZE5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6ZGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOk5VTExdKSkgeworICAgICAgICBpZiAoYXV0
byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURlBhc3RlYm9h
cmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0
dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKKyAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlUlRG
KSkpIHsKKyAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1J
bmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9h
cmROYW1lKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAg
IHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAg
dGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0NywyMSAr
Mzk1LDMxIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0
KQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGUgY29kZSBhYm92ZSBsb29rcyBhdCB0aGUgdHlw
ZXMgdmVjdG9yIGZpcnN0LCBidXQgdGhpcyBqdXN0IGdldHMgdGhlIHN0cmluZyB3aXRob3V0IGNo
ZWNraW5nLiBXaHkgdGhlIGRpZmZlcmVuY2U/Ci0gICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kuc3Ry
aW5nRm9yVHlwZShsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICB0ZXh0LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VVJM
UGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CiAgICAgdGV4dC5pc1VSTCA9ICF0ZXh0LnRleHQuaXNOdWxsKCk7CiB9CiAKLXZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljeSBwb2xpY3kpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5LCBP
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCkKIHsKLSAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0
cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKKyAg
ICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBzdHJhdGVneS5nZXRUeXBl
cyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgaWYgKGl0ZW1JbmRleCkKKyAgICAgICAg
dHlwZXMgPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KCppdGVtSW5kZXggLCBt
X3Bhc3RlYm9hcmROYW1lKS5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsKKyAgICBlbHNlCisgICAg
ICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKIAogICAgIHJl
YWRlci5jb250ZW50T3JpZ2luID0gcmVhZE9yaWdpbigpOwogCiAgICAgaWYgKHR5cGVzLmNvbnRh
aW5zKFdlYkFyY2hpdmVQYm9hcmRUeXBlKSkgewotICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBz
dHJhdGVneS5idWZmZXJGb3JUeXBlKFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmRO
YW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoV2ViQXJjaGl2ZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFz
dGVib2FyZE5hbWUpKSB7CisgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VD
b3VudCgpIHx8IHJlYWRlci5yZWFkV2ViQXJjaGl2ZSgqYnVmZmVyKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKGtVVFR5cGVXZWJBcmNoaXZlKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGtVVFR5cGVXZWJBcmNoaXZlLCBpdGVtSW5kZXgs
IHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFdlYkFyY2hpdmUoKmJ1ZmZlcikp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zODAsMjAgKzQzOCw0MCBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
ciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlu
cyhTdHJpbmcobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBTdHJpbmcg
c3RyaW5nID0gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZShsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUo
KSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5n
QXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRl
eCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpIHx8ICghc3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkSFRN
TChzdHJpbmcpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodHlwZXMu
Y29udGFpbnMoU3RyaW5nKE5TUGFzdGVib2FyZFR5cGVIVE1MKSkpIHsKKyAgICAgICAgU3RyaW5n
IHN0cmluZyA9IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBl
SFRNTCwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYg
cmVhZGVyLnJlYWRIVE1MKHN0cmluZykpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkp
KSkgewotICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3ku
YnVmZmVyRm9yVHlwZShsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFt
ZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hh
bmdlQ291bnQoKSB8fCByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhOU1Bhc3RlYm9hcmRUeXBlUlRGRCkpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUlRGRCwgaXRlbUlu
ZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKICAgICAgICAgICAgIGlmIChtX2No
YW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0eXBl
cy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAg
IGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBl
KGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAg
IGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lS
VEZQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1l
KSkgeworICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCBy
ZWFkZXIucmVhZFJURigqYnVmZmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TUGFzdGVib2FyZFR5
cGVSVEYpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURiwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9w
YXN0ZWJvYXJkTmFtZSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5n
ZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC00MDMsMjggKzQ4MSw0MiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxl
Z2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUobGVnYWN5VElGRlBhc3RlYm9h
cmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgICAg
IGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShi
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL3RpZmYiX3MpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJp
bmcoTlNQYXN0ZWJvYXJkVHlwZVRJRkYpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVRJRkYsIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CiAgICAgICAgICAgICBpZiAobV9j
aGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksICJpbWFnZS90aWZmIl9zKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2Fj
eVBERlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc3RyYXRlZ3kuYnVmZmVyRm9yVHlwZShsZWdhY3lQREZQYXN0ZWJvYXJkVHlw
ZSgpLCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UERGUGFzdGVib2FyZFR5cGUoKSwgaXRl
bUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgICAgIGlmICht
X2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSwgImFwcGxpY2F0aW9uL3BkZiJfcykpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhOU1Bhc3RlYm9hcmRUeXBlUERGKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVQREYsIGl0ZW1JbmRl
eCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFu
Z2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCksICJhcHBsaWNhdGlvbi9wZGYiX3MpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoa1VU
VHlwZVBORykpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
dHJhdGVneS5idWZmZXJGb3JUeXBlKGtVVFR5cGVQTkcsIG1fcGFzdGVib2FyZE5hbWUpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChr
VVRUeXBlUE5HLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgewogICAg
ICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVh
ZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCAiaW1hZ2UvcG5nIl9zKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFp
bnMoU3RyaW5nKGtVVFR5cGVKUEVHKSkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUoa1VUVHlwZUpQRUcsIG1fcGFzdGVi
b2FyZE5hbWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChrVVRUeXBlSlBFRywgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkgfHwgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL2pw
ZWciX3MpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDMyLDEzICs1
MjQsMTMgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVy
JiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKIAogICAgIGlmICh0eXBlcy5jb250YWlu
cyhTdHJpbmcobGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFVSTCB1cmwg
PSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIFN0cmluZyB0aXRsZSA9
IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUpOworICAgICAgICBTdHJpbmcgdGl0bGUgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVt
SW5kZXgoV2ViVVJMTmFtZVBib2FyZFR5cGUsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVi
b2FyZE5hbWUpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8
ICghdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgdGl0bGUpKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2Fj
eVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3Ry
YXRlZ3kuc3RyaW5nRm9yVHlwZShsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHJlYWRTdHJpbmdBdFByZWZlcnJl
ZEl0ZW1JbmRleChsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0
ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hh
bmdlQ291bnQoKSB8fCAoIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChz
dHJpbmcpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCA3MTgxMjZh
NGU0YzIzN2RmMTJmZTk1YjQ2YzY0ZWIyMjljZTJkMjRiLi5mNWU0YzQwNzg5ODQxNmEwNWQyNGVh
ZjFjOTRmNTQ4NWM2YTNjY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogc2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZUZvclBsYXRmb3JtVHlwZShj
b25zdCBTdHJpbmcmIHBsYQogICAgIGlmIChwbGF0Zm9ybVR5cGUgPT0gU3RyaW5nKGxlZ2FjeVVS
TFBhc3RlYm9hcmRUeXBlKCkpKQogICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiX3M7CiAK
LSAgICBpZiAocGxhdGZvcm1UeXBlID09IFN0cmluZyhsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUo
KSkgfHwgcGxhdGZvcm1UeXBlID09IFN0cmluZyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkKKyAgICBp
ZiAocGxhdGZvcm1UeXBlID09IFN0cmluZyhsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSkgfHwg
cGxhdGZvcm1UeXBlID09IFN0cmluZyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkgfHwgcGxhdGZvcm1U
eXBlID09IFN0cmluZyhrVVRUeXBlV2ViQXJjaGl2ZSkKICAgICAgICAgfHwgcGxhdGZvcm1UeXBl
ID09IFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkgfHwgcGxhdGZvcm1UeXBlID09
IFN0cmluZyhsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0
L2h0bWwiX3M7CiAKQEAgLTQyMCwxMSArNDIwLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgog
ICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcGxhdGZvcm1U
eXBlID0gbW9kZXJuUGFzdGVib2FyZFR5cGVGb3JXZWJTYWZlTUlNRVR5cGUodHlwZSk7Ci0gICAg
aWYgKCFwbGF0Zm9ybVR5cGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKE5T
RGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnBsYXRmb3JtVHlwZV0pIHsKKyAgICBpZiAo
TlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBu
c0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KQEAgLTQzOCwxMSArNDM0LDcgQEAgU3RyaW5n
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBhdXRvIHBsYXRmb3JtVHlwZSA9IG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1JTUVU
eXBlKHR5cGUpOwotICAgIGlmICghcGxhdGZvcm1UeXBlKQotICAgICAgICByZXR1cm4geyB9Owot
Ci0gICAgcmV0dXJuIFtpdGVtIHN0cmluZ0ZvclR5cGU6cGxhdGZvcm1UeXBlXTsKKyAgICByZXR1
cm4gW2l0ZW0gc3RyaW5nRm9yVHlwZTp0eXBlXTsKIH0KIAogVVJMIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQppbmRleCA3MTJmOWQ3ODVhMzQyMjNh
MmZhNTQxYmFmNzhlMjBiN2EzMGRhODFmLi43MDEzMjgxZWMzNGJiZjRhNThlMDIzMGY0ZThmNDQ5
Y2Y0OWQ0NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2Fy
ZFR5cGVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMu
bW0KQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGlubGluZSBOU0FycmF5ICpyZXRhaW4oTlNBcnJh
eSAqYXJyYXkpCiAgICAgCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcoKQog
ewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9h
cmRUeXBlKCksCisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6V2ViQXJjaGl2ZVBib2FyZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5
VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCks
CiAgICAgICAgIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdh
Y3lDb2xvclBhc3RlYm9hcmRUeXBlKCksIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkcs
IG5pbF0pOwogICAgIHJldHVybiB0eXBlczsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgTlNBcnJheSog
UGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSgpCiAKIE5TQXJyYXkqIFBhc3Rl
Ym9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMg
PSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwg
V2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG5p
bF0pOworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCksIG5pbF0pOwogICAgIHJldHVybiB0eXBlczsKIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNzVlMTlhZWExYmM5
OGM2NDQyYzk1MzJiOTczMDJkM2NhNDhiMzQ5OC4uNjU3NWRhNjU5ZGQ2MWY5MzMyZWEyYzU0ZTlm
OGRlMzdlMTdkMTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KQEAgLTQyMTgsOCArNDIxOCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgog
ICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjptX3ZpZXcuZ2V0
QXV0b3JlbGVhc2VkKCldOwogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5z
aW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAotICAgIGlmIChhcmNo
aXZlQnVmZmVyKQotICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmFyY2hpdmVCdWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6UGFzdGVib2FyZFR5cGVzOjpXZWJBcmNoaXZlUGJv
YXJkVHlwZV07CisgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2Vi
QXJjaGl2ZV07CisgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5
cGU6UGFzdGVib2FyZFR5cGVzOjpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CisgICAgfQogCiAgICAg
bV9wcm9taXNlZEltYWdlID0gaW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjllYTM0OTViZmQ1ODI1MmZiNzhhNzA3ODc1M2VjNWJh
OTBkNmRkMy4uZTc4Yzg0MWRjNTJiYmUxMjZmYzJhOTA4ZDU0NmE1MWMxMDQzMjNiMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE5LTEwLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDbGlwYm9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkOjpyZWFkKCkgdG8g
dGFrZSBhbiBvcHRpb25hbCBpdGVtIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjb3VwbGUgb2YgbmV3IEFQSSB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCB0aGUgd2ViIGFyY2hpdmUgdHlwZSBpZGVudGlmaWVyICgiY29tLmFwcGxlLndlYmFy
Y2hpdmUiKSBpcyAoMSkKKyAgICAgICAgd3JpdHRlbiB0byB0aGUgcGFzdGVib2FyZCB3aGVuIGNv
cHlpbmcgYSByaWNoIHRleHQgc2VsZWN0aW9uLCBhbmQgKDIpIGlzIHJlYWQgd2hlbiBhdHRlbXB0
aW5nIHRvIHBhc3RlIHdlYgorICAgICAgICBjb250ZW50LgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlV2ViQXJjaGl2ZS5tbToKKwogMjAxOS0xMC0xNyAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2xpcGJv
YXJkIEFQSV0gU3VwcG9ydCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0KaW5kZXggMzEyYzBk
OTIxNWFjZmY3YWJkYTg1Njc4MGY2MTE4NWNlZDk3ZjA4NC4uZjRlOWM2ZWZlZjMyZWQ1ODc1NzMw
ZTZjNDQ2ODE3ZjIwNWViYWMyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvcHlIVE1MLm1tCkBAIC04Nyw0ICs4NywyMiBAQCBURVNUKENvcHlIVE1M
LCBTYW5pdGl6ZXMpCiAgICAgRVhQRUNUX0ZBTFNFKGh0bWxJbk5hdGl2ZVBhc3RlYm9hcmQuY29u
dGFpbnMoImRhbmdlcm91c0NvZGUiKSk7CiB9CiAKK1RFU1QoQ29weUhUTUwsIEl0ZW1UeXBlc1do
ZW5Db3B5aW5nV2ViQ29udGVudCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3
V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpOworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzpAIjxzdHJvbmcgc3R5bGU9J2NvbG9yOiByZ2IoMjU1LCAwLCAw
KTsnPlRoaXMgaXMgc29tZSB0ZXh0IHRvIGNvcHkuPC9zdHJvbmc+Il07CisgICAgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnNlbGVjdEFsbENo
aWxkcmVuKGRvY3VtZW50LmJvZHkpIl07CisgICAgW3dlYlZpZXcgY29weTpuaWxdOworICAgIFt3
ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIE5TQXJyYXk8TlNQ
YXN0ZWJvYXJkSXRlbSAqPiAqaXRlbXMgPSBOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQu
cGFzdGVib2FyZEl0ZW1zOworICAgIEVYUEVDVF9FUSgxVSwgaXRlbXMuY291bnQpOworCisgICAg
TlNBcnJheTxOU1Bhc3RlYm9hcmRUeXBlPiAqdHlwZXMgPSBpdGVtcy5maXJzdE9iamVjdC50eXBl
czsKKyAgICBFWFBFQ1RfVFJVRShbdHlwZXMgY29udGFpbnNPYmplY3Q6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVdlYkFyY2hpdmVdKTsKKyAgICBFWFBFQ1RfVFJVRShbdHlwZXMgY29udGFp
bnNPYmplY3Q6KF9fYnJpZGdlIE5TU3RyaW5nICopTlNQYXN0ZWJvYXJkVHlwZVJURl0pOworICAg
IEVYUEVDVF9UUlVFKFt0eXBlcyBjb250YWluc09iamVjdDooX19icmlkZ2UgTlNTdHJpbmcgKilO
U1Bhc3RlYm9hcmRUeXBlU3RyaW5nXSk7CisgICAgRVhQRUNUX1RSVUUoW3R5cGVzIGNvbnRhaW5z
T2JqZWN0OihfX2JyaWRnZSBOU1N0cmluZyAqKU5TUGFzdGVib2FyZFR5cGVIVE1MXSk7Cit9CisK
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlV2ViQXJjaGl2ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1tCmluZGV4IDNmNWI2ZjFjNDcy
ZDdjOWUzNmM1MThjOGQ4NjQ1ZWMxMGJkY2U3ZDIuLmI3ODVmNWM0ZjJiZDcwMmEzMjViMzcwNTA0
NmJlZTU5ODI2MzExOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1tCkBAIC0yNDAsNiArMjQwLDI4IEBAIFRF
U1QoUGFzdGVXZWJBcmNoaXZlLCBTdHJpcHNNU09MaXN0V2hlbk1pc3NpbmdNU09IVE1MRWxlbWVu
dCkKICAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYigyNTUsIDAsIDApIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdmb3Jl
Q29sb3InKSJdKTsKIH0KIAorVEVTVChQYXN0ZVdlYkFyY2hpdmUsIFdlYkFyY2hpdmVUeXBlSWRl
bnRpZmllcikKK3sKKyAgICBOU1VSTCAqdXJsID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxl
Oi8vL3NvbWUtZmlsZS5odG1sIl07CisgICAgTlNTdHJpbmcgKm1hcmt1cCA9IEAiPHN0cm9uZyBz
dHlsZT0nY29sb3I6IHJnYigyNTUsIDAsIDApOyc+VGhpcyBpcyBzb21lIHRleHQgdG8gY29weS48
L3N0cm9uZz4iOworCisgICAgYXV0byBtYWluUmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3Vy
Y2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbbWFya3VwIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSBVUkw6dXJsIE1JTUVUeXBlOkAidGV4dC9odG1sIiB0ZXh0RW5jb2RpbmdO
YW1lOkAidXRmLTgiIGZyYW1lTmFtZTpuaWxdKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5T
KFtbV2ViQXJjaGl2ZSBhbGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6bWFpblJlc291cmNlLmdl
dCgpIHN1YnJlc291cmNlczpuaWwgc3ViZnJhbWVBcmNoaXZlczpuaWxdKTsKKworICAgIE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwor
ICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07CisgICAgW3Bh
c3RlYm9hcmQgc2V0RGF0YTpbYXJjaGl2ZSBkYXRhXSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZp
ZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCk7CisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworICAgIFt3ZWJWaWV3IHBh
c3RlOm5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIltcInRleHQvaHRtbFwiXSIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJKU09OLnN0cmluZ2lmeShjbGlwYm9h
cmREYXRhLnR5cGVzKSJdKTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2Nt
ZW50LmJvZHkuaW5uZXJIVE1MID0gY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0iIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJUaGlzIGlzIHNvbWUgdGV4dCB0byBj
b3B5LiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdzdHJvbmcnKS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoInJnYigyNTUsIDAsIDApIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3Ryb25nJykpLmNv
bG9yIl0pOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381325</attachid>
            <date>2019-10-18 13:26:42 -0700</date>
            <delta_ts>2019-10-18 17:47:37 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-203161-20191018132641.patch</filename>
            <type>text/plain</type>
            <size>39975</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAyMjc3NDQ0YzZlN2I5
Y2I3YjMwZDg1ZTJiYjIxMTMzZWNkN2MxZi4uMGE4NTU2N2YxZTdiMjY3NjU3NzZjYzFkNWQ1NzI1
Njc5YzJiYzIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE5LTEwLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkOjpyZWFkKCkgdG8gdGFrZSBhbiBvcHRpb25hbCBpdGVt
IGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDMxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRzIGFuIG9wdGlvbmFsIGBpdGVtSW5kZXhgIGFyZ3VtZW50IHRvIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYpIGFuZAorICAgICAgICBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpLiBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0czogIENvcHlIVE1MLkl0ZW1UeXBl
c1doZW5Db3B5aW5nV2ViQ29udGVudAorICAgICAgICAgICAgICAgIFBhc3RlV2ViQXJjaGl2ZS5X
ZWJBcmNoaXZlVHlwZUlkZW50aWZpZXIKKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorCisgICAgICAgIFJlY29nbml6ZSAiY29tLmFwcGxlLndlYmFyY2hpdmUiIGFsb25nc2lk
ZSAiQXBwbGUgV2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIiB3aGVuIHdyaXRpbmcgYW5kIHJl
YWRpbmcgZnJvbSB0aGUKKyAgICAgICAgcGxhdGZvcm0gcGFzdGVib2FyZCBvbiBtYWNPUy4gV2Ug
YWRkIHN1cHBvcnQgZm9yIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBleGlzdGluZyBwcml2YXRlIHR5
cGUgY2Fubm90IGJlIHdyaXR0ZW4KKyAgICAgICAgdG8gYW4gTlNQYXN0ZWJvYXJkSXRlbSwgc2lu
Y2UgaXQgZG9lcyBub3QgY29uZm9ybSB0byBhIHZhbGlkIFVUSSBmb3JtYXQuIEx1Y2tpbHksIHRo
ZXJlIGFscmVhZHkgZXhpc3RzIGEgVVRJCisgICAgICAgIHRoYXQgcmVwcmVzZW50cyBhIHdlYiBh
cmNoaXZlLCBzbyB3ZSBjYW4gdXNlIGl0IGluc3RlYWQuCisKKyAgICAgICAgV2UgbmVlZCB0byB3
cml0ZSBhbmQgcmVhZCB3ZWIgYXJjaGl2ZSBkYXRhIGZyb20gTlNQYXN0ZWJvYXJkSXRlbSBpbiBv
cmRlciB0byBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZQorICAgICAgICBtdWx0aXBs
ZSBpdGVtcyBpbiB0aGUgcGFzdGVib2FyZCB0aGF0IGNvbnRhaW4gZGlmZmVyZW50IHdlYiBhcmNo
aXZlIGRhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICog
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6cmVhZCk6CisKKyAgICAgICAgUmVhZCB0aGUgc3RyaW5nIGZyb20gYGl0ZW1J
bmRleGAgaWYgc3BlY2lmaWVkOyBvdGhlcndpc2UsIGZhbGwgYmFjayB0byBpbmRleCAwLiBUaGlz
IGNvdWxkIGFjdHVhbGx5IGJlIGZpeGVkIGluCisgICAgICAgIHRoZSBmdXR1cmUgdG8gc2NhbiBh
bGwgcGFzdGVib2FyZCBpdGVtcyBmb3IgYSBzdWl0YWJsZSBzdHJpbmcgaW5zdGVhZCBvZiBmYWxs
aW5nIGJhY2sgb24gdGhlIGZpcnN0IGl0ZW0sIGJ1dCBmb3IKKyAgICAgICAgbm93LCB3ZSBtYWlu
dGFpbiB0aGUgZXhpc3RpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisKKyAgICAgICAgSWYgYW4gYGl0ZW1J
bmRleGAgaXMgc3BlY2lmaWVkLCBpZ25vcmUgYWxsIG90aGVyIGl0ZW0gaW5kaWNlcyB3aGVuIGxv
b2tpbmcgZm9yIHN1aXRhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUv
UGFzdGVib2FyZExpYldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpyZWFkU3RyaW5nQXRQcmVmZXJyZWRJ
dGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKworICAgICAgICBBZGQgaGVscGVyIG1ldGhvZHMgdG8gcmVhZCBzdHJpbmdzIGFuZCBi
dWZmZXJzIGZyb20gdGhlIHBhc3RlYm9hcmQsIGF0IGFuIG9wdGlvbmFsIGBpdGVtSW5kZXhgIGlm
IHNwZWNpZmllZC4KKworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisKKyAg
ICAgICAgQWRvcHQgdGhlIGhlbHBlciBmdW5jdGlvbnMgd2hlbiByZWFkaW5nIHBsYWluIHRleHQg
YW5kIHdlYiBjb250ZW50LCBhbmQgcmVzcGVjdCB0aGUgZ2l2ZW4gYGl0ZW1JbmRleGAuIFRvIGRv
CisgICAgICAgIHRoaXMsIHdlIG5lZWQgdG8gcmVhZCBib3RoIGxlZ2FjeSBhbmQgbW9kZXJuIHR5
cGVzIGZyb20gdGhlIHBhc3RlYm9hcmQsIGluc3RlYWQgb2YganVzdCBsZWdhY3kgdHlwZXMuIFRo
aXMgaXMKKyAgICAgICAgYmVjYXVzZSBOU1Bhc3RlYm9hcmRJdGVtIG9uIG1hY09TIG9ubHkgYWNj
ZXB0cyBhbmQgcHJvdmlkZXMgZGF0YSBpbiB0aGUgZm9ybSBvZiBtb2Rlcm4gcGFzdGVib2FyZCB0
eXBlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpzYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlRm9yUGxhdGZv
cm1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJp
bmcgY29uc3QpOgorCisgICAgICAgIEZpeCB0aGVzZSBtZXRob2RzIHRvIGFjY2VwdCBwbGF0Zm9y
bSBwYXN0ZWJvYXJkIHR5cGVzIGluc3RlYWQgb2YgTUlNRSB0eXBlcywgdG8gbWF0Y2ggdGhlIGJl
aGF2aW9yIG9mIGV4aXN0aW5nCisgICAgICAgIHJlYWRCdWZmZXIgYW5kIHJlYWRTdHJpbmcgbWV0
aG9kcyBpbiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToK
KwogMjAxOS0xMC0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gU3VwcG9ydCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBmOWU2NTA1MTQwOGUyN2Q2MGQ1N2IxYzU1N2I1MmUyMDVlNGM3MDFkLi4w
MmEzZjRhMjJlMmU5YmMyYzliOWRiYWQxNmYxZmI5ODY5MTdlYzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDE5LTEwLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDbGlwYm9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkOjpyZWFk
KCkgdG8gdGFrZSBhbiBvcHRpb25hbCBpdGVtIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckVkaXRpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisKKyAgICAgICAgU3Vw
cG9ydCAiY29tLmFwcGxlLndlYmFyY2hpdmUiIGFsb25nc2lkZSB0aGUgcHJpdmF0ZSAiQXBwbGUg
V2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKToKKwogMjAxOS0xMC0xOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgQXZvaWQgY3Jhc2hlcyBvbiBHQ0MtY29tcGlsZWQgYmlu
YXJpZXMgYnkgYXZvaWRpbmcgYSB1c2UtYWZ0ZXItbW92ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCmluZGV4IGMxMjM1MGMyNTYxZTEyNTE1YjFiN2EzZmQyOTg4OWQyYzAy
ZDdkMzEuLjgwYWJiZTJkOTBlN2IzMjAzZDVlMDhjMDIyM2QwOWEyZThhZmRlNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE4NSw3ICsxODUsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZAogICAgIGlmICghY2FuQ29weSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGlmIChwYXN0ZWJvYXJkVHlwZSA9PSBXZWJBcmNoaXZlUGJvYXJkVHlw
ZSkKKyAgICBpZiAocGFzdGVib2FyZFR5cGUgPT0gV2ViQXJjaGl2ZVBib2FyZFR5cGUgfHwgcGFz
dGVib2FyZFR5cGUgPT0gU3RyaW5nKGtVVFR5cGVXZWJBcmNoaXZlKSkKICAgICAgICAgcmV0dXJu
IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogCiAgICAgaWYgKHBhc3RlYm9hcmRUeXBl
ID09IFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKaW5kZXggZDUxOGE5NTlhNzIzMzUyN2QzZWVkZTQyN2YyMTIxMThlMmIx
OTZmOS4uMzE0MTMyNWNiMmUyNDEzOGJjNDY0NTEyYjBhNDI5ZDkwM2FjOTAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMTk4LDggKzE5OCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKICAgICB2aXJ0dWFsIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAotICAgIHZpcnR1YWwg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmKTsKLSAgICB2aXJ0
dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5
cGUpOworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFp
blRleHQmLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVsbG9wdCk7CisgICAg
dmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFk
ZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSA9IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpB
bnlUeXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVsbG9wdCk7CiAgICAg
dmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImKTsK
IAogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBDb2xvciYpOwpA
QCAtMjgyLDcgKzI4Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBib29sIHJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0OwotICAgIHZvaWQg
cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwg
V2ViQ29udGVudFJlYWRpbmdQb2xpY3kpOworICAgIHZvaWQgcmVhZFJlc3BlY3RpbmdVVElGaWRl
bGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3ksIE9wdGlvbmFsPHNpemVfdD4pOwogCiAgICAgZW51bSBjbGFzcyBSZWFkZXJSZXN1bHQgewog
ICAgICAgICBSZWFkVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaAppbmRleCBjOWJmZjZmNzgwNWVkNjQzMjM0OTViMGRlMDFkN2IyMmMyYjg2NGFjLi4wZTc2
NGVhYzQ0NGM2NjEyYjg4YmNkYTgzNTdmYTEwNWNjZDM5ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUp
IGZpbmFsOwogCi0gICAgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmKSBmaW5hbCB7IH0K
LSAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeSkgZmluYWwgeyB9CisgICAgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
LCBPcHRpb25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7IH0KKyAgICB2b2lkIHJl
YWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwg
T3B0aW9uYWw8c2l6ZV90PiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9CiAKICAgICB2b2lkIHdy
aXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKSBmaW5hbCB7IH0KICAgICB2b2lkIHdyaXRlKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDYyYTc3MmIzYzFhNTFkYmU2YzE1NWZjMGVmMTFk
YjQzZGEyMjY4OTYuLmVjOTdmMTNjYjQzYmU4OTliZTlkMWRkYTE5Yjg3NjQwYjA2NzRjYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJT
ZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0yMzEsMTMgKzIzMiwxMyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFn
ZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIH0KICNlbmRpZgogCi12b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkKK3ZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBPcHRpb25hbDxzaXplX3Q+KQogewogICAgIHJl
YWRGcm9tQ2xpcGJvYXJkKCk7CiAgICAgdGV4dC50ZXh0ID0gbV9zZWxlY3Rpb25EYXRhLT50ZXh0
KCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
ciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFs
PHNpemVfdD4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KaW5kZXggZTFjZTJmMzRiNWMxNGJhMjg5NzdiOGI4MWU3ZDZkMmNjNjJiODQ2OS4u
ZjYyNzNmMGFlN2IzYTZhMmYwOTUwOGQxNDMwNGZiYjBiYWRjOTFiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE1MCwxOCArMTUwLDIwIEBA
IGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCit2b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgT3B0aW9uYWw8c2l6
ZV90PiBpdGVtSW5kZXgpCiB7CisgICAgYXV0byBpdGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4
LnZhbHVlT3IoMCk7CisKICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKLSAgICB0ZXh0LnRleHQgPSBz
dHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVVSTCwgbV9wYXN0ZWJv
YXJkTmFtZSk7CisgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleFRvUXVlcnksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUpOwogICAg
IGlmICghdGV4dC50ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICB0ZXh0LmlzVVJMID0gdHJ1ZTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCgwLCBrVVRUeXBlUGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaXRl
bUluZGV4VG9RdWVyeSwga1VUVHlwZVBsYWluVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
aWYgKHRleHQudGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXhUb1F1ZXJ5LCBrVVRUeXBlVGV4dCwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAKICAgICB0
ZXh0LmlzVVJMID0gZmFsc2U7CiB9CkBAIC0yNzYsMTcgKzI3OCwxNyBAQCBzdGF0aWMgYm9vbCBw
cmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKGNvbnN0IFBhc3RlYm9hcmRJdGVtSW5mbyYg
aW5mbykKICAgICByZXR1cm4gaW5mby5jYW5CZVRyZWF0ZWRBc0F0dGFjaG1lbnRPckZpbGUoKSB8
fCBVVFR5cGVDb25mb3Jtc1RvKGNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBrVVRUeXBlVkNhcmQpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRp
bmdQb2xpY3kgcG9saWN5KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwgT3B0aW9u
YWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7CiAgICAgcmVhZGVyLmNvbnRlbnRPcmlnaW4gPSByZWFk
T3JpZ2luKCk7CiAgICAgaWYgKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKSB7Ci0gICAgICAgIHJl
YWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhyZWFkZXIsIHBvbGljeSk7CisgICAgICAgIHJlYWRS
ZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhyZWFkZXIsIHBvbGljeSwgaXRlbUluZGV4KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAq
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCi0gICAgaW50IG51
bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAgaWYgKCFudW1iZXJPZkl0ZW1z
KQogICAgICAgICByZXR1cm47CkBAIC0zMDAsNyArMzAyLDEwIEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljCiAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9IGZhbHNlOwogI2VuZGlmCiAKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mSXRlbXM7IGkrKykgeworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtczsgaSsrKSB7CisgICAgICAgIGlmIChpdGVtSW5k
ZXggJiYgaSAhPSAqaXRlbUluZGV4KQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAg
YXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICBpZiAo
Y2FuUmVhZEF0dGFjaG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZv
KSkgewpAQCAtMzM2LDExICszNDEsMTQgQEAgYm9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZp
ZGVsaXRpZXMoKSBjb25zdAogICAgIHJldHVybiBtX3Bhc3RlYm9hcmROYW1lID09ICJkYXRhIGlu
dGVyYWN0aW9uIHBhc3RlYm9hcmQiOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0
aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3kpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0
aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQog
ewogICAgIEFTU0VSVChyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSk7CiAgICAgYXV0byYgc3RyYXRl
Z3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogICAgIGZv
ciAoTlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsgaW5kZXggPCBudW1iZXJPZkl0ZW1z
OyArK2luZGV4KSB7CisgICAgICAgIGlmIChpdGVtSW5kZXggJiYgaW5kZXggIT0gKml0ZW1JbmRl
eCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIGF1dG8gYXR0YWNobWVudEZpbGVQ
YXRoID0gaW5mby5wYXRoRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCmluZGV4IDM2OGY5
MzdiOTM2ZTdkMDdlZmE5ZWE5NGUwMmU4ZDQ1YzBiZjE1OWIuLjdkNzgwMDk2MmQyNTZmZDk2ODg2
ZDkxMGM5YjE2OGE2ZjdlMGQ2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk0LDEyICs5NSwxMiBAQCB2b2lkIFBhc3RlYm9h
cmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiB7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRQbGFpblRleHQmIHRleHQsIE9wdGlvbmFsPHNpemVfdD4pCiB7CiAgICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSk7CiB9CiAK
LXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNv
bnRlbnRSZWFkaW5nUG9saWN5KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4p
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9EcmFnRGF0YU1hYy5tbQppbmRleCA2NGU0ODk0MzkzMTMyZmQzMzE2NjY0YTE4Y2I5N2M1ZDE3
OGFhMjMwLi5hYTNiMDNiMWEyZDg0MGY4OGM5NWMyODVjYmJjNjZkZjkxNWI0OTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yMzcsNiArMjM3LDcg
QEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBv
c2UgcHVycG9zZSkgY29uc3QKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICByZXR1cm4g
dHlwZXMuY29udGFpbnMoU3RyaW5nKFdlYkFyY2hpdmVQYm9hcmRUeXBlKSkKICAgICAgICAgfHwg
dHlwZXMuY29udGFpbnMoaHRtbFBhc3RlYm9hcmRUeXBlKCkpCisgICAgICAgIHx8IHR5cGVzLmNv
bnRhaW5zKFN0cmluZyhrVVRUeXBlV2ViQXJjaGl2ZSkpCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
ICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5
cGUoKSkpCiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggYzFlY2VmMTRjYWNjNzFlN2M2NGY2OTA0NjFjM2I5MDE1MTljZmQ4
ZS4uYTNlNGIyOWI2MjU4ZjdkOWRhYTk1MjY4NTU1OGNjZDRjYTQzOTA2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEyOSw4ICsxMjksMTAg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKIAogICAgIGlmIChjb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlKQogICAgICAgICB0
eXBlcy5hcHBlbmQoV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUpOwotICAgIGlmIChjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQpCisgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdCkgewogICAgICAgICB0eXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOworICAg
ICAgICB0eXBlcy5hcHBlbmQoa1VUVHlwZVdlYkFyY2hpdmUpOworICAgIH0KICAgICBpZiAoY29u
dGVudC5kYXRhSW5SVEZERm9ybWF0KQogICAgICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKGxlZ2Fj
eVJURkRQYXN0ZWJvYXJkVHlwZSgpKSk7CiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
KQpAQCAtMTQ0LDEzICsxNDYsMTggQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0
ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bh
c3RlYm9hcmROYW1lKTsKIAorICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGNvZGUgc2hvdWxk
IGJlIHJlZmFjdG9yZWQsIHN1Y2ggdGhhdCBpdCBvbmx5IHJlcXVpcmVzIGEgc2luZ2xlIGNhbGwg
b3V0IHRvIHRoZSBjbGllbnQgbGF5ZXIuCisgICAgLy8gSW4gV2ViS2l0MiwgdGhpcyBjdXJyZW50
bHkgcmVzdWx0cyBpbiBtYW55IHVubmVjZXNzYXJ5IHN5bmNocm9ub3VzIHJvdW5kLXRyaXAgSVBD
IG1lc3NhZ2VzLgorCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNv
bnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0g
Y29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dEJ1ZmZlckZvclR5cGUoY29udGVudC5jbGllbnREYXRhW2ldLmdldCgpLCBjb250ZW50LmNsaWVu
dFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBpZiAoY29udGVudC5jYW5TbWFydENv
cHlPckRlbGV0ZSkKICAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShudWxscHRyLCBXZWJTbWFy
dFBhc3RlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgaWYgKGNvbnRlbnQuZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdCkKKyAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9y
bWF0KSB7CiAgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5XZWJBcmNo
aXZlRm9ybWF0LmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9y
bWF0LmdldCgpLCBrVVRUeXBlV2ViQXJjaGl2ZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgfQog
ICAgIGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCiAgICAgICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZv
clR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBsZWdhY3lSVEZEUGFzdGVib2Fy
ZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9y
bWF0KQpAQCAtMjU4LDEzICsyNjUsMTcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1J
TUVUeXBlKSk7CiAKICAgICBhdXRvIHR5cGVzID0gd3JpdGFibGVUeXBlc0ZvckltYWdlKCk7Ci0g
ICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KQorICAgIGlmIChw
YXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICB0eXBlcy5h
cHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOworICAgICAgICB0eXBlcy5hcHBlbmQoa1VUVHlw
ZVdlYkFyY2hpdmUpOworICAgIH0KIAogICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5
cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkSW1hZ2UudXJsKTsKICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlRGF0YSkucHRyKCks
IGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICBpZiAo
cGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpCi0gICAgICAgIG1fY2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1
ZmZlckZvclR5cGUocGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCks
IFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBpZiAoYXV0byBh
cmNoaXZlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7Cisg
ICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURhdGEuZ2V0KCksIFdlYkFyY2hpdmVQ
Ym9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlw
ZShhcmNoaXZlRGF0YS5nZXQoKSwga1VUVHlwZVdlYkFyY2hpdmUsIG1fcGFzdGVib2FyZE5hbWUp
OworICAgIH0KICAgICB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChmaWxlV3JhcHBl
cihwYXN0ZWJvYXJkSW1hZ2UpLCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KTsKIH0K
IApAQCAtMjkzLDI4ICszMDQsNTUgQEAgc3RhdGljIFN0cmluZyBqb2luUGF0aG5hbWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQp
CitzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJp
bmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3km
IHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBhc3RlYm9h
cmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpOworICAgIGlmIChpdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBzdHJhdGVneS5y
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUp
OworICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1l
KTsKK30KKworc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4
LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQoreworICAgIGlmIChpdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUpOwor
ICAgIHJldHVybiBzdHJhdGVneS5idWZmZXJGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lKTsK
K30KKwordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIE9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4KQoreworICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIAogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzOwotICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICBpZiAoaXRlbUluZGV4KQorICAgICAgICB0eXBlcyA9IHN0cmF0ZWd5LmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoKml0ZW1JbmRleCAsIG1fcGFzdGVib2FyZE5hbWUpLnBsYXRmb3Jt
VHlwZXNCeUZpZGVsaXR5OworICAgIGVsc2UKKyAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlw
ZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U1Bhc3RlYm9hcmRUeXBlU3RyaW5nKSkpIHsKLSAgICAgICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3ku
c3RyaW5nRm9yVHlwZShOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFz
dGVib2FyZFR5cGVTdHJpbmcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUp
OwogICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCkpKSkgewotICAgICAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKGxlZ2Fj
eVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICB0ZXh0
LnRleHQgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
ICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkp
IHsKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBzdHJhdGVneS5idWZm
ZXJGb3JUeXBlKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6TlVMTF0pKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEg
PSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBl
KCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1
dGVkU3RyaW5nIHN0cmluZ107CisgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVJURkQpKSkg
eworICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KE5TUGFzdGVib2FyZFR5cGVSVEZELCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0
ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRl
eHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjMsOCArMzYx
LDE4IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQog
ICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGUGFzdGVib2Fy
ZFR5cGUoKSkpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gc3Ry
YXRlZ3kuYnVmZmVyRm9yVHlwZShsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9h
cmROYW1lKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpOVUxMXSkpIHsKKyAgICAgICAgaWYgKGF1
dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZQYXN0ZWJv
YXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CisgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZh
bHNlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVJU
RikpKSB7CisgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVt
SW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURiwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJv
YXJkTmFtZSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpkYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAg
ICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAg
IHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDcsMjEg
KzM5NSwzMSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4
dCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhlIGNvZGUgYWJvdmUgbG9va3MgYXQgdGhlIHR5
cGVzIHZlY3RvciBmaXJzdCwgYnV0IHRoaXMganVzdCBnZXRzIHRoZSBzdHJpbmcgd2l0aG91dCBj
aGVja2luZy4gV2h5IHRoZSBkaWZmZXJlbmNlPwotICAgIHRleHQudGV4dCA9IHN0cmF0ZWd5LnN0
cmluZ0ZvclR5cGUobGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgdGV4dC50ZXh0ID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVVS
TFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUp
OwogICAgIHRleHQuaXNVUkwgPSAhdGV4dC50ZXh0LmlzTnVsbCgpOwogfQogCi12b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVu
dFJlYWRpbmdQb2xpY3kgcG9saWN5KQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRX
ZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSwg
T3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7Ci0gICAgUGFzdGVib2FyZFN0cmF0ZWd5JiBz
dHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7Cisg
ICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgc3RyYXRlZ3kuZ2V0VHlw
ZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIGlmIChpdGVtSW5kZXgpCisgICAgICAg
IHR5cGVzID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgqaXRlbUluZGV4ICwg
bV9wYXN0ZWJvYXJkTmFtZSkucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7CisgICAgZWxzZQorICAg
ICAgICBzdHJhdGVneS5nZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CiAKICAgICBy
ZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRPcmlnaW4oKTsKIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpIHsKLSAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0g
c3RyYXRlZ3kuYnVmZmVyRm9yVHlwZShXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJk
TmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVk
SXRlbUluZGV4KFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bh
c3RlYm9hcmROYW1lKSkgeworICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSB8fCByZWFkZXIucmVhZFdlYkFyY2hpdmUoKmJ1ZmZlcikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhrVVRUeXBlV2ViQXJjaGl2ZSkpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChrVVRUeXBlV2ViQXJjaGl2ZSwgaXRlbUluZGV4
LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYW5n
ZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRXZWJBcmNoaXZlKCpidWZmZXIp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzgwLDIwICs0MzgsNDAg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFk
ZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFp
bnMoU3RyaW5nKGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgU3RyaW5n
IHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBl
KCksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBTdHJpbmcgc3RyaW5nID0gcmVhZFN0cmlu
Z0F0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5k
ZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgaWYgKG1fY2hhbmdlQ291
bnQgIT0gY2hhbmdlQ291bnQoKSB8fCAoIXN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZEhU
TUwoc3RyaW5nKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRUeXBlSFRNTCkpKSB7CisgICAgICAgIFN0cmlu
ZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlw
ZUhUTUwsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8ICghc3RyaW5nLmlzTnVsbCgpICYm
IHJlYWRlci5yZWFkSFRNTChzdHJpbmcpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgp
KSkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5
LmJ1ZmZlckZvclR5cGUobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5h
bWUpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJp
bmcoTlNQYXN0ZWJvYXJkVHlwZVJURkQpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoTlNQYXN0ZWJvYXJkVHlwZVJURkQsIGl0ZW1J
bmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CiAgICAgICAgICAgICBpZiAobV9j
aGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCkpKSkgewotICAgICAg
ICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kuYnVmZmVyRm9yVHlw
ZShsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAg
ICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5
UlRGUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFt
ZSkpIHsKKyAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwg
cmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1Bhc3RlYm9hcmRU
eXBlUlRGKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlckF0UHJlZmVy
cmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVSVEYsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1f
cGFzdGVib2FyZE5hbWUpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFu
Z2VDb3VudCgpIHx8IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDAzLDI4ICs0ODEsNDIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5n
UG9saWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhs
ZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSkpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGxlZ2FjeVRJRkZQYXN0ZWJv
YXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIg
PSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBl
KCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgICAg
ICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2Uo
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS90aWZmIl9zKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKE5TUGFzdGVib2FyZFR5cGVUSUZGKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KE5TUGFzdGVib2FyZFR5cGVUSUZGLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgewogICAgICAgICAgICAgaWYgKG1f
Y2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpLCAiaW1hZ2UvdGlmZiJfcykpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdh
Y3lQREZQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUobGVnYWN5UERGUGFzdGVib2FyZFR5
cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVBERlBhc3RlYm9hcmRUeXBlKCksIGl0
ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUpKSB7CisgICAgICAgICAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCksICJhcHBsaWNhdGlvbi9wZGYiX3MpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJp
bmcoTlNQYXN0ZWJvYXJkVHlwZVBERikpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChOU1Bhc3RlYm9hcmRUeXBlUERGLCBpdGVtSW5k
ZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lKSkgewogICAgICAgICAgICAgaWYgKG1fY2hh
bmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpLCAiYXBwbGljYXRpb24vcGRmIl9zKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGtV
VFR5cGVQTkcpKSkgewotICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kuYnVmZmVyRm9yVHlwZShrVVRUeXBlUE5HLCBtX3Bhc3RlYm9hcmROYW1lKSkgewor
ICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgo
a1VUVHlwZVBORywgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKICAg
ICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJl
YWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgImltYWdlL3BuZyJfcykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRh
aW5zKFN0cmluZyhrVVRUeXBlSlBFRykpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGtVVFR5cGVKUEVHLCBtX3Bhc3Rl
Ym9hcmROYW1lKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZWFkQnVmZmVyQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoa1VUVHlwZUpQRUcsIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVi
b2FyZE5hbWUpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3Vu
dCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksICJpbWFnZS9q
cGVnIl9zKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQzMiwxMyAr
NTI0LDEzIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
ciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAKICAgICBpZiAodHlwZXMuY29udGFp
bnMoU3RyaW5nKGxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBVUkwgdXJs
ID0gc3RyYXRlZ3kudXJsKG1fcGFzdGVib2FyZE5hbWUpOwotICAgICAgICBTdHJpbmcgdGl0bGUg
PSBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRl
bUluZGV4KFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8
fCAoIXVybC5pc051bGwoKSAmJiByZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKSkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdh
Y3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0
cmF0ZWd5LnN0cmluZ0ZvclR5cGUobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0
ZWJvYXJkTmFtZSk7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgobGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJh
dGVneSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQo
c3RyaW5nKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggNzE4MTI2
YTRlNGMyMzdkZjEyZmU5NWI0NmM2NGViMjI5Y2UyZDI0Yi4uZjVlNGM0MDc4OTg0MTZhMDVkMjRl
YWYxYzk0ZjU0ODVjNmEzY2NlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUo
Y29uc3QgU3RyaW5nJiBwbGEKICAgICBpZiAocGxhdGZvcm1UeXBlID09IFN0cmluZyhsZWdhY3lV
UkxQYXN0ZWJvYXJkVHlwZSgpKSkKICAgICAgICAgcmV0dXJuICJ0ZXh0L3VyaS1saXN0Il9zOwog
Ci0gICAgaWYgKHBsYXRmb3JtVHlwZSA9PSBTdHJpbmcobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBl
KCkpIHx8IHBsYXRmb3JtVHlwZSA9PSBTdHJpbmcoV2ViQXJjaGl2ZVBib2FyZFR5cGUpCisgICAg
aWYgKHBsYXRmb3JtVHlwZSA9PSBTdHJpbmcobGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCkpIHx8
IHBsYXRmb3JtVHlwZSA9PSBTdHJpbmcoV2ViQXJjaGl2ZVBib2FyZFR5cGUpIHx8IHBsYXRmb3Jt
VHlwZSA9PSBTdHJpbmcoa1VUVHlwZVdlYkFyY2hpdmUpCiAgICAgICAgIHx8IHBsYXRmb3JtVHlw
ZSA9PSBTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpIHx8IHBsYXRmb3JtVHlwZSA9
PSBTdHJpbmcobGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSkpCiAgICAgICAgIHJldHVybiAidGV4
dC9odG1sIl9zOwogCkBAIC00MjAsMTEgKzQyMCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYK
ICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHBsYXRmb3Jt
VHlwZSA9IG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1JTUVUeXBlKHR5cGUpOwotICAg
IGlmICghcGxhdGZvcm1UeXBlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChO
U0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTpwbGF0Zm9ybVR5cGVdKSB7CisgICAgaWYg
KE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8g
bnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CkBAIC00MzgsMTEgKzQzNCw3IEBAIFN0cmlu
ZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgYXV0byBwbGF0Zm9ybVR5cGUgPSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZvcldlYlNhZmVNSU1F
VHlwZSh0eXBlKTsKLSAgICBpZiAoIXBsYXRmb3JtVHlwZSkKLSAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgIHJldHVybiBbaXRlbSBzdHJpbmdGb3JUeXBlOnBsYXRmb3JtVHlwZV07CisgICAgcmV0
dXJuIFtpdGVtIHN0cmluZ0ZvclR5cGU6dHlwZV07CiB9CiAKIFVSTCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGQyNjFjMjE0MjJk
YjVmMmNkM2RmYmFiMDkwZGI3NzYyNWVmMGFlOGYuLjQ1YTM3Y2FjODNjYjI1YWUzZjFiOTRkYzEx
YzEwZjBlMjI2MDMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
ICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC03ODgsNyArNzg5LDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogICAg
IHJldHVybiA6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlKFdlYlNtYXJ0UGFzdGVGb3JtYXQp
OwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkK
K3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBPcHRpb25h
bDxzaXplX3Q+KQogewogICAgIGlmICg6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlKENGX1VO
SUNPREVURVhUKSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhB
TkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVU5JQ09ERVRFWFQpKSB7CkBAIC0x
MDczLDcgKzEwNzQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50JikKIHsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpCit2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eSwgT3B0aW9uYWw8c2l6ZV90PikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Q
YXN0ZWJvYXJkVHlwZXMubW0KaW5kZXggNzEyZjlkNzg1YTM0MjIzYTJmYTU0MWJhZjc4ZTIwYjdh
MzBkYTgxZi4uNzAxMzI4MWVjMzRiYmY0YTU4ZTAyMzBmNGU4ZjQ0OWNmNDlkNDQzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCkBAIC00Niw3ICs0Niw3
IEBAIHN0YXRpYyBpbmxpbmUgTlNBcnJheSAqcmV0YWluKE5TQXJyYXkgKmFycmF5KQogICAgIAog
TlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkKIHsKLSAgICBzdGF0aWMgTlNB
cnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJBcmNoaXZl
UGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0
ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAorICAgIHN0
YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOldl
YkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2
ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZp
bGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAogICAgICAgICBXZWJDb3Jl
OjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJk
VHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HLCBuaWxdKTsKICAgICByZXR1
cm4gdHlwZXM7CiB9CkBAIC03MSw3ICs3MSw3IEBAIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6
Zm9ySW1hZ2VzV2l0aEFyY2hpdmUoKQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvclNl
bGVjdGlvbigpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6V2ViQXJjaGl2ZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVJU
RkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKKyAgICBzdGF0aWMg
TlNBcnJheSAqdHlwZXMgPSByZXRhaW4oW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdl
YkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0
ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBuaWxd
KTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDc1ZTE5YWVhMWJjOThjNjQ0MmM5NTMyYjk3MzAy
ZDNjYTQ4YjM0OTguLjY1NzVkYTY1OWRkNjFmOTMzMmVhMmM1NGU5ZjhkZTM3ZTE3ZDEzOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00MjE4
LDggKzQyMTgsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
V2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBbcGFzdGVib2FyZCBk
ZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6bV92aWV3LmdldEF1dG9yZWxlYXNlZCgpXTsK
ICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwg
dmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKLSAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikKLSAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTphcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOlBhc3RlYm9hcmRUeXBlczo6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOworICAgIGlm
IChhcmNoaXZlQnVmZmVyKSB7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgp
IGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOworICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOlBhc3RlYm9hcmRUeXBl
czo6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOworICAgIH0KIAogICAgIG1fcHJvbWlzZWRJbWFnZSA9
IGltYWdlOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDY5ZWEzNDk1YmZkNTgyNTJmYjc4YTcwNzg3NTNlYzViYTkwZDZkZDMuLmU3OGM4NDFk
YzUyYmJlMTI2ZmMyYTkwOGQ1NDZhNTFjMTA0MzIzYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMC0xOCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJv
YXJkIEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZDo6cmVhZCgpIHRvIHRha2UgYW4gb3B0aW9uYWwg
aXRlbSBpbmRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgY291cGxlIG9mIG5ldyBBUEkgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIHdlYiBh
cmNoaXZlIHR5cGUgaWRlbnRpZmllciAoImNvbS5hcHBsZS53ZWJhcmNoaXZlIikgaXMgKDEpCisg
ICAgICAgIHdyaXR0ZW4gdG8gdGhlIHBhc3RlYm9hcmQgd2hlbiBjb3B5aW5nIGEgcmljaCB0ZXh0
IHNlbGVjdGlvbiwgYW5kICgyKSBpcyByZWFkIHdoZW4gYXR0ZW1wdGluZyB0byBwYXN0ZSB3ZWIK
KyAgICAgICAgY29udGVudC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29weUhUTUwubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZVdlYkFyY2hpdmUubW06CisKIDIwMTktMTAtMTcgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NsaXBib2FyZCBBUEldIFN1cHBvcnQg
bmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCmluZGV4IDMxMmMwZDkyMTVhY2ZmN2FiZGE4NTY3
ODBmNjExODVjZWQ5N2YwODQuLjQxM2VlM2RjMzlmNmZlZGJlZjViMzdkNzY5N2JkNzc0YjgzOGM5
YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29w
eUhUTUwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5
SFRNTC5tbQpAQCAtODcsNCArODcsMjYgQEAgVEVTVChDb3B5SFRNTCwgU2FuaXRpemVzKQogICAg
IEVYUEVDVF9GQUxTRShodG1sSW5OYXRpdmVQYXN0ZWJvYXJkLmNvbnRhaW5zKCJkYW5nZXJvdXND
b2RlIikpOwogfQogCisjaWYgUExBVEZPUk0oTUFDKQorCitURVNUKENvcHlIVE1MLCBJdGVtVHlw
ZXNXaGVuQ29weWluZ1dlYkNvbnRlbnQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2Vi
Vmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8c3Ryb25nIHN0eWxlPSdjb2xvcjogcmdiKDI1NSwg
MCwgMCk7Jz5UaGlzIGlzIHNvbWUgdGV4dCB0byBjb3B5Ljwvc3Ryb25nPiJdOworICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZWxlY3RB
bGxDaGlsZHJlbihkb2N1bWVudC5ib2R5KSJdOworICAgIFt3ZWJWaWV3IGNvcHk6bmlsXTsKKyAg
ICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBOU0FycmF5
PE5TUGFzdGVib2FyZEl0ZW0gKj4gKml0ZW1zID0gTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJv
YXJkLnBhc3RlYm9hcmRJdGVtczsKKyAgICBFWFBFQ1RfRVEoMVUsIGl0ZW1zLmNvdW50KTsKKwor
ICAgIE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKnR5cGVzID0gaXRlbXMuZmlyc3RPYmplY3Qu
dHlwZXM7CisgICAgRVhQRUNUX1RSVUUoW3R5cGVzIGNvbnRhaW5zT2JqZWN0OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXSk7CisgICAgRVhQRUNUX1RSVUUoW3R5cGVzIGNv
bnRhaW5zT2JqZWN0OihfX2JyaWRnZSBOU1N0cmluZyAqKU5TUGFzdGVib2FyZFR5cGVSVEZdKTsK
KyAgICBFWFBFQ1RfVFJVRShbdHlwZXMgY29udGFpbnNPYmplY3Q6KF9fYnJpZGdlIE5TU3RyaW5n
ICopTlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10pOworICAgIEVYUEVDVF9UUlVFKFt0eXBlcyBjb250
YWluc09iamVjdDooX19icmlkZ2UgTlNTdHJpbmcgKilOU1Bhc3RlYm9hcmRUeXBlSFRNTF0pOwor
fQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3Rl
V2ViQXJjaGl2ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFz
dGVXZWJBcmNoaXZlLm1tCmluZGV4IDNmNWI2ZjFjNDcyZDdjOWUzNmM1MThjOGQ4NjQ1ZWMxMGJk
Y2U3ZDIuLmI3ODVmNWM0ZjJiZDcwMmEzMjViMzcwNTA0NmJlZTU5ODI2MzExOGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZl
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJB
cmNoaXZlLm1tCkBAIC0yNDAsNiArMjQwLDI4IEBAIFRFU1QoUGFzdGVXZWJBcmNoaXZlLCBTdHJp
cHNNU09MaXN0V2hlbk1pc3NpbmdNU09IVE1MRWxlbWVudCkKICAgICBFWFBFQ1RfV0tfU1RSRVEo
InJnYigyNTUsIDAsIDApIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdmb3JlQ29sb3InKSJdKTsKIH0KIAorVEVTVChQ
YXN0ZVdlYkFyY2hpdmUsIFdlYkFyY2hpdmVUeXBlSWRlbnRpZmllcikKK3sKKyAgICBOU1VSTCAq
dXJsID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vL3NvbWUtZmlsZS5odG1sIl07Cisg
ICAgTlNTdHJpbmcgKm1hcmt1cCA9IEAiPHN0cm9uZyBzdHlsZT0nY29sb3I6IHJnYigyNTUsIDAs
IDApOyc+VGhpcyBpcyBzb21lIHRleHQgdG8gY29weS48L3N0cm9uZz4iOworCisgICAgYXV0byBt
YWluUmVzb3VyY2UgPSBhZG9wdE5TKFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpb
bWFya3VwIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBVUkw6dXJsIE1J
TUVUeXBlOkAidGV4dC9odG1sIiB0ZXh0RW5jb2RpbmdOYW1lOkAidXRmLTgiIGZyYW1lTmFtZTpu
aWxdKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtbV2ViQXJjaGl2ZSBhbGxvY10gaW5p
dFdpdGhNYWluUmVzb3VyY2U6bWFpblJlc291cmNlLmdldCgpIHN1YnJlc291cmNlczpuaWwgc3Vi
ZnJhbWVBcmNoaXZlczpuaWxdKTsKKworICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOworICAgIFtwYXN0ZWJvYXJkIGRlY2xhcmVU
eXBlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVdlYkFyY2hpdmVdIG93bmVyOm5pbF07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbYXJjaGl2
ZSBkYXRhXSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsK
KworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkKCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAicGFzdGUtcnRmZCJdOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIltcInRleHQvaHRtbFwiXSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJKU09OLnN0cmluZ2lmeShjbGlwYm9hcmREYXRhLnR5cGVzKSJdKTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2NtZW50LmJvZHkuaW5uZXJIVE1MID0gY2xp
cGJvYXJkRGF0YS52YWx1ZXNbMF0iIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJUaGlzIGlzIHNvbWUgdGV4dCB0byBjb3B5LiIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHJvbmcnKS50
ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYigyNTUsIDAsIDApIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQucXVlcnlTZWxlY3Rvcignc3Ryb25nJykpLmNvbG9yIl0pOworfQorCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQogCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>