<?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>232400</bug_id>
          
          <creation_ts>2021-10-27 13:38:45 -0700</creation_ts>
          <short_desc>Remove QuickTimePluginReplacement and YouTubePluginReplacement</short_desc>
          <delta_ts>2025-03-05 05:20:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=289141</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=237182</see_also>
          <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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>karlcow</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809406</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-27 13:38:45 -0700</bug_when>
    <thetext>Remove QuickTimePluginReplacement and YouTubePluginReplacement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809407</commentid>
    <comment_count>1</comment_count>
      <attachid>442629</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-27 13:39:31 -0700</bug_when>
    <thetext>Created attachment 442629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809415</commentid>
    <comment_count>2</comment_count>
      <attachid>442632</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-27 14:02:48 -0700</bug_when>
    <thetext>Created attachment 442632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809570</commentid>
    <comment_count>3</comment_count>
      <attachid>442674</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-27 22:12:11 -0700</bug_when>
    <thetext>Created attachment 442674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809716</commentid>
    <comment_count>4</comment_count>
      <attachid>442712</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-28 09:54:06 -0700</bug_when>
    <thetext>Created attachment 442712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810170</commentid>
    <comment_count>5</comment_count>
      <attachid>442712</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-29 11:31:31 -0700</bug_when>
    <thetext>Comment on attachment 442712
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810235</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-29 14:10:56 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 442712 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811638</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-03 13:39:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84989627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811733</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-03 18:24:15 -0700</bug_when>
    <thetext>http://trac.webkit.org/r285252</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846025</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-25 08:33:44 -0800</bug_when>
    <thetext>Partially reverting in https://bugs.webkit.org/show_bug.cgi?id=237182</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442629</attachid>
            <date>2021-10-27 13:39:31 -0700</date>
            <delta_ts>2021-10-27 14:06:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232400-20211027133930.patch</filename>
            <type>text/plain</type>
            <size>98989</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FkNjY4YzY0OGQyNTY4
MjA5NjQ4NjA0YjIzZjJmNmIxMjUzMDE1NS4uZDJiNGQ2Yjg1OTAyNzliOGFlMDBlNzk4ZDZmNDg2
ZDQ3NzEyMmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3Zl
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IGFuZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXkgd2Vy
ZSBkaXNhYmxlZCBhdCBydW50aW1lIGluIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNzU5MTEvd2Via2l0CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1BsdWdp
blJlcGxhY2VtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW06IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpyZXF1ZXN0T2JqZWN0KToKKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RyYXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpzY3JpcHRPYmplY3RGb3JQbHVnaW5S
ZXBsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpblJlcGxhY2VtZW50
U2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TaGFkb3dQc2V1
ZG9JZHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRQbHVn
aW5SZXBsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvU2hhZG93UHNl
dWRvSWRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93
RWxlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKwogMjAy
MS0xMC0yNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbR1BVIFByb2Nlc3NdIGBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmdldENUTWAgc2hvdWxkIGlu
Y2x1ZGUgdGhlIGRldmljZSBzY2FsZSBmYWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IGRmZmZlMDEzMGM0NzExZTExNmU5MDU3ZTA4OWVjYmEzZjMzMDFkMTQuLmIxYTQ0ZWFlY2M4ZjAw
ZDNhN2Y1N2Y2NDY1YmE4MTI3NDEwZDQzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDIxLTEwLTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
IGFuZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rp
b25QYXJhbWV0ZXJzLmpzOgorCiAyMDIxLTEwLTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBbY3NzLXZhbHVlcy00XSBTdXBwb3J0IHNtYWxsIChzdiopLCBs
YXJnZSAobHYqKSBhbmQgZHluYW1pYyAoZHYqKSB2aWV3cG9ydCB1bml0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYTA5YzI5OGI4ZGVi
NTQyMGFhZTc0OTZhYWFiZTYyODQ0MDZiYjMzOS4uNGIzYzBkYWUzYTIyNzA1NzdkNGY1ZTJjZGYx
OWJjZTA0ZDgwYmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CkBAIC00MjIsOSArNDIyLDYgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy9w
aWN0dXJlaW5waWN0dXJlL0RvY3VtZW50T3JTaGFkb3dSb290K1BpY3R1cmVJblBpY3R1cmUuaWQK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBp
Y3R1cmVFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9I
VE1MVmlkZW9FbGVtZW50K1BpY3R1cmVJblBpY3R1cmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3BpY3R1cmVpbnBpY3R1cmUvUGljdHVyZUluUGljdHVyZVdpbmRvdy5pZGwKLSQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MKLSQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5p
ZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5qcwogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRW5jcnlwdGlvbktl
eU5hbWUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hFdmVudC5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50SW5pdC5pZGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggODIy
ZmM4NWExMTZlYWU2Y2E1MDRiNmI1MTZlMWVhMjY4ODIwNDBjMS4uODBhY2U3OGQyZTk1MzM0OGI4
NTg2Njg0NzM1MmQ3NWEyZjE5YTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2MjksOCArMTYyOSw2IEBAICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUHVzaFN1YnNjcmlwdGlvbk9wdGlv
bnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1B1
c2hTdWJzY3JpcHRpb25PcHRpb25zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQdXNoU3Vic2NyaXB0aW9uT3B0
aW9uc0luaXQuaAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENBbnN3ZXJPcHRp
b25zLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNS
VENBbnN3ZXJPcHRpb25zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDQ2VydGlmaWNhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCBkOTI0YWJlOWE3N2Y3NzlkYzIyNTZlOTNlZmQzMzIwMDRmNTU2OThlLi4yNGFhOTY0NjU2
MWY0ZTZiNDI2NmJiZDI3YzQ4MWU1MDMyYjQzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTM1Miw3ICszNTIsNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVv
RWxlbWVudCtQaWN0dXJlSW5QaWN0dXJlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvUGljdHVyZUluUGljdHVyZVdpbmRvdy5pZGwgXAotICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hFbmNyeXB0aW9uS2V5TmFtZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50SW5pdC5pZGwgXApAQCAtMTYxOCw3ICsx
NjE3LDYgQEAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3Mv
c3ZnLmNzcyBcCiAgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzIFwK
ICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L21ldGVyRWxlbWVudFNoYWRvdy5jc3MgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNz
cyBcCiAgICAgTW9kZXJuTWVkaWFDb250cm9scy5jc3MgXAogICAgICQoUE9TU0lCTEVfQURESVRJ
T05BTF9VU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgXAogIwpAQCAtMTcyNyw3ICsxNzI1LDYgQEAg
TW9kZXJuTWVkaWFDb250cm9scy5qcyA6ICQoTU9ERVJOX01FRElBX0NPTlRST0xTX1NDUklQVFMp
CiAjIHVzZXIgYWdlbnQgc2NyaXB0cwogCiBVU0VSX0FHRU5UX1NDUklQVFMgPSBcCi0gICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuanMgXAog
ICAgIE1vZGVybk1lZGlhQ29udHJvbHMuanMgXAogIwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwOWQyODVkMTVkZDc4YmZkNDIzZDE3YWIyNGFjNWNkZTc2NmVjYzU3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJSZW5kZXJQdHIuaCIKLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci1jbGFzcyBKU09iamVjdDsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKLWNsYXNzIFJlbmRlckVsZW1lbnQ7Ci1jbGFzcyBSZW5k
ZXJTdHlsZTsKLWNsYXNzIFJlbmRlclRyZWVQb3NpdGlvbjsKLWNsYXNzIFNldHRpbmdzOwotY2xh
c3MgU2hhZG93Um9vdDsKLQotY2xhc3MgUGx1Z2luUmVwbGFjZW1lbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxQbHVnaW5SZXBsYWNlbWVudD4gewotcHVibGljOgotICAgIHZpcnR1YWwgflBsdWdpblJl
cGxhY2VtZW50KCkgPSBkZWZhdWx0OwotCi0gICAgc3RydWN0IEluc3RhbGxSZXN1bHQgewotICAg
ICAgICBib29sIHN1Y2Nlc3M7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIEpTQzo6SlNW
YWx1ZSBzY3JpcHRPYmplY3QgeyB9OwotI2VuZGlmCi0gICAgfTsKLQotICAgIHZpcnR1YWwgSW5z
dGFsbFJlc3VsdCBpbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYpID0gMDsKLQotICAgIHZp
cnR1YWwgYm9vbCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1M
UGx1Z0luRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
ID0gMDsKLX07Ci0KLXR5cGVkZWYgUmVmPFBsdWdpblJlcGxhY2VtZW50PiAoKkNyZWF0ZVBsdWdp
blJlcGxhY2VtZW50KShIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotdHlwZWRlZiBi
b29sICgqUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYpOwotdHlw
ZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c0ZpbGVFeHRlbnNpb24pKGNvbnN0
IFN0cmluZyYpOwotdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1VSTCko
Y29uc3QgVVJMJik7Ci10eXBlZGVmIGJvb2wgKCpQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWRGb3JT
ZXR0aW5ncykoY29uc3QgU2V0dGluZ3MmKTsKLQotY2xhc3MgUmVwbGFjZW1lbnRQbHVnaW4gewot
cHVibGljOgotICAgIFJlcGxhY2VtZW50UGx1Z2luKENyZWF0ZVBsdWdpblJlcGxhY2VtZW50IGNv
bnN0cnVjdG9yLCBQbHVnaW5SZXBsYWNlbWVudFN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUsIFBs
dWdpblJlcGxhY2VtZW50U3VwcG9ydHNGaWxlRXh0ZW5zaW9uIHN1cHBvcnRzRmlsZUV4dGVuc2lv
biwgUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1VSTCBzdXBwb3J0c1VSTCwgUGx1Z2luUmVwbGFj
ZW1lbnRFbmFibGVkRm9yU2V0dGluZ3MgaXNFbmFibGVkQnlTZXR0aW5ncykKLSAgICAgICAgOiBt
X2NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKQotICAgICAgICAsIG1fc3VwcG9ydHNUeXBlKHN1cHBv
cnRzVHlwZSkKLSAgICAgICAgLCBtX3N1cHBvcnRzRmlsZUV4dGVuc2lvbihzdXBwb3J0c0ZpbGVF
eHRlbnNpb24pCi0gICAgICAgICwgbV9zdXBwb3J0c1VSTChzdXBwb3J0c1VSTCkKLSAgICAgICAg
LCBtX2lzRW5hYmxlZEJ5U2V0dGluZ3MoaXNFbmFibGVkQnlTZXR0aW5ncykKLSAgICB7Ci0gICAg
fQotCi0gICAgZXhwbGljaXQgUmVwbGFjZW1lbnRQbHVnaW4oY29uc3QgUmVwbGFjZW1lbnRQbHVn
aW4mIG90aGVyKQotICAgICAgICA6IG1fY29uc3RydWN0b3Iob3RoZXIubV9jb25zdHJ1Y3RvcikK
LSAgICAgICAgLCBtX3N1cHBvcnRzVHlwZShvdGhlci5tX3N1cHBvcnRzVHlwZSkKLSAgICAgICAg
LCBtX3N1cHBvcnRzRmlsZUV4dGVuc2lvbihvdGhlci5tX3N1cHBvcnRzRmlsZUV4dGVuc2lvbikK
LSAgICAgICAgLCBtX3N1cHBvcnRzVVJMKG90aGVyLm1fc3VwcG9ydHNVUkwpCi0gICAgICAgICwg
bV9pc0VuYWJsZWRCeVNldHRpbmdzKG90aGVyLm1faXNFbmFibGVkQnlTZXR0aW5ncykKLSAgICB7
Ci0gICAgfQotCi0gICAgUmVmPFBsdWdpblJlcGxhY2VtZW50PiBjcmVhdGUoSFRNTFBsdWdJbkVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0b3Io
ZWxlbWVudCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOyB9Ci0gICAgYm9vbCBzdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c1R5cGUo
bWltZVR5cGUpOyB9Ci0gICAgYm9vbCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpb24pIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGV4dGVu
c2lvbik7IH0KLSAgICBib29sIHN1cHBvcnRzVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRzVVJMKHVybCk7IH0KLSAgICBib29sIGlzRW5hYmxlZEJ5U2V0dGluZ3Mo
Y29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZEJ5U2V0
dGluZ3Moc2V0dGluZ3MpOyB9OwotCi1wcml2YXRlOgotICAgIENyZWF0ZVBsdWdpblJlcGxhY2Vt
ZW50IG1fY29uc3RydWN0b3I7Ci0gICAgUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1R5cGUgbV9z
dXBwb3J0c1R5cGU7Ci0gICAgUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c0ZpbGVFeHRlbnNpb24g
bV9zdXBwb3J0c0ZpbGVFeHRlbnNpb247Ci0gICAgUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1VS
TCBtX3N1cHBvcnRzVVJMOwotICAgIFBsdWdpblJlcGxhY2VtZW50RW5hYmxlZEZvclNldHRpbmdz
IG1faXNFbmFibGVkQnlTZXR0aW5nczsKLX07Ci0KLXR5cGVkZWYgdm9pZCAoKlBsdWdpblJlcGxh
Y2VtZW50UmVnaXN0cmFyKShjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYpOwotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuY3NzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIxOTc0N2Uz
ODQ2MjExMGExNTM1OGUxZjI1Yjg0YWJhMGYyZjgyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLWVtYmVkOjotd2Via2l0LXBsdWdp
bi1yZXBsYWNlbWVudCwKLW9iamVjdDo6LXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQKLXsKLSAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIHdp
ZHRoOiAxMDAlOwotICAgIGhlaWdodDogMTAwJTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMyMDBmMTU3YTExNjY3MDE1ZTU5NjllNzZj
NGJiNmFmOGU1NWUyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJQ
bHVnaW5SZXBsYWNlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NV3JhcHBlcldvcmxkOwotY2xhc3MgSFRNTFZpZGVvRWxl
bWVudDsKLQotY2xhc3MgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQgZmluYWwgOiBwdWJsaWMg
UGx1Z2luUmVwbGFjZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUGx1
Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1lbnRSZWdpc3RyYXIpOwotCi0gICAgdmlydHVh
bCB+UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoKTsKLQotICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBtb3ZpZVNpemUoKSBjb25zdDsKLSAgICB2b2lkIHBvc3RFdmVudChjb25zdCBTdHJpbmcmKTsK
LQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlh
RWxlbWVudC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50KEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgc3RhdGljIFJlZjxQbHVn
aW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0g
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNVUkwoY29uc3QgVVJMJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHN0YXRp
YyBib29sIGlzRW5hYmxlZEJ5U2V0dGluZ3MoY29uc3QgU2V0dGluZ3MmKTsKLQotICAgIEluc3Rh
bGxSZXN1bHQgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmKSBmaW5hbDsKLQotICAgIGJv
b2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgZmluYWwgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0K
LSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQ
bHVnSW5FbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
ZmluYWw7Ci0KLSAgICBib29sIGVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQoKTsKLSAg
ICBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQoKTsKLQotICAgIFdlYWtQdHI8SFRNTFBs
dWdJbkVsZW1lbnQ+IG1fcGFyZW50RWxlbWVudDsKLSAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVu
dD4gbV9tZWRpYUVsZW1lbnQ7Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbV9uYW1lczsKLSAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiBtX3ZhbHVlczsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWEwNDVmZjA2NjI3OGI5
MTVmNjg5MGFiYzcwYmQ0ZTUwZDIxMTg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLV0gaW50ZXJmYWNl
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsb25nIG1vdmllU2l6ZTsKLSAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBh
dHRyaWJ1dGUgYW55IHRpbWVkTWV0YURhdGE7Ci0gICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkg
YXR0cmlidXRlIGFueSBhY2Nlc3NMb2c7Ci0gICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0
cmlidXRlIGFueSBlcnJvckxvZzsKLSAgICB1bmRlZmluZWQgcG9zdEV2ZW50KERPTVN0cmluZyBl
dmVudE5hbWUpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTU5ZjgzNWIwZTIyYzU4MmYxMDdkNmJhZjNhMTUwODVmZGU5YjFiYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwzNTAgKzAsMCBAQAotCi1mdW5jdGlvbiBjcmVhdGVQbHVnaW5SZXBsYWNlbWVu
dChyb290LCBwYXJlbnQsIGhvc3QsIGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVWYWx1ZXMpCi17
Ci0gICAgcmV0dXJuIG5ldyBSZXBsYWNlbWVudChyb290LCBwYXJlbnQsIGhvc3QsIGF0dHJpYnV0
ZU5hbWVzLCBhdHRyaWJ1dGVWYWx1ZXMpOwotfTsKLQotZnVuY3Rpb24gUmVwbGFjZW1lbnQocm9v
dCwgcGFyZW50LCBob3N0LCBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlVmFsdWVzKQotewotICAg
IHRoaXMucm9vdCA9IHJvb3Q7Ci0gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7Ci0gICAgdGhpcy5o
b3N0ID0gaG9zdDsKLSAgICB0aGlzLmxpc3RlbmVycyA9IHt9OwotICAgIHRoaXMuc2NyaXB0T2Jq
ZWN0ID0ge307Ci0KLSAgICB0aGlzLmF1dG9FeGl0RnVsbFNjcmVlbiA9IHRydWU7Ci0gICAgdGhp
cy5wb3N0RXZlbnRzID0gZmFsc2U7Ci0gICAgdGhpcy5oZWlnaHQgPSAwOwotICAgIHRoaXMud2lk
dGggPSAwOwotICAgIHRoaXMuc3JjID0gIiI7Ci0gICAgdGhpcy5hdXRvaHJlZiA9IGZhbHNlOwot
ICAgIHRoaXMuaHJlZiA9ICIiOwotICAgIHRoaXMucXRzcmMgPSAiIjsKLSAgICB0aGlzLmJhc2VV
cmwgPSAiIjsKLSAgICB0aGlzLnRhcmdldCA9ICIiOwotCi0gICAgdGhpcy5jcmVhdGVWaWRlb0Vs
ZW1lbnQoYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZVZhbHVlcyk7Ci0gICAgdGhpcy5jcmVhdGVT
Y3JpcHRJbnRlcmZhY2UoKTsKLX07Ci0KLVJlcGxhY2VtZW50LnByb3RvdHlwZSA9IHsKLQotICAg
IEhhbmRsZWRWaWRlb0V2ZW50czogewotICAgICAgICBsb2Fkc3RhcnQ6ICdoYW5kbGVMb2FkU3Rh
cnQnLAotICAgICAgICBlcnJvcjogJ2hhbmRsZUVycm9yJywKLSAgICAgICAgbG9hZGVkbWV0YWRh
dGE6ICdoYW5kbGVMb2FkZWRNZXRhRGF0YScsCi0gICAgICAgIGNhbnBsYXk6ICdxdF9jYW5wbGF5
JywKLSAgICAgICAgY2FucGxheXRocm91Z2g6ICdxdF9jYW5wbGF5dGhyb3VnaCcsCi0gICAgICAg
IHBsYXk6ICdxdF9wbGF5JywKLSAgICAgICAgcGF1c2U6ICdxdF9wYXVzZScsCi0gICAgICAgIGVu
ZGVkOiAnaGFuZGxlRW5kZWQnLAotICAgICAgICB3ZWJraXRmdWxsc2NyZWVuY2hhbmdlOiAnaGFu
ZGxlRnVsbHNjcmVlbkNoYW5nZScsCi0gICAgfSwKLQotICAgIEF0dHJpYnV0ZU1hcDogewotICAg
ICAgICBhdXRvZXhpdGZ1bGxzY3JlZW46ICdhdXRvRXhpdEZ1bGxTY3JlZW4nLAotICAgICAgICBw
b3N0ZG9tZXZlbnRzOiAncG9zdEV2ZW50cycsCi0gICAgICAgIGhlaWdodDogJ2hlaWdodCcsCi0g
ICAgICAgIHdpZHRoOiAnd2lkdGgnLAotICAgICAgICBxdHNyYzogJ3F0c3JjJywKLSAgICAgICAg
c3JjOiAnc3JjJywKLSAgICAgICAgYWlycGxheTogJ3gtd2Via2l0LWFpcnBsYXk9JywKLSAgICAg
ICAgaHJlZjogJ2hyZWYnLAotICAgICAgICB0YXJnZXQ6ICd0YXJnZXQnLAotICAgIH0sCi0gICAg
Ci0gICAgTWV0aG9kTWFwOiB7Ci0gICAgICAgIFNldFVSTCA6ICdzZXRVUkwnLAotICAgICAgICBH
ZXRVUkwgOiAndXJsJywKLSAgICAgICAgUGxheSA6ICdwbGF5JywKLSAgICAgICAgU3RvcCA6ICdw
YXVzZScsCi0gICAgICAgIEdldFJhdGUgOiAncmF0ZScsCi0gICAgICAgIFNldFJhdGUgOiAnc2V0
UmF0ZScsCi0gICAgICAgIElzRnVsbFNjcmVlbiA6ICdpc0Z1bGxTY3JlZW4nLAotICAgICAgICBF
eGl0RnVsbFNjcmVlbiA6ICdleGl0RnVsbFNjcmVlbicsCi0gICAgICAgIEdldFBsdWdpblN0YXR1
cyA6ICdwbHVnaW5TdGF0dXMnLAotICAgICAgICBHZXRUaW1lIDogJ2N1cnJlbnRUaW1lJywKLSAg
ICAgICAgU2V0VGltZSA6ICdzZXRDdXJyZW50VGltZScsCi0gICAgICAgIFNlZWtUb0RhdGUgOiAn
c2Vla1RvRGF0ZScsCi0gICAgICAgIEdldERhdGUgOiAnZGF0ZScsCi0gICAgICAgIEdldER1cmF0
aW9uIDogJ2R1cmF0aW9uJywKLSAgICAgICAgR2V0VGltZVNjYWxlIDogJ3RpbWVTY2FsZScsCi0g
ICAgICAgIEdldE1heFRpbWVMb2FkZWQgOiAnbWF4VGltZUxvYWRlZCcsCi0gICAgICAgIEdldE1h
eEJ5dGVzTG9hZGVkIDogJ21heEJ5dGVzTG9hZGVkJywKLSAgICAgICAgR2V0TW92aWVTaXplIDog
J21vdmllU2l6ZScsCi0gICAgICAgIEdldFRpbWVkTWV0YWRhdGFVcGRhdGVzIDogJ3RpbWVkTWV0
YWRhdGFVcGRhdGVzJywKLSAgICAgICAgR2V0QWNjZXNzTG9nIDogJ2FjY2Vzc0xvZycsCi0gICAg
ICAgIEdldEVycm9yTG9nIDogJ2Vycm9yTG9nJywKLSAgICB9LAotCi0gICAgVGltZVNjYWxlOiAz
MDAwMCwKLQotICAgIGNyZWF0ZVZpZGVvRWxlbWVudDogZnVuY3Rpb24oYXR0cmlidXRlTmFtZXMs
IGF0dHJpYnV0ZVZhbHVlcykKLSAgICB7Ci0gICAgICAgIHZhciB2aWRlbyA9IHRoaXMudmlkZW8g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpOwotCi0gICAgICAgIGZvciAobmFtZSBp
biB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50cykKLSAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50TGlz
dGVuZXIobmFtZSwgdGhpcywgZmFsc2UpOwotICAgICAgICAKLSAgICAgICAgZm9yIChpID0gMDsg
aSA8IGF0dHJpYnV0ZU5hbWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICB2YXIgcHJvcGVy
dHkgPSB0aGlzLkF0dHJpYnV0ZU1hcFthdHRyaWJ1dGVOYW1lc1tpXV07Ci0gICAgICAgICAgICBp
ZiAodGhpc1twcm9wZXJ0eV0gIT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgICAgIHRoaXNbcHJv
cGVydHldID0gYXR0cmlidXRlVmFsdWVzW2ldOwotICAgICAgICB9Ci0KLSAgICAgICAgdmlkZW8u
c2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQnKTsKLSAg
ICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKCdjb250cm9scycsICdjb250cm9scycpOwotICAgICAg
ICB0aGlzLnNldFN0YXR1cygnV2FpdGluZycpOwotCi0gICAgICAgIHZhciBzcmMgPSB0aGlzLnJl
c29sdmVSZWxhdGl2ZVRvVXJsKHRoaXMuc3JjLCAiIik7Ci0gICAgICAgIHRoaXMuYmFzZVVybCA9
IHNyYzsKLQotICAgICAgICAvLyBUaGUgJ3F0c3JjJyBhdHRyaWJ1dGUgaXMgdXNlZCB3aGVuIGEg
cGFnZSBhdXRob3Igd2FudGVkIHRvIGFsd2F5cyB1c2UgdGhlIFF1aWNrVGltZSBwbHVnLWluCi0g
ICAgICAgIC8vIHRvIGxvYWQgYSBtZWRpYSB0eXBlIGV2ZW4gaWYgYW5vdGhlciBwbHVnLWluIHdh
cyByZWdpc3RlcmVkIGZvciB0aGF0IHR5cGUuIEl0IHRlbGxzIHRoZQotICAgICAgICAvLyBwbHVn
LWluIHRvIGlnbm9yZSB0aGUgJ3NyYycgdXJsLCBhbmQgdG8gbG9hZCB0aGUgJ3F0c3JjJyB1cmwg
aW5zdGVhZC4KLSAgICAgICAgaWYgKHRoaXMucXRzcmMpCi0gICAgICAgICAgICBzcmMgPSB0aGlz
LnJlc29sdmVSZWxhdGl2ZVRvVXJsKHRoaXMucXRzcmMsIHRoaXMuc3JjKTsKLSAgICAgICAgaWYg
KHRoaXMuaHJlZiAmJiB0aGlzLnRhcmdldCkgewotICAgICAgICAgICAgc3JjID0gdGhpcy5yZXNv
bHZlUmVsYXRpdmVUb1VybCh0aGlzLmhyZWYsIHRoaXMuc3JjKTsKLSAgICAgICAgICAgIHZpZGVv
LnBvc3RlciA9IHRoaXMuc3JjOwotICAgICAgICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKCdwcmVs
b2FkJywgJ25vbmUnKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHNyYy5sZW5n
dGgpIHsKLSAgICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKCdWYWxpZGF0aW5nJyk7Ci0gICAgICAg
ICAgICB0aGlzLnZpZGVvLnNyYyA9IHNyYzsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMucm9v
dC5hcHBlbmRDaGlsZCh2aWRlbyk7Ci0gICAgfSwKLQotICAgIHJlc29sdmVSZWxhdGl2ZVRvVXJs
OiBmdW5jdGlvbih1cmwsIGJhc2VVcmwpCi0gICAgewotICAgICAgICBpZiAodXJsLmluZGV4T2Yo
JzovLycpICE9IC0xKQotICAgICAgICAgICAgcmV0dXJuIHVybDsKLSAgICAgICAgaWYgKGJhc2VV
cmwuaW5kZXhPZignOi8vJykgPT0gLTEpCi0gICAgICAgICAgICBiYXNlVXJsID0gdGhpcy5yZXNv
bHZlUmVsYXRpdmVUb1VybChiYXNlVXJsLCBkb2N1bWVudC5iYXNlVVJJKTsKLQotICAgICAgICB2
YXIgYmFzZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Jhc2UnKTsKLSAgICAgICAgYmFzZS5o
cmVmID0gYmFzZVVybDsKLSAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChiYXNlKTsK
LQotICAgICAgICB2YXIgcmVzb2x2ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7Ci0g
ICAgICAgIHJlc29sdmVyLmhyZWYgPSB1cmw7Ci0gICAgICAgIHVybCA9IHJlc29sdmVyLmhyZWY7
Ci0KLSAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChiYXNlKTsKLSAgICAgICAgYmFz
ZSA9IG51bGw7Ci0KLSAgICAgICAgcmV0dXJuIHVybDsKLSAgICB9LAotIAotICAgIGNyZWF0ZVNj
cmlwdEludGVyZmFjZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZm9yIChuYW1lIGluIHRo
aXMuTWV0aG9kTWFwKSB7Ci0gICAgICAgICAgICB2YXIgbWV0aG9kTmFtZSA9IHRoaXMuTWV0aG9k
TWFwW25hbWVdOwotICAgICAgICAgICAgdGhpcy5zY3JpcHRPYmplY3RbbmFtZV0gPSB0aGlzW21l
dGhvZE5hbWVdLmJpbmQodGhpcyk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgaGFuZGxlRXZl
bnQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0g
dGhpcy52aWRlbykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0cnkgewotICAgICAg
ICAgICAgdmFyIGV2ZW50RGF0YSA9IHRoaXMuSGFuZGxlZFZpZGVvRXZlbnRzW2V2ZW50LnR5cGVd
OwotICAgICAgICAgICAgaWYgKCFldmVudERhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBpZiAodGhpc1tldmVudERhdGFdICYmIHR5cGVvZiB0aGlzW2V2ZW50RGF0
YV0gPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgdGhpc1tldmVudERhdGFdLmNhbGwo
dGhpcywgZXZlbnQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMucG9z
dEV2ZW50KGV2ZW50RGF0YSk7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgaWYg
KHdpbmRvdy5jb25zb2xlKQotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7Ci0gICAg
ICAgIH0KLSAgICB9LAotCi0gICAgcG9zdEV2ZW50OiBmdW5jdGlvbihldmVudE5hbWUpCi0gICAg
ewotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKHRoaXMucG9zdEV2ZW50cykKLSAgICAg
ICAgICAgICAgICB0aGlzLmhvc3QucG9zdEV2ZW50KGV2ZW50TmFtZSk7Ci0gICAgICAgIH0gY2F0
Y2goZSkgeyB9Ci0gICAgfSwKLQotICAgIHNldFN0YXR1czogZnVuY3Rpb24oc3RhdHVzKQotICAg
IHsKLSAgICAgICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7Ci0gICAgfSwKLQotICAgIGhhbmRsZUxv
YWRlZE1ldGFEYXRhOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2V0U3Rh
dHVzKCdQbGF5YWJsZScpOwotICAgICAgICB0aGlzLnBvc3RFdmVudCgncXRfdmFsaWRhdGVkJyk7
Ci0gICAgICAgIHRoaXMucG9zdEV2ZW50KCdxdF9sb2FkZWRmaXJzdGZyYW1lJyk7Ci0gICAgICAg
IHRoaXMucG9zdEV2ZW50KCdxdF9sb2FkZWRtZXRhZGF0YScpOwotICAgIH0sCi0KLSAgICBoYW5k
bGVGdWxsc2NyZWVuQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
cG9zdEV2ZW50KHRoaXMuaXNGdWxsU2NyZWVuKCkgPyAncXRfZW50ZXJmdWxsc2NyZWVuJyA6ICdx
dF9leGl0ZnVsbHNjcmVlbicpOwotICAgIH0sCi0KLSAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24o
ZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnNldFN0YXR1cygnRXJyb3InKTsKLSAgICAgICAg
dGhpcy5wb3N0RXZlbnQoJ3F0X2Vycm9yJyk7Ci0gICAgfSwKLQotICAgIGhhbmRsZUxvYWRTdGFy
dDpmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnZpZGVvLnBvc3RlcikK
LSAgICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKCdXYWl0aW5nJyk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRoaXMuc2V0U3RhdHVzKCdMb2FkaW5nJyk7Ci0gICAgICAgIHRoaXMucG9zdEV2
ZW50KCdxdF9iZWdpbicpOwotICAgIH0sCi0KLSAgICBoYW5kbGVFbmRlZDogZnVuY3Rpb24oZXZl
bnQpCi0gICAgewotICAgICAgICB0aGlzLnBvc3RFdmVudCgncXRfZW5kZWQnKTsKLSAgICAgICAg
aWYgKHRoaXMuaXNGdWxsU2NyZWVuKCkgJiYgdGhpcy5hdXRvRXhpdEZ1bGxTY3JlZW4pCi0gICAg
ICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOwotICAgIH0sCi0KLSAgICBp
c0Z1bGxTY3JlZW46IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBkb2N1bWVudC53
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT09IHRoaXMudmlkZW87Ci0gICAgfSwKLQot
ICAgIHNldFVSTDogZnVuY3Rpb24odXJsKQotICAgIHsKLSAgICAgICAgdGhpcy5zZXRTdGF0dXMo
J1ZhbGlkYXRpbmcnKTsKLSAgICAgICAgaWYgKHVybC5sZW5ndGgpCi0gICAgICAgICAgICB1cmwg
PSB0aGlzLnJlc29sdmVSZWxhdGl2ZVRvVXJsKHVybCwgdGhpcy5iYXNlVXJsKTsKLSAgICAgICAg
dGhpcy52aWRlby5zcmMgPSB1cmw7Ci0gICAgfSwKLSAgICAKLSAgICB1cmw6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnZpZGVvLmN1cnJlbnRTcmM7Ci0gICAgfSwKLSAg
ICAKLSAgICBwbGF5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnZpZGVvLnBsYXko
KTsKLSAgICB9LAotICAgIAotICAgIHBhdXNlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aGlzLnZpZGVvLnBsYXliYWNrUmF0ZSA9IDA7Ci0gICAgICAgIHRoaXMudmlkZW8ucGF1c2UoKTsK
LSAgICB9LAotICAgIAotICAgIHJhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnZpZGVvLnBhdXNlZCA/IDAgOiAxOwotICAgIH0sCi0gICAgCi0gICAgc2V0UmF0ZTog
ZnVuY3Rpb24ocmF0ZSkKLSAgICB7Ci0gICAgICAgIGlmIChyYXRlKQotICAgICAgICAgICAgdGhp
cy52aWRlby5wbGF5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMudmlkZW8ucGF1
c2UoKTsKLSAgICB9LAotICAgIAotICAgIGV4aXRGdWxsU2NyZWVuOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOwotICAgIH0sCi0gICAg
Ci0gICAgcGx1Z2luU3RhdHVzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5zdGF0dXM7Ci0gICAgfSwKLQotICAgIGN1cnJlbnRUaW1lOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jdXJyZW50VGltZSAqIHRoaXMuVGltZVNjYWxlOwot
ICAgIH0sCi0KLSAgICBzZXRDdXJyZW50VGltZTogZnVuY3Rpb24odGltZSkKLSAgICB7Ci0gICAg
ICAgIHRoaXMudmlkZW8uY3VycmVudFRpbWUgPSB0aW1lIC8gdGhpcy5UaW1lU2NhbGU7Ci0gICAg
fSwKLQotICAgIHNlZWtUb0RhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1F
OiBub3QgaW1wbGVtZW50ZWQgeWV0LgotICAgIH0sCi0gICAgCi0gICAgZGF0ZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7Ci0gICAgfSwKLSAgICAKLSAgICBk
dXJhdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudmlkZW8uZHVy
YXRpb24gKiB0aGlzLlRpbWVTY2FsZTsKLSAgICB9LAotICAgIAotICAgIHRpbWVTY2FsZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gTm90ZTogUXVpY2tUaW1lIG1vdmllcyBhbmQgTVBF
Ry00IGZpbGVzIGhhdmUgYSB0aW1lc2NhbGUsIGJ1dCBpdCBpcyBub3QgZXhwb3NlZCBieSBhbGwg
bWVkaWEgZW5naW5lcy4KLSAgICAgICAgLy8gMzAwMDAgd29ya3Mgd2VsbCB3aXRoIGNvbW1vbiBm
cmFtZSByYXRlcywgZWcuIDI5Ljk3IE5UU0MgY2FuIGJlIHJlcHJlc2VudGVkIGFjY3VyYXRlbHkg
YXMgYSB0aW1lCi0gICAgICAgIC8vIHNjYWxlIG9mIDMwMDAwIGFuZCBmcmFtZSBkdXJhdGlvbiBv
ZiAxMDAxLgotICAgICAgICByZXR1cm4gMzAwMDA7Ci0gICAgfSwKLSAgICAKLSAgICBtYXhUaW1l
TG9hZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy52aWRlby5kdXJh
dGlvbiAqIHRoaXMuVGltZVNjYWxlOwotICAgIH0sCi0gICAgCi0gICAgbWF4Qnl0ZXNMb2FkZWQ6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwZXJjZW50TG9hZGVkID0gdGhpcy52aWRl
by5idWZmZXJlZC5lbmQoMCkgLyB0aGlzLnZpZGVvLmR1cmF0aW9uOwotICAgICAgICByZXR1cm4g
cGVyY2VudExvYWRlZCAqIHRoaXMubW92aWVTaXplKCk7Ci0gICAgfSwKLSAgICAKLSAgICBtb3Zp
ZVNpemU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5ob3N0Lm1vdmllU2l6ZTsKLSAgICAgICAgfSBjYXRjaChlKSB7IH0KLQotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9LAotICAgIAotICAgIHRpbWVkTWV0YWRhdGFVcGRhdGVzOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9z
dC50aW1lZE1ldGFEYXRhOwotICAgICAgICB9IGNhdGNoKGUpIHsgfQotCi0gICAgICAgIHJldHVy
biBudWxsOwotICAgIH0sCi0gICAgCi0gICAgYWNjZXNzTG9nOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9zdC5hY2Nlc3NMb2c7Ci0g
ICAgICAgIH0gY2F0Y2goZSkgeyB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLSAg
ICAKLSAgICBlcnJvckxvZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLmhvc3QuZXJyb3JMb2c7Ci0gICAgICAgIH0gY2F0Y2goZSkgeyB9
Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLX07Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFjMTAyYTI1Nzk2NGNiMjAyZGYw
MTQzOWRkOTI2YThkZWFiOWE5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotCi0jaW1wb3J0ICJRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIgotCi0jaW1wb3J0
ICJDb21tb25WTS5oIgotI2ltcG9ydCAiRXZlbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1w
b3J0ICJIVE1MUGx1Z0luRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTFZpZGVvRWxlbWVudC5oIgot
I2ltcG9ydCAiSlNET01CaW5kaW5nLmgiCi0jaW1wb3J0ICJKU0RPTUNvbnZlcnROdWxsYWJsZS5o
IgotI2ltcG9ydCAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW1wb3J0ICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCi0jaW1wb3J0ICJKU0RPTUdsb2JhbE9iamVjdC5oIgotI2ltcG9ydCAiSlNI
VE1MVmlkZW9FbGVtZW50LmgiCi0jaW1wb3J0ICJKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJSZW5kZXJFbGVtZW50LmgiCi0jaW1w
b3J0ICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0j
aW1wb3J0ICJTZXR0aW5ncy5oIgotI2ltcG9ydCAiU2hhZG93Um9vdC5oIgotI2ltcG9ydCAiVXNl
ckFnZW50U2NyaXB0cy5oIgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+
Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TU3RyaW5nLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+Ci0jaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KLQotI2ltcG9ydCA8cGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KGlkLCBKU0NvbnRleHQg
Kik7Ci1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChB
Vk1ldGFkYXRhSXRlbSAqLCBKU0NvbnRleHQgKik7Ci0jZW5kaWYKLQotc3RhdGljIFN0cmluZyBx
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudFNjcmlwdCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2NyaXB0KFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFF1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50SmF2YVNjcmlwdCkpKTsKLSAgICByZXR1cm4gc2NyaXB0OwotfQotCi12b2lk
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBs
dWdpblJlcGxhY2VtZW50UmVnaXN0cmFyIHJlZ2lzdHJhcikKLXsKLSAgICByZWdpc3RyYXIoUmVw
bGFjZW1lbnRQbHVnaW4oY3JlYXRlLCBzdXBwb3J0c01pbWVUeXBlLCBzdXBwb3J0c0ZpbGVFeHRl
bnNpb24sIHN1cHBvcnRzVVJMLCBpc0VuYWJsZWRCeVNldHRpbmdzKSk7Ci19Ci0KLVJlZjxQbHVn
aW5SZXBsYWNlbWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZShIVE1MUGx1
Z0luRWxlbWVudCYgcGx1Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50KHBsdWdpbiwgcGFyYW1OYW1lcywgcGFyYW1W
YWx1ZXMpKTsKLX0KLQotYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNN
aW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRv
IHR5cGVIYXNoID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IHsKLSAgICAgICAgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJs
IiwgImFwcGxpY2F0aW9uL3gtbXBlZ3VybCIsICJhdWRpby8zZ3BwIiwgImF1ZGlvLzNncHAyIiwg
ImF1ZGlvL2FhYyIsICJhdWRpby9haWZmIiwKLSAgICAgICAgImF1ZGlvL2FtciIsICJhdWRpby9i
YXNpYyIsICJhdWRpby9tcDMiLCAiYXVkaW8vbXA0IiwgImF1ZGlvL21wZWciLCAiYXVkaW8vbXBl
ZzMiLCAiYXVkaW8vbXBlZ3VybCIsICJhdWRpby9zY3BscyIsCi0gICAgICAgICJhdWRpby93YXYi
LCAiYXVkaW8veC1hYWMiLCAiYXVkaW8veC1haWZmIiwgImF1ZGlvL3gtY2FmIiwgImF1ZGlvL3gt
bTRhIiwgImF1ZGlvL3gtbTRiIiwgImF1ZGlvL3gtbTRwIiwKLSAgICAgICAgImF1ZGlvL3gtbTRy
IiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlvL3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L3gtbXBlZ3VybCIsICJhdWRpby94LXNjcGxzIiwgImF1ZGlvL3gtd2F2IiwKLSAgICAgICAgInZp
ZGVvLzNncHAiLCAidmlkZW8vM2dwcDIiLCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIs
ICJ2aWRlby94LW00diIKLSAgICB9KTsKLSAgICByZXR1cm4gdHlwZUhhc2guZ2V0KCkuY29udGFp
bnMobWltZVR5cGUpOwotfQotCi1ib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpzdXBw
b3J0c0ZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCi17Ci0gICAgc3RhdGlj
IGNvbnN0IGF1dG8gZXh0ZW5zaW9uU2V0ID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKLSAgICAgICAgIjNnMiIsICIzZ3AiLCAi
M2dwMiIsICIzZ3BwIiwgImFhYyIsICJhZHRzIiwgImFpZiIsICJhaWZjIiwgImFpZmYiLCAiQU1S
IiwgImF1IiwgImJ3ZiIsICJjYWYiLCAiY2RkYSIsICJtM3UiLAotICAgICAgICAibTN1OCIsICJt
NGEiLCAibTRiIiwgIm00cCIsICJtNHIiLCAibTR2IiwgIm1vdiIsICJtcDMiLCAibXAzIiwgIm1w
NCIsICJtcGVnIiwgIm1wZyIsICJtcXYiLCAicGxzIiwgInF0IiwKLSAgICAgICAgInNuZCIsICJz
d2EiLCAidHMiLCAidWx3IiwgIndhdiIKLSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5zaW9uU2V0
LmdldCgpLmNvbnRhaW5zKGV4dGVuc2lvbik7Ci19Ci0KLWJvb2wgUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQ6OmlzRW5hYmxlZEJ5U2V0dGluZ3MoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQot
ewotICAgIHJldHVybiBzZXR0aW5ncy5xdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQo
KTsKLX0KLQotUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OlF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCi0gICAgOiBtX3Bh
cmVudEVsZW1lbnQocGx1Z2luKQotICAgICwgbV9uYW1lcyhwYXJhbU5hbWVzKQotICAgICwgbV92
YWx1ZXMocGFyYW1WYWx1ZXMpCi17Ci19Ci0KLVF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp+
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoKSA9IGRlZmF1bHQ7Ci0KLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCi17Ci0gICAgQVNTRVJUX1VO
VVNFRChwbHVnaW4sIG1fcGFyZW50RWxlbWVudCA9PSAmcGx1Z2luKTsKLQotICAgIGlmIChtX21l
ZGlhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5jcmVhdGVFbGVtZW50
UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKLQotICAgIHJldHVy
biBudWxscHRyOwotfQotCi1ET01XcmFwcGVyV29ybGQmIFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50Ojppc29sYXRlZFdvcmxkKCkKLXsKLSAgICBzdGF0aWMgRE9NV3JhcHBlcldvcmxkJiBpc29s
YXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoY29tbW9uVk0oKSwgRE9NV3JhcHBl
cldvcmxkOjpUeXBlOjpJbnRlcm5hbCwgIlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Il9zKS5s
ZWFrUmVmKCk7Ci0gICAgcmV0dXJuIGlzb2xhdGVkV29ybGQ7Ci19Ci0KLWJvb2wgUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQoKQotewot
ICAgIGlmICghbV9wYXJlbnRFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gaXNvbGF0ZWRX
b3JsZCgpOwotICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdENvbnRyb2xsZXIgPSBtX3BhcmVu
dEVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+c2NyaXB0KCk7Ci0gICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2Ny
aXB0Q29udHJvbGxlci5nbG9iYWxPYmplY3Qod29ybGQpKTsKLSAgICBKU0M6OlZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICAKLSAgICBKU0M6
OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNyZWF0ZVBsdWdp
blJlcGxhY2VtZW50IikpOwotICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzQ2FsbGFibGUo
dm0pKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBzY3JpcHRDb250cm9sbGVyLmV2
YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxkKTsKLSAgICBpZiAoVU5MSUtFTFkoc2Nv
cGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24g
d2hlbiBldmFsdWF0aW5nIFF1aWNrVGltZSBwbHVnaW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhp
cyk7Ci0gICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWF1dG8gUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KSAtPiBJ
bnN0YWxsUmVzdWx0Ci17Ci0gICAgaWYgKCFlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVk
KCkpCi0gICAgICAgIHJldHVybiB7IGZhbHNlIH07Ci0KLSAgICBpZiAoIW1fcGFyZW50RWxlbWVu
dC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICByZXR1cm4geyBmYWxzZSB9OwotCi0gICAg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9IGlzb2xhdGVkV29ybGQoKTsKLSAgICBTY3JpcHRDb250
cm9sbGVyJiBzY3JpcHRDb250cm9sbGVyID0gbV9wYXJlbnRFbGVtZW50LT5kb2N1bWVudCgpLmZy
YW1lKCktPnNjcmlwdCgpOwotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBK
U0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdENvbnRyb2xsZXIuZ2xvYmFsT2Jq
ZWN0KHdvcmxkKSk7Ci0gICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSBnbG9iYWxPYmplY3Q7Ci0KLSAgICBhdXRvIGNsZWFyRXhjZXB0aW9uQW5kUmV0dXJuRmFs
c2UgPSBbJl0gKCkgLT4gSW5zdGFsbFJlc3VsdCB7Ci0gICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7Ci0gICAgICAgIHJldHVybiB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIC8vIExvb2t1
cCB0aGUgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IiBmdW5jdGlvbi4KLSAgICBKU0M6OkpTVmFs
dWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNyZWF0ZVBsdWdpblJlcGxh
Y2VtZW50IikpOwotICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCi0gICAgICAgIHJldHVybiB7IGZhbHNlIH07Ci0gICAgSlNDOjpKU09iamVjdCogcmVwbGFj
ZW1lbnRPYmplY3QgPSByZXBsYWNlbWVudEZ1bmN0aW9uLnRvT2JqZWN0KGxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGNsZWFyRXhjZXB0aW9uQW5k
UmV0dXJuRmFsc2UoKSk7Ci0KLSAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHJl
cGxhY2VtZW50T2JqZWN0KTsKLSAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxEYXRh
OjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4geyBmYWxzZSB9OwotCi0gICAgSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMobGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAmcm9vdCkpOwotICAgIGFyZ0xpc3QuYXBwZW5k
KHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBtX3BhcmVudEVsZW1lbnQu
Z2V0KCkpKTsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgdGhpcykpOwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqZ2xvYmFs
T2JqZWN0LCBtX25hbWVzKSk7Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9KUzxJRExTZXF1ZW5jZTxJ
RExOdWxsYWJsZTxJRExET01TdHJpbmc+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpnbG9iYWxP
YmplY3QsIG1fdmFsdWVzKSk7Ci0gICAgQVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93ZWQoKSk7
Ci0gICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50ID0gY2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCByZXBsYWNlbWVudE9iamVjdCwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJnTGlzdCk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgY2xlYXJFeGNlcHRpb25BbmRSZXR1cm5GYWxz
ZSgpKTsKLQotICAgIC8vIEdldCB0aGUgPHZpZGVvPiBjcmVhdGVkIHRvIHJlcGxhY2UgdGhlIHBs
dWctaW4uCi0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInZpZGVvIikpOwot
ICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkgJiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgIG1fbWVkaWFFbGVtZW50ID0gSlNIVE1MVmlkZW9FbGVtZW50Ojp0b1dyYXBwZWQo
dm0sIHZhbHVlKTsKLQotICAgIGlmICghbV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgTE9HKFBs
dWdpbnMsICIlcCAtIEZhaWxlZCB0byBmaW5kIDx2aWRlbz4gZWxlbWVudCBjcmVhdGVkIGJ5IFF1
aWNrVGltZSBwbHVnaW4gcmVwbGFjZW1lbnQgc2NyaXB0LiIsIHRoaXMpOwotICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4geyBmYWxzZSB9OwotICAgIH0KLQot
ICAgIC8vIEdldCB0aGUgc2NyaXB0aW5nIGludGVyZmFjZS4KLSAgICB2YWx1ZSA9IHJlcGxhY2Vt
ZW50LmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJzY3JpcHRPYmplY3QiKSk7Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIExPRyhQbHVnaW5zLCAiJXAgLSBGYWlsZWQgdG8gZmluZCBzY3JpcHQgb2JqZWN0IGNyZWF0
ZWQgYnkgUXVpY2tUaW1lIHBsdWdpbiByZXBsYWNlbWVudC4iLCB0aGlzKTsKLSAgICAgICAgc2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLSAgICB9Ci0K
LSAgICByZXR1cm4geyB0cnVlLCB2YWx1ZSB9OwotfQotCi11bnNpZ25lZCBsb25nIGxvbmcgUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Om1vdmllU2l6ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1f
bWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQtPmZpbGVTaXplKCk7
Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6
cG9zdEV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQotewotICAgIFJlZjxIVE1MUGx1Z0lu
RWxlbWVudD4gcHJvdGVjdCgqbV9wYXJlbnRFbGVtZW50KTsKLSAgICBSZWY8RXZlbnQ+IGV2ZW50
ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpOwotICAgIG1fcGFyZW50RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChl
dmVudCk7Ci19Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi1zdGF0aWMgSlNWYWx1ZSAq
anNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KE5TRGF0YSAqZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIC8vIEZJWE1FOiBBZGQgbWFrZUNGU3Ry
aW5nL21ha2VOU1N0cmluZyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBTdHJpbmcgYWxsb2NhdGlvbi4K
LSAgICBTdHJpbmcgZGF0YTY0OwotICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAg
ICBkYXRhNjQgPSBtYWtlU3RyaW5nKCJkYXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNl
NjRFbmNvZGVkKFtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSkpOwotICAgIGVsc2UKLSAgICAg
ICAgZGF0YTY0ID0gbWFrZVN0cmluZygiZGF0YTp0ZXh0L3BsYWluO2Jhc2U2NCwiLCBiYXNlNjRF
bmNvZGVkKFtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSkpOwotCi0gICAgcmV0dXJuIFtKU1Zh
bHVlIHZhbHVlV2l0aE9iamVjdDooaWQpZGF0YTY0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkgaW5D
b250ZXh0OmNvbnRleHRdOwotfQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBcnJheUlu
Q29udGV4dChOU0FycmF5ICphcnJheSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU1ZhbHVlICpyZXN1bHQgPSBbSlNWYWx1ZSB2YWx1
ZVdpdGhOZXdBcnJheUluQ29udGV4dDpjb250ZXh0XTsKLSAgICBKU09iamVjdFJlZiByZXN1bHRP
YmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3Jl
c3VsdCBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XTsK
LQotICAgIE5TVUludGVnZXIgY291bnQgPSBbYXJyYXkgY291bnRdOwotICAgIGZvciAoTlNVSW50
ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBq
c1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KFthcnJheSBvYmplY3RBdEluZGV4OmldLCBjb250ZXh0
KTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0s
IHJlc3VsdE9iamVjdCwgKHVuc2lnbmVkKWksIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlv
bik7Ci0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhE
aWN0aW9uYXJ5SW5Db250ZXh0KE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSwgSlNDb250ZXh0ICpj
b250ZXh0KQotewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU1ZhbHVlICpy
ZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07Ci0g
ICAgSlNPYmplY3RSZWYgcmVzdWx0T2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1bHQgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAg
IGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmlu
ZWRJbkNvbnRleHQ6Y29udGV4dF07Ci0KLSAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlvbmFyeSBr
ZXlFbnVtZXJhdG9yXSkgewotICAgICAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEpTVmFsdWUgKnZh
bHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
a2V5XSwgY29udGV4dCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGtleSk7
Ci0gICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSwgcmVzdWx0T2JqZWN0LCBuYW1lLmdldCgpLCBbdmFsdWUgSlNWYWx1ZVJlZl0sIDAsICZleGNl
cHRpb24pOwotICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVX
aXRoVmFsdWVJbkNvbnRleHQoaWQgdmFsdWUsIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBp
ZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1
ZVdpdGhPYmplY3Q6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdOwotICAgIGVsc2UgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU0xvY2FsZSBjbGFzc11dKQotICAgICAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoT2JqZWN0Olt2YWx1ZSBsb2NhbGVJZGVudGlmaWVyXSBpbkNvbnRleHQ6Y29u
dGV4dF07Ci0gICAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBj
bGFzc11dKQotICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KHZh
bHVlLCBjb250ZXh0KTsKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJh
eSBjbGFzc11dKQotICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhBcnJheUluQ29udGV4dCh2YWx1
ZSwgY29udGV4dCk7Ci0gICAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBj
bGFzc11dKQotICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KHZhbHVlLCBl
bXB0eVN0cmluZygpLCBjb250ZXh0KTsKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVl
V2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKLQotICAgIHJldHVy
biBuaWw7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5D
b250ZXh0KEFWTWV0YWRhdGFJdGVtICppdGVtLCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAg
TlNNdXRhYmxlRGljdGlvbmFyeSogZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoRGljdGlvbmFyeTpbaXRlbSBleHRyYUF0dHJpYnV0ZXNdXTsKLQotICAgIGlm
IChpdGVtLmtleVNwYWNlKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5rZXlT
cGFjZSBmb3JLZXk6QCJrZXlzcGFjZSJdOwotCi0gICAgaWYgKGl0ZW0ua2V5KQotICAgICAgICBb
ZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5rZXkgZm9yS2V5OkAia2V5Il07Ci0KLSAgICBpZiAo
aXRlbS5sb2NhbGUpCi0gICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDppdGVtLmxvY2FsZSBm
b3JLZXk6QCJsb2NhbGUiXTsKLQotICAgIGlmIChDTVRJTUVfSVNfVkFMSUQoaXRlbS50aW1lKSkg
ewotICAgICAgICBpZiAoYXV0byB0aW1lRGljdGlvbmFyeSA9IGFkb3B0Q0YoUEFMOjpDTVRpbWVD
b3B5QXNEaWN0aW9uYXJ5KGl0ZW0udGltZSwga0NGQWxsb2NhdG9yRGVmYXVsdCkpKQotICAgICAg
ICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OihfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKil0aW1l
RGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJ0aW1lc3RhbXAiXTsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKGl0ZW0udmFsdWUpIHsKLSAgICAgICAgaWQgdmFsdWUgPSBpdGVtLnZhbHVlOwotICAgICAg
ICBOU1N0cmluZyAqbWltZVR5cGUgPSBbW2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXSBvYmplY3RGb3JL
ZXk6QCJNSU1FdHlwZSJdOwotICAgICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0
YSBjbGFzc11dICYmIG1pbWVUeXBlKSB7Ci0gICAgICAgICAgICBhdXRvIGRhdGE2NCA9IG1ha2VT
dHJpbmcoImRhdGE6IiwgU3RyaW5nKG1pbWVUeXBlKSwgIjtiYXNlNjQsIiwgYmFzZTY0RW5jb2Rl
ZChbdmFsdWUgYnl0ZXNdLCBbdmFsdWUgbGVuZ3RoXSkpOwotICAgICAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0OihfX2JyaWRnZSBOU1N0cmluZyAqKWRhdGE2NC5jcmVhdGVDRlN0cmluZygp
LmdldCgpIGZvcktleTpAInZhbHVlIl07Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgW2Rp
Y3Rpb25hcnkgc2V0T2JqZWN0OnZhbHVlIGZvcktleTpAInZhbHVlIl07Ci0gICAgfQotCi0gICAg
cmV0dXJuIGpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChkaWN0aW9uYXJ5LCBjb250ZXh0
KTsKLX0KLQotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50Ojp0aW1lZE1ldGFEYXRhKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlKSBjb25zdAotewot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0g
d3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5w
bGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0KLSAgICBGcmFtZSogZnJh
bWUgPSBwYXJlbnQtPmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAg
ICByZXR1cm4gSlNDOjpqc051bGwoKTsKLQotICAgIE5TQXJyYXkgKm1ldGFEYXRhID0gcGFyZW50
LT5wbGF5ZXIoKS0+dGltZWRNZXRhZGF0YSgpOwotICAgIGlmICghbWV0YURhdGEpCi0gICAgICAg
IHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBmcmFt
ZS0+c2NyaXB0KCkuamF2YVNjcmlwdENvbnRleHQoKTsKLSAgICBKU1ZhbHVlICptZXRhRGF0YVZh
bHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChtZXRhRGF0YSwganNDb250ZXh0KTsKLQot
ICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgW21ldGFEYXRhVmFsdWUgSlNWYWx1ZVJlZl0pOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwot
I2VuZGlmCi19Ci0KLUpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojph
Y2Nlc3NMb2coSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUpIGNvbnN0Ci17Ci0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnQgPSB3cmFwcGVkKCku
cGFyZW50RWxlbWVudCgpOwotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPnBsYXllcigpKQot
ICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLQotICAgIEZyYW1lKiBmcmFtZSA9IHBhcmVu
dC0+ZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBK
U0M6OmpzTnVsbCgpOwotCi0gICAgSlNWYWx1ZSAqZGljdGlvbmFyeSA9IFtKU1ZhbHVlIHZhbHVl
V2l0aE5ld09iamVjdEluQ29udGV4dDpmcmFtZS0+c2NyaXB0KCkuamF2YVNjcmlwdENvbnRleHQo
KV07Ci0gICAgU3RyaW5nIGFjY2Vzc0xvZ1N0cmluZyA9IHBhcmVudC0+cGxheWVyKCktPmFjY2Vz
c0xvZygpOwotICAgIFtkaWN0aW9uYXJ5IHNldFZhbHVlOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+
KGFjY2Vzc0xvZ1N0cmluZykgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopQ0ZTVFIoImV4dGVuZGVk
TG9nIildOwotCi0gICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBbZGljdGlvbmFyeSBKU1ZhbHVlUmVm
XSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgcmV0dXJuIEpTQzo6anNO
dWxsKCk7Ci0jZW5kaWYKLX0KLQotSlNDOjpKU1ZhbHVlIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQ6OmVycm9yTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlKSBjb25zdAotewotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3Jh
cHBlZCgpLnBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5
ZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0KLSAgICBGcmFtZSogZnJhbWUg
PSBwYXJlbnQtPmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICBy
ZXR1cm4gSlNDOjpqc051bGwoKTsKLQotICAgIEpTVmFsdWUgKmRpY3Rpb25hcnkgPSBbSlNWYWx1
ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6ZnJhbWUtPnNjcmlwdCgpLmphdmFTY3JpcHRD
b250ZXh0KCldOwotICAgIFN0cmluZyBlcnJvckxvZ1N0cmluZyA9IHBhcmVudC0+cGxheWVyKCkt
PmVycm9yTG9nKCk7Ci0gICAgW2RpY3Rpb25hcnkgc2V0VmFsdWU6c3RhdGljX2Nhc3Q8TlNTdHJp
bmcgKj4oZXJyb3JMb2dTdHJpbmcpIGZvclByb3BlcnR5OihOU1N0cmluZyAqKUNGU1RSKCJleHRl
bmRlZExvZyIpXTsKLQotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgW2RpY3Rpb25hcnkgSlNWYWx1
ZVJlZl0pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIHJldHVybiBKU0M6
OmpzTnVsbCgpOwotI2VuZGlmCi19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZkZDI1Y2NiZTgyYTg5OWE2YmYzNTE0YWY1Y2JlNjYw
MTA4MWMzNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDM0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaCIKLQotI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgotI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyRWxlbWVu
dC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2lu
Y2x1ZGUgIllvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyUGx1Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1l
bnRSZWdpc3RyYXIgcmVnaXN0cmFyKQotewotICAgIHJlZ2lzdHJhcihSZXBsYWNlbWVudFBsdWdp
bihjcmVhdGUsIHN1cHBvcnRzTWltZVR5cGUsIHN1cHBvcnRzRmlsZUV4dGVuc2lvbiwgc3VwcG9y
dHNVUkwsIGlzRW5hYmxlZEJ5U2V0dGluZ3MpKTsKLX0KLQotUmVmPFBsdWdpblJlcGxhY2VtZW50
PiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYgcGx1
Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFlvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudChwbHVnaW4sIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSk7Ci19Ci0KLWJv
b2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCi17Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQotICAgICAgICB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2Z1dHVy
ZXNwbGFzaCIpOwotfQotCi1ib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNG
aWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQotewotICAgIHJldHVybiBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShleHRlbnNpb24sICJzcGwiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShleHRlbnNpb24sICJzd2YiKTsKLX0KLQotWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQm
IHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcykKLSAgICA6IG1fcGFyZW50RWxlbWVudChwbHVnaW4pCi17Ci0g
ICAgQVNTRVJUKHBhcmFtTmFtZXMuc2l6ZSgpID09IHBhcmFtVmFsdWVzLnNpemUoKSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbU5hbWVzLnNpemUoKTsgKytpKQotICAgICAgICBt
X2F0dHJpYnV0ZXMuYWRkKHBhcmFtTmFtZXNbaV0sIHBhcmFtVmFsdWVzW2ldKTsKLX0KLQotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCi17Ci0gICAg
QVNTRVJUX1VOVVNFRChwbHVnaW4sIG1fcGFyZW50RWxlbWVudCA9PSAmcGx1Z2luKTsKLQotICAg
IGlmICghbV9lbWJlZFNoYWRvd0VsZW1lbnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IAotICAgIHJldHVybiBtX2VtYmVkU2hhZG93RWxlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7Ci19Ci0KLWF1dG8gWW91VHViZVBs
dWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkgLT4g
SW5zdGFsbFJlc3VsdAotewotICAgIG1fZW1iZWRTaGFkb3dFbGVtZW50ID0gWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudDo6Y3JlYXRlKG1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKSk7Ci0KLSAg
ICByb290LmFwcGVuZENoaWxkKCptX2VtYmVkU2hhZG93RWxlbWVudCk7Ci0KLSAgICBhdXRvIGlm
cmFtZUVsZW1lbnQgPSBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aWZyYW1l
VGFnLCBtX3BhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkpOwotICAgIGlmIChtX2F0dHJpYnV0ZXMu
Y29udGFpbnMoIndpZHRoIikpCi0gICAgICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmcoIjEw
MCUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgY29uc3QgYXV0
byYgaGVpZ2h0VmFsdWUgPSBtX2F0dHJpYnV0ZXMuZmluZCgiaGVpZ2h0Iik7Ci0gICAgaWYgKGhl
aWdodFZhbHVlICE9IG1fYXR0cmlidXRlcy5lbmQoKSkgewotICAgICAgICBpZnJhbWVFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIEF0b21TdHJpbmcoIm1heC1oZWln
aHQ6IDEwMCUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgICAgICBp
ZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6aGVpZ2h0QXR0ciwgaGVpZ2h0VmFsdWUtPnZhbHVlKTsKLSAgICB9Ci0KLSAgICBpZnJhbWVF
bGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3Jj
QXR0ciwgeW91VHViZVVSTChtX2F0dHJpYnV0ZXMuZ2V0KCJzcmMiKSkpOwotICAgIGlmcmFtZUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpmcmFt
ZWJvcmRlckF0dHIsIEF0b21TdHJpbmcoIjAiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotICAgIAotICAgIC8vIERpc2FibGUgZnJhbWUgZmxhdHRlbmluZyBmb3IgdGhpcyBp
ZnJhbWUuCi0gICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OnNjcm9sbGluZ0F0dHIsIEF0b21TdHJpbmcoIm5vIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBtX2VtYmVkU2hhZG93RWxlbWVudC0+YXBw
ZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7Ci0KLSAgICByZXR1cm4geyB0cnVlIH07Ci19Ci0gICAg
Ci1zdGF0aWMgVVJMIGNyZWF0ZVlvdVR1YmVVUkwoU3RyaW5nVmlldyB2aWRlb0lELCBTdHJpbmdW
aWV3IHRpbWVJRCkKLXsKLSAgICBBU1NFUlQoIXZpZGVvSUQuaXNFbXB0eSgpKTsKLSAgICBBU1NF
UlQodmlkZW9JRCAhPSAiLyIpOwotICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoInlv
dXR1YmU6IiwgdmlkZW9JRCwgdGltZUlELmlzRW1wdHkoKSA/ICIiIDogInQ9IiwgdGltZUlEKSk7
Ci19Ci0KLXN0YXRpYyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5
S2V5c0FuZFZhbHVlcyhTdHJpbmdWaWV3IHF1ZXJ5U3RyaW5nKQotewotICAgIFlvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlEaWN0aW9uYXJ5OwotICAgIAotICAgIHNp
emVfdCBxdWVyeUxlbmd0aCA9IHF1ZXJ5U3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICghcXVlcnlM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBxdWVyeURpY3Rpb25hcnk7Ci0gICAgCi0gICAgc2l6ZV90
IGVxdWFsU2VhcmNoTG9jYXRpb24gPSAwOwotICAgIHNpemVfdCBlcXVhbFNlYXJjaExlbmd0aCA9
IHF1ZXJ5TGVuZ3RoOwotICAgIAotICAgIHdoaWxlIChlcXVhbFNlYXJjaExvY2F0aW9uIDwgcXVl
cnlMZW5ndGggLSAxICYmIGVxdWFsU2VhcmNoTGVuZ3RoKSB7Ci0gICAgICAgIAotICAgICAgICAv
LyBTZWFyY2ggZm9yICI9Ii4KLSAgICAgICAgc2l6ZV90IGVxdWFsTG9jYXRpb24gPSBxdWVyeVN0
cmluZy5maW5kKCc9JywgZXF1YWxTZWFyY2hMb2NhdGlvbik7Ci0gICAgICAgIGlmIChlcXVhbExv
Y2F0aW9uID09IG5vdEZvdW5kKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAg
ICBzaXplX3QgaW5kZXhBZnRlckVxdWFsID0gZXF1YWxMb2NhdGlvbiArIDE7Ci0gICAgICAgIGlm
IChpbmRleEFmdGVyRXF1YWwgPiBxdWVyeUxlbmd0aCAtIDEpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgCi0gICAgICAgIC8vIEdldCB0aGUga2V5IGJlZm9yZSB0aGUgIj0iLgotICAgICAg
ICBzaXplX3Qga2V5TG9jYXRpb24gPSBlcXVhbFNlYXJjaExvY2F0aW9uOwotICAgICAgICBzaXpl
X3Qga2V5TGVuZ3RoID0gZXF1YWxMb2NhdGlvbiAtIGVxdWFsU2VhcmNoTG9jYXRpb247Ci0gICAg
ICAgIAotICAgICAgICAvLyBTZWFjaCBmb3IgdGhlIGFtcGVyc2FuZC4KLSAgICAgICAgc2l6ZV90
IGFtcGVyc2FuZExvY2F0aW9uID0gcXVlcnlTdHJpbmcuZmluZCgnJicsIGluZGV4QWZ0ZXJFcXVh
bCk7Ci0gICAgICAgIAotICAgICAgICAvLyBHZXQgdGhlIHZhbHVlIGFmdGVyIHRoZSAiPSIsIGJl
Zm9yZSB0aGUgYW1wZXJzYW5kLgotICAgICAgICBzaXplX3QgdmFsdWVMb2NhdGlvbiA9IGluZGV4
QWZ0ZXJFcXVhbDsKLSAgICAgICAgc2l6ZV90IHZhbHVlTGVuZ3RoOwotICAgICAgICBpZiAoYW1w
ZXJzYW5kTG9jYXRpb24gIT0gbm90Rm91bmQpCi0gICAgICAgICAgICB2YWx1ZUxlbmd0aCA9IGFt
cGVyc2FuZExvY2F0aW9uIC0gaW5kZXhBZnRlckVxdWFsOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB2YWx1ZUxlbmd0aCA9IHF1ZXJ5TGVuZ3RoIC0gaW5kZXhBZnRlckVxdWFsOwotICAgICAg
ICAKLSAgICAgICAgLy8gU2F2ZSB0aGUga2V5IGFuZCB0aGUgdmFsdWUuCi0gICAgICAgIGlmIChr
ZXlMZW5ndGggJiYgdmFsdWVMZW5ndGgpIHsKLSAgICAgICAgICAgIFN0cmluZyBrZXkgPSBxdWVy
eVN0cmluZy5zdWJzdHJpbmcoa2V5TG9jYXRpb24sIGtleUxlbmd0aCkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKTsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHF1ZXJ5U3RyaW5nLnN1YnN0
cmluZyh2YWx1ZUxvY2F0aW9uLCB2YWx1ZUxlbmd0aCkudG9TdHJpbmcoKTsKLSAgICAgICAgICAg
IHZhbHVlLnJlcGxhY2UoJysnLCAnICcpOwotCi0gICAgICAgICAgICBpZiAoIWtleS5pc0VtcHR5
KCkgJiYgIXZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBxdWVyeURpY3Rpb25hcnku
YWRkKGtleSwgdmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoYW1wZXJz
YW5kTG9jYXRpb24gPT0gbm90Rm91bmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0g
ICAgICAgIC8vIENvbnRpbnVlIHNlYXJjaGluZyBhZnRlciB0aGUgYW1wZXJzYW5kLgotICAgICAg
ICBzaXplX3QgaW5kZXhBZnRlckFtcGVyc2FuZCA9IGFtcGVyc2FuZExvY2F0aW9uICsgMTsKLSAg
ICAgICAgZXF1YWxTZWFyY2hMb2NhdGlvbiA9IGluZGV4QWZ0ZXJBbXBlcnNhbmQ7Ci0gICAgICAg
IGVxdWFsU2VhcmNoTGVuZ3RoID0gcXVlcnlMZW5ndGggLSBpbmRleEFmdGVyQW1wZXJzYW5kOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gcXVlcnlEaWN0aW9uYXJ5OwotfQotICAgIAotc3RhdGlj
IGJvb2wgaXNZb3VUdWJlVVJMKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGF1dG8gaG9zdE5hbWUg
PSB1cmwuaG9zdCgpOwotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSho
b3N0TmFtZSwgIm0ueW91dHViZS5jb20iKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShob3N0TmFtZSwgInlvdXR1LmJlIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ3d3cueW91dHViZS5jb20iKQotICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgInlvdXR1YmUuY29tIikK
LSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ3d3cu
eW91dHViZS1ub2Nvb2tpZS5jb20iKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShob3N0TmFtZSwgInlvdXR1YmUtbm9jb29raWUuY29tIik7Ci19Ci0KLXN0YXRpYyBj
b25zdCBTdHJpbmcmIHZhbHVlRm9yS2V5KGNvbnN0IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6
S2V5VmFsdWVNYXAmIGRpY3Rpb25hcnksIGNvbnN0IFN0cmluZyYga2V5KQotewotICAgIGNvbnN0
IGF1dG8mIHZhbHVlID0gZGljdGlvbmFyeS5maW5kKGtleSk7Ci0gICAgaWYgKHZhbHVlID09IGRp
Y3Rpb25hcnkuZW5kKCkpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgcmV0
dXJuIHZhbHVlLT52YWx1ZTsKLX0KLQotc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHVi
ZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVJMLCBTdHJpbmcm
IG91dFBhdGhBZnRlckZpcnN0QW1wZXJzYW5kKQotewotICAgIGlmICghdXJsLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIFVSTCgpOwotCi0gICAgLy8gQmFpbCBvdXQg
ZWFybHkgaWYgd2UgYXJlbid0IGV2ZW4gb24gd3d3LnlvdXR1YmUuY29tIG9yIHlvdXR1YmUuY29t
LgotICAgIGlmICghaXNZb3VUdWJlVVJMKHVybCkpCi0gICAgICAgIHJldHVybiBVUkwoKTsKLQot
ICAgIGF1dG8gaG9zdE5hbWUgPSB1cmwuaG9zdCgpOwotICAgIGJvb2wgaXNZb3VUdWJlTW9iaWxl
V2ViQXBwVVJMID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJtLnlv
dXR1YmUuY29tIik7Ci0gICAgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID0gZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ5b3V0dS5iZSIpOwotCi0gICAgLy8gU2hvcnQgVVJM
IG9mIHRoZSBmb3JtOiBodHRwOi8veW91dHUuYmUvdjFkMzAxRAotICAgIGlmIChpc1lvdVR1YmVT
aG9ydGVuZWRVUkwpIHsKLSAgICAgICAgYXV0byB2aWRlb0lEID0gdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCk7Ci0gICAgICAgIGlmICh2aWRlb0lELmlzRW1wdHkoKSB8fCB2aWRlb0lEID09ICIvIikK
LSAgICAgICAgICAgIHJldHVybiBVUkwoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVV
UkwodmlkZW9JRCwgeyB9KTsKLSAgICB9Ci0KLSAgICBhdXRvIHBhdGggPSB1cmwucGF0aCgpOwot
ICAgIGF1dG8gcXVlcnkgPSB1cmwucXVlcnkoKTsKLSAgICBhdXRvIGZyYWdtZW50ID0gdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgLy8gT24gdGhlIFlvdVR1YmUgbW9iaWxlIHdlYiBh
cHAsIHRoZSBwYXRoIGFuZCBxdWVyeSBzdHJpbmcgYXJlIHB1dCBpbnRvIHRoZQotICAgIC8vIGZy
YWdtZW50IHNvIHRoYXQgb25lIHdlYiBwYWdlIGlzIG9ubHkgZXZlciBsb2FkZWQgKHNlZSA8cmRh
cjovL3Byb2JsZW0vOTU1MDYzOT4pLgotICAgIGlmIChpc1lvdVR1YmVNb2JpbGVXZWJBcHBVUkwp
IHsKLSAgICAgICAgc2l6ZV90IGxvY2F0aW9uID0gZnJhZ21lbnQuZmluZCgnPycpOwotICAgICAg
ICBpZiAobG9jYXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIHBhdGggPSBmcmFnbWVu
dDsKLSAgICAgICAgICAgIHF1ZXJ5ID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5zdWJzdHJpbmcoMCwgbG9jYXRpb24pOwotICAg
ICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmcobG9jYXRpb24gKyAxKTsKLSAgICAg
ICAgfQotICAgICAgICBmcmFnbWVudCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgfQotICAgIAotICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL3dhdGNoIikpIHsKLSAg
ICAgICAgaWYgKCFxdWVyeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHF1
ZXJ5RGljdGlvbmFyeSA9IHF1ZXJ5S2V5c0FuZFZhbHVlcyhxdWVyeSk7Ci0gICAgICAgICAgICBT
dHJpbmcgdmlkZW9JRCA9IHZhbHVlRm9yS2V5KHF1ZXJ5RGljdGlvbmFyeSwgInYiKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKCF2aWRlb0lELmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIGZyYWdtZW50RGljdGlvbmFyeSA9IHF1ZXJ5S2V5c0FuZFZhbHVl
cyh1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgIFN0cmluZyB0aW1l
SUQgPSB2YWx1ZUZvcktleShmcmFnbWVudERpY3Rpb25hcnksICJ0Iik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgdGltZUlEKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gTWF5IGJlIGEgbmV3LXN0eWxlIGxp
bmsgKHNlZSA8cmRhcjovL3Byb2JsZW0vNzczMzY5Mj4pLgotICAgICAgICBpZiAoZnJhZ21lbnQu
c3RhcnRzV2l0aCgnIScpKSB7Ci0gICAgICAgICAgICBxdWVyeSA9IGZyYWdtZW50LnN1YnN0cmlu
ZygxKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFxdWVyeS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBxdWVyeURpY3Rpb25hcnkgPSBxdWVyeUtleXNB
bmRWYWx1ZXMocXVlcnkpOwotICAgICAgICAgICAgICAgIFN0cmluZyB2aWRlb0lEID0gdmFsdWVG
b3JLZXkocXVlcnlEaWN0aW9uYXJ5LCAidiIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIHRpbWVJRCA9IHZhbHVlRm9yS2V5KHF1ZXJ5RGljdGlvbmFyeSwgInQiKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgdGltZUlEKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi92LyIpIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi9lLyIpKSB7Ci0gICAgICAgIFN0
cmluZ1ZpZXcgdmlkZW9JRDsKLSAgICAgICAgU3RyaW5nVmlldyBwYXRoQWZ0ZXJGaXJzdEFtcGVy
c2FuZDsKLQotICAgICAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCk7Ci0gICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IGxhc3RQYXRoQ29t
cG9uZW50LmZpbmQoJyYnKTsKLSAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0aW9uICE9IG5vdEZv
dW5kKSB7Ci0gICAgICAgICAgICAvLyBTb21lIFVSTHMgd2UgY2FyZSBhYm91dCB1c2UgJiBpbiBw
bGFjZSBvZiA/IGZvciB0aGUgZmlyc3QgcXVlcnkgcGFyYW1ldGVyLgotICAgICAgICAgICAgdmlk
ZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZygwLCBhbXBlcnNhbmRMb2NhdGlvbik7
Ci0gICAgICAgICAgICBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IGxhc3RQYXRoQ29tcG9uZW50
LnN1YnN0cmluZyhhbXBlcnNhbmRMb2NhdGlvbiArIDEsIGxhc3RQYXRoQ29tcG9uZW50Lmxlbmd0
aCgpIC0gYW1wZXJzYW5kTG9jYXRpb24pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHZp
ZGVvSUQgPSBsYXN0UGF0aENvbXBvbmVudDsKLQotICAgICAgICBpZiAoIXZpZGVvSUQuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBvdXRQYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IHBhdGhBZnRl
ckZpcnN0QW1wZXJzYW5kLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm4gY3JlYXRlWW91
VHViZVVSTCh2aWRlb0lELCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBVUkwoKTsKLX0KLQotU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91
VHViZVVSTChjb25zdCBTdHJpbmcmIHNyY1N0cmluZykKLXsKLSAgICBVUkwgc3JjVVJMID0gbV9w
YXJlbnRFbGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyhzcmNTdHJpbmcpKTsKLSAgICByZXR1cm4geW91VHViZVVSTEZyb21BYnNv
bHV0ZVVSTChzcmNVUkwsIHNyY1N0cmluZyk7Ci19Ci0KLVN0cmluZyBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgc3JjU3RyaW5nKQotewotICAgIGJvb2wgaXNZb3VUdWJlU2hvcnRlbmVkVVJM
ID0gZmFsc2U7Ci0gICAgU3RyaW5nIHBvc3NpYmx5TWFsZm9ybWVkUXVlcnk7Ci0gICAgVVJMIHlv
dVR1YmVVUkwgPSBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChzcmNVUkwsIGlzWW91VHViZVNo
b3J0ZW5lZFVSTCwgcG9zc2libHlNYWxmb3JtZWRRdWVyeSk7Ci0gICAgaWYgKHNyY1VSTC5pc0Vt
cHR5KCkgfHwgeW91VHViZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzcmNTdHJpbmc7
Ci0KLSAgICAvLyBUcmFuc2Zvcm0gdGhlIHlvdXR1YmVVUkwgKHlvdXR1YmU6VmlkZW9JRCkgdG8g
aWZyYW1lIGVtYmVkIHVybCB3aGljaCBoYXMgdGhlIGZvcm1hdDogaHR0cDovL3d3dy55b3V0dWJl
LmNvbS9lbWJlZC9WaWRlb0lECi0gICAgYXV0byBzcmNQYXRoID0gc3JjVVJMLnBhdGgoKTsKLSAg
ICBjb25zdCBTdHJpbmcmIHZpZGVvSUQgPSB5b3VUdWJlVVJMLnN0cmluZygpLnN1YnN0cmluZyh5
b3VUdWJlVVJMLnByb3RvY29sKCkubGVuZ3RoKCkgKyAxKTsKLSAgICBzaXplX3QgbG9jYXRpb25P
ZlZpZGVvSURJblBhdGggPSBzcmNQYXRoLmZpbmQodmlkZW9JRCk7Ci0KLSAgICBzaXplX3QgbG9j
YXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEID0gbm90Rm91bmQ7Ci0gICAgaWYgKGxvY2F0aW9uT2ZW
aWRlb0lESW5QYXRoICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIEFTU0VSVChsb2NhdGlvbk9mVmlk
ZW9JREluUGF0aCk7Ci0gICAgCi0gICAgICAgIC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2Ug
bmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC9wYXRoL1ZpZGVvSWQuCi0gICAgICAgIGxvY2F0
aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5maW5kKHNyY1Bh
dGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKSk7Ci0gICAgfSBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzcmNQYXRoLCAiL3dhdGNoIikpIHsKLSAg
ICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBuZWVkIHRvIGdldCB0aGUgcGFydCBi
ZWZvcmUgL3dhdGNoLyMhdj1WaWRlb0lECi0gICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhp
cyBiZSBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlPwotICAgICAgICBsb2NhdGlvbk9mUGF0aEJlZm9y
ZVZpZGVvSUQgPSBzcmNTdHJpbmcuZmluZCgiL3dhdGNoIik7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHJldHVybiBzcmNTdHJpbmc7Ci0KLSAgICBBU1NFUlQobG9jYXRpb25PZlBhdGhCZWZvcmVWaWRl
b0lEICE9IG5vdEZvdW5kKTsKLQotICAgIGF1dG8gc3JjVVJMUHJlZml4ID0gU3RyaW5nVmlldyhz
cmNTdHJpbmcpLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQpOwotICAg
IGF1dG8gcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKLQotICAgIC8vIElmIHRoZSBVUkwgaGFzIG5v
IHF1ZXJ5LCB1c2UgdGhlIHBvc3NpYmx5IG1hbGZvcm1lZCBxdWVyeSB3ZSBmb3VuZC4KLSAgICBp
ZiAocXVlcnkuaXNFbXB0eSgpKQotICAgICAgICBxdWVyeSA9IHBvc3NpYmx5TWFsZm9ybWVkUXVl
cnk7Ci0KLSAgICAvLyBBcHBlbmQgdGhlIHF1ZXJ5IHN0cmluZyBpZiBpdCBpcyB2YWxpZC4KLSAg
ICByZXR1cm4gbWFrZVN0cmluZygKLSAgICAgICAgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID8gImh0
dHA6Ly93d3cueW91dHViZS5jb20iIDogc3JjVVJMUHJlZml4LAotICAgICAgICAiL2VtYmVkLyIs
Ci0gICAgICAgIHZpZGVvSUQsCi0gICAgICAgIHF1ZXJ5LmlzRW1wdHkoKSA/ICIiIDogIj8iLAot
ICAgICAgICBxdWVyeQotICAgICk7Ci19Ci0gICAgCi1ib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNl
bWVudDo6c3VwcG9ydHNVUkwoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIGlzWW91VHVi
ZVVSTCh1cmwpOwotfQotCi1ib29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6aXNFbmFibGVk
QnlTZXR0aW5ncyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCi17Ci0gICAgcmV0dXJuIHNldHRp
bmdzLnlvdVR1YmVGbGFzaFBsdWdpblJlcGxhY2VtZW50RW5hYmxlZCgpOwotfQotICAgIAotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzllYTk3YzIy
MmEzODA1YjcxODcxODAzZjU1ODI1ZjdhYzAwNTY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJQbHVnaW5SZXBsYWNlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OwotCi1jbGFzcyBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQgZmluYWwgOiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgewotcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyUGx1Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1lbnRS
ZWdpc3RyYXIpOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBLZXlWYWx1
ZU1hcDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgeW91VHViZVVSTEZyb21B
YnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpOwot
Ci1wcml2YXRlOgotICAgIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudChIVE1MUGx1Z0luRWxlbWVu
dCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpOwotICAgIHN0YXRpYyBSZWY8UGx1Z2luUmVwbGFjZW1lbnQ+IGNyZWF0
ZShIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGaWxl
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVVJMKGNv
bnN0IFVSTCYpOwotICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZEJ5U2V0dGluZ3MoY29uc3QgU2V0
dGluZ3MmKTsKLQotICAgIEluc3RhbGxSZXN1bHQgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jv
b3QmKSBmaW5hbDsKLQotICAgIFN0cmluZyB5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgcmF3VVJM
KTsKLQotICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgZmluYWwgeyByZXR1cm4gbV9lbWJl
ZFNoYWRvd0VsZW1lbnQ7IH0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7Ci0KLSAgICBXZWFrUHRyPEhUTUxQbHVnSW5FbGVtZW50
PiBtX3BhcmVudEVsZW1lbnQ7Ci0gICAgUmVmUHRyPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ+
IG1fZW1iZWRTaGFkb3dFbGVtZW50OwotICAgIEtleVZhbHVlTWFwIG1fYXR0cmlidXRlczsKLX07
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDkwNmMyOTk4NDVkYjAzZjc3MzhlNTgx
ODUwZDRkMGM0YWU5YTMwYzYuLjU0YmQyYjNkYzExMGJjMjIwOGIyNmJkNWFjZDcwZGQ2MDMxZTA4
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTAwLDggKzEwMCw2IEBAIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCi1Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KLU1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KQEAgLTE3Miw3
ICsxNzAsNiBAQCBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW0gQG5vLXVu
aWZ5CiBlZGl0aW5nL21hYy9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbQogZmlsZWFwaS9G
aWxlQ29jb2EubW0KIGhpc3RvcnkvbWFjL0hpc3RvcnlJdGVtTWFjLm1tCi1odG1sL3NoYWRvdy9Z
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcAogaW5zcGVjdG9yL21hYy9QYWdlRGVidWdnZXJN
YWMubW0KIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI3MjMyZDJiMmU5YzQ0NjA1OGVl
YzY0Y2EzMDUzMDc3YjAwYmMxYS4uMzRhYzlkNTllZDAyZjA5OTMyMWYxMTljYjhhMDIyYjU5MTEx
OTdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTA5LDggKzEwOSw2IEBACiAJCTA3Mjc3RTU1MTdEMDE4Q0MwMDE1NTM0RCAv
KiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcyNzdFNDkxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJl
YW1UcmFja0V2ZW50LmggKi87IH07CiAJCTA3Mjg4MEQxMjAxMEYxRjYwMDcxQjI1NSAvKiBSZWFs
dGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyODgwRDAyMDEwRUVENzAwNzFCMjU1IC8qIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDcyQTcwNDAxRDZFOEY2MjAwREYwQUZDIC8qIE92ZXJjb25zdHJhaW5lZEVycm9y
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MkE3MDNFMUQ2RThGNjIwMERGMEFGQyAvKiBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50LmggKi87
IH07Ci0JCTA3MkFFMUU1MTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyQUUxREYxODND
MDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDcyQUUxRTgxODNDMDc0MTAwMEE1OTg4IC8q
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJBRTFFMjE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKIAkJMDczNzk0REUxOUVFMkM1MjAwRTVBMDQ1IC8q
IFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDczNzk0REMxOUVFMkM1MjAwRTVBMDQ1IC8qIFJUQ09mZmVyQW5zd2Vy
T3B0aW9ucy5oICovOyB9OwogCQkwNzM3OTRFNjE5RUUyRkYyMDBFNUEwNDUgLyogSlNSVENDb25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzM3OTRFNDE5RUUyRkYyMDBFNUEwNDUgLyogSlNSVENDb25maWd1cmF0aW9uLmggKi87IH07
CiAJCTA3Mzc5NEVDMTlFRTM0MUUwMEU1QTA0NSAvKiBKU1JUQ0ljZVNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0RUExOUVFMzQxRTAw
RTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggKi87IH07CkBAIC0xMzIsNyArMTMwLDYgQEAKIAkJ
MDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg1MTQ2M0FEODcwMEY1MDJD
RiAvKiBUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3NkQxQzFGMjNGNkVCNUIwMEQ5NUIwNiAv
KiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkQxQzFEMjNGNkQ5RDgwMEQ5NUIwNiAvKiBTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzZGMEQwRTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmggKi87IH07Ci0JCTA3NzY2NEZEMTgzRTZCNUMwMDEzM0I5MiAv
KiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovOyB9OwogCQkwNzdBRjE0MDE4RjRBRTQwMDAwMUVE
NjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc3QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNzdCNjQxMzFCOTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
N0I2NDExMUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODU4
LDcgKzE4NTUsNiBAQAogCQk1MzhFQzkzMjFGOTlCOUY3MDA0RDIyQTggLyogSlNNYWxsb2NTdGF0
aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3QjRFQTY4MTRDOTM0ODQwMEM4RjVCRiAvKiBKU01hbGxvY1N0YXRpc3RpY3MuY3BwICovOyB9
OwogCQk1MzhFQzkzMzFGOTlCOUY3MDA0RDIyQTggLyogSlNNb2NrQ0RNRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNEI3MkUxRTAzQ0E0
QTAwRTIzNUEyIC8qIEpTTW9ja0NETUZhY3RvcnkuaCAqLzsgfTsKIAkJNTM4RUM5MzQxRjk5QjlG
NzAwNEQyMkE4IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZGM0U5MzFDMUY4NTU1MDA2MURCRDQgLyogSlNNb2Nr
UGFnZU92ZXJsYXkuaCAqLzsgfTsKLQkJNTM4RUM5M0UxRjk5QkY1QTAwNEQyMkE4IC8qIEpTUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQuY3BwICovOyB9OwogCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0Ug
LyogU29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzOEYxMEEzMUY5MDBCREMwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQu
Y3BwICovOyB9OwogCQk1M0I4OTVBRjE5REM3RUQ5MDA5Q0FBOTMgLyogTWljcm90YXNrcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNCODk1QUQxOURD
N0MzNzAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1M0M4Mjk4RTEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVy
RmxleGlibGVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzQ3LDcgKzIz
NDMsNiBAQAogCQk3QTQ1MDMzMDE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVyZWRMaW5lUmVhZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTQ1MDMy
RTE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVyZWRMaW5lUmVhZGVyLmggKi87IH07CiAJCTdBNTQ4
NTgwMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEg
LyogSW5zcGVjdG9ySGlzdG9yeS5oICovOyB9OwogCQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEg
LyogRE9NUGF0Y2hTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTU0ODgxNTE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0Lmgg
Ki87IH07Ci0JCTdBNTUxNUY1MTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
NTUxNUYzMTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTU2OTk3MDIw
ODZDNjE5MDAwRTA0MzMgLyogQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNTY5OTZFMjA4NkM2MTgw
MDBFMDQzMyAvKiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBNjc0QkRDMEY5RUJGNEUwMDZD
RjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuaCAqLzsgfTsKIAkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM0MjgsNyArMzQyMyw2IEBACiAJCUE1MkIzNDhGMUZBM0JEQTYwMDhCNjI0NiAvKiBTZXJ2
aWNlV29ya2VyRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUyQjM0OEMxRkEzQkQ3OTAwOEI2MjQ2IC8qIFNlcnZpY2VXb3JrZXJEZWJ1
Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTUyQjM0OTYxRkEzRTI5MDAwOEI2MjQ2IC8qIFNlcnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyQjM0
OTMxRkEzRTI4NjAwOEI2MjQ2IC8qIFNlcnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MkIzNDlFMUZB
NDE3MDMwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTJCMzQ5QzFGQTQxNkY4MDA4QjYyNDYgLyog
V29ya2VyRGVidWdnZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUE1NDE2RkU2MTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VUdWJlRW1iZWRT
aGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTQxNkZFNDE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dC5oICovOyB9OwogCQlBNTRBMEM2MjFEQjdGOEMxMDAxN0E5MEIgLyogV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU0QTBDNjAxREI3RjhCNzAwMTdBOTBCIC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aCAqLzsgfTsKIAkJQTU0QTBDNjYxREI4MDUzNjAwMTdBOTBCIC8qIFdvcmtlckRlYnVnZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTRBMEM2NDFE
QjgwNTMyMDAxN0E5MEIgLyogV29ya2VyRGVidWdnZXIuaCAqLzsgfTsKIAkJQTU0QTBDNjgxREI4
MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTBDNjcxREI4MDdEMDAwMTdB
OTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oICovOyB9OwpAQCAtNTkzNCwxMiAr
NTkyOCw2IEBACiAJCTA3Mjg4MEQwMjAxMEVFRDcwMDcxQjI1NSAvKiBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZVZp
ZGVvQ2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJBNzAz
RTFENkU4RjYyMDBERjBBRkMgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkE3MDNGMUQ2RThGNjIwMERGMEFGQyAvKiBP
dmVyY29uc3RyYWluZWRFcnJvckV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPdmVy
Y29uc3RyYWluZWRFcnJvckV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDcyQUUxREYxODNDMDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblJlcGxhY2VtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTA3MkFFMUUwMTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwNzJBRTFFMTE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MkFFMUUyMTgzQzA3
NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwNzJBRTFFMzE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcy
QUUxRTQxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkNBODYwMTZDQjRE
QzMwMDhBRTEzMSAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJEQkJGQjI1REIzOEJDMDBBMTM1MEUgLyogTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyREJDMDMyNURDNkJEMzAwQTEzNTBFIC8q
IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTk1LDggKzU5ODMs
NiBAQAogCQkwNzZFMTFCRTFGNjgzRTBEMDAxNzczOTUgLyogVHJhY2tQcml2YXRlQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja1ByaXZhdGVCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0
IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyog
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzdBRjEz
RTE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc3QUYxNDIxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTA2ODksOCArMTA2NzUsNiBAQAogCQk3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyog
SW5zcGVjdG9ySGlzdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JIaXN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNTQ4ODE1MTRF
NDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NUGF0Y2hTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBNTQ4ODE2MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUGF0Y2hTdXBwb3J0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0E1NTE1RjMxOTE4MzBBMzAwOTY4N0QyIC8qIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJN0E1NTE1RjQxOTE4MzBBMzAwOTY4N0QyIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU2OTk2RTIwODZD
NjE4MDAwRTA0MzMgLyogQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8q
IFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VHcm91cExvYWREZWZlcnJl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMDMsOCArMTI5ODcsNiBAQAog
CQlBNTJCMzQ5QzFGQTQxNkY4MDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJEZWJ1Z2dlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MkQ4NUNBMjFCMDk4MkYwMDYxQzFFQiAvKiBTZXJ2
ZXJUaW1pbmdQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmVyVGltaW5nUGFyc2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUyRDg1Q0IyMUIwOTgzMDAwNjFD
MUVCIC8qIFNlcnZlclRpbWluZ1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2ZXJUaW1pbmdQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU0MTZGRTMxODgxMEVGODAw
MDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NDE2RkU0MTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU0QTBDNUYxREI3RjhCNzAwMTdBOTBCIC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEEwQzYwMURC
N0Y4QjcwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU0QTBDNjMxREI4MDUzMjAwMTdBOTBCIC8qIFdvcmtl
ckRlYnVnZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
ckRlYnVnZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODU5LDIxICsx
Nzg0MSw2IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKLQkJMDcyQUUxREUxODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTA3MkFFMURGMTgzQzA3NDEwMDBBNTk4
OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovLAotCQkJCTA3MkFFMUUxMTgzQzA3NDEwMDBBNTk4
OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MgKi8sCi0JCQkJMDcyQUUxRTIxODND
MDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi8sCi0JCQkJMDcy
QUUxRTMxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbCAq
LywKLQkJCQkwNzJBRTFFNDE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuanMgKi8sCi0JCQkJMDcyQUUxRTAxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tICovLAotCQkJCTdBNTUxNUY0MTkxODMwQTMwMDk2ODdEMiAvKiBZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovLAotCQkJCTdBNTUxNUYzMTkxODMwQTMwMDk2
ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0g
cGx1Z2luczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTA3NkYwRDA4MTJC
ODE5MjcwMEMyNkFBNCAvKiBhdmZvdW5kYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtMTg1OTksOCArMTg1NjYsNiBAQAogCQkJCUJDOTg1NDQzMENE
M0Q5RDAwMDA2OUJDMSAvKiBXaW5kb3cgKi8sCiAJCQkJQTgzQjc5MjIwQ0NCMDBGMDAwMEIwODI1
IC8qIFhNTCAqLywKIAkJCQlBODNCNzkwQzBDQ0FGRjgzMDAwQjA4MjUgLyogWFBhdGggKi8sCi0J
CQkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwICovLAotCQkJCTA3NzY2NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmggKi8sCiAJCQkJQkMzNDhCRDEwREI3RjgwNDAwNEFCQUJCIC8qIFdl
YkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuY3BwICovLAogCQkJCUJDMzQ4QkQyMERCN0Y4MDQwMDRB
QkFCQiAvKiBXZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmggKi8sCiAJCQkJQkMzNDhCRDEwREI3
RjgwNDAwNEFCQUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCAqLywKQEAgLTE5ODEyLDggKzE5
Nzc3LDYgQEAKIAkJCQkxNDJCOTdDODEzMTM4OTQzMDA4QkVGNEIgLyogVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmggKi8sCiAJCQkJQ0UyMTIxNTQyNDBEQkQzMDAwNkVENDQzIC8qIFRleHRQbGFj
ZWhvbGRlckVsZW1lbnQuY3BwICovLAogCQkJCUNFMjEyMTUzMjQwREJEMzAwMDZFRDQ0MyAvKiBU
ZXh0UGxhY2Vob2xkZXJFbGVtZW50LmggKi8sCi0JCQkJQTU0MTZGRTMxODgxMEVGODAwMDlGQzVG
IC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwICovLAotCQkJCUE1NDE2RkU0MTg4MTBF
RjgwMDA5RkM1RiAvKiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IHNoYWRvdzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDQ2NSw3ICsy
NDQyOCw2IEBACiAJCQkJQTFGNzZCMEUxRjQ0QzBDRjAwMTRDMzE4IC8qIHBheW1lbnRyZXF1ZXN0
ICovLAogCQkJCTkzQjBBNjQyMjZDREM1NzQwMEFBMjFFNCAvKiBwZXJtaXNzaW9ucyAqLywKIAkJ
CQkxREVGMDZBMjIzM0MzMkRCMDBFRTIyOEQgLyogcGljdHVyZWlucGljdHVyZSAqLywKLQkJCQkw
NzJBRTFERTE4M0MwNTEzMDAwQTU5ODggLyogcGx1Z2lucyAqLywKIAkJCQk0MThGQ0JCODI3MDZF
NEJEMDBGOTZFQ0EgLyogcHVzaC1hcGkgKi8sCiAJCQkJQ0RDMzEyRTAyMkZDRDBCMDAwMTIwNEVD
IC8qIHJlbW90ZXBsYXliYWNrICovLAogCQkJCUFBMkE1QUI3MTZBNDg1QTQwMDk3NUEyNSAvKiBz
cGVlY2ggKi8sCkBAIC0zMzkwMiw3ICszMzg2NCw2IEBACiAJCQkJNTczMDNCRjQyMDA5OTA0NjAw
MzU1OTY1IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3MzAzQzExMjAwOTlDQjEwMDM1NTk2NSAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNDMDAyMDA5OTUxQzAwMzU1
OTY1IC8qIEpTUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3
NzY2NEZEMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNjU4RkZBMjE1MjJFRjNBMDBERDU1OTUgLyogSlNSYWRpb05v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIwMjA5RDFDQzYwMDAwQkUzMjUgLyog
SlNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkM0Qzk2REYxQUQ0NDgzNTAwMzYzRjY0IC8q
IEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDg2
MSw3ICszNDgyMiw2IEBACiAJCQkJQTlDNkU0RjQwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVn
aW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwOEZFREQxRDU5MkI4QjAwOEJBOENC
IC8qIFBsdWdpbkluZm9Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcyQUUxRTUxODND
MDc0MTAwMEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MUUyMTgzQTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEFGREFDM0QxMEY1NDQ4QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwu
aCBpbiBIZWFkZXJzICovLApAQCAtMzQ5MzgsNyArMzQ4OTgsNiBAQAogCQkJCTU1MEEwQkNBMDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Mx
RjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTVFMzFGNDFFMENCMEI1MDA0QjM3MUMgLyogUXVpY2tMb29rLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwNzJBRTFFODE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUVFOTJDMjIzODhBN0QwMDQxNTdBOSAv
KiBRdWlya3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUUzNzE3MTM3MzZBNjYwMEI5RTkxOSAv
KiBRdW90ZWRQcmludGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVBNTc0RjI5MTMxREI5NkQw
MDQ3MUI4OCAvKiBRdW90ZXNEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTM2Mzg2LDggKzM2MzQ1
LDYgQEAKIAkJCQlFMUYxRTgzMDBDM0MyQkI5MDA2REIzOTEgLyogWFNMVEV4dGVuc2lvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vz
c29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNM
VFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTQxNkZFNjE4ODEwRUY4MDAwOUZD
NUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0E1
NTE1RjUxOTE4MzBBMzAwOTY4N0QyIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKQEAgLTM2ODU3LDcgKzM2ODE0LDYgQEAKIAkJCQlDRDI3QUU1MTIyQTk4Njg3MDA5NDdG
RjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MEUy
RDBGMjZGMjUwODkwMDE0QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0
YVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzOEVDOTNFMUY5OUJGNUEwMDREMjJB
OCAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzNUM0NzcwMDlBQzRENzMwMEE2QUFCNCAvKiBLZXlFdmVudE1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTk4RTBCMTYwM0NENjAwMEZFQTNCMSAvKiBMZWdhY3lDRE0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RFOEI1RUMxQTY5Nzc3MzAwQjRCNjZBIC8qIExlZ2FjeUNETVByaXZhdGVD
bGVhcktleS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IGU4Yjk1NGU0NDZk
MGUxNzhiYzhjNDRjNGY0NGU1NmJmYTA5YmMzMTUuLjI5NmM1MzVlOGM1Yjc5M2U5YjFkY2NiNTgx
MDVmODEwNzMwZjg0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtNzgsMTIgKzc4LDggQEAgSlNPYmpl
Y3QqIHBsdWdpblNjcmlwdE9iamVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNIVE1MRWxlbWVudCoKIAogICAgIC8vIENob2tlIHBvaW50IGZvciBzY3JpcHQvcGx1Z2lu
IGludGVyYWN0aW9uOyBub3RpZnkgRE9NVGltZXIgb2YgdGhlIGV2ZW50LgogICAgIERPTVRpbWVy
OjpzY3JpcHREaWRJbnRlcmFjdFdpdGhQbHVnaW4ocGx1Z2luRWxlbWVudCk7Ci0KLSAgICAvLyBG
aXJzdCwgc2VlIGlmIHRoZSBlbGVtZW50IGhhcyBhIHBsdWctaW4gcmVwbGFjZW1lbnQgd2l0aCBh
IHNjcmlwdC4KLSAgICBpZiAoYXV0byogc2NyaXB0T2JqZWN0ID0gcGx1Z2luRWxlbWVudC5zY3Jp
cHRPYmplY3RGb3JQbHVnaW5SZXBsYWNlbWVudCgpKQotICAgICAgICByZXR1cm4gc2NyaXB0T2Jq
ZWN0OwogICAgIAotICAgIC8vIE5leHQsIHNlZSBpZiB3ZSBjYW4gYXNrIHRoZSBwbHVnLWluIHZp
ZXcgZm9yIGl0cyBzY3JpcHQgb2JqZWN0LgorICAgIC8vIFNlZSBpZiB3ZSBjYW4gYXNrIHRoZSBw
bHVnLWluIHZpZXcgZm9yIGl0cyBzY3JpcHQgb2JqZWN0LgogICAgIGlmIChhdXRvKiBzY3JpcHRP
YmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UocGx1Z2luRWxlbWVu
dCwganNIVE1MRWxlbWVudC0+Z2xvYmFsT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4gc2NyaXB0
T2JqZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IDhjNjcyOTE3M2NmNmIwNjAzMDZkNzg0M2Y5MTQ3NzkyZjYyMjBh
MmQuLmVlOGI3MTgwZjFiZjhkMGNlYWM4YjNhMjIwMjI3NjJjNTBmNDExYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00
ODc5LDExICs0ODc5LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4odmlzaXRv
cik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0N1c3RvbU1hcmtG
dW5jdGlvbn07Ci0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQ
bHVnaW59KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiBQTEFURk9STShD
T0NPQSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVj
dC0+d3JhcHBlZCgpLnBsdWdpblJlcGxhY2VtZW50U2NyaXB0T2JqZWN0KCkudmlzaXQodmlzaXRv
cik7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKLSAg
ICAgICAgfQogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2Vu
ZXJhdGVBZGRPcGFxdWVSb290fSkgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3
dGYvR2V0UHRyLmg+Iik7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2VuZXJhdGVBZGRPcGFxdWVSb290fTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggOTY1MWQ4NGVhMDJiNWY5N2Yy
NmI3NzRlMGYzNjg1ZGUyOTg3NDc5YS4uNGU0YTAxNmZmY2IyOWMyOGI2MjA5ODQ0NzAzYWI0ZjIx
NDdmNzRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAg
LTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRlICJQbHVnaW5SZXBsYWNl
bWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1i
ZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpAQCAtNTQsMTEgKzUzLDYg
QEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlICJRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIgotI2luY2x1ZGUg
IllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEhUTUxQbHVnSW5FbGVtZW50KTsKQEAg
LTI1NiwxMSArMjUwLDggQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6c3VwcG9ydHNGb2N1cygp
IGNvbnN0CiAgICAgcmV0dXJuICFkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRl
cmVyKCkpLmlzUGx1Z2luVW5hdmFpbGFibGUoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7
Ci0gICAgaWYgKG1fcGx1Z2luUmVwbGFjZW1lbnQgJiYgbV9wbHVnaW5SZXBsYWNlbWVudC0+d2ls
bENyZWF0ZVJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBtX3BsdWdpblJlcGxhY2VtZW50LT5j
cmVhdGVFbGVtZW50UmVuZGVyZXIoKnRoaXMsIFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3Np
dGlvbik7Ci0KICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKQEAgLTI4OCwxMjMgKzI3OSwxMyBAQCB2b2lk
IEhUTUxQbHVnSW5FbGVtZW50OjpzZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlIHN0YXRlKQog
ICAgICAgICBtX3N3YXBSZW5kZXJlclRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lk
IEhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qm
IHJvb3QpCi17Ci0gICAgaWYgKCFtX3BsdWdpblJlcGxhY2VtZW50IHx8ICFkb2N1bWVudCgpLnBh
Z2UoKSB8fCBkaXNwbGF5U3RhdGUoKSAhPSBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVudCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIHJvb3Quc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKHRy
dWUpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wbHVnaW5SZXBsYWNlbWVudC0+aW5zdGFsbFJlcGxh
Y2VtZW50KHJvb3QpOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LnN1Y2Nlc3MgfHwgIXJlc3VsdC5zY3JpcHRPYmplY3QpOwotICAgIG1fcGx1Z2luUmVw
bGFjZW1lbnRTY3JpcHRPYmplY3QgPSByZXN1bHQuc2NyaXB0T2JqZWN0OwotI2VuZGlmCi0KLSAg
ICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHsKLSAgICAgICAgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlp
bmdQbHVnaW5SZXBsYWNlbWVudCk7Ci0gICAgICAgIGludmFsaWRhdGVTdHlsZUFuZFJlbmRlcmVy
c0ZvclN1YnRyZWUoKTsKLSAgICB9Ci19Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLXN0YXRpYyB2
b2lkIHJlZ2lzdHJhcihjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYpOwotI2VuZGlmCi0KLXN0YXRp
YyBWZWN0b3I8UmVwbGFjZW1lbnRQbHVnaW4qPiYgcmVnaXN0ZXJlZFBsdWdpblJlcGxhY2VtZW50
cygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxSZXBsYWNlbWVudFBsdWdp
bio+PiByZWdpc3RlcmVkUmVwbGFjZW1lbnRzOwotICAgIHN0YXRpYyBib29sIGVuZ2luZXNRdWVy
aWVkID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKGVuZ2luZXNRdWVyaWVkKQotICAgICAgICByZXR1
cm4gcmVnaXN0ZXJlZFJlcGxhY2VtZW50czsKLSAgICBlbmdpbmVzUXVlcmllZCA9IHRydWU7Ci0K
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6cmVn
aXN0ZXJQbHVnaW5SZXBsYWNlbWVudChyZWdpc3RyYXIpOwotICAgIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6cmVnaXN0ZXJQbHVnaW5SZXBsYWNlbWVudChyZWdpc3RyYXIpOwotI2VuZGlmCi0g
ICAgCi0gICAgcmV0dXJuIHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7Ci19Ci0KLSNpZiBQTEFURk9S
TShDT0NPQSkKLXN0YXRpYyB2b2lkIHJlZ2lzdHJhcihjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYg
cmVwbGFjZW1lbnQpCi17Ci0gICAgcmVnaXN0ZXJlZFBsdWdpblJlcGxhY2VtZW50cygpLmFwcGVu
ZChuZXcgUmVwbGFjZW1lbnRQbHVnaW4ocmVwbGFjZW1lbnQpKTsKLX0KLSNlbmRpZgotCi1zdGF0
aWMgUmVwbGFjZW1lbnRQbHVnaW4qIHBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBWZWN0b3I8UmVwbGFjZW1lbnRQ
bHVnaW4qPiYgcmVwbGFjZW1lbnRzID0gcmVnaXN0ZXJlZFBsdWdpblJlcGxhY2VtZW50cygpOwot
ICAgIGlmIChyZXBsYWNlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIFN0cmluZyBleHRlbnNpb247Ci0gICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVy
bC5sYXN0UGF0aENvbXBvbmVudCgpOwotICAgIHNpemVfdCBkb3RPZmZzZXQgPSBsYXN0UGF0aENv
bXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwotICAgIGlmIChkb3RPZmZzZXQgIT0gbm90Rm91bmQp
Ci0gICAgICAgIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhkb3RPZmZz
ZXQgKyAxKS50b1N0cmluZygpOwotCi0gICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKLSAgICBp
ZiAodHlwZS5pc0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHR5cGUg
PSBtaW1lVHlwZUZyb21EYXRhVVJMKHVybC5zdHJpbmcoKSk7Ci0gICAgCi0gICAgaWYgKHR5cGUu
aXNFbXB0eSgpICYmICFleHRlbnNpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byog
cmVwbGFjZW1lbnQgOiByZXBsYWNlbWVudHMpIHsKLSAgICAgICAgICAgIGlmIChyZXBsYWNlbWVu
dC0+c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGV4dGVuc2lvbikgJiYgcmVwbGFjZW1lbnQtPnN1cHBv
cnRzVVJMKHVybCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50OwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAo
ZXh0ZW5zaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRl
bnNpb24pOwotICAgIH0KLQotICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7
Ci0gICAgICAgIGlmIChyZXBsYWNlbWVudC0+c3VwcG9ydHNUeXBlKHR5cGUpICYmIHJlcGxhY2Vt
ZW50LT5zdXBwb3J0c1VSTCh1cmwpKQotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Owot
ICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1ib29sIEhUTUxQbHVnSW5FbGVtZW50
OjpyZXF1ZXN0T2JqZWN0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVVUkwsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCit2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKQogewotICAgIGlmIChtX3BsdWdpblJlcGxhY2Vt
ZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFVSTCBjb21wbGV0ZWRVUkw7Ci0gICAg
aWYgKCFyZWxhdGl2ZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbXBsZXRlZFVSTCA9IGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwocmVsYXRpdmVVUkwpOwotCi0gICAgUmVwbGFjZW1lbnRQbHVnaW4q
IHJlcGxhY2VtZW50ID0gcGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKGNvbXBsZXRlZFVSTCwgbWlt
ZVR5cGUpOwotICAgIGlmICghcmVwbGFjZW1lbnQgfHwgIXJlcGxhY2VtZW50LT5pc0VuYWJsZWRC
eVNldHRpbmdzKGRvY3VtZW50KCkuc2V0dGluZ3MoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIExPRyhQbHVnaW5zLCAiJXAgLSBGb3VuZCBwbHVnLWluIHJlcGxhY2VtZW50IGZvciAl
cy4iLCB0aGlzLCBjb21wbGV0ZWRVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBt
X3BsdWdpblJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQtPmNyZWF0ZSgqdGhpcywgcGFyYW1OYW1l
cywgcGFyYW1WYWx1ZXMpOwotICAgIHNldERpc3BsYXlTdGF0ZShQcmVwYXJpbmdQbHVnaW5SZXBs
YWNlbWVudCk7Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKLUpTQzo6SlNPYmplY3QqIEhUTUxQbHVn
SW5FbGVtZW50OjpzY3JpcHRPYmplY3RGb3JQbHVnaW5SZXBsYWNlbWVudCgpCitib29sIEhUTUxQ
bHVnSW5FbGVtZW50OjpyZXF1ZXN0T2JqZWN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IG1fcGx1Z2luUmVwbGFjZW1l
bnRTY3JpcHRPYmplY3Q7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHZhbHVlLmdldE9iamVjdCgpOwotI2Vsc2UKLSAgICByZXR1cm4gbnVsbHB0
cjsKLSNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBIVE1MUGx1Z0luRWxlbWVu
dDo6aXNCZWxvd1NpemVUaHJlc2hvbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCmluZGV4IGE3M2E1ZDRiZTcxYTY1MGIyYzA1ZDJhNjk2YmNjYjAzNTE5NjNj
NzEuLmUxOTVkN2Q3MThmOWMxMjFiMjI2MjBkZDhhM2RiNzgxNGVjMmVjODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgSW5z
dGFuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGx1Z2luUmVwbGFjZW1lbnQ7
CiBjbGFzcyBSZW5kZXJXaWRnZXQ7CiBjbGFzcyBXaWRnZXQ7CiAKQEAgLTU5LDExICs1OCw2IEBA
IHB1YmxpYzoKICAgICBEaXNwbGF5U3RhdGUgZGlzcGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5U3RhdGU7IH0KICAgICB2b2lkIHNldERpc3BsYXlTdGF0ZShEaXNwbGF5U3RhdGUp
OwogCi0gICAgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0Rm9yUGx1Z2luUmVwbGFjZW1lbnQo
KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBwbHVn
aW5SZXBsYWNlbWVudFNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIG1fcGx1Z2luUmVwbGFjZW1lbnRT
Y3JpcHRPYmplY3Q7IH0KLSNlbmRpZgotCiAgICAgYm9vbCBpc0NhcHR1cmluZ01vdXNlRXZlbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzOyB9CiAgICAgdm9pZCBz
ZXRJc0NhcHR1cmluZ01vdXNlRXZlbnRzKGJvb2wgY2FwdHVyaW5nKSB7IG1faXNDYXB0dXJpbmdN
b3VzZUV2ZW50cyA9IGNhcHR1cmluZzsgfQogCkBAIC0xMTksMTAgKzExMyw2IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IG1faW5zdGFuY2U7CiAgICAg
VGltZXIgbV9zd2FwUmVuZGVyZXJUaW1lcjsKLSAgICBSZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+
IG1fcGx1Z2luUmVwbGFjZW1lbnQ7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdCBtX3BsdWdpblJlcGxhY2VtZW50U2NyaXB0T2JqZWN0OwotI2VuZGlmCiAg
ICAgYm9vbCBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
bkJlZm9yZUxvYWRFdmVudEhhbmRsZXIgeyBmYWxzZSB9OwogICAgIERpc3BsYXlTdGF0ZSBtX2Rp
c3BsYXlTdGF0ZSB7IFBsYXlpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NoYWRvd1BzZXVkb0lkcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
aGFkb3dQc2V1ZG9JZHMuY3BwCmluZGV4IGYwOGE0MTMxZTVkM2ZhOWI3ZTQ5Yjk1NjcxM2ExOTI1
YTBhMTBmNjYuLjI1MDZmMzNkZjA2NmRkZjkxZjI3M2Y1YzU5ZDU1MjQyMWI2ODE5ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NoYWRvd1BzZXVkb0lkcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93UHNldWRvSWRzLmNwcApAQCAtMjE5
LDEyICsyMTksNiBAQCBjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZh
bHVlKCkKICAgICByZXR1cm4gd2Via2l0TWV0ZXJFdmVuTGVzc0dvb2RWYWx1ZTsKIH0KIAotY29u
c3QgQXRvbVN0cmluZyYgd2Via2l0UGx1Z2luUmVwbGFjZW1lbnQoKQotewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UGx1Z2luUmVw
bGFjZW1lbnQoIi13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50IiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiB3ZWJraXRQbHVnaW5SZXBsYWNlbWVudDsKLX0K
LQogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UHJvZ3Jlc3NCYXIoKQogewogICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UHJvZ3Jlc3NC
YXIoIi13ZWJraXQtcHJvZ3Jlc3MtYmFyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93UHNldWRv
SWRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMuaAppbmRl
eCBhMjc3YzdjZDA0NmMzMGMyZDdkYzU0MzY3MzIxYTU0MmJlOGE3ZDBlLi5hNzZjZmE2NDQ2ZTAw
ZDcwZTY4NjdmN2M4MTIzMjlmZTI2OTA3MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TaGFkb3dQc2V1ZG9JZHMuaApAQCAtNzksOCArNzksNiBAQCBjb25zdCBBdG9tU3RyaW5n
JiB3ZWJraXRNZXRlck9wdGltdW1WYWx1ZSgpOwogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWV0
ZXJTdWJvcHRpbXVtVmFsdWUoKTsKIGNvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1ldGVyRXZlbkxl
c3NHb29kVmFsdWUoKTsKIAotY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UGx1Z2luUmVwbGFjZW1l
bnQoKTsKLQogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UHJvZ3Jlc3NCYXIoKTsKIGNvbnN0IEF0
b21TdHJpbmcmIHdlYmtpdFByb2dyZXNzVmFsdWUoKTsKIGNvbnN0IEF0b21TdHJpbmcmIHdlYmtp
dFByb2dyZXNzSW5uZXJFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3YTc5MjJlOGEyYjFjNmExNGZhZmNjOGFhM2FiMWJlY2Q2ODdkMzEzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIllvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCIKLQotI2luY2x1ZGUgIlJl
bmRlckJsb2NrRmxvdy5oIgotI2luY2x1ZGUgIlNoYWRvd1BzZXVkb0lkcy5oIgotI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQpOwotCi1SZWY8
WW91VHViZUVtYmVkU2hhZG93RWxlbWVudD4gWW91VHViZUVtYmVkU2hhZG93RWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigq
bmV3IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQoZG9jdW1lbnQpKTsKLSAgICBlbGVtZW50LT5z
ZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRQbHVnaW5SZXBsYWNlbWVudCgpKTsKLSAg
ICByZXR1cm4gZWxlbWVudDsKLX0KLQotWW91VHViZUVtYmVkU2hhZG93RWxlbWVudDo6WW91VHVi
ZUVtYmVkU2hhZG93RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBIVE1MRGl2RWxl
bWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCi17Ci19Ci0KLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKLXsKLSAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Z
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Z
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFlY2UwNDI5MjcwODhlYzgxMjdjZjJhZmZjNDdmMWJjNWMwYjAyNjIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSFRNTERp
dkVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TERpdkVsZW1lbnQgewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoWW91VHViZUVtYmVkU2hh
ZG93RWxlbWVudCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxZb3VUdWJlRW1iZWRTaGFkb3dF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLQotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dChEb2N1bWVudCYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sCmluZGV4IDYyY2NjM2IzNjEyYWY3ZGYzY2E4YWZhMTEyYmQxYzZjY2M2ODg5
ZTEuLjJhZTcwY2IxZGE4NGU4Y2FkM2VjY2MwYzlmZmVmNDM2ZjhlODlmNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLnlhbWwKQEAgLTQ0NSwxMiArNDQ1LDYgQEAgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcmF1ZFByZXZlbnRpb25FbmFibGVkOgogICAgICAgIkhBVkUoUlNBX0JTU0EpIjogdHJ1
ZQogICAgICAgZGVmYXVsdDogZmFsc2UKIAotUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRFbmFi
bGVkOgotICB0eXBlOiBib29sCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJDb3JlOgotICAgICAg
ZGVmYXVsdDogZmFsc2UKLQogUmVwYWludE91dHNpZGVMYXlvdXRFbmFibGVkOgogICB0eXBlOiBi
b29sCiAgIGRlZmF1bHRWYWx1ZToKQEAgLTYzOCw5ICs2MzIsMyBAQCBXZWJraXRJbWFnZVJlYWR5
RXZlbnRFbmFibGVkOgogICBkZWZhdWx0VmFsdWU6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1
bHQ6IGZhbHNlCi0KLVlvdVR1YmVGbGFzaFBsdWdpblJlcGxhY2VtZW50RW5hYmxlZDoKLSAgdHlw
ZTogYm9vbAotICBkZWZhdWx0VmFsdWU6Ci0gICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZh
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcwppbmRleCBlZjc5
MjUzNjkxMDQ1YzA1MjRhZThiYzA3MjlhMDc4ZTZmZTg0ZWJiLi5hN2I2NTkxYzY5Y2RiYjJjMGE3
Y2QxMmFkMWUwMDMzZTQ2Mjk1YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBh
cmFtZXRlcnMuanMKQEAgLTEyNzEsMTEgKzEyNzEsNiBAQCBXSS5OYXRpdmVQcm90b3R5cGVGdW5j
dGlvblBhcmFtZXRlcnMgPSB7CiAgICAgICAgIF9fcHJvdG9fXzogbnVsbCwKICAgICB9LAogCi0g
ICAgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6IHsKLSAgICAgICAgcG9zdEV2ZW50OiAiZXZl
bnROYW1lIiwKLSAgICAgICAgX19wcm90b19fOiBudWxsLAotICAgIH0sCi0KICAgICBSVENEVE1G
U2VuZGVyOiB7CiAgICAgICAgIGluc2VydERUTUY6ICJ0b25lcywgW2R1cmF0aW9uXSwgW2ludGVy
VG9uZUdhcF0iLAogICAgICAgICBfX3Byb3RvX186IG51bGwsCg==
</data>
<flag name="commit-queue"
          id="467168"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442632</attachid>
            <date>2021-10-27 14:02:48 -0700</date>
            <delta_ts>2021-10-27 22:12:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232400-20211027140247.patch</filename>
            <type>text/plain</type>
            <size>107531</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFF1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IGFuZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXkgd2VyZSBk
aXNhYmxlZCBhdCBydW50aW1lIGluIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8y
NzU5MTEvd2Via2l0CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJl
cGxhY2VtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW06IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpyZXF1ZXN0T2JqZWN0KToKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RyYXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpzY3JpcHRPYmplY3RGb3JQbHVnaW5SZXBs
YWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpblJlcGxhY2VtZW50U2Ny
aXB0T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9J
ZHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRQbHVnaW5S
ZXBsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvU2hhZG93UHNldWRv
SWRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxl
bWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKwogMjAyMS0x
MC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEphdmFTY3Jp
cHQgVVJMIHJlc3VsdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBVVEYtOCBieXRlcwpJbmRleDogU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lv
biAyODQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CSh3b3JraW5nIGNvcHkpCkBAIC00MjIsOSArNDIyLDYgQEAgJChQUk9KRUNUX0RJUikvTW9k
dWxlcy9waWN0dXJlaW5waWN0dXJlLwogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9waWN0dXJlaW5w
aWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnQrUGljdHVyZUluUGljdHVyZS5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0dXJlSW5QaWN0
dXJlV2luZG93LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmNzcwotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmpzCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3B1
c2gtYXBpL1B1c2hFbmNyeXB0aW9uS2V5TmFtZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
cHVzaC1hcGkvUHVzaEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoRXZlbnRJbml0LmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjI5
LDggKzE2MjksNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1B1c2hTdWJzY3Jp
cHRpb25PcHRpb25zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0LmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQdXNoU3Vic2NyaXB0aW9uT3B0aW9uc0luaXQu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENBbnN3ZXJPcHRpb25zLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENBbnN3ZXJP
cHRpb25zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UlRDQ2VydGlmaWNhdGUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJl
dmlzaW9uIDI4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTM1Miw3ICszNTIsNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVy
ZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRN
TFZpZGVvRWxlbWVudCtQaWN0dXJlSW5QaWN0dXJlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3BpY3R1cmVpbnBpY3R1cmUvUGljdHVyZUluUGljdHVyZVdpbmRvdy5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hFbmNyeXB0aW9uS2V5TmFtZS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50SW5pdC5pZGwgXApAQCAtMTYx
OCw3ICsxNjE3LDYgQEAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9jc3Mvc3ZnLmNzcyBcCiAgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXku
Y3NzIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L21ldGVyRWxlbWVudFNoYWRvdy5jc3Mg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmNzcyBcCiAgICAgTW9kZXJuTWVkaWFDb250cm9scy5jc3MgXAogICAgICQoUE9TU0lCTEVf
QURESVRJT05BTF9VU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgXAogIwpAQCAtMTcyNyw3ICsxNzI1
LDYgQEAgTW9kZXJuTWVkaWFDb250cm9scy5qcyA6ICQoTU9ERVJOX01FRElBXwogIyB1c2VyIGFn
ZW50IHNjcmlwdHMKIAogVVNFUl9BR0VOVF9TQ1JJUFRTID0gXAotICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmpzIFwKICAgICBNb2Rlcm5N
ZWRpYUNvbnRyb2xzLmpzIFwKICMKIApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShyZXZp
c2lvbiAyODQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsOCArMTAwLDYgQEAgTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVh
ZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29j
b2EuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCi1N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KLU1vZHVsZXMvcGx1
Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9T
cGVlY2hSZWNvZ25pemVyQ29jb2EubW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFza01vY2subW0KQEAgLTE3Miw3ICsxNzAsNiBAQCBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UubW0gCiBlZGl0aW5nL21hYy9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5t
bQogZmlsZWFwaS9GaWxlQ29jb2EubW0KIGhpc3RvcnkvbWFjL0hpc3RvcnlJdGVtTWFjLm1tCi1o
dG1sL3NoYWRvdy9Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcAogaW5zcGVjdG9yL21hYy9Q
YWdlRGVidWdnZXJNYWMubW0KIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAkocmV2
aXNpb24gMjg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJl
cGxhY2VtZW50LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1
ZGUgIlJlbmRlclB0ci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEpTT2JqZWN0
OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxQbHVnSW5FbGVtZW50Owot
Y2xhc3MgUmVuZGVyRWxlbWVudDsKLWNsYXNzIFJlbmRlclN0eWxlOwotY2xhc3MgUmVuZGVyVHJl
ZVBvc2l0aW9uOwotY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBTaGFkb3dSb290OwotCi1jbGFzcyBQ
bHVnaW5SZXBsYWNlbWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblJlcGxhY2VtZW50PiB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UGx1Z2luUmVwbGFjZW1lbnQoKSA9IGRlZmF1bHQ7Ci0K
LSAgICBzdHJ1Y3QgSW5zdGFsbFJlc3VsdCB7Ci0gICAgICAgIGJvb2wgc3VjY2VzczsKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHNjcmlwdE9iamVjdCB7IH07Ci0j
ZW5kaWYKLSAgICB9OwotCi0gICAgdmlydHVhbCBJbnN0YWxsUmVzdWx0IGluc3RhbGxSZXBsYWNl
bWVudChTaGFkb3dSb290JikgPSAwOwotCi0gICAgdmlydHVhbCBib29sIHdpbGxDcmVhdGVSZW5k
ZXJlcigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgPSAwOwotfTsKLQotdHlwZWRlZiBSZWY8
UGx1Z2luUmVwbGFjZW1lbnQ+ICgqQ3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQpKEhUTUxQbHVnSW5F
bGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci10eXBlZGVmIGJvb2wgKCpQbHVnaW5SZXBsYWNlbWVudFN1
cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJik7Ci10eXBlZGVmIGJvb2wgKCpQbHVnaW5SZXBsYWNl
bWVudFN1cHBvcnRzRmlsZUV4dGVuc2lvbikoY29uc3QgU3RyaW5nJik7Ci10eXBlZGVmIGJvb2wg
KCpQbHVnaW5SZXBsYWNlbWVudFN1cHBvcnRzVVJMKShjb25zdCBVUkwmKTsKLXR5cGVkZWYgYm9v
bCAoKlBsdWdpblJlcGxhY2VtZW50RW5hYmxlZEZvclNldHRpbmdzKShjb25zdCBTZXR0aW5ncyYp
OwotCi1jbGFzcyBSZXBsYWNlbWVudFBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgUmVwbGFjZW1lbnRQ
bHVnaW4oQ3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQgY29uc3RydWN0b3IsIFBsdWdpblJlcGxhY2Vt
ZW50U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZSwgUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c0Zp
bGVFeHRlbnNpb24gc3VwcG9ydHNGaWxlRXh0ZW5zaW9uLCBQbHVnaW5SZXBsYWNlbWVudFN1cHBv
cnRzVVJMIHN1cHBvcnRzVVJMLCBQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWRGb3JTZXR0aW5ncyBp
c0VuYWJsZWRCeVNldHRpbmdzKQotICAgICAgICA6IG1fY29uc3RydWN0b3IoY29uc3RydWN0b3Ip
Ci0gICAgICAgICwgbV9zdXBwb3J0c1R5cGUoc3VwcG9ydHNUeXBlKQotICAgICAgICAsIG1fc3Vw
cG9ydHNGaWxlRXh0ZW5zaW9uKHN1cHBvcnRzRmlsZUV4dGVuc2lvbikKLSAgICAgICAgLCBtX3N1
cHBvcnRzVVJMKHN1cHBvcnRzVVJMKQotICAgICAgICAsIG1faXNFbmFibGVkQnlTZXR0aW5ncyhp
c0VuYWJsZWRCeVNldHRpbmdzKQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBSZXBsYWNl
bWVudFBsdWdpbihjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYgb3RoZXIpCi0gICAgICAgIDogbV9j
b25zdHJ1Y3RvcihvdGhlci5tX2NvbnN0cnVjdG9yKQotICAgICAgICAsIG1fc3VwcG9ydHNUeXBl
KG90aGVyLm1fc3VwcG9ydHNUeXBlKQotICAgICAgICAsIG1fc3VwcG9ydHNGaWxlRXh0ZW5zaW9u
KG90aGVyLm1fc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKQotICAgICAgICAsIG1fc3VwcG9ydHNVUkwo
b3RoZXIubV9zdXBwb3J0c1VSTCkKLSAgICAgICAgLCBtX2lzRW5hYmxlZEJ5U2V0dGluZ3Mob3Ro
ZXIubV9pc0VuYWJsZWRCeVNldHRpbmdzKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWY8UGx1Z2lu
UmVwbGFjZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cykgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcihlbGVtZW50LCBwYXJhbU5hbWVzLCBwYXJh
bVZhbHVlcyk7IH0KLSAgICBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzVHlwZShtaW1lVHlwZSk7IH0KLSAgICBib29sIHN1
cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgY29uc3QgeyByZXR1
cm4gbV9zdXBwb3J0c0ZpbGVFeHRlbnNpb24oZXh0ZW5zaW9uKTsgfQotICAgIGJvb2wgc3VwcG9y
dHNVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNVUkwodXJsKTsg
fQotICAgIGJvb2wgaXNFbmFibGVkQnlTZXR0aW5ncyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3Mp
IGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkQnlTZXR0aW5ncyhzZXR0aW5ncyk7IH07Ci0KLXBy
aXZhdGU6Ci0gICAgQ3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQgbV9jb25zdHJ1Y3RvcjsKLSAgICBQ
bHVnaW5SZXBsYWNlbWVudFN1cHBvcnRzVHlwZSBtX3N1cHBvcnRzVHlwZTsKLSAgICBQbHVnaW5S
ZXBsYWNlbWVudFN1cHBvcnRzRmlsZUV4dGVuc2lvbiBtX3N1cHBvcnRzRmlsZUV4dGVuc2lvbjsK
LSAgICBQbHVnaW5SZXBsYWNlbWVudFN1cHBvcnRzVVJMIG1fc3VwcG9ydHNVUkw7Ci0gICAgUGx1
Z2luUmVwbGFjZW1lbnRFbmFibGVkRm9yU2V0dGluZ3MgbV9pc0VuYWJsZWRCeVNldHRpbmdzOwot
fTsKLQotdHlwZWRlZiB2b2lkICgqUGx1Z2luUmVwbGFjZW1lbnRSZWdpc3RyYXIpKGNvbnN0IFJl
cGxhY2VtZW50UGx1Z2luJik7Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNzcwko
cmV2aXNpb24gMjg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1lbWJlZDo6LXdlYmtpdC1wbHVnaW4t
cmVwbGFjZW1lbnQsCi1vYmplY3Q6Oi13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50Ci17Ci0gICAg
cG9zaXRpb246IHJlbGF0aXZlOwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICB3aWR0
aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5oCShyZXZpc2lvbiAyODQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJQbHVnaW5SZXBsYWNlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NV3JhcHBlcldvcmxk
OwotY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLQotY2xhc3MgUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQgZmluYWwgOiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgewotcHVibGljOgotICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyUGx1Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1lbnRSZWdp
c3RyYXIpOwotCi0gICAgdmlydHVhbCB+UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQoKTsKLQot
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtb3ZpZVNpemUoKSBjb25zdDsKLSAgICB2b2lkIHBvc3RF
dmVudChjb25zdCBTdHJpbmcmKTsKLQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudEVsZW1l
bnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFF1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50KEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7
Ci0gICAgc3RhdGljIFJlZjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVt
ZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25z
dCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNVUkwoY29uc3QgVVJMJikgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZEJ5U2V0dGluZ3MoY29uc3QgU2V0
dGluZ3MmKTsKLQotICAgIEluc3RhbGxSZXN1bHQgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jv
b3QmKSBmaW5hbDsKLQotICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgZmluYWwgeyByZXR1
cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7Ci0KLSAgICBib29sIGVuc3VyZVJlcGxhY2VtZW50
U2NyaXB0SW5qZWN0ZWQoKTsKLSAgICBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQoKTsK
LQotICAgIFdlYWtQdHI8SFRNTFBsdWdJbkVsZW1lbnQ+IG1fcGFyZW50RWxlbWVudDsKLSAgICBS
ZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7Ci0gICAgY29uc3QgVmVjdG9y
PFN0cmluZz4gbV9uYW1lczsKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBtX3ZhbHVlczsKLX07
Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmlkbAkocmV2aXNpb24gMjg0OTM5KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotWwotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0LAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotXSBpbnRlcmZhY2UgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxv
bmcgbW92aWVTaXplOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkg
dGltZWRNZXRhRGF0YTsKLSAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgYW55
IGFjY2Vzc0xvZzsKLSAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IGVy
cm9yTG9nOwotICAgIHVuZGVmaW5lZCBwb3N0RXZlbnQoRE9NU3RyaW5nIGV2ZW50TmFtZSk7Ci19
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qcwkocmV2aXNpb24gMjg0OTM5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmpz
CShub25leGlzdGVudCkKQEAgLTEsMzUwICswLDAgQEAKLQotZnVuY3Rpb24gY3JlYXRlUGx1Z2lu
UmVwbGFjZW1lbnQocm9vdCwgcGFyZW50LCBob3N0LCBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRl
VmFsdWVzKQotewotICAgIHJldHVybiBuZXcgUmVwbGFjZW1lbnQocm9vdCwgcGFyZW50LCBob3N0
LCBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlVmFsdWVzKTsKLX07Ci0KLWZ1bmN0aW9uIFJlcGxh
Y2VtZW50KHJvb3QsIHBhcmVudCwgaG9zdCwgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZVZhbHVl
cykKLXsKLSAgICB0aGlzLnJvb3QgPSByb290OwotICAgIHRoaXMucGFyZW50ID0gcGFyZW50Owot
ICAgIHRoaXMuaG9zdCA9IGhvc3Q7Ci0gICAgdGhpcy5saXN0ZW5lcnMgPSB7fTsKLSAgICB0aGlz
LnNjcmlwdE9iamVjdCA9IHt9OwotCi0gICAgdGhpcy5hdXRvRXhpdEZ1bGxTY3JlZW4gPSB0cnVl
OwotICAgIHRoaXMucG9zdEV2ZW50cyA9IGZhbHNlOwotICAgIHRoaXMuaGVpZ2h0ID0gMDsKLSAg
ICB0aGlzLndpZHRoID0gMDsKLSAgICB0aGlzLnNyYyA9ICIiOwotICAgIHRoaXMuYXV0b2hyZWYg
PSBmYWxzZTsKLSAgICB0aGlzLmhyZWYgPSAiIjsKLSAgICB0aGlzLnF0c3JjID0gIiI7Ci0gICAg
dGhpcy5iYXNlVXJsID0gIiI7Ci0gICAgdGhpcy50YXJnZXQgPSAiIjsKLQotICAgIHRoaXMuY3Jl
YXRlVmlkZW9FbGVtZW50KGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVWYWx1ZXMpOwotICAgIHRo
aXMuY3JlYXRlU2NyaXB0SW50ZXJmYWNlKCk7Ci19OwotCi1SZXBsYWNlbWVudC5wcm90b3R5cGUg
PSB7Ci0KLSAgICBIYW5kbGVkVmlkZW9FdmVudHM6IHsKLSAgICAgICAgbG9hZHN0YXJ0OiAnaGFu
ZGxlTG9hZFN0YXJ0JywKLSAgICAgICAgZXJyb3I6ICdoYW5kbGVFcnJvcicsCi0gICAgICAgIGxv
YWRlZG1ldGFkYXRhOiAnaGFuZGxlTG9hZGVkTWV0YURhdGEnLAotICAgICAgICBjYW5wbGF5OiAn
cXRfY2FucGxheScsCi0gICAgICAgIGNhbnBsYXl0aHJvdWdoOiAncXRfY2FucGxheXRocm91Z2gn
LAotICAgICAgICBwbGF5OiAncXRfcGxheScsCi0gICAgICAgIHBhdXNlOiAncXRfcGF1c2UnLAot
ICAgICAgICBlbmRlZDogJ2hhbmRsZUVuZGVkJywKLSAgICAgICAgd2Via2l0ZnVsbHNjcmVlbmNo
YW5nZTogJ2hhbmRsZUZ1bGxzY3JlZW5DaGFuZ2UnLAotICAgIH0sCi0KLSAgICBBdHRyaWJ1dGVN
YXA6IHsKLSAgICAgICAgYXV0b2V4aXRmdWxsc2NyZWVuOiAnYXV0b0V4aXRGdWxsU2NyZWVuJywK
LSAgICAgICAgcG9zdGRvbWV2ZW50czogJ3Bvc3RFdmVudHMnLAotICAgICAgICBoZWlnaHQ6ICdo
ZWlnaHQnLAotICAgICAgICB3aWR0aDogJ3dpZHRoJywKLSAgICAgICAgcXRzcmM6ICdxdHNyYycs
Ci0gICAgICAgIHNyYzogJ3NyYycsCi0gICAgICAgIGFpcnBsYXk6ICd4LXdlYmtpdC1haXJwbGF5
PScsCi0gICAgICAgIGhyZWY6ICdocmVmJywKLSAgICAgICAgdGFyZ2V0OiAndGFyZ2V0JywKLSAg
ICB9LAotICAgIAotICAgIE1ldGhvZE1hcDogewotICAgICAgICBTZXRVUkwgOiAnc2V0VVJMJywK
LSAgICAgICAgR2V0VVJMIDogJ3VybCcsCi0gICAgICAgIFBsYXkgOiAncGxheScsCi0gICAgICAg
IFN0b3AgOiAncGF1c2UnLAotICAgICAgICBHZXRSYXRlIDogJ3JhdGUnLAotICAgICAgICBTZXRS
YXRlIDogJ3NldFJhdGUnLAotICAgICAgICBJc0Z1bGxTY3JlZW4gOiAnaXNGdWxsU2NyZWVuJywK
LSAgICAgICAgRXhpdEZ1bGxTY3JlZW4gOiAnZXhpdEZ1bGxTY3JlZW4nLAotICAgICAgICBHZXRQ
bHVnaW5TdGF0dXMgOiAncGx1Z2luU3RhdHVzJywKLSAgICAgICAgR2V0VGltZSA6ICdjdXJyZW50
VGltZScsCi0gICAgICAgIFNldFRpbWUgOiAnc2V0Q3VycmVudFRpbWUnLAotICAgICAgICBTZWVr
VG9EYXRlIDogJ3NlZWtUb0RhdGUnLAotICAgICAgICBHZXREYXRlIDogJ2RhdGUnLAotICAgICAg
ICBHZXREdXJhdGlvbiA6ICdkdXJhdGlvbicsCi0gICAgICAgIEdldFRpbWVTY2FsZSA6ICd0aW1l
U2NhbGUnLAotICAgICAgICBHZXRNYXhUaW1lTG9hZGVkIDogJ21heFRpbWVMb2FkZWQnLAotICAg
ICAgICBHZXRNYXhCeXRlc0xvYWRlZCA6ICdtYXhCeXRlc0xvYWRlZCcsCi0gICAgICAgIEdldE1v
dmllU2l6ZSA6ICdtb3ZpZVNpemUnLAotICAgICAgICBHZXRUaW1lZE1ldGFkYXRhVXBkYXRlcyA6
ICd0aW1lZE1ldGFkYXRhVXBkYXRlcycsCi0gICAgICAgIEdldEFjY2Vzc0xvZyA6ICdhY2Nlc3NM
b2cnLAotICAgICAgICBHZXRFcnJvckxvZyA6ICdlcnJvckxvZycsCi0gICAgfSwKLQotICAgIFRp
bWVTY2FsZTogMzAwMDAsCi0KLSAgICBjcmVhdGVWaWRlb0VsZW1lbnQ6IGZ1bmN0aW9uKGF0dHJp
YnV0ZU5hbWVzLCBhdHRyaWJ1dGVWYWx1ZXMpCi0gICAgewotICAgICAgICB2YXIgdmlkZW8gPSB0
aGlzLnZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKLQotICAgICAgICBm
b3IgKG5hbWUgaW4gdGhpcy5IYW5kbGVkVmlkZW9FdmVudHMpCi0gICAgICAgICAgICB2aWRlby5h
ZGRFdmVudExpc3RlbmVyKG5hbWUsIHRoaXMsIGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBhdHRyaWJ1dGVOYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAg
dmFyIHByb3BlcnR5ID0gdGhpcy5BdHRyaWJ1dGVNYXBbYXR0cmlidXRlTmFtZXNbaV1dOwotICAg
ICAgICAgICAgaWYgKHRoaXNbcHJvcGVydHldICE9IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAg
ICB0aGlzW3Byb3BlcnR5XSA9IGF0dHJpYnV0ZVZhbHVlc1tpXTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtcGx1Z2luLXJlcGxhY2Vt
ZW50Jyk7Ci0gICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgnY29udHJvbHMnLCAnY29udHJvbHMn
KTsKLSAgICAgICAgdGhpcy5zZXRTdGF0dXMoJ1dhaXRpbmcnKTsKLQotICAgICAgICB2YXIgc3Jj
ID0gdGhpcy5yZXNvbHZlUmVsYXRpdmVUb1VybCh0aGlzLnNyYywgIiIpOwotICAgICAgICB0aGlz
LmJhc2VVcmwgPSBzcmM7Ci0KLSAgICAgICAgLy8gVGhlICdxdHNyYycgYXR0cmlidXRlIGlzIHVz
ZWQgd2hlbiBhIHBhZ2UgYXV0aG9yIHdhbnRlZCB0byBhbHdheXMgdXNlIHRoZSBRdWlja1RpbWUg
cGx1Zy1pbgotICAgICAgICAvLyB0byBsb2FkIGEgbWVkaWEgdHlwZSBldmVuIGlmIGFub3RoZXIg
cGx1Zy1pbiB3YXMgcmVnaXN0ZXJlZCBmb3IgdGhhdCB0eXBlLiBJdCB0ZWxscyB0aGUKLSAgICAg
ICAgLy8gcGx1Zy1pbiB0byBpZ25vcmUgdGhlICdzcmMnIHVybCwgYW5kIHRvIGxvYWQgdGhlICdx
dHNyYycgdXJsIGluc3RlYWQuCi0gICAgICAgIGlmICh0aGlzLnF0c3JjKQotICAgICAgICAgICAg
c3JjID0gdGhpcy5yZXNvbHZlUmVsYXRpdmVUb1VybCh0aGlzLnF0c3JjLCB0aGlzLnNyYyk7Ci0g
ICAgICAgIGlmICh0aGlzLmhyZWYgJiYgdGhpcy50YXJnZXQpIHsKLSAgICAgICAgICAgIHNyYyA9
IHRoaXMucmVzb2x2ZVJlbGF0aXZlVG9VcmwodGhpcy5ocmVmLCB0aGlzLnNyYyk7Ci0gICAgICAg
ICAgICB2aWRlby5wb3N0ZXIgPSB0aGlzLnNyYzsKLSAgICAgICAgICAgIHZpZGVvLnNldEF0dHJp
YnV0ZSgncHJlbG9hZCcsICdub25lJyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlm
IChzcmMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0aGlzLnNldFN0YXR1cygnVmFsaWRhdGluZycp
OwotICAgICAgICAgICAgdGhpcy52aWRlby5zcmMgPSBzcmM7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodmlkZW8pOwotICAgIH0sCi0KLSAgICByZXNvbHZlUmVs
YXRpdmVUb1VybDogZnVuY3Rpb24odXJsLCBiYXNlVXJsKQotICAgIHsKLSAgICAgICAgaWYgKHVy
bC5pbmRleE9mKCc6Ly8nKSAhPSAtMSkKLSAgICAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgICAg
IGlmIChiYXNlVXJsLmluZGV4T2YoJzovLycpID09IC0xKQotICAgICAgICAgICAgYmFzZVVybCA9
IHRoaXMucmVzb2x2ZVJlbGF0aXZlVG9VcmwoYmFzZVVybCwgZG9jdW1lbnQuYmFzZVVSSSk7Ci0K
LSAgICAgICAgdmFyIGJhc2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiYXNlJyk7Ci0gICAg
ICAgIGJhc2UuaHJlZiA9IGJhc2VVcmw7Ci0gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hp
bGQoYmFzZSk7Ci0KLSAgICAgICAgdmFyIHJlc29sdmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYScpOwotICAgICAgICByZXNvbHZlci5ocmVmID0gdXJsOwotICAgICAgICB1cmwgPSByZXNv
bHZlci5ocmVmOwotCi0gICAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYmFzZSk7Ci0g
ICAgICAgIGJhc2UgPSBudWxsOwotCi0gICAgICAgIHJldHVybiB1cmw7Ci0gICAgfSwKLSAKLSAg
ICBjcmVhdGVTY3JpcHRJbnRlcmZhY2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZvciAo
bmFtZSBpbiB0aGlzLk1ldGhvZE1hcCkgewotICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSB0
aGlzLk1ldGhvZE1hcFtuYW1lXTsKLSAgICAgICAgICAgIHRoaXMuc2NyaXB0T2JqZWN0W25hbWVd
ID0gdGhpc1ttZXRob2ROYW1lXS5iaW5kKHRoaXMpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChldmVudC50
YXJnZXQgIT09IHRoaXMudmlkZW8pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIHZhciBldmVudERhdGEgPSB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50c1tl
dmVudC50eXBlXTsKLSAgICAgICAgICAgIGlmICghZXZlbnREYXRhKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgaWYgKHRoaXNbZXZlbnREYXRhXSAmJiB0eXBlb2YgdGhp
c1tldmVudERhdGFdID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgIHRoaXNbZXZlbnRE
YXRhXS5jYWxsKHRoaXMsIGV2ZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB0aGlzLnBvc3RFdmVudChldmVudERhdGEpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cuY29uc29sZSkKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9y
KGUpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHBvc3RFdmVudDogZnVuY3Rpb24oZXZlbnRO
YW1lKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICh0aGlzLnBvc3RFdmVu
dHMpCi0gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnBvc3RFdmVudChldmVudE5hbWUpOwotICAg
ICAgICB9IGNhdGNoKGUpIHsgfQotICAgIH0sCi0KLSAgICBzZXRTdGF0dXM6IGZ1bmN0aW9uKHN0
YXR1cykKLSAgICB7Ci0gICAgICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwotICAgIH0sCi0KLSAg
ICBoYW5kbGVMb2FkZWRNZXRhRGF0YTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0
aGlzLnNldFN0YXR1cygnUGxheWFibGUnKTsKLSAgICAgICAgdGhpcy5wb3N0RXZlbnQoJ3F0X3Zh
bGlkYXRlZCcpOwotICAgICAgICB0aGlzLnBvc3RFdmVudCgncXRfbG9hZGVkZmlyc3RmcmFtZScp
OwotICAgICAgICB0aGlzLnBvc3RFdmVudCgncXRfbG9hZGVkbWV0YWRhdGEnKTsKLSAgICB9LAot
Ci0gICAgaGFuZGxlRnVsbHNjcmVlbkNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICB0aGlzLnBvc3RFdmVudCh0aGlzLmlzRnVsbFNjcmVlbigpID8gJ3F0X2VudGVyZnVsbHNj
cmVlbicgOiAncXRfZXhpdGZ1bGxzY3JlZW4nKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRXJyb3I6
IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5zZXRTdGF0dXMoJ0Vycm9yJyk7
Ci0gICAgICAgIHRoaXMucG9zdEV2ZW50KCdxdF9lcnJvcicpOwotICAgIH0sCi0KLSAgICBoYW5k
bGVMb2FkU3RhcnQ6ZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy52aWRl
by5wb3N0ZXIpCi0gICAgICAgICAgICB0aGlzLnNldFN0YXR1cygnV2FpdGluZycpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aGlzLnNldFN0YXR1cygnTG9hZGluZycpOwotICAgICAgICB0
aGlzLnBvc3RFdmVudCgncXRfYmVnaW4nKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRW5kZWQ6IGZ1
bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5wb3N0RXZlbnQoJ3F0X2VuZGVkJyk7
Ci0gICAgICAgIGlmICh0aGlzLmlzRnVsbFNjcmVlbigpICYmIHRoaXMuYXV0b0V4aXRGdWxsU2Ny
ZWVuKQotICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKLSAgICB9
LAotCi0gICAgaXNGdWxsU2NyZWVuOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
ZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09PSB0aGlzLnZpZGVvOwot
ICAgIH0sCi0KLSAgICBzZXRVUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
c2V0U3RhdHVzKCdWYWxpZGF0aW5nJyk7Ci0gICAgICAgIGlmICh1cmwubGVuZ3RoKQotICAgICAg
ICAgICAgdXJsID0gdGhpcy5yZXNvbHZlUmVsYXRpdmVUb1VybCh1cmwsIHRoaXMuYmFzZVVybCk7
Ci0gICAgICAgIHRoaXMudmlkZW8uc3JjID0gdXJsOwotICAgIH0sCi0gICAgCi0gICAgdXJsOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jdXJyZW50U3JjOwot
ICAgIH0sCi0gICAgCi0gICAgcGxheTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy52
aWRlby5wbGF5KCk7Ci0gICAgfSwKLSAgICAKLSAgICBwYXVzZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdGhpcy52aWRlby5wbGF5YmFja1JhdGUgPSAwOwotICAgICAgICB0aGlzLnZpZGVv
LnBhdXNlKCk7Ci0gICAgfSwKLSAgICAKLSAgICByYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy52aWRlby5wYXVzZWQgPyAwIDogMTsKLSAgICB9LAotICAgIAotICAg
IHNldFJhdGU6IGZ1bmN0aW9uKHJhdGUpCi0gICAgewotICAgICAgICBpZiAocmF0ZSkKLSAgICAg
ICAgICAgIHRoaXMudmlkZW8ucGxheSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlz
LnZpZGVvLnBhdXNlKCk7Ci0gICAgfSwKLSAgICAKLSAgICBleGl0RnVsbFNjcmVlbjogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKLSAg
ICB9LAotICAgIAotICAgIHBsdWdpblN0YXR1czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuc3RhdHVzOwotICAgIH0sCi0KLSAgICBjdXJyZW50VGltZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudmlkZW8uY3VycmVudFRpbWUgKiB0aGlzLlRp
bWVTY2FsZTsKLSAgICB9LAotCi0gICAgc2V0Q3VycmVudFRpbWU6IGZ1bmN0aW9uKHRpbWUpCi0g
ICAgewotICAgICAgICB0aGlzLnZpZGVvLmN1cnJlbnRUaW1lID0gdGltZSAvIHRoaXMuVGltZVNj
YWxlOwotICAgIH0sCi0KLSAgICBzZWVrVG9EYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICAvLyBGSVhNRTogbm90IGltcGxlbWVudGVkIHlldC4KLSAgICB9LAotICAgIAotICAgIGRhdGU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOwotICAgIH0sCi0g
ICAgCi0gICAgZHVyYXRpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
LnZpZGVvLmR1cmF0aW9uICogdGhpcy5UaW1lU2NhbGU7Ci0gICAgfSwKLSAgICAKLSAgICB0aW1l
U2NhbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIE5vdGU6IFF1aWNrVGltZSBtb3Zp
ZXMgYW5kIE1QRUctNCBmaWxlcyBoYXZlIGEgdGltZXNjYWxlLCBidXQgaXQgaXMgbm90IGV4cG9z
ZWQgYnkgYWxsIG1lZGlhIGVuZ2luZXMuCi0gICAgICAgIC8vIDMwMDAwIHdvcmtzIHdlbGwgd2l0
aCBjb21tb24gZnJhbWUgcmF0ZXMsIGVnLiAyOS45NyBOVFNDIGNhbiBiZSByZXByZXNlbnRlZCBh
Y2N1cmF0ZWx5IGFzIGEgdGltZQotICAgICAgICAvLyBzY2FsZSBvZiAzMDAwMCBhbmQgZnJhbWUg
ZHVyYXRpb24gb2YgMTAwMS4KLSAgICAgICAgcmV0dXJuIDMwMDAwOwotICAgIH0sCi0gICAgCi0g
ICAgbWF4VGltZUxvYWRlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
dmlkZW8uZHVyYXRpb24gKiB0aGlzLlRpbWVTY2FsZTsKLSAgICB9LAotICAgIAotICAgIG1heEJ5
dGVzTG9hZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgcGVyY2VudExvYWRlZCA9
IHRoaXMudmlkZW8uYnVmZmVyZWQuZW5kKDApIC8gdGhpcy52aWRlby5kdXJhdGlvbjsKLSAgICAg
ICAgcmV0dXJuIHBlcmNlbnRMb2FkZWQgKiB0aGlzLm1vdmllU2l6ZSgpOwotICAgIH0sCi0gICAg
Ci0gICAgbW92aWVTaXplOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuaG9zdC5tb3ZpZVNpemU7Ci0gICAgICAgIH0gY2F0Y2goZSkgeyB9
Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSwKLSAgICAKLSAgICB0aW1lZE1ldGFkYXRhVXBk
YXRlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLmhvc3QudGltZWRNZXRhRGF0YTsKLSAgICAgICAgfSBjYXRjaChlKSB7IH0KLQotICAg
ICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAotICAgIAotICAgIGFjY2Vzc0xvZzogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmhvc3QuYWNj
ZXNzTG9nOwotICAgICAgICB9IGNhdGNoKGUpIHsgfQotCi0gICAgICAgIHJldHVybiBudWxsOwot
ICAgIH0sCi0gICAgCi0gICAgZXJyb3JMb2c6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5ob3N0LmVycm9yTG9nOwotICAgICAgICB9IGNh
dGNoKGUpIHsgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi19OwotCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50Lm1tCShyZXZpc2lvbiAyODQ5MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKG5vbmV4aXN0
ZW50KQpAQCAtMSw0MjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaW1wb3J0ICJRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5oIgotCi0jaW1wb3J0ICJDb21tb25WTS5oIgotI2ltcG9ydCAi
RXZlbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJIVE1MUGx1Z0luRWxlbWVudC5o
IgotI2ltcG9ydCAiSFRNTFZpZGVvRWxlbWVudC5oIgotI2ltcG9ydCAiSlNET01CaW5kaW5nLmgi
Ci0jaW1wb3J0ICJKU0RPTUNvbnZlcnROdWxsYWJsZS5oIgotI2ltcG9ydCAiSlNET01Db252ZXJ0
U2VxdWVuY2VzLmgiCi0jaW1wb3J0ICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW1wb3J0ICJK
U0RPTUdsb2JhbE9iamVjdC5oIgotI2ltcG9ydCAiSlNIVE1MVmlkZW9FbGVtZW50LmgiCi0jaW1w
b3J0ICJKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgi
Ci0jaW1wb3J0ICJSZW5kZXJFbGVtZW50LmgiCi0jaW1wb3J0ICJTY3JpcHRDb250cm9sbGVyLmgi
Ci0jaW1wb3J0ICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW1wb3J0ICJTZXR0aW5ncy5oIgotI2lt
cG9ydCAiU2hhZG93Um9vdC5oIgotI2ltcG9ydCAiVXNlckFnZW50U2NyaXB0cy5oIgotI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05T
U3RyaW5nLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0jaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5oPgotI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDx3dGYvdGV4
dC9CYXNlNjQuaD4KLQotI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW1w
b3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVl
V2l0aFZhbHVlSW5Db250ZXh0KGlkLCBKU0NvbnRleHQgKik7Ci1zdGF0aWMgSlNWYWx1ZSAqanNW
YWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFkYXRhSXRlbSAqLCBKU0NvbnRl
eHQgKik7Ci0jZW5kaWYKLQotc3RhdGljIFN0cmluZyBxdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dFNjcmlwdCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2NyaXB0KFN0
cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
SmF2YVNjcmlwdCwgc2l6ZW9mKFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50SmF2YVNjcmlwdCkp
KTsKLSAgICByZXR1cm4gc2NyaXB0OwotfQotCi12b2lkIFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0cmFy
IHJlZ2lzdHJhcikKLXsKLSAgICByZWdpc3RyYXIoUmVwbGFjZW1lbnRQbHVnaW4oY3JlYXRlLCBz
dXBwb3J0c01pbWVUeXBlLCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24sIHN1cHBvcnRzVVJMLCBpc0Vu
YWJsZWRCeVNldHRpbmdzKSk7Ci19Ci0KLVJlZjxQbHVnaW5SZXBsYWNlbWVudD4gUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50KHBsdWdpbiwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpKTsKLX0KLQotYm9vbCBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHR5cGVIYXNoID0gbWFrZU5ldmVyRGVz
dHJveWVkKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKLSAgICAg
ICAgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIiwgImFwcGxpY2F0aW9uL3gtbXBlZ3Vy
bCIsICJhdWRpby8zZ3BwIiwgImF1ZGlvLzNncHAyIiwgImF1ZGlvL2FhYyIsICJhdWRpby9haWZm
IiwKLSAgICAgICAgImF1ZGlvL2FtciIsICJhdWRpby9iYXNpYyIsICJhdWRpby9tcDMiLCAiYXVk
aW8vbXA0IiwgImF1ZGlvL21wZWciLCAiYXVkaW8vbXBlZzMiLCAiYXVkaW8vbXBlZ3VybCIsICJh
dWRpby9zY3BscyIsCi0gICAgICAgICJhdWRpby93YXYiLCAiYXVkaW8veC1hYWMiLCAiYXVkaW8v
eC1haWZmIiwgImF1ZGlvL3gtY2FmIiwgImF1ZGlvL3gtbTRhIiwgImF1ZGlvL3gtbTRiIiwgImF1
ZGlvL3gtbTRwIiwKLSAgICAgICAgImF1ZGlvL3gtbTRyIiwgImF1ZGlvL3gtbXAzIiwgImF1ZGlv
L3gtbXBlZyIsICJhdWRpby94LW1wZWczIiwgImF1ZGlvL3gtbXBlZ3VybCIsICJhdWRpby94LXNj
cGxzIiwgImF1ZGlvL3gtd2F2IiwKLSAgICAgICAgInZpZGVvLzNncHAiLCAidmlkZW8vM2dwcDIi
LCAidmlkZW8vbXA0IiwgInZpZGVvL3F1aWNrdGltZSIsICJ2aWRlby94LW00diIKLSAgICB9KTsK
LSAgICByZXR1cm4gdHlwZUhhc2guZ2V0KCkuY29udGFpbnMobWltZVR5cGUpOwotfQotCi1ib29s
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c0ZpbGVFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24pCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZXh0ZW5zaW9uU2V0
ID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+IHsKLSAgICAgICAgIjNnMiIsICIzZ3AiLCAiM2dwMiIsICIzZ3BwIiwgImFhYyIsICJh
ZHRzIiwgImFpZiIsICJhaWZjIiwgImFpZmYiLCAiQU1SIiwgImF1IiwgImJ3ZiIsICJjYWYiLCAi
Y2RkYSIsICJtM3UiLAotICAgICAgICAibTN1OCIsICJtNGEiLCAibTRiIiwgIm00cCIsICJtNHIi
LCAibTR2IiwgIm1vdiIsICJtcDMiLCAibXAzIiwgIm1wNCIsICJtcGVnIiwgIm1wZyIsICJtcXYi
LCAicGxzIiwgInF0IiwKLSAgICAgICAgInNuZCIsICJzd2EiLCAidHMiLCAidWx3IiwgIndhdiIK
LSAgICB9KTsKLSAgICByZXR1cm4gZXh0ZW5zaW9uU2V0LmdldCgpLmNvbnRhaW5zKGV4dGVuc2lv
bik7Ci19Ci0KLWJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmlzRW5hYmxlZEJ5U2V0
dGluZ3MoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQotewotICAgIHJldHVybiBzZXR0aW5ncy5x
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQoKTsKLX0KLQotUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50KEhUTUxQbHVnSW5FbGVtZW50
JiBwbHVnaW4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCi0gICAgOiBtX3BhcmVudEVsZW1lbnQocGx1Z2luKQotICAg
ICwgbV9uYW1lcyhwYXJhbU5hbWVzKQotICAgICwgbV92YWx1ZXMocGFyYW1WYWx1ZXMpCi17Ci19
Ci0KLVF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp+UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQoKSA9IGRlZmF1bHQ7Ci0KLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBw
bHVnaW4sIFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5z
ZXJ0aW9uUG9zaXRpb24pCi17Ci0gICAgQVNTRVJUX1VOVVNFRChwbHVnaW4sIG1fcGFyZW50RWxl
bWVudCA9PSAmcGx1Z2luKTsKLQotICAgIGlmIChtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIG1fbWVkaWFFbGVtZW50LT5jcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSks
IGluc2VydGlvblBvc2l0aW9uKTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1ET01XcmFw
cGVyV29ybGQmIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojppc29sYXRlZFdvcmxkKCkKLXsK
LSAgICBzdGF0aWMgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldv
cmxkOjpjcmVhdGUoY29tbW9uVk0oKSwgRE9NV3JhcHBlcldvcmxkOjpUeXBlOjpJbnRlcm5hbCwg
IlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Il9zKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIGlz
b2xhdGVkV29ybGQ7Ci19Ci0KLWJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3Vy
ZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQoKQotewotICAgIGlmICghbV9wYXJlbnRFbGVtZW50
LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBE
T01XcmFwcGVyV29ybGQmIHdvcmxkID0gaXNvbGF0ZWRXb3JsZCgpOwotICAgIFNjcmlwdENvbnRy
b2xsZXImIHNjcmlwdENvbnRyb2xsZXIgPSBtX3BhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkuZnJh
bWUoKS0+c2NyaXB0KCk7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0Q29udHJvbGxlci5nbG9iYWxPYmpl
Y3Qod29ybGQpKTsKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCA9IGdsb2JhbE9iamVjdDsKLSAgICAKLSAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5j
dGlvbiA9IGdsb2JhbE9iamVjdC0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOwotICAgIGlm
IChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzQ2FsbGFibGUodm0pKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAKLSAgICBzY3JpcHRDb250cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUocXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQo
KSksIHdvcmxkKTsKLSAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAg
ICAgIExPRyhQbHVnaW5zLCAiJXAgLSBFeGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIFF1aWNrVGlt
ZSBwbHVnaW4gcmVwbGFjZW1lbnQgc2NyaXB0IiwgdGhpcyk7Ci0gICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLWF1dG8gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxS
ZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KSAtPiBJbnN0YWxsUmVzdWx0Ci17Ci0gICAgaWYg
KCFlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkpCi0gICAgICAgIHJldHVybiB7IGZh
bHNlIH07Ci0KLSAgICBpZiAoIW1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQot
ICAgICAgICByZXR1cm4geyBmYWxzZSB9OwotCi0gICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9
IGlzb2xhdGVkV29ybGQoKTsKLSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHRDb250cm9sbGVy
ID0gbV9wYXJlbnRFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPnNjcmlwdCgpOwotICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHNjcmlwdENvbnRyb2xsZXIuZ2xvYmFsT2JqZWN0KHdvcmxkKSk7Ci0gICAgSlNDOjpW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2
bSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Ci0KLSAg
ICBhdXRvIGNsZWFyRXhjZXB0aW9uQW5kUmV0dXJuRmFsc2UgPSBbJl0gKCkgLT4gSW5zdGFsbFJl
c3VsdCB7Ci0gICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiB7
IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIC8vIExvb2t1cCB0aGUgImNyZWF0ZVBsdWdpblJlcGxh
Y2VtZW50IiBmdW5jdGlvbi4KLSAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9
IGdsb2JhbE9iamVjdC0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOwotICAgIGlmIChyZXBs
YWNlbWVudEZ1bmN0aW9uLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB7IGZh
bHNlIH07Ci0gICAgSlNDOjpKU09iamVjdCogcmVwbGFjZW1lbnRPYmplY3QgPSByZXBsYWNlbWVu
dEZ1bmN0aW9uLnRvT2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGNsZWFyRXhjZXB0aW9uQW5kUmV0dXJuRmFsc2UoKSk7Ci0KLSAgICBh
dXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIHJlcGxhY2VtZW50T2JqZWN0KTsKLSAgICBp
ZiAoY2FsbERhdGEudHlwZSA9PSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKQotICAgICAgICBy
ZXR1cm4geyBmYWxzZSB9OwotCi0gICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0
OwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCAmcm9vdCkpOwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBtX3BhcmVudEVsZW1lbnQuZ2V0KCkpKTsKLSAgICBhcmdMaXN0LmFw
cGVuZCh0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhpcykpOwotICAg
IGFyZ0xpc3QuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5n
Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCBtX25hbWVzKSk7Ci0gICAg
YXJnTGlzdC5hcHBlbmQodG9KUzxJRExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpnbG9iYWxPYmplY3QsIG1fdmFsdWVzKSk7Ci0gICAg
QVNTRVJUKCFhcmdMaXN0Lmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlcGxh
Y2VtZW50ID0gY2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXBsYWNlbWVudE9iamVjdCwgY2Fs
bERhdGEsIGdsb2JhbE9iamVjdCwgYXJnTGlzdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgY2xlYXJFeGNlcHRpb25BbmRSZXR1cm5GYWxzZSgpKTsKLQotICAgIC8vIEdldCB0aGUg
PHZpZGVvPiBjcmVhdGVkIHRvIHJlcGxhY2UgdGhlIHBsdWctaW4uCi0gICAgSlNDOjpKU1ZhbHVl
IHZhbHVlID0gcmVwbGFjZW1lbnQuZ2V0KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInZpZGVvIikpOwotICAgIGlmICghc2NvcGUuZXhjZXB0aW9u
KCkgJiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50
ID0gSlNIVE1MVmlkZW9FbGVtZW50Ojp0b1dyYXBwZWQodm0sIHZhbHVlKTsKLQotICAgIGlmICgh
bV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCAtIEZhaWxlZCB0byBm
aW5kIDx2aWRlbz4gZWxlbWVudCBjcmVhdGVkIGJ5IFF1aWNrVGltZSBwbHVnaW4gcmVwbGFjZW1l
bnQgc2NyaXB0LiIsIHRoaXMpOwotICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAg
ICAgICByZXR1cm4geyBmYWxzZSB9OwotICAgIH0KLQotICAgIC8vIEdldCB0aGUgc2NyaXB0aW5n
IGludGVyZmFjZS4KLSAgICB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzY3JpcHRPYmplY3QiKSk7Ci0g
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiJXAgLSBG
YWlsZWQgdG8gZmluZCBzY3JpcHQgb2JqZWN0IGNyZWF0ZWQgYnkgUXVpY2tUaW1lIHBsdWdpbiBy
ZXBsYWNlbWVudC4iLCB0aGlzKTsKLSAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAg
ICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB0cnVlLCB2YWx1
ZSB9OwotfQotCi11bnNpZ25lZCBsb25nIGxvbmcgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6
Om1vdmllU2l6ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fbWVkaWFFbGVtZW50KQotICAgICAgICBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnQtPmZpbGVTaXplKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQot
dm9pZCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6cG9zdEV2ZW50KGNvbnN0IFN0cmluZyYg
ZXZlbnROYW1lKQotewotICAgIFJlZjxIVE1MUGx1Z0luRWxlbWVudD4gcHJvdGVjdCgqbV9wYXJl
bnRFbGVtZW50KTsKLSAgICBSZWY8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwotICAg
IG1fcGFyZW50RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChldmVudCk7Ci19Ci0KLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0
KE5TRGF0YSAqZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSlNDb250ZXh0ICpjb250ZXh0
KQotewotICAgIC8vIEZJWE1FOiBBZGQgbWFrZUNGU3RyaW5nL21ha2VOU1N0cmluZyB0byBhdm9p
ZCB1bm5lY2Vzc2FyeSBTdHJpbmcgYWxsb2NhdGlvbi4KLSAgICBTdHJpbmcgZGF0YTY0OwotICAg
IGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBkYXRhNjQgPSBtYWtlU3RyaW5nKCJk
YXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKFtkYXRhIGJ5dGVzXSwg
W2RhdGEgbGVuZ3RoXSkpOwotICAgIGVsc2UKLSAgICAgICAgZGF0YTY0ID0gbWFrZVN0cmluZygi
ZGF0YTp0ZXh0L3BsYWluO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKFtkYXRhIGJ5dGVzXSwgW2Rh
dGEgbGVuZ3RoXSkpOwotCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDooaWQp
ZGF0YTY0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkgaW5Db250ZXh0OmNvbnRleHRdOwotfQotCi1z
dGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBcnJheUluQ29udGV4dChOU0FycmF5ICphcnJheSwg
SlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAg
ICBKU1ZhbHVlICpyZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdBcnJheUluQ29udGV4dDpj
b250ZXh0XTsKLSAgICBKU09iamVjdFJlZiByZXN1bHRPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3Qo
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3Jlc3VsdCBKU1ZhbHVlUmVmXSwgJmV4Y2Vw
dGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVl
V2l0aFVuZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XTsKLQotICAgIE5TVUludGVnZXIgY291bnQg
PSBbYXJyYXkgY291bnRdOwotICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0
KFthcnJheSBvYmplY3RBdEluZGV4OmldLCBjb250ZXh0KTsKLSAgICAgICAgaWYgKCF2YWx1ZSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdElu
ZGV4KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgKHVuc2lnbmVk
KWksIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNlcHRp
b24pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KE5TRGlj
dGlvbmFyeSAqZGljdGlvbmFyeSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIEpTVmFsdWVS
ZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU1ZhbHVlICpyZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0T2Jq
ZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1
bHQgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07Ci0K
LSAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlvbmFyeSBrZXlFbnVtZXJhdG9yXSkgewotICAgICAg
ICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIEpTVmFsdWUgKnZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUlu
Q29udGV4dChbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6a2V5XSwgY29udGV4dCk7Ci0gICAgICAg
IGlmICghdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBhdXRvIG5hbWUg
PSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGtleSk7Ci0gICAgICAgIEpTT2JqZWN0U2V0UHJv
cGVydHkoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgcmVzdWx0T2JqZWN0LCBuYW1lLmdl
dCgpLCBbdmFsdWUgSlNWYWx1ZVJlZl0sIDAsICZleGNlcHRpb24pOwotICAgICAgICBpZiAoZXhj
ZXB0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoaWQgdmFs
dWUsIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0gfHwgW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0pCi0gICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dmFsdWUgaW5Db250
ZXh0OmNvbnRleHRdOwotICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0xvY2Fs
ZSBjbGFzc11dKQotICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Olt2YWx1
ZSBsb2NhbGVJZGVudGlmaWVyXSBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgZWxzZSBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQotICAgICAgICByZXR1cm4g
anNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKLSAgICBlbHNl
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICByZXR1
cm4ganNWYWx1ZVdpdGhBcnJheUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0gICAgZWxzZSBp
ZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQotICAgICAgICByZXR1cm4g
anNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KHZhbHVlLCBlbXB0eVN0cmluZygpLCBjb250ZXh0KTsK
LSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWTWV0YWRhdGFJdGVt
Q2xhc3MoKV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250
ZXh0KHZhbHVlLCBjb250ZXh0KTsKLQotICAgIHJldHVybiBuaWw7Ci19Ci0KLXN0YXRpYyBKU1Zh
bHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtICpp
dGVtLCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSogZGlj
dGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoRGljdGlvbmFyeTpb
aXRlbSBleHRyYUF0dHJpYnV0ZXNdXTsKLQotICAgIGlmIChpdGVtLmtleVNwYWNlKQotICAgICAg
ICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5rZXlTcGFjZSBmb3JLZXk6QCJrZXlzcGFjZSJd
OwotCi0gICAgaWYgKGl0ZW0ua2V5KQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRl
bS5rZXkgZm9yS2V5OkAia2V5Il07Ci0KLSAgICBpZiAoaXRlbS5sb2NhbGUpCi0gICAgICAgIFtk
aWN0aW9uYXJ5IHNldE9iamVjdDppdGVtLmxvY2FsZSBmb3JLZXk6QCJsb2NhbGUiXTsKLQotICAg
IGlmIChDTVRJTUVfSVNfVkFMSUQoaXRlbS50aW1lKSkgewotICAgICAgICBpZiAoYXV0byB0aW1l
RGljdGlvbmFyeSA9IGFkb3B0Q0YoUEFMOjpDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KGl0ZW0udGlt
ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCkpKQotICAgICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2Jq
ZWN0OihfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKil0aW1lRGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6
QCJ0aW1lc3RhbXAiXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGl0ZW0udmFsdWUpIHsKLSAgICAg
ICAgaWQgdmFsdWUgPSBpdGVtLnZhbHVlOwotICAgICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBb
W2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXSBvYmplY3RGb3JLZXk6QCJNSU1FdHlwZSJdOwotICAgICAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dICYmIG1pbWVUeXBlKSB7
Ci0gICAgICAgICAgICBhdXRvIGRhdGE2NCA9IG1ha2VTdHJpbmcoImRhdGE6IiwgU3RyaW5nKG1p
bWVUeXBlKSwgIjtiYXNlNjQsIiwgYmFzZTY0RW5jb2RlZChbdmFsdWUgYnl0ZXNdLCBbdmFsdWUg
bGVuZ3RoXSkpOwotICAgICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OihfX2JyaWRnZSBO
U1N0cmluZyAqKWRhdGE2NC5jcmVhdGVDRlN0cmluZygpLmdldCgpIGZvcktleTpAInZhbHVlIl07
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnZhbHVl
IGZvcktleTpAInZhbHVlIl07Ci0gICAgfQotCi0gICAgcmV0dXJuIGpzVmFsdWVXaXRoRGljdGlv
bmFyeUluQ29udGV4dChkaWN0aW9uYXJ5LCBjb250ZXh0KTsKLX0KLQotI2VuZGlmCi0KLUpTQzo6
SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojp0aW1lZE1ldGFEYXRhKEpTQzo6
SlNHbG9iYWxPYmplY3QmIHN0YXRlKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQo
KTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKLSAgICAgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBwYXJlbnQtPmRvY3VtZW50KCku
ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsK
LQotICAgIE5TQXJyYXkgKm1ldGFEYXRhID0gcGFyZW50LT5wbGF5ZXIoKS0+dGltZWRNZXRhZGF0
YSgpOwotICAgIGlmICghbWV0YURhdGEpCi0gICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwot
Ci0gICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBmcmFtZS0+c2NyaXB0KCkuamF2YVNjcmlwdENv
bnRleHQoKTsKLSAgICBKU1ZhbHVlICptZXRhRGF0YVZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUlu
Q29udGV4dChtZXRhRGF0YSwganNDb250ZXh0KTsKLQotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwg
W21ldGFEYXRhVmFsdWUgSlNWYWx1ZVJlZl0pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwotICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotI2VuZGlmCi19Ci0KLUpTQzo6SlNWYWx1
ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjphY2Nlc3NMb2coSlNDOjpKU0dsb2JhbE9i
amVjdCYgc3RhdGUpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBIVE1M
VmlkZW9FbGVtZW50KiBwYXJlbnQgPSB3cmFwcGVkKCkucGFyZW50RWxlbWVudCgpOwotICAgIGlm
ICghcGFyZW50IHx8ICFwYXJlbnQtPnBsYXllcigpKQotICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKLQotICAgIEZyYW1lKiBmcmFtZSA9IHBhcmVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpOwot
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgSlNW
YWx1ZSAqZGljdGlvbmFyeSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpm
cmFtZS0+c2NyaXB0KCkuamF2YVNjcmlwdENvbnRleHQoKV07Ci0gICAgU3RyaW5nIGFjY2Vzc0xv
Z1N0cmluZyA9IHBhcmVudC0+cGxheWVyKCktPmFjY2Vzc0xvZygpOwotICAgIFtkaWN0aW9uYXJ5
IHNldFZhbHVlOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGFjY2Vzc0xvZ1N0cmluZykgZm9yUHJv
cGVydHk6KE5TU3RyaW5nICopQ0ZTVFIoImV4dGVuZGVkTG9nIildOwotCi0gICAgcmV0dXJuIHRv
SlMoJnN0YXRlLCBbZGljdGlvbmFyeSBKU1ZhbHVlUmVmXSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7Ci0gICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0jZW5kaWYKLX0KLQotSlND
OjpKU1ZhbHVlIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVycm9yTG9nKEpTQzo6SlNH
bG9iYWxPYmplY3QmIHN0YXRlKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVsZW1lbnQoKTsK
LSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBwYXJlbnQtPmRvY3VtZW50KCkuZnJh
bWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLQot
ICAgIEpTVmFsdWUgKmRpY3Rpb25hcnkgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNv
bnRleHQ6ZnJhbWUtPnNjcmlwdCgpLmphdmFTY3JpcHRDb250ZXh0KCldOwotICAgIFN0cmluZyBl
cnJvckxvZ1N0cmluZyA9IHBhcmVudC0+cGxheWVyKCktPmVycm9yTG9nKCk7Ci0gICAgW2RpY3Rp
b25hcnkgc2V0VmFsdWU6c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oZXJyb3JMb2dTdHJpbmcpIGZv
clByb3BlcnR5OihOU1N0cmluZyAqKUNGU1RSKCJleHRlbmRlZExvZyIpXTsKLQotICAgIHJldHVy
biB0b0pTKCZzdGF0ZSwgW2RpY3Rpb25hcnkgSlNWYWx1ZVJlZl0pOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwotICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotI2VuZGlmCi19Ci0K
LX0KLQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAJKHJldmlzaW9uIDI4NDkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CShub25leGlzdGVudCkKQEAgLTEsMzQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIllv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oIgotCi0jaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
Ci0jaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5j
bHVkZSAiWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFlvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudDo6cmVnaXN0ZXJQbHVnaW5SZXBsYWNlbWVudChQbHVnaW5SZXBsYWNlbWVu
dFJlZ2lzdHJhciByZWdpc3RyYXIpCi17Ci0gICAgcmVnaXN0cmFyKFJlcGxhY2VtZW50UGx1Z2lu
KGNyZWF0ZSwgc3VwcG9ydHNNaW1lVHlwZSwgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uLCBzdXBwb3J0
c1VSTCwgaXNFbmFibGVkQnlTZXR0aW5ncykpOwotfQotCi1SZWY8UGx1Z2luUmVwbGFjZW1lbnQ+
IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVn
aW4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50KHBsdWdpbiwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpKTsKLX0KLQotYm9v
bCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKLXsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWltZVR5cGUsICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpCi0gICAgICAgIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vZnV0dXJl
c3BsYXNoIik7Ci19Ci0KLWJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c0Zp
bGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCi17Ci0gICAgcmV0dXJuIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGV4dGVuc2lvbiwgInNwbCIpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGV4dGVuc2lvbiwgInN3ZiIpOwotfQotCi1Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQ6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudChIVE1MUGx1Z0luRWxlbWVudCYg
cGx1Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKQotICAgIDogbV9wYXJlbnRFbGVtZW50KHBsdWdpbikKLXsKLSAg
ICBBU1NFUlQocGFyYW1OYW1lcy5zaXplKCkgPT0gcGFyYW1WYWx1ZXMuc2l6ZSgpKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtTmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1f
YXR0cmlidXRlcy5hZGQocGFyYW1OYW1lc1tpXSwgcGFyYW1WYWx1ZXNbaV0pOwotfQotCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKLXsKLSAgICBB
U1NFUlRfVU5VU0VEKHBsdWdpbiwgbV9wYXJlbnRFbGVtZW50ID09ICZwbHVnaW4pOwotCi0gICAg
aWYgKCFtX2VtYmVkU2hhZG93RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Ci0gICAgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50LT5jcmVhdGVFbGVtZW50UmVuZGVyZXIo
V1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKLX0KLQotYXV0byBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JiByb290KSAtPiBJ
bnN0YWxsUmVzdWx0Ci17Ci0gICAgbV9lbWJlZFNoYWRvd0VsZW1lbnQgPSBZb3VUdWJlRW1iZWRT
aGFkb3dFbGVtZW50OjpjcmVhdGUobV9wYXJlbnRFbGVtZW50LT5kb2N1bWVudCgpKTsKLQotICAg
IHJvb3QuYXBwZW5kQ2hpbGQoKm1fZW1iZWRTaGFkb3dFbGVtZW50KTsKLQotICAgIGF1dG8gaWZy
YW1lRWxlbWVudCA9IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjppZnJhbWVU
YWcsIG1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKSk7Ci0gICAgaWYgKG1fYXR0cmlidXRlcy5j
b250YWlucygid2lkdGgiKSkKLSAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZygiMTAw
JSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBjb25zdCBhdXRv
JiBoZWlnaHRWYWx1ZSA9IG1fYXR0cmlidXRlcy5maW5kKCJoZWlnaHQiKTsKLSAgICBpZiAoaGVp
Z2h0VmFsdWUgIT0gbV9hdHRyaWJ1dGVzLmVuZCgpKSB7Ci0gICAgICAgIGlmcmFtZUVsZW1lbnQt
PnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgQXRvbVN0cmluZygibWF4LWhlaWdo
dDogMTAwJSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgICAgIGlm
cmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVz
OjpoZWlnaHRBdHRyLCBoZWlnaHRWYWx1ZS0+dmFsdWUpOwotICAgIH0KLQotICAgIGlmcmFtZUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNB
dHRyLCB5b3VUdWJlVVJMKG1fYXR0cmlidXRlcy5nZXQoInNyYyIpKSk7Ci0gICAgaWZyYW1lRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmZyYW1l
Ym9yZGVyQXR0ciwgQXRvbVN0cmluZygiMCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgCi0gICAgLy8gRGlzYWJsZSBmcmFtZSBmbGF0dGVuaW5nIGZvciB0aGlzIGlm
cmFtZS4KLSAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c2Nyb2xsaW5nQXR0ciwgQXRvbVN0cmluZygibm8iLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIG1fZW1iZWRTaGFkb3dFbGVtZW50LT5hcHBl
bmRDaGlsZChpZnJhbWVFbGVtZW50KTsKLQotICAgIHJldHVybiB7IHRydWUgfTsKLX0KLSAgICAK
LXN0YXRpYyBVUkwgY3JlYXRlWW91VHViZVVSTChTdHJpbmdWaWV3IHZpZGVvSUQsIFN0cmluZ1Zp
ZXcgdGltZUlEKQotewotICAgIEFTU0VSVCghdmlkZW9JRC5pc0VtcHR5KCkpOwotICAgIEFTU0VS
VCh2aWRlb0lEICE9ICIvIik7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgbWFrZVN0cmluZygieW91
dHViZToiLCB2aWRlb0lELCB0aW1lSUQuaXNFbXB0eSgpID8gIiIgOiAidD0iLCB0aW1lSUQpKTsK
LX0KLQotc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlL
ZXlzQW5kVmFsdWVzKFN0cmluZ1ZpZXcgcXVlcnlTdHJpbmcpCi17Ci0gICAgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeURpY3Rpb25hcnk7Ci0gICAgCi0gICAgc2l6
ZV90IHF1ZXJ5TGVuZ3RoID0gcXVlcnlTdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYgKCFxdWVyeUxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHF1ZXJ5RGljdGlvbmFyeTsKLSAgICAKLSAgICBzaXplX3Qg
ZXF1YWxTZWFyY2hMb2NhdGlvbiA9IDA7Ci0gICAgc2l6ZV90IGVxdWFsU2VhcmNoTGVuZ3RoID0g
cXVlcnlMZW5ndGg7Ci0gICAgCi0gICAgd2hpbGUgKGVxdWFsU2VhcmNoTG9jYXRpb24gPCBxdWVy
eUxlbmd0aCAtIDEgJiYgZXF1YWxTZWFyY2hMZW5ndGgpIHsKLSAgICAgICAgCi0gICAgICAgIC8v
IFNlYXJjaCBmb3IgIj0iLgotICAgICAgICBzaXplX3QgZXF1YWxMb2NhdGlvbiA9IHF1ZXJ5U3Ry
aW5nLmZpbmQoJz0nLCBlcXVhbFNlYXJjaExvY2F0aW9uKTsKLSAgICAgICAgaWYgKGVxdWFsTG9j
YXRpb24gPT0gbm90Rm91bmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAg
IHNpemVfdCBpbmRleEFmdGVyRXF1YWwgPSBlcXVhbExvY2F0aW9uICsgMTsKLSAgICAgICAgaWYg
KGluZGV4QWZ0ZXJFcXVhbCA+IHF1ZXJ5TGVuZ3RoIC0gMSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAKLSAgICAgICAgLy8gR2V0IHRoZSBrZXkgYmVmb3JlIHRoZSAiPSIuCi0gICAgICAg
IHNpemVfdCBrZXlMb2NhdGlvbiA9IGVxdWFsU2VhcmNoTG9jYXRpb247Ci0gICAgICAgIHNpemVf
dCBrZXlMZW5ndGggPSBlcXVhbExvY2F0aW9uIC0gZXF1YWxTZWFyY2hMb2NhdGlvbjsKLSAgICAg
ICAgCi0gICAgICAgIC8vIFNlYWNoIGZvciB0aGUgYW1wZXJzYW5kLgotICAgICAgICBzaXplX3Qg
YW1wZXJzYW5kTG9jYXRpb24gPSBxdWVyeVN0cmluZy5maW5kKCcmJywgaW5kZXhBZnRlckVxdWFs
KTsKLSAgICAgICAgCi0gICAgICAgIC8vIEdldCB0aGUgdmFsdWUgYWZ0ZXIgdGhlICI9IiwgYmVm
b3JlIHRoZSBhbXBlcnNhbmQuCi0gICAgICAgIHNpemVfdCB2YWx1ZUxvY2F0aW9uID0gaW5kZXhB
ZnRlckVxdWFsOwotICAgICAgICBzaXplX3QgdmFsdWVMZW5ndGg7Ci0gICAgICAgIGlmIChhbXBl
cnNhbmRMb2NhdGlvbiAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIHZhbHVlTGVuZ3RoID0gYW1w
ZXJzYW5kTG9jYXRpb24gLSBpbmRleEFmdGVyRXF1YWw7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHZhbHVlTGVuZ3RoID0gcXVlcnlMZW5ndGggLSBpbmRleEFmdGVyRXF1YWw7Ci0gICAgICAg
IAotICAgICAgICAvLyBTYXZlIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZS4KLSAgICAgICAgaWYgKGtl
eUxlbmd0aCAmJiB2YWx1ZUxlbmd0aCkgewotICAgICAgICAgICAgU3RyaW5nIGtleSA9IHF1ZXJ5
U3RyaW5nLnN1YnN0cmluZyhrZXlMb2NhdGlvbiwga2V5TGVuZ3RoKS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcXVlcnlTdHJpbmcuc3Vic3Ry
aW5nKHZhbHVlTG9jYXRpb24sIHZhbHVlTGVuZ3RoKS50b1N0cmluZygpOwotICAgICAgICAgICAg
dmFsdWUucmVwbGFjZSgnKycsICcgJyk7Ci0KLSAgICAgICAgICAgIGlmICgha2V5LmlzRW1wdHko
KSAmJiAhdmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHF1ZXJ5RGljdGlvbmFyeS5h
ZGQoa2V5LCB2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChhbXBlcnNh
bmRMb2NhdGlvbiA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAg
ICAgICAgLy8gQ29udGludWUgc2VhcmNoaW5nIGFmdGVyIHRoZSBhbXBlcnNhbmQuCi0gICAgICAg
IHNpemVfdCBpbmRleEFmdGVyQW1wZXJzYW5kID0gYW1wZXJzYW5kTG9jYXRpb24gKyAxOwotICAg
ICAgICBlcXVhbFNlYXJjaExvY2F0aW9uID0gaW5kZXhBZnRlckFtcGVyc2FuZDsKLSAgICAgICAg
ZXF1YWxTZWFyY2hMZW5ndGggPSBxdWVyeUxlbmd0aCAtIGluZGV4QWZ0ZXJBbXBlcnNhbmQ7Ci0g
ICAgfQotICAgIAotICAgIHJldHVybiBxdWVyeURpY3Rpb25hcnk7Ci19Ci0gICAgCi1zdGF0aWMg
Ym9vbCBpc1lvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgYXV0byBob3N0TmFtZSA9
IHVybC5ob3N0KCk7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhv
c3ROYW1lLCAibS55b3V0dWJlLmNvbSIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGhvc3ROYW1lLCAieW91dHUuYmUiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgInd3dy55b3V0dWJlLmNvbSIpCi0gICAgICAgIHx8
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3ROYW1lLCAieW91dHViZS5jb20iKQot
ICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgInd3dy55
b3V0dWJlLW5vY29va2llLmNvbSIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGhvc3ROYW1lLCAieW91dHViZS1ub2Nvb2tpZS5jb20iKTsKLX0KLQotc3RhdGljIGNv
bnN0IFN0cmluZyYgdmFsdWVGb3JLZXkoY29uc3QgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpL
ZXlWYWx1ZU1hcCYgZGljdGlvbmFyeSwgY29uc3QgU3RyaW5nJiBrZXkpCi17Ci0gICAgY29uc3Qg
YXV0byYgdmFsdWUgPSBkaWN0aW9uYXJ5LmZpbmQoa2V5KTsKLSAgICBpZiAodmFsdWUgPT0gZGlj
dGlvbmFyeS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICByZXR1
cm4gdmFsdWUtPnZhbHVlOwotfQotCi1zdGF0aWMgVVJMIHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJl
VVJMKGNvbnN0IFVSTCYgdXJsLCBib29sJiBpc1lvdVR1YmVTaG9ydGVuZWRVUkwsIFN0cmluZyYg
b3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQpCi17Ci0gICAgaWYgKCF1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKQotICAgICAgICByZXR1cm4gVVJMKCk7Ci0KLSAgICAvLyBCYWlsIG91dCBl
YXJseSBpZiB3ZSBhcmVuJ3QgZXZlbiBvbiB3d3cueW91dHViZS5jb20gb3IgeW91dHViZS5jb20u
Ci0gICAgaWYgKCFpc1lvdVR1YmVVUkwodXJsKSkKLSAgICAgICAgcmV0dXJuIFVSTCgpOwotCi0g
ICAgYXV0byBob3N0TmFtZSA9IHVybC5ob3N0KCk7Ci0gICAgYm9vbCBpc1lvdVR1YmVNb2JpbGVX
ZWJBcHBVUkwgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgIm0ueW91
dHViZS5jb20iKTsKLSAgICBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPSBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgInlvdXR1LmJlIik7Ci0KLSAgICAvLyBTaG9ydCBVUkwg
b2YgdGhlIGZvcm06IGh0dHA6Ly95b3V0dS5iZS92MWQzMDFECi0gICAgaWYgKGlzWW91VHViZVNo
b3J0ZW5lZFVSTCkgewotICAgICAgICBhdXRvIHZpZGVvSUQgPSB1cmwubGFzdFBhdGhDb21wb25l
bnQoKTsKLSAgICAgICAgaWYgKHZpZGVvSUQuaXNFbXB0eSgpIHx8IHZpZGVvSUQgPT0gIi8iKQot
ICAgICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVS
TCh2aWRlb0lELCB7IH0pOwotICAgIH0KLQotICAgIGF1dG8gcGF0aCA9IHVybC5wYXRoKCk7Ci0g
ICAgYXV0byBxdWVyeSA9IHVybC5xdWVyeSgpOwotICAgIGF1dG8gZnJhZ21lbnQgPSB1cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCk7Ci0KLSAgICAvLyBPbiB0aGUgWW91VHViZSBtb2JpbGUgd2ViIGFw
cCwgdGhlIHBhdGggYW5kIHF1ZXJ5IHN0cmluZyBhcmUgcHV0IGludG8gdGhlCi0gICAgLy8gZnJh
Z21lbnQgc28gdGhhdCBvbmUgd2ViIHBhZ2UgaXMgb25seSBldmVyIGxvYWRlZCAoc2VlIDxyZGFy
Oi8vcHJvYmxlbS85NTUwNjM5PikuCi0gICAgaWYgKGlzWW91VHViZU1vYmlsZVdlYkFwcFVSTCkg
ewotICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBmcmFnbWVudC5maW5kKCc/Jyk7Ci0gICAgICAg
IGlmIChsb2NhdGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgcGF0aCA9IGZyYWdtZW50
OwotICAgICAgICAgICAgcXVlcnkgPSBlbXB0eVN0cmluZygpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcGF0aCA9IGZyYWdtZW50LnN1YnN0cmluZygwLCBsb2NhdGlvbik7Ci0gICAg
ICAgICAgICBxdWVyeSA9IGZyYWdtZW50LnN1YnN0cmluZyhsb2NhdGlvbiArIDEpOwotICAgICAg
ICB9Ci0gICAgICAgIGZyYWdtZW50ID0gZW1wdHlTdHJpbmcoKTsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvd2F0Y2giKSkgewotICAg
ICAgICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgcXVl
cnlEaWN0aW9uYXJ5ID0gcXVlcnlLZXlzQW5kVmFsdWVzKHF1ZXJ5KTsKLSAgICAgICAgICAgIFN0
cmluZyB2aWRlb0lEID0gdmFsdWVGb3JLZXkocXVlcnlEaWN0aW9uYXJ5LCAidiIpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgYXV0byYgZnJhZ21lbnREaWN0aW9uYXJ5ID0gcXVlcnlLZXlzQW5kVmFsdWVz
KHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHRpbWVJ
RCA9IHZhbHVlRm9yS2V5KGZyYWdtZW50RGljdGlvbmFyeSwgInQiKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCB0aW1lSUQpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBNYXkgYmUgYSBuZXctc3R5bGUgbGlu
ayAoc2VlIDxyZGFyOi8vcHJvYmxlbS83NzMzNjkyPikuCi0gICAgICAgIGlmIChmcmFnbWVudC5z
dGFydHNXaXRoKCchJykpIHsKLSAgICAgICAgICAgIHF1ZXJ5ID0gZnJhZ21lbnQuc3Vic3RyaW5n
KDEpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHF1ZXJ5RGljdGlvbmFyeSA9IHF1ZXJ5S2V5c0Fu
ZFZhbHVlcyhxdWVyeSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHZpZGVvSUQgPSB2YWx1ZUZv
cktleShxdWVyeURpY3Rpb25hcnksICJ2Iik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgaWYgKCF2aWRlb0lELmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgdGltZUlEID0gdmFsdWVGb3JLZXkocXVlcnlEaWN0aW9uYXJ5LCAidCIpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY3JlYXRlWW91VHViZVVSTCh2aWRlb0lELCB0aW1lSUQpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL3YvIikgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXRoLCAiL2UvIikpIHsKLSAgICAgICAgU3Ry
aW5nVmlldyB2aWRlb0lEOwotICAgICAgICBTdHJpbmdWaWV3IHBhdGhBZnRlckZpcnN0QW1wZXJz
YW5kOwotCi0gICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21w
b25lbnQoKTsKLSAgICAgICAgc2l6ZV90IGFtcGVyc2FuZExvY2F0aW9uID0gbGFzdFBhdGhDb21w
b25lbnQuZmluZCgnJicpOwotICAgICAgICBpZiAoYW1wZXJzYW5kTG9jYXRpb24gIT0gbm90Rm91
bmQpIHsKLSAgICAgICAgICAgIC8vIFNvbWUgVVJMcyB3ZSBjYXJlIGFib3V0IHVzZSAmIGluIHBs
YWNlIG9mID8gZm9yIHRoZSBmaXJzdCBxdWVyeSBwYXJhbWV0ZXIuCi0gICAgICAgICAgICB2aWRl
b0lEID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKDAsIGFtcGVyc2FuZExvY2F0aW9uKTsK
LSAgICAgICAgICAgIHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kID0gbGFzdFBhdGhDb21wb25lbnQu
c3Vic3RyaW5nKGFtcGVyc2FuZExvY2F0aW9uICsgMSwgbGFzdFBhdGhDb21wb25lbnQubGVuZ3Ro
KCkgLSBhbXBlcnNhbmRMb2NhdGlvbik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdmlk
ZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50OwotCi0gICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIG91dFBhdGhBZnRlckZpcnN0QW1wZXJzYW5kID0gcGF0aEFmdGVy
Rmlyc3RBbXBlcnNhbmQudG9TdHJpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVZb3VU
dWJlVVJMKHZpZGVvSUQsIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIFVSTCgpOwotfQotCi1TdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VU
dWJlVVJMKGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQotewotICAgIFVSTCBzcmNVUkwgPSBtX3Bh
cmVudEVsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKHNyY1N0cmluZykpOwotICAgIHJldHVybiB5b3VUdWJlVVJMRnJvbUFic29s
dXRlVVJMKHNyY1VSTCwgc3JjU3RyaW5nKTsKLX0KLQotU3RyaW5nIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiBzcmNTdHJpbmcpCi17Ci0gICAgYm9vbCBpc1lvdVR1YmVTaG9ydGVuZWRVUkwg
PSBmYWxzZTsKLSAgICBTdHJpbmcgcG9zc2libHlNYWxmb3JtZWRRdWVyeTsKLSAgICBVUkwgeW91
VHViZVVSTCA9IHByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKHNyY1VSTCwgaXNZb3VUdWJlU2hv
cnRlbmVkVVJMLCBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5KTsKLSAgICBpZiAoc3JjVVJMLmlzRW1w
dHkoKSB8fCB5b3VUdWJlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNyY1N0cmluZzsK
LQotICAgIC8vIFRyYW5zZm9ybSB0aGUgeW91dHViZVVSTCAoeW91dHViZTpWaWRlb0lEKSB0byBp
ZnJhbWUgZW1iZWQgdXJsIHdoaWNoIGhhcyB0aGUgZm9ybWF0OiBodHRwOi8vd3d3LnlvdXR1YmUu
Y29tL2VtYmVkL1ZpZGVvSUQKLSAgICBhdXRvIHNyY1BhdGggPSBzcmNVUkwucGF0aCgpOwotICAg
IGNvbnN0IFN0cmluZyYgdmlkZW9JRCA9IHlvdVR1YmVVUkwuc3RyaW5nKCkuc3Vic3RyaW5nKHlv
dVR1YmVVUkwucHJvdG9jb2woKS5sZW5ndGgoKSArIDEpOwotICAgIHNpemVfdCBsb2NhdGlvbk9m
VmlkZW9JREluUGF0aCA9IHNyY1BhdGguZmluZCh2aWRlb0lEKTsKLQotICAgIHNpemVfdCBsb2Nh
dGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBub3RGb3VuZDsKLSAgICBpZiAobG9jYXRpb25PZlZp
ZGVvSURJblBhdGggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgQVNTRVJUKGxvY2F0aW9uT2ZWaWRl
b0lESW5QYXRoKTsKLSAgICAKLSAgICAgICAgLy8gRnJvbSB0aGUgb3JpZ2luYWwgVVJMLCB3ZSBu
ZWVkIHRvIGdldCB0aGUgcGFydCBiZWZvcmUgL3BhdGgvVmlkZW9JZC4KLSAgICAgICAgbG9jYXRp
b25PZlBhdGhCZWZvcmVWaWRlb0lEID0gU3RyaW5nVmlldyhzcmNTdHJpbmcpLmZpbmQoc3JjUGF0
aC5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKLSAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNyY1BhdGgsICIvd2F0Y2giKSkgewotICAg
ICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJl
Zm9yZSAvd2F0Y2gvIyF2PVZpZGVvSUQKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlz
IGJlIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmU/Ci0gICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3Jl
VmlkZW9JRCA9IHNyY1N0cmluZy5maW5kKCIvd2F0Y2giKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
cmV0dXJuIHNyY1N0cmluZzsKLQotICAgIEFTU0VSVChsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVv
SUQgIT0gbm90Rm91bmQpOwotCi0gICAgYXV0byBzcmNVUkxQcmVmaXggPSBTdHJpbmdWaWV3KHNy
Y1N0cmluZykuc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCk7Ci0gICAg
YXV0byBxdWVyeSA9IHNyY1VSTC5xdWVyeSgpOwotCi0gICAgLy8gSWYgdGhlIFVSTCBoYXMgbm8g
cXVlcnksIHVzZSB0aGUgcG9zc2libHkgbWFsZm9ybWVkIHF1ZXJ5IHdlIGZvdW5kLgotICAgIGlm
IChxdWVyeS5pc0VtcHR5KCkpCi0gICAgICAgIHF1ZXJ5ID0gcG9zc2libHlNYWxmb3JtZWRRdWVy
eTsKLQotICAgIC8vIEFwcGVuZCB0aGUgcXVlcnkgc3RyaW5nIGlmIGl0IGlzIHZhbGlkLgotICAg
IHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBpc1lvdVR1YmVTaG9ydGVuZWRVUkwgPyAiaHR0
cDovL3d3dy55b3V0dWJlLmNvbSIgOiBzcmNVUkxQcmVmaXgsCi0gICAgICAgICIvZW1iZWQvIiwK
LSAgICAgICAgdmlkZW9JRCwKLSAgICAgICAgcXVlcnkuaXNFbXB0eSgpID8gIiIgOiAiPyIsCi0g
ICAgICAgIHF1ZXJ5Ci0gICAgKTsKLX0KLSAgICAKLWJvb2wgWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpzdXBwb3J0c1VSTChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gaXNZb3VUdWJl
VVJMKHVybCk7Ci19Ci0KLWJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojppc0VuYWJsZWRC
eVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICByZXR1cm4gc2V0dGlu
Z3MueW91VHViZUZsYXNoUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKCk7Ci19Ci0gICAgCi19Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5oCShyZXZpc2lvbiAyODQ5MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiUGx1Z2luUmVwbGFjZW1lbnQuaCIK
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgWW91VHViZUVtYmVkU2hhZG93RWxlbWVudDsKLQot
Y2xhc3MgWW91VHViZVBsdWdpblJlcGxhY2VtZW50IGZpbmFsIDogcHVibGljIFBsdWdpblJlcGxh
Y2VtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlclBsdWdpblJlcGxhY2Vt
ZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0cmFyKTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gS2V5VmFsdWVNYXA7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIHlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgc3JjU3RyaW5nKTsKLQotcHJpdmF0ZToKLSAgICBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKLSAgICBzdGF0aWMgUmVmPFBs
dWdpblJlcGxhY2VtZW50PiBjcmVhdGUoSFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
LSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c1VSTChjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgYm9vbCBpc0VuYWJs
ZWRCeVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJik7Ci0KLSAgICBJbnN0YWxsUmVzdWx0IGluc3Rh
bGxSZXBsYWNlbWVudChTaGFkb3dSb290JikgZmluYWw7Ci0KLSAgICBTdHJpbmcgeW91VHViZVVS
TChjb25zdCBTdHJpbmcmIHJhd1VSTCk7Ci0KLSAgICBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigp
IGZpbmFsIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50OyB9Ci0gICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwotCi0gICAgV2Vh
a1B0cjxIVE1MUGx1Z0luRWxlbWVudD4gbV9wYXJlbnRFbGVtZW50OwotICAgIFJlZlB0cjxZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50PiBtX2VtYmVkU2hhZG93RWxlbWVudDsKLSAgICBLZXlWYWx1
ZU1hcCBtX2F0dHJpYnV0ZXM7Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODQ5MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSw4ICsxMDksNiBAQAogCQkwNzI3N0U1NTE3RDAxOENDMDAxNTUzNEQgLyog
SlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3Mjc3RTQ5MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFt
VHJhY2tFdmVudC5oICovOyB9OwogCQkwNzI4ODBEMTIwMTBGMUY2MDA3MUIyNTUgLyogUmVhbHRp
bWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3Mjg4MEQwMjAxMEVFRDcwMDcxQjI1NSAvKiBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTA3MkE3MDQwMUQ2RThGNjIwMERGMEFGQyAvKiBPdmVyY29uc3RyYWluZWRFcnJvckV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJB
NzAzRTFENkU4RjYyMDBERjBBRkMgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oICovOyB9
OwotCQkwNzJBRTFFNTE4M0MwNzQxMDAwQTU5ODggLyogUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MkFFMURGMTgzQzA3
NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA3MkFFMUU4MTgzQzA3NDEwMDBBNTk4OCAvKiBR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcyQUUxRTIxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmggKi87IH07CiAJCTA3Mzc5NERFMTlFRTJDNTIwMEU1QTA0NSAvKiBS
VENPZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9w
dGlvbnMuaCAqLzsgfTsKIAkJMDczNzk0RTYxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczNzk0RTQxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlvbi5oICovOyB9Owog
CQkwNzM3OTRFQzE5RUUzNDFFMDBFNUEwNDUgLyogSlNSVENJY2VTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc5NEVBMTlFRTM0MUUwMEU1
QTA0NSAvKiBKU1JUQ0ljZVNlcnZlci5oICovOyB9OwpAQCAtMTMyLDcgKzEzMCw2IEBACiAJCTA3
Njk3MDg3MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0Yg
LyogVGV4dFRyYWNrTGlzdC5oICovOyB9OwogCQkwNzZEMUMxRjIzRjZFQjVCMDBEOTVCMDYgLyog
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZEMUMxRDIzRjZEOUQ4MDBEOTVCMDYgLyogU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwotCQkwNzc2NjRGRDE4M0U2QjVDMDAxMzNCOTIgLyog
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKIAkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYx
IC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdC
NjQxMTFCOTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg1OCw3
ICsxODU1LDYgQEAKIAkJNTM4RUM5MzIxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTWFsbG9jU3RhdGlz
dGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0I0RUE2ODE0QzkzNDg0MDBDOEY1QkYgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmNwcCAqLzsgfTsK
IAkJNTM4RUM5MzMxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzJFMUUwM0NBNEEw
MEUyMzVBMiAvKiBKU01vY2tDRE1GYWN0b3J5LmggKi87IH07CiAJCTUzOEVDOTM0MUY5OUI5Rjcw
MDREMjJBOCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOTMxQzFGODU1NTAwNjFEQkQ0IC8qIEpTTW9ja1Bh
Z2VPdmVybGF5LmggKi87IH07Ci0JCTUzOEVDOTNFMUY5OUJGNUEwMDREMjJBOCAvKiBKU1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NzY2NEZBMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmNwcCAqLzsgfTsKIAkJNTM4RjEwQTgxRjkwMjJBNDAwNTEwMkNFIC8q
IFNvZnRMaW5rTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzhGMTBBMzFGOTAwQkRDMDA1MTAyQ0UgLyogU29mdExpbmtMaWJ4c2x0LmNw
cCAqLzsgfTsKIAkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQjg5NUFEMTlEQzdD
MzcwMDlDQUE5MyAvKiBNaWNyb3Rhc2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNDODI5OEUxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZs
ZXhpYmxlQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM0OCw3ICsyMzQ0
LDYgQEAKIAkJN0E0NTAzMzAxOERCNzE3MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E0NTAzMkUx
OERCNzE3MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5oICovOyB9OwogCQk3QTU0ODU4
MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8q
IEluc3BlY3Rvckhpc3RvcnkuaCAqLzsgfTsKIAkJN0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVBIC8q
IERPTVBhdGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E1NDg4MTUxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oICov
OyB9OwotCQk3QTU1MTVGNTE5MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU1
MTVGMzE5MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E1Njk5NzAyMDg2
QzYxOTAwMEUwNDMzIC8qIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU2OTk2RTIwODZDNjE4MDAw
RTA0MzMgLyogQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTY3NEJEQzBGOUVCRjRFMDA2Q0Yw
OTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3Vw
TG9hZERlZmVycmVyLmggKi87IH07CiAJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zNDI5LDcgKzM0MjQsNiBAQAogCQlBNTJCMzQ4RjFGQTNCREE2MDA4QjYyNDYgLyogU2Vydmlj
ZVdvcmtlckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MkIzNDhDMUZBM0JENzkwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VyRGVidWdn
YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE1MkIzNDk2MUZBM0UyOTAwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MkIzNDkz
MUZBM0UyODYwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTJCMzQ5RTFGQTQx
NzAzMDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyQjM0OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdv
cmtlckRlYnVnZ2VyUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlBNTQxNkZFNjE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQu
aCAqLzsgfTsKIAkJQTU0QTBDNjIxREI3RjhDMTAwMTdBOTBCIC8qIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1NEEwQzYwMURCN0Y4QjcwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgg
Ki87IH07CiAJCUE1NEEwQzY2MURCODA1MzYwMDE3QTkwQiAvKiBXb3JrZXJEZWJ1Z2dlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTBDNjQxREI4
MDUzMjAwMTdBOTBCIC8qIFdvcmtlckRlYnVnZ2VyLmggKi87IH07CiAJCUE1NEEwQzY4MURCODA3
RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEEwQzY3MURCODA3RDAwMDE3QTkw
QiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCAqLzsgfTsKQEAgLTU5MzUsMTIgKzU5
MjksNiBAQAogCQkwNzI4ODBEMDIwMTBFRUQ3MDA3MUIyNTUgLyogUmVhbHRpbWVWaWRlb0NhcHR1
cmVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyQTcwM0Ux
RDZFOEY2MjAwREYwQUZDIC8qIE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJBNzAzRjFENkU4RjYyMDBERjBBRkMgLyogT3Zl
cmNvbnN0cmFpbmVkRXJyb3JFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT3ZlcmNv
bnN0cmFpbmVkRXJyb3JFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3
MkFFMURGMTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5SZXBsYWNlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwNzJBRTFFMDE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDcyQUUxRTExODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzJBRTFFMjE4M0MwNzQx
MDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcyQUUxRTMxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MkFF
MUU0MTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJDQTg2MDE2Q0I0REMz
MDA4QUUxMzEgLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyREJCRkIyNURCMzhCQzAwQTEzNTBFIC8qIE1lZGlhU2Vz
c2lvbkNvb3JkaW5hdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkRCQzAzMjVEQzZCRDMwMEExMzUwRSAvKiBN
ZWRpYVNlc3Npb25Db29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25Db29y
ZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk5Niw4ICs1OTg0LDYg
QEAKIAkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2YXRlQmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAv
KiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTA3NzY2NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QUYxM0Ux
OEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEwNjkyLDggKzEwNjc4LDYgQEAKIAkJN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIElu
c3BlY3Rvckhpc3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9ySGlzdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODgxNTE0RTQz
MkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVBhdGNoU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QTU0ODgxNjE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVBhdGNoU3VwcG9ydC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBNTUxNUYzMTkxODMwQTMwMDk2ODdEMiAvKiBZb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdBNTUxNUY0MTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1Njk5NkUyMDg2QzYx
ODAwMEUwNDMzIC8qIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDA2LDggKzEyOTkwLDYgQEAKIAkJ
QTUyQjM0OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtlckRlYnVnZ2VyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyRGVidWdnZXJQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTJEODVDQTIxQjA5ODJGMDA2MUMxRUIgLyogU2VydmVy
VGltaW5nUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZlclRpbWluZ1BhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MkQ4NUNCMjFCMDk4MzAwMDYxQzFF
QiAvKiBTZXJ2ZXJUaW1pbmdQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmVyVGltaW5nUGFy
c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NDE2RkUzMTg4MTBFRjgwMDA5
RkM1RiAvKiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTQxNkZFNDE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHVi
ZUVtYmVkU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBZ
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1NEEwQzVGMURCN0Y4QjcwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBMEM2MDFEQjdG
OEI3MDAxN0E5MEIgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEEwQzYzMURCODA1MzIwMDE3QTkwQiAvKiBXb3JrZXJE
ZWJ1Z2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJE
ZWJ1Z2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg2MiwyMSArMTc4
NDQsNiBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
Ci0JCTA3MkFFMURFMTgzQzA1MTMwMDBBNTk4OCAvKiBwbHVnaW5zICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkwNzJBRTFERjE4M0MwNzQxMDAwQTU5ODgg
LyogUGx1Z2luUmVwbGFjZW1lbnQuaCAqLywKLQkJCQkwNzJBRTFFMTE4M0MwNzQxMDAwQTU5ODgg
LyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzICovLAotCQkJCTA3MkFFMUUyMTgzQzA3
NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovLAotCQkJCTA3MkFF
MUUzMTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwgKi8s
Ci0JCQkJMDcyQUUxRTQxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmpzICovLAotCQkJCTA3MkFFMUUwMTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbSAqLywKLQkJCQk3QTU1MTVGNDE5MTgzMEEzMDA5Njg3RDIgLyogWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCAqLywKLQkJCQk3QTU1MTVGMzE5MTgzMEEzMDA5Njg3
RDIgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IHBs
dWdpbnM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQkwNzZGMEQwODEyQjgx
OTI3MDBDMjZBQTQgLyogYXZmb3VuZGF0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTE4NjAyLDggKzE4NTY5LDYgQEAKIAkJCQlCQzk4NTQ0MzBDRDNE
OUQwMDAwNjlCQzEgLyogV2luZG93ICovLAogCQkJCUE4M0I3OTIyMENDQjAwRjAwMDBCMDgyNSAv
KiBYTUwgKi8sCiAJCQkJQTgzQjc5MEMwQ0NBRkY4MzAwMEIwODI1IC8qIFhQYXRoICovLAotCQkJ
CTA3NzY2NEZBMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmNwcCAqLywKLQkJCQkwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5oICovLAogCQkJCUJDMzQ4QkQxMERCN0Y4MDQwMDRBQkFCQiAvKiBXZWJD
b3JlSlNCdWlsdGluSW50ZXJuYWxzLmNwcCAqLywKIAkJCQlCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QkIgLyogV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oICovLAogCQkJCUJDMzQ4QkQxMERCN0Y4
MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi8sCkBAIC0xOTgxNyw4ICsxOTc4
Miw2IEBACiAJCQkJMTQyQjk3QzgxMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oICovLAogCQkJCUNFMjEyMTU0MjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50LmNwcCAqLywKIAkJCQlDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4
dFBsYWNlaG9sZGVyRWxlbWVudC5oICovLAotCQkJCUE1NDE2RkUzMTg4MTBFRjgwMDA5RkM1RiAv
KiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCAqLywKLQkJCQlBNTQxNkZFNDE4ODEwRUY4
MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBzaGFkb3c7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ0NzAsNyArMjQ0
MzMsNiBAQAogCQkJCUExRjc2QjBFMUY0NEMwQ0YwMDE0QzMxOCAvKiBwYXltZW50cmVxdWVzdCAq
LywKIAkJCQk5M0IwQTY0MjI2Q0RDNTc0MDBBQTIxRTQgLyogcGVybWlzc2lvbnMgKi8sCiAJCQkJ
MURFRjA2QTIyMzNDMzJEQjAwRUUyMjhEIC8qIHBpY3R1cmVpbnBpY3R1cmUgKi8sCi0JCQkJMDcy
QUUxREUxODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8sCiAJCQkJNDE4RkNCQjgyNzA2RTRC
RDAwRjk2RUNBIC8qIHB1c2gtYXBpICovLAogCQkJCUNEQzMxMkUwMjJGQ0QwQjAwMDEyMDRFQyAv
KiByZW1vdGVwbGF5YmFjayAqLywKIAkJCQlBQTJBNUFCNzE2QTQ4NUE0MDA5NzVBMjUgLyogc3Bl
ZWNoICovLApAQCAtMzM5MDcsNyArMzM4NjksNiBAQAogCQkJCTU3MzAzQkY0MjAwOTkwNDYwMDM1
NTk2NSAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzMwM0MxMTIwMDk5Q0IxMDAzNTU5NjUgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzAwMjAwOTk1MUMwMDM1NTk2
NSAvKiBKU1B1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzc2
NjRGRDE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjY1OEZGQTIxNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2Rl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
UmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTZDNEM5NkRGMUFENDQ4MzUwMDM2M0Y2NCAvKiBK
U1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4NjYs
NyArMzQ4MjcsNiBAQAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2lu
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDhGRUREMUQ1OTJCOEIwMDhCQThDQiAv
KiBQbHVnaW5JbmZvUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3MkFFMUU1MTgzQzA3
NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFF
MjE4M0ExNzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNvdXJjZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNCQjhBQjkxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM0OTQzLDcgKzM0OTAzLDYgQEAKIAkJCQk1NTBBMEJDQTA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1
OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMDcyQUUxRTgxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFFRTkyQzIyMzg4QTdEMDA0MTU3QTkgLyog
UXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcxNzEzNzM2QTY2MDBCOUU5MTkgLyog
UXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QTU3NEYyOTEzMURCOTZEMDA0
NzFCODggLyogUXVvdGVzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjM5Miw4ICszNjM1MSw2
IEBACiAJCQkJRTFGMUU4MzAwQzNDMkJCOTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU0MTZGRTYxODgxMEVGODAwMDlGQzVG
IC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBNTUx
NUY1MTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CkBAIC0zNjg2Myw3ICszNjgyMCw2IEBACiAJCQkJQ0QyN0FFNTEyMkE5ODY4NzAwOTQ3RkY5
IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBFMkQw
RjI2RjI1MDg5MDAxNEFBQzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFS
ZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzhFQzkzRTFGOTlCRjVBMDA0RDIyQTgg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERThCNUVDMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDI4
NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDEyICs3OCw4IEBAIEpTT2JqZWN0KiBwbHVn
aW5TY3JpcHRPYmplY3QoSlNHbG9iYWxPYmoKIAogICAgIC8vIENob2tlIHBvaW50IGZvciBzY3Jp
cHQvcGx1Z2luIGludGVyYWN0aW9uOyBub3RpZnkgRE9NVGltZXIgb2YgdGhlIGV2ZW50LgogICAg
IERPTVRpbWVyOjpzY3JpcHREaWRJbnRlcmFjdFdpdGhQbHVnaW4ocGx1Z2luRWxlbWVudCk7Ci0K
LSAgICAvLyBGaXJzdCwgc2VlIGlmIHRoZSBlbGVtZW50IGhhcyBhIHBsdWctaW4gcmVwbGFjZW1l
bnQgd2l0aCBhIHNjcmlwdC4KLSAgICBpZiAoYXV0byogc2NyaXB0T2JqZWN0ID0gcGx1Z2luRWxl
bWVudC5zY3JpcHRPYmplY3RGb3JQbHVnaW5SZXBsYWNlbWVudCgpKQotICAgICAgICByZXR1cm4g
c2NyaXB0T2JqZWN0OwogICAgIAotICAgIC8vIE5leHQsIHNlZSBpZiB3ZSBjYW4gYXNrIHRoZSBw
bHVnLWluIHZpZXcgZm9yIGl0cyBzY3JpcHQgb2JqZWN0LgorICAgIC8vIFNlZSBpZiB3ZSBjYW4g
YXNrIHRoZSBwbHVnLWluIHZpZXcgZm9yIGl0cyBzY3JpcHQgb2JqZWN0LgogICAgIGlmIChhdXRv
KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UocGx1
Z2luRWxlbWVudCwganNIVE1MRWxlbWVudC0+Z2xvYmFsT2JqZWN0KCkpKQogICAgICAgICByZXR1
cm4gc2NyaXB0T2JqZWN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg0OTM5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ4NzksMTEgKzQ4NzksNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0LT52aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bih2aXNpdG9yKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pTQ3Vz
dG9tTWFya0Z1bmN0aW9ufTsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1BsdWdpbn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmIFBM
QVRGT1JNKENPQ09BKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0
aGlzT2JqZWN0LT53cmFwcGVkKCkucGx1Z2luUmVwbGFjZW1lbnRTY3JpcHRPYmplY3QoKS52aXNp
dCh2aXNpdG9yKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZc
biIpOwotICAgICAgICB9CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntHZW5lcmF0ZUFkZE9wYXF1ZVJvb3R9KSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiPHd0Zi9HZXRQdHIuaD4iKTsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntHZW5lcmF0ZUFkZE9wYXF1ZVJvb3R9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdp
bkludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NDkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsOSArMjY1LDYgQEAgdm9pZCBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2U6OnZpc2l0Q2hpbGRyZQogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdGhpc09iamVj
dC0+d3JhcHBlZCgpLnBsdWdpblJlcGxhY2VtZW50U2NyaXB0T2JqZWN0KCkudmlzaXQodmlzaXRv
cik7Ci0jZW5kaWYKIH0KIAogREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpTVGVzdFBsdWdpbkludGVy
ZmFjZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAko
cmV2aXNpb24gMjg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIK
LSNpbmNsdWRlICJQbHVnaW5SZXBsYWNlbWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgpAQCAtNTQsMTEgKzUzLDYgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5oIgotI2luY2x1ZGUgIllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oIgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEhUTUxQbHVnSW5FbGVtZW50KTsKQEAgLTI1NiwxMSArMjUwLDggQEAgYm9vbCBIVE1MUGx1Z0lu
RWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIAogICAgIHJldHVybiAhZG93bmNhc3Q8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+KCpyZW5kZXJlcigpKS5pc1BsdWdpblVuYXZhaWxhYmxlKCk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5z
ZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewotICAgIGlmIChtX3BsdWdpblJlcGxhY2VtZW50ICYmIG1fcGx1
Z2luUmVwbGFjZW1lbnQtPndpbGxDcmVhdGVSZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gbV9w
bHVnaW5SZXBsYWNlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwotCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlckVtYmVkZGVkT2JqZWN0PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCkBAIC0yODgs
MTIzICsyNzksMTMgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6c2V0RGlzcGxheVN0YXRlKAog
ICAgICAgICBtX3N3YXBSZW5kZXJlclRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lk
IEhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qm
IHJvb3QpCi17Ci0gICAgaWYgKCFtX3BsdWdpblJlcGxhY2VtZW50IHx8ICFkb2N1bWVudCgpLnBh
Z2UoKSB8fCBkaXNwbGF5U3RhdGUoKSAhPSBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVudCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIHJvb3Quc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNlKHRy
dWUpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wbHVnaW5SZXBsYWNlbWVudC0+aW5zdGFsbFJlcGxh
Y2VtZW50KHJvb3QpOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LnN1Y2Nlc3MgfHwgIXJlc3VsdC5zY3JpcHRPYmplY3QpOwotICAgIG1fcGx1Z2luUmVw
bGFjZW1lbnRTY3JpcHRPYmplY3QgPSByZXN1bHQuc2NyaXB0T2JqZWN0OwotI2VuZGlmCi0KLSAg
ICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHsKLSAgICAgICAgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlp
bmdQbHVnaW5SZXBsYWNlbWVudCk7Ci0gICAgICAgIGludmFsaWRhdGVTdHlsZUFuZFJlbmRlcmVy
c0ZvclN1YnRyZWUoKTsKLSAgICB9Ci19Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLXN0YXRpYyB2
b2lkIHJlZ2lzdHJhcihjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYpOwotI2VuZGlmCi0KLXN0YXRp
YyBWZWN0b3I8UmVwbGFjZW1lbnRQbHVnaW4qPiYgcmVnaXN0ZXJlZFBsdWdpblJlcGxhY2VtZW50
cygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxSZXBsYWNlbWVudFBsdWdp
bio+PiByZWdpc3RlcmVkUmVwbGFjZW1lbnRzOwotICAgIHN0YXRpYyBib29sIGVuZ2luZXNRdWVy
aWVkID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKGVuZ2luZXNRdWVyaWVkKQotICAgICAgICByZXR1
cm4gcmVnaXN0ZXJlZFJlcGxhY2VtZW50czsKLSAgICBlbmdpbmVzUXVlcmllZCA9IHRydWU7Ci0K
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6cmVn
aXN0ZXJQbHVnaW5SZXBsYWNlbWVudChyZWdpc3RyYXIpOwotICAgIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6cmVnaXN0ZXJQbHVnaW5SZXBsYWNlbWVudChyZWdpc3RyYXIpOwotI2VuZGlmCi0g
ICAgCi0gICAgcmV0dXJuIHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7Ci19Ci0KLSNpZiBQTEFURk9S
TShDT0NPQSkKLXN0YXRpYyB2b2lkIHJlZ2lzdHJhcihjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYg
cmVwbGFjZW1lbnQpCi17Ci0gICAgcmVnaXN0ZXJlZFBsdWdpblJlcGxhY2VtZW50cygpLmFwcGVu
ZChuZXcgUmVwbGFjZW1lbnRQbHVnaW4ocmVwbGFjZW1lbnQpKTsKLX0KLSNlbmRpZgotCi1zdGF0
aWMgUmVwbGFjZW1lbnRQbHVnaW4qIHBsdWdpblJlcGxhY2VtZW50Rm9yVHlwZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBWZWN0b3I8UmVwbGFjZW1lbnRQ
bHVnaW4qPiYgcmVwbGFjZW1lbnRzID0gcmVnaXN0ZXJlZFBsdWdpblJlcGxhY2VtZW50cygpOwot
ICAgIGlmIChyZXBsYWNlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIFN0cmluZyBleHRlbnNpb247Ci0gICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVy
bC5sYXN0UGF0aENvbXBvbmVudCgpOwotICAgIHNpemVfdCBkb3RPZmZzZXQgPSBsYXN0UGF0aENv
bXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwotICAgIGlmIChkb3RPZmZzZXQgIT0gbm90Rm91bmQp
Ci0gICAgICAgIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhkb3RPZmZz
ZXQgKyAxKS50b1N0cmluZygpOwotCi0gICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKLSAgICBp
ZiAodHlwZS5pc0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHR5cGUg
PSBtaW1lVHlwZUZyb21EYXRhVVJMKHVybC5zdHJpbmcoKSk7Ci0gICAgCi0gICAgaWYgKHR5cGUu
aXNFbXB0eSgpICYmICFleHRlbnNpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byog
cmVwbGFjZW1lbnQgOiByZXBsYWNlbWVudHMpIHsKLSAgICAgICAgICAgIGlmIChyZXBsYWNlbWVu
dC0+c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGV4dGVuc2lvbikgJiYgcmVwbGFjZW1lbnQtPnN1cHBv
cnRzVVJMKHVybCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50OwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAo
ZXh0ZW5zaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRl
bnNpb24pOwotICAgIH0KLQotICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7
Ci0gICAgICAgIGlmIChyZXBsYWNlbWVudC0+c3VwcG9ydHNUeXBlKHR5cGUpICYmIHJlcGxhY2Vt
ZW50LT5zdXBwb3J0c1VSTCh1cmwpKQotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Owot
ICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1ib29sIEhUTUxQbHVnSW5FbGVtZW50
OjpyZXF1ZXN0T2JqZWN0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVVUkwsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCit2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKQogewotICAgIGlmIChtX3BsdWdpblJlcGxhY2Vt
ZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFVSTCBjb21wbGV0ZWRVUkw7Ci0gICAg
aWYgKCFyZWxhdGl2ZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbXBsZXRlZFVSTCA9IGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwocmVsYXRpdmVVUkwpOwotCi0gICAgUmVwbGFjZW1lbnRQbHVnaW4q
IHJlcGxhY2VtZW50ID0gcGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKGNvbXBsZXRlZFVSTCwgbWlt
ZVR5cGUpOwotICAgIGlmICghcmVwbGFjZW1lbnQgfHwgIXJlcGxhY2VtZW50LT5pc0VuYWJsZWRC
eVNldHRpbmdzKGRvY3VtZW50KCkuc2V0dGluZ3MoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIExPRyhQbHVnaW5zLCAiJXAgLSBGb3VuZCBwbHVnLWluIHJlcGxhY2VtZW50IGZvciAl
cy4iLCB0aGlzLCBjb21wbGV0ZWRVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBt
X3BsdWdpblJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQtPmNyZWF0ZSgqdGhpcywgcGFyYW1OYW1l
cywgcGFyYW1WYWx1ZXMpOwotICAgIHNldERpc3BsYXlTdGF0ZShQcmVwYXJpbmdQbHVnaW5SZXBs
YWNlbWVudCk7Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKLUpTQzo6SlNPYmplY3QqIEhUTUxQbHVn
SW5FbGVtZW50OjpzY3JpcHRPYmplY3RGb3JQbHVnaW5SZXBsYWNlbWVudCgpCitib29sIEhUTUxQ
bHVnSW5FbGVtZW50OjpyZXF1ZXN0T2JqZWN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IG1fcGx1Z2luUmVwbGFjZW1l
bnRTY3JpcHRPYmplY3Q7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHZhbHVlLmdldE9iamVjdCgpOwotI2Vsc2UKLSAgICByZXR1cm4gbnVsbHB0
cjsKLSNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBIVE1MUGx1Z0luRWxlbWVu
dDo6aXNCZWxvd1NpemVUaHJlc2hvbGQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuaAkocmV2aXNpb24gMjg0OTM5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBA
IGNsYXNzIEluc3RhbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBsdWdpblJl
cGxhY2VtZW50OwogY2xhc3MgUmVuZGVyV2lkZ2V0OwogY2xhc3MgV2lkZ2V0OwogCkBAIC01OSwx
MSArNTgsNiBAQCBwdWJsaWM6CiAgICAgRGlzcGxheVN0YXRlIGRpc3BsYXlTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheVN0YXRlOyB9CiAgICAgdm9pZCBzZXREaXNwbGF5U3RhdGUoRGlz
cGxheVN0YXRlKTsKIAotICAgIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9iamVjdEZvclBsdWdpblJl
cGxhY2VtZW50KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgSlNWYWx1ZUluV3JhcHBlZE9i
amVjdCYgcGx1Z2luUmVwbGFjZW1lbnRTY3JpcHRPYmplY3QoKSB7IHJldHVybiBtX3BsdWdpblJl
cGxhY2VtZW50U2NyaXB0T2JqZWN0OyB9Ci0jZW5kaWYKLQogICAgIGJvb2wgaXNDYXB0dXJpbmdN
b3VzZUV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faXNDYXB0dXJpbmdNb3VzZUV2ZW50czsgfQog
ICAgIHZvaWQgc2V0SXNDYXB0dXJpbmdNb3VzZUV2ZW50cyhib29sIGNhcHR1cmluZykgeyBtX2lz
Q2FwdHVyaW5nTW91c2VFdmVudHMgPSBjYXB0dXJpbmc7IH0KIApAQCAtMTE5LDEwICsxMTMsNiBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBtX2luc3Rh
bmNlOwogICAgIFRpbWVyIG1fc3dhcFJlbmRlcmVyVGltZXI7Ci0gICAgUmVmUHRyPFBsdWdpblJl
cGxhY2VtZW50PiBtX3BsdWdpblJlcGxhY2VtZW50OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9wbHVnaW5SZXBsYWNlbWVudFNjcmlwdE9iamVjdDsK
LSNlbmRpZgogICAgIGJvb2wgbV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faW5CZWZvcmVMb2FkRXZlbnRIYW5kbGVyIHsgZmFsc2UgfTsKICAgICBEaXNwbGF5
U3RhdGUgbV9kaXNwbGF5U3RhdGUgeyBQbGF5aW5nIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NoYWRvd1BzZXVkb0lkcy5jcHAJKHJldmlzaW9uIDI4NDkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NoYWRvd1BzZXVkb0lkcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxOSwxMiArMjE5LDYgQEAgY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWV0ZXJF
dmVuTGVzc0dvbwogICAgIHJldHVybiB3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlOwogfQog
Ci1jb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQbHVnaW5SZXBsYWNlbWVudCgpCi17Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQbHVn
aW5SZXBsYWNlbWVudCgiLXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHdlYmtpdFBsdWdpblJlcGxhY2VtZW50
OwotfQotCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQcm9ncmVzc0JhcigpCiB7CiAgICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQcm9n
cmVzc0JhcigiLXdlYmtpdC1wcm9ncmVzcy1iYXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9J
ZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1
ZG9JZHMuaAkocmV2aXNpb24gMjg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2hhZG93UHNldWRvSWRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDggKzc5LDYgQEAgY29uc3Qg
QXRvbVN0cmluZyYgd2Via2l0TWV0ZXJPcHRpbXVtVmFsdQogY29uc3QgQXRvbVN0cmluZyYgd2Vi
a2l0TWV0ZXJTdWJvcHRpbXVtVmFsdWUoKTsKIGNvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1ldGVy
RXZlbkxlc3NHb29kVmFsdWUoKTsKIAotY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UGx1Z2luUmVw
bGFjZW1lbnQoKTsKLQogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UHJvZ3Jlc3NCYXIoKTsKIGNv
bnN0IEF0b21TdHJpbmcmIHdlYmtpdFByb2dyZXNzVmFsdWUoKTsKIGNvbnN0IEF0b21TdHJpbmcm
IHdlYmtpdFByb2dyZXNzSW5uZXJFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcAkocmV2
aXNpb24gMjg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWW91VHViZUVtYmVkU2hh
ZG93RWxlbWVudC5oIgotCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCi0jaW5jbHVkZSAi
U2hhZG93UHNldWRvSWRzLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoWW91VHVi
ZUVtYmVkU2hhZG93RWxlbWVudCk7Ci0KLVJlZjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBZ
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQotewot
ICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcgWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dChkb2N1bWVudCkpOwotICAgIGVsZW1lbnQtPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6Ondl
YmtpdFBsdWdpblJlcGxhY2VtZW50KCkpOwotICAgIHJldHVybiBlbGVtZW50OwotfQotCi1Zb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50OjpZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50KERvY3VtZW50
JiBkb2N1bWVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1
bWVudCkKLXsKLX0KLQotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVFbWJlZFNoYWRv
d0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQotewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Zb3VUdWJlRW1iZWRTaGFkb3dFbGVt
ZW50LmgJKHJldmlzaW9uIDI4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkhUTUxEaXZFbGVt
ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZF
bGVtZW50IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFlvdVR1YmVFbWJlZFNoYWRvd0Vs
ZW1lbnQpOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8WW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Jik7Ci0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQoRG9j
dW1lbnQmKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLnlhbWwJKHJldmlzaW9uIDI4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDEyICs0NDUsNiBAQCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvbkVuCiAgICAgICAiSEFWRShSU0FfQlNTQSki
OiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogCi1RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dEVuYWJsZWQ6Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYkNvcmU6Ci0g
ICAgICBkZWZhdWx0OiBmYWxzZQotCiBSZXBhaW50T3V0c2lkZUxheW91dEVuYWJsZWQ6CiAgIHR5
cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOgpAQCAtNjM4LDkgKzYzMiwzIEBAIFdlYmtpdEltYWdl
UmVhZHlFdmVudEVuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJDb3JlOgogICAgICAg
ZGVmYXVsdDogZmFsc2UKLQotWW91VHViZUZsYXNoUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkOgot
ICB0eXBlOiBib29sCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVs
dDogZmFsc2UKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkocmV2aXNpb24gMjg0OTM5KQor
KysgU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDIxLTEwLTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IGFu
ZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25Q
YXJhbWV0ZXJzLmpzOgorCiAyMDIxLTEwLTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBbY3NzLXZhbHVlcy00XSBTdXBwb3J0IHNtYWxsIChzdiopLCBsYXJn
ZSAobHYqKSBhbmQgZHluYW1pYyAoZHYqKSB2aWV3cG9ydCB1bml0cwpJbmRleDogU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVy
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCShyZXZpc2lvbiAyODQ5MzkpCisrKyBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25Q
YXJhbWV0ZXJzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcxLDExICsxMjcxLDYgQEAgV0kuTmF0
aXZlUHJvdG90eXBlRnVuY3Rpb25QYXJhbWV0ZXJzID0gewogICAgICAgICBfX3Byb3RvX186IG51
bGwsCiAgICAgfSwKIAotICAgIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OiB7Ci0gICAgICAg
IHBvc3RFdmVudDogImV2ZW50TmFtZSIsCi0gICAgICAgIF9fcHJvdG9fXzogbnVsbCwKLSAgICB9
LAotCiAgICAgUlRDRFRNRlNlbmRlcjogewogICAgICAgICBpbnNlcnREVE1GOiAidG9uZXMsIFtk
dXJhdGlvbl0sIFtpbnRlclRvbmVHYXBdIiwKICAgICAgICAgX19wcm90b19fOiBudWxsLApJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjg0OTM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMTAtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZW1vdmUgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQgYW5kIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMyNDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDogUmVtb3ZlZC4KKwogMjAyMS0xMC0yNyAgS2F0ZSBD
aGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
OiBbaU9TXSBUZXN0V2ViS2l0QVBJLkluQXBwQnJvd3NlclByaXZhY3kuQXBwQm91bmREb21haW5B
bGxvd3NTZXJ2aWNlV29ya2VycyBpcyBmYWlsaW5nCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjg0OTM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk0NSw3ICs5NDUs
NiBAQAogCQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJERDk1NTYxRjgzNjgzNjAw
RDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLzsgfTsKIAkJOUJGMDAxMzMyNjdDNEM1OTAwRENGQjNG
IC8qIENoZWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUJGMDAxMzIyNjdDNEM1OTAwRENGQjNGIC8qIENoZWNrZWRSZWYuY3BwICovOyB9
OwogCQk5QkYzNTZDRDIwMkQ0NTg1MDBGNzExNjAgLyogbXNvLWxpc3QuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkYzNTZDQzIwMkQ0
NEYyMDBGNzExNjAgLyogbXNvLWxpc3QuaHRtbCAqLzsgfTsKLQkJOUM2NERDMzIxRDc2MTk4QTAw
NEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyog
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCAqLzsgfTsKIAkJQTEwRjA0N0UxRTNBRDI5QzAw
Qzk1RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBGMDQ3QzFFM0FEMjlDMDBDOTVFMTkgLyogTlNGaWxl
TWFuYWdlckV4dHJhcy5tbSAqLzsgfTsKIAkJQTExNDZBOEQxRDJENzExNTAwMEZFNzEwIC8qIENv
bnRlbnRGaWx0ZXJpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTE0NkE4QTFEMkQ3MDRGMDAwRkU3MTAgLyogQ29udGVudEZpbHRlcmluZy5tbSAq
LzsgfTsKIAkJQTExRTdEQTAyNEExNjlGOTAwMDI2NzQ1IC8qIGxpbmstd2l0aC1ob3Zlci1tZW51
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExRTdEOUYyNEExNjlFMjAwMDI2NzQ1IC8qIGxpbmstd2l0aC1ob3Zlci1tZW51Lmh0bWwg
Ki87IH07CkBAIC0yNzA3LDcgKzI3MDYsNiBAQAogCQk5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAg
LyogUGFzdGVSVEZELm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVSVEZELm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkYwMDEzMjI2N0M0QzU5MDBEQ0ZCM0YgLyogQ2hl
Y2tlZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja2VkUmVmLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8qIG1zby1saXN0
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibXNvLWxpc3QuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTlDNjREQzMxMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwRjA0N0Mx
RTNBRDI5QzAwQzk1RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE0NkE4QTFEMkQ3MDRGMDAwRkU3MTAgLyogQ29udGVu
dEZpbHRlcmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENv
bnRlbnRGaWx0ZXJpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMUU3RDlG
MjRBMTY5RTIwMDAyNjc0NSAvKiBsaW5rLXdpdGgtaG92ZXItbWVudS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
Imxpbmstd2l0aC1ob3Zlci1tZW51Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzg1MSw3ICszODQ5LDYgQEAKIAkJCQk3QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyogVHJh
bnNmb3JtYXRpb25NYXRyaXguY3BwICovLAogCQkJCTU3RDFENzVFMjFEQ0I3QTgwMDkzRTg2QSAv
KiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCAqLywKIAkJCQlFM0ExRTc3RTIxQjI1QjM5
MDA4QzYwMDcgLyogVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCAqLywKLQkJCQk5QzY0REMzMTFE
NzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gV2ViQ29yZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02MDcy
LDcgKzYwNjksNiBAQAogCQkJCTk1M0FCQjM1MjVDMEQ2ODIwMDRDOEI3MyAvKiBXS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzc0QzhGQTIy
REZCQTk2MDBEQTJEQUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMxNEQzMDQ2MjRCNEMzQkEwMDQ4MDM4NyAvKiBYUENFbmRwb2ludC5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCTlDNjREQzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNw
cAkocmV2aXNpb24gMjg0OTM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
WW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
LSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLWNsYXNzIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBTZXRVcCgpIGZp
bmFsIHsKLSAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgIH0KLX07Ci0K
LXN0YXRpYyBib29sIHRlc3QoY29uc3QgU3RyaW5nJiBpbnB1dFVSTFN0cmluZywgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZFVSTFN0cmluZykKLXsKLSAgICBVUkwgaW5wdXRVUkwoVVJMKCksIGlucHV0
VVJMU3RyaW5nKTsKLSAgICBTdHJpbmcgYWN0dWFsVVJMU3RyaW5nID0gWW91VHViZVBsdWdpblJl
cGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGlucHV0VVJMLCBpbnB1dFVSTFN0
cmluZyk7Ci0gICAgcmV0dXJuIGFjdHVhbFVSTFN0cmluZy51dGY4KCkgPT0gZXhwZWN0ZWRVUkxT
dHJpbmcudXRmOCgpOwotfQotCi1URVNUX0YoWW91VHViZVBsdWdpblJlcGxhY2VtZW50VGVzdCwg
WW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTCkKLXsKLSAgICAvLyBZb3VUdWJlIG5vbi12aWRlbyBV
UkwsIG5vdCBleHBlY3RlZCB0byBiZSB0cmFuc2Zvcm1lZC4KLSAgICBFWFBFQ1RfVFJVRSh0ZXN0
KCJodHRwczovL3d3dy55b3V0dWJlLmNvbSIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbSIpKTsK
LQotICAgIC8vIEJhc2ljIFlvdVR1YmUgdmlkZW8gbGlua3MsIGV4cGVjdGVkIHRvIGJlIHRyYW5z
Zm9ybWVkLgotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3Yv
ZFF3NHc5V2dYY1EiLCAiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1Ei
KSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L2RRdzR3
OVdnWGNRIiwgImh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1EiKSk7Ci0g
ICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly95b3V0dWJlLmNvbS92L2RRdzR3OVdnWGNRIiwg
Imh0dHBzOi8veW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1EiKSk7Ci0gICAgRVhQRUNUX1RS
VUUodGVzdCgiaHR0cDovL3lvdXR1YmUuY29tL3YvZFF3NHc5V2dYY1EiLCAiaHR0cDovL3lvdXR1
YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRIikpOwotCi0gICAgLy8gV2l0aCBzdGFydCB0aW1lLCBw
cmVzZXJ2ZWQuCi0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92
L2RRdzR3OVdnWGNRP3N0YXJ0PTQiLCAiaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0
dzlXZ1hjUT9zdGFydD00IikpOwotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHA6Ly93d3cueW91
dHViZS5jb20vdi9kUXc0dzlXZ1hjUT9zdGFydD00JmZzPTEiLCAiaHR0cDovL3d3dy55b3V0dWJl
LmNvbS9lbWJlZC9kUXc0dzlXZ1hjUT9zdGFydD00JmZzPTEiKSk7Ci0KLSAgICAvLyBXaXRoIGFu
IGludmFsaWQgcXVlcnkgKHNlZSAmIGluc3RlYWQgb2YgPyksIHdlIHByZXNlcnZlIGFuZCBmaXgg
dGhlIHF1ZXJ5LgotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHA6Ly93d3cueW91dHViZS5jb20v
di9kUXc0dzlXZ1hjUSZzdGFydD00IiwgImh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3
NHc5V2dYY1E/c3RhcnQ9NCIpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3Lnlv
dXR1YmUuY29tL3YvZFF3NHc5V2dYY1Emc3RhcnQ9NCZmcz0xIiwgImh0dHA6Ly93d3cueW91dHVi
ZS5jb20vZW1iZWQvZFF3NHc5V2dYY1E/c3RhcnQ9NCZmcz0xIikpOwotCi0gICAgLy8gTm9uLUZs
YXNoIFVSTCBpcyB1bnRvdWNoZWQuCi0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly93d3cu
eW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1EiLCAiaHR0cHM6Ly93d3cueW91dHViZS5jb20v
ZW1iZWQvZFF3NHc5V2dYY1EiKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cDovL3d3dy55
b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUSIsICJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2Vt
YmVkL2RRdzR3OVdnWGNRIikpOwotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHBzOi8veW91dHVi
ZS5jb20vZW1iZWQvZFF3NHc5V2dYY1EiLCAiaHR0cHM6Ly95b3V0dWJlLmNvbS9lbWJlZC9kUXc0
dzlXZ1hjUSIpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8veW91dHViZS5jb20vZW1i
ZWQvZFF3NHc5V2dYY1EiLCAiaHR0cDovL3lvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRIikp
OwotICAgIC8vIEV2ZW4gd2l0aCBleHRyYSBwYXJhbWV0ZXJzLgotICAgIEVYUEVDVF9UUlVFKHRl
c3QoImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRP3N0YXJ0PTQiLCAi
aHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1E/c3RhcnQ9NCIpKTsKLSAg
ICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdn
WGNRP2VuYWJsZWpzYXBpPTEiLCAiaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlX
Z1hjUT9lbmFibGVqc2FwaT0xIikpOwotICAgIC8vIEV2ZW4gd2l0aCBhbiBpbnZhbGlkICJxdWVy
eSIuCi0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQv
ZFF3NHc5V2dYY1Emc3RhcnQ9NCIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0
dzlXZ1hjUSZzdGFydD00IikpOwotCi0gICAgLy8gRG9uJ3QgdHJhbnNmb3JtIGFueXRoaW5nIHdp
dGggYSBub24gIi92LyIgcGF0aCBjb21wb25lbnQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBk
b21haW4uCi0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly93d3cueW91dHViZS5jb20vc29t
ZXRoaW5nL3YvZFF3NHc5V2dYY1EiLCAiaHR0cHM6Ly93d3cueW91dHViZS5jb20vc29tZXRoaW5n
L3YvZFF3NHc5V2dYY1EiKSk7Ci0KLSAgICAvLyBOb24tWW91VHViZSBkb21haW4gd2hvc2UgcGF0
aCBsb29rcyBsaWtlIGEgRmxhc2ggdmlkZW8gc2hvdWxkbid0IGJlIHRyYW5zZm9ybWVkLgotICAg
IEVYUEVDVF9UUlVFKHRlc3QoImh0dHBzOi8vd3d3Lm5vdHlvdXR1YmUuY29tL3YvZFF3NHc5V2dY
Y1EiLCAiaHR0cHM6Ly93d3cubm90eW91dHViZS5jb20vdi9kUXc0dzlXZ1hjUSIpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442674</attachid>
            <date>2021-10-27 22:12:11 -0700</date>
            <delta_ts>2021-10-28 10:32:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232400-20211027221210.patch</filename>
            <type>text/plain</type>
            <size>113307</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ4Mjk5MWYxNDg1ZGY5
NDU0YjBkNjA5ZmUxNDkyYTg2YjI1MWQ1ZC4uODFkMTNjYzU1OTFjMTM3MzM3YWY3Nzc1NzE1MWVl
MWExNDY2ZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3Zl
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IGFuZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXkgd2Vy
ZSBkaXNhYmxlZCBhdCBydW50aW1lIGluIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNzU5MTEvd2Via2l0CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1BsdWdp
blJlcGxhY2VtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW06IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpyZXF1ZXN0T2JqZWN0KToKKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RyYXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpzY3JpcHRPYmplY3RGb3JQbHVnaW5S
ZXBsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpblJlcGxhY2VtZW50
U2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TaGFkb3dQc2V1
ZG9JZHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRQbHVn
aW5SZXBsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvU2hhZG93UHNl
dWRvSWRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93
RWxlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKwogMjAy
MS0xMC0yNyAgS2lldCBIbyAgPHRobzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZGlzY3Jl
dGUgYW5pbWF0aW9uIHN1cHBvcnQgYmV0d2VlbiBQYXRoT3BlcmF0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggOTQzOTYzMGEzMjE4MTI3MGVlNjk0M2RiOTVlNjMxZmZhYTBlZmU1My4u
OTIzMmI1N2I5MzY5MGNhM2YzY2QwZDg5YTA4NWZiZGY3ZmNkMGZmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMjcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQgYW5kIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanM6CisKIDIwMjEtMTAtMjcgIEJKIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0ZW5zaW9uIGlmcmFt
ZXMgbGVhayB3aGVuIGRpc2FibGluZyBhbiBleHRlbnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGEwOWMyOThiOGRlYjU0MjBhYWU3
NDk2YWFhYmU2Mjg0NDA2YmIzMzkuLjRiM2MwZGFlM2EyMjcwNTc3ZDRmNWUyY2RmMTliY2UwNGQ4
MGJlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdApAQCAtNDIyLDkgKzQyMiw2IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlu
cGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdCtQaWN0dXJlSW5QaWN0dXJlLmlkCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZl
bnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVv
RWxlbWVudCtQaWN0dXJlSW5QaWN0dXJlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9waWN0
dXJlaW5waWN0dXJlL1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuanMK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcHVzaC1hcGkvUHVzaEVuY3J5cHRpb25LZXlOYW1lLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hFdmVudEluaXQuaWRsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDgyMmZjODVhMTE2
ZWFlNmNhNTA0YjZiNTE2ZTFlYTI2ODgyMDQwYzEuLjgwYWNlNzhkMmU5NTMzNDhiODU4NjY4NDcz
NTJkNzVhMmYxOWE3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNjI5LDggKzE2MjksNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQdXNoU3Vic2Ny
aXB0aW9uT3B0aW9ucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1B1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDQW5zd2VyT3B0aW9ucy5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDQW5zd2Vy
T3B0aW9ucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ0NlcnRpZmljYXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDky
NGFiZTlhNzdmNzc5ZGMyMjU2ZTkzZWZkMzMyMDA0ZjU1Njk4ZS4uMjRhYTk2NDY1NjFmNGU2YjQy
NjZiYmQyN2M0ODFlNTAzMmI0M2I0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0zNTIsNyArMzUyLDYgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvcGljdHVyZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnQr
UGljdHVyZUluUGljdHVyZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5w
aWN0dXJlL1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRW5jcnlwdGlvbktleU5hbWUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hFdmVudEluaXQuaWRsIFwKQEAgLTE2MTgsNyArMTYxNyw2IEBA
IFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTID0gXAogICAgICQoV2ViQ29yZSkvY3NzL3N2Zy5jc3Mg
XAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcyBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL3NoYWRvdy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MgXAogICAg
IE1vZGVybk1lZGlhQ29udHJvbHMuY3NzIFwKICAgICAkKFBPU1NJQkxFX0FERElUSU9OQUxfVVNF
Ul9BR0VOVF9TVFlMRV9TSEVFVFMpIFwKICMKQEAgLTE3MjcsNyArMTcyNSw2IEBAIE1vZGVybk1l
ZGlhQ29udHJvbHMuanMgOiAkKE1PREVSTl9NRURJQV9DT05UUk9MU19TQ1JJUFRTKQogIyB1c2Vy
IGFnZW50IHNjcmlwdHMKIAogVVNFUl9BR0VOVF9TQ1JJUFRTID0gXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmpzIFwKICAgICBNb2Rl
cm5NZWRpYUNvbnRyb2xzLmpzIFwKICMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzFhNmViYmU5
MzhiZWE3Yzk2MGViYWJjNGFlNzY2NmY1OGVlNDQ5Zi4uZDVjYjc1NWE1MmQ0MDE0ZmQ5OTExYzE1
NzkzZGY5ZGMzMGJiNzY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTEsOSArMTUxLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvcGVybWlz
c2lvbnMvUGVybWlzc2lvbk9ic2VydmVyLmgKICAgICBNb2R1bGVzL3Blcm1pc3Npb25zL1Blcm1p
c3Npb25TdGF0ZS5oCiAKLSAgICBNb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAot
ICAgIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaAotCiAgICAgTW9k
dWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKICAgICBNb2R1bGVzL3B1c2gtYXBp
L1B1c2hTdWJzY3JpcHRpb25EYXRhLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDlkMjg1ZDE1ZGQ3OGJmZDQyM2QxN2FiMjRhYzVjZGU3NjZlY2M1Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiUmVuZGVyUHRyLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
ewotY2xhc3MgSlNPYmplY3Q7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRN
TFBsdWdJbkVsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJFbGVtZW50OwotY2xhc3MgUmVuZGVyU3R5bGU7
Ci1jbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247Ci1jbGFzcyBTZXR0aW5nczsKLWNsYXNzIFNoYWRv
d1Jvb3Q7Ci0KLWNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1
Z2luUmVwbGFjZW1lbnQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbHVnaW5SZXBsYWNlbWVu
dCgpID0gZGVmYXVsdDsKLQotICAgIHN0cnVjdCBJbnN0YWxsUmVzdWx0IHsKLSAgICAgICAgYm9v
bCBzdWNjZXNzOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBKU0M6OkpTVmFsdWUgc2Ny
aXB0T2JqZWN0IHsgfTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICB2aXJ0dWFsIEluc3RhbGxSZXN1
bHQgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSA9IDA7Ci19
OwotCi10eXBlZGVmIFJlZjxQbHVnaW5SZXBsYWNlbWVudD4gKCpDcmVhdGVQbHVnaW5SZXBsYWNl
bWVudCkoSFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKLXR5cGVkZWYgYm9vbCAoKlBs
dWdpblJlcGxhY2VtZW50U3VwcG9ydHNUeXBlKShjb25zdCBTdHJpbmcmKTsKLXR5cGVkZWYgYm9v
bCAoKlBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNGaWxlRXh0ZW5zaW9uKShjb25zdCBTdHJpbmcm
KTsKLXR5cGVkZWYgYm9vbCAoKlBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNVUkwpKGNvbnN0IFVS
TCYpOwotdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkRm9yU2V0dGluZ3Mp
KGNvbnN0IFNldHRpbmdzJik7Ci0KLWNsYXNzIFJlcGxhY2VtZW50UGx1Z2luIHsKLXB1YmxpYzoK
LSAgICBSZXBsYWNlbWVudFBsdWdpbihDcmVhdGVQbHVnaW5SZXBsYWNlbWVudCBjb25zdHJ1Y3Rv
ciwgUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLCBQbHVnaW5SZXBs
YWNlbWVudFN1cHBvcnRzRmlsZUV4dGVuc2lvbiBzdXBwb3J0c0ZpbGVFeHRlbnNpb24sIFBsdWdp
blJlcGxhY2VtZW50U3VwcG9ydHNVUkwgc3VwcG9ydHNVUkwsIFBsdWdpblJlcGxhY2VtZW50RW5h
YmxlZEZvclNldHRpbmdzIGlzRW5hYmxlZEJ5U2V0dGluZ3MpCi0gICAgICAgIDogbV9jb25zdHJ1
Y3Rvcihjb25zdHJ1Y3RvcikKLSAgICAgICAgLCBtX3N1cHBvcnRzVHlwZShzdXBwb3J0c1R5cGUp
Ci0gICAgICAgICwgbV9zdXBwb3J0c0ZpbGVFeHRlbnNpb24oc3VwcG9ydHNGaWxlRXh0ZW5zaW9u
KQotICAgICAgICAsIG1fc3VwcG9ydHNVUkwoc3VwcG9ydHNVUkwpCi0gICAgICAgICwgbV9pc0Vu
YWJsZWRCeVNldHRpbmdzKGlzRW5hYmxlZEJ5U2V0dGluZ3MpCi0gICAgewotICAgIH0KLQotICAg
IGV4cGxpY2l0IFJlcGxhY2VtZW50UGx1Z2luKGNvbnN0IFJlcGxhY2VtZW50UGx1Z2luJiBvdGhl
cikKLSAgICAgICAgOiBtX2NvbnN0cnVjdG9yKG90aGVyLm1fY29uc3RydWN0b3IpCi0gICAgICAg
ICwgbV9zdXBwb3J0c1R5cGUob3RoZXIubV9zdXBwb3J0c1R5cGUpCi0gICAgICAgICwgbV9zdXBw
b3J0c0ZpbGVFeHRlbnNpb24ob3RoZXIubV9zdXBwb3J0c0ZpbGVFeHRlbnNpb24pCi0gICAgICAg
ICwgbV9zdXBwb3J0c1VSTChvdGhlci5tX3N1cHBvcnRzVVJMKQotICAgICAgICAsIG1faXNFbmFi
bGVkQnlTZXR0aW5ncyhvdGhlci5tX2lzRW5hYmxlZEJ5U2V0dGluZ3MpCi0gICAgewotICAgIH0K
LQotICAgIFJlZjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiBl
bGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yKGVsZW1lbnQs
IHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsgfQotICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNUeXBlKG1pbWVUeXBl
KTsgfQotICAgIGJvb2wgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzRmlsZUV4dGVuc2lvbihleHRlbnNpb24pOyB9
Ci0gICAgYm9vbCBzdXBwb3J0c1VSTChjb25zdCBVUkwmIHVybCkgY29uc3QgeyByZXR1cm4gbV9z
dXBwb3J0c1VSTCh1cmwpOyB9Ci0gICAgYm9vbCBpc0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNl
dHRpbmdzJiBzZXR0aW5ncykgY29uc3QgeyByZXR1cm4gbV9pc0VuYWJsZWRCeVNldHRpbmdzKHNl
dHRpbmdzKTsgfTsKLQotcHJpdmF0ZToKLSAgICBDcmVhdGVQbHVnaW5SZXBsYWNlbWVudCBtX2Nv
bnN0cnVjdG9yOwotICAgIFBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNUeXBlIG1fc3VwcG9ydHNU
eXBlOwotICAgIFBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNGaWxlRXh0ZW5zaW9uIG1fc3VwcG9y
dHNGaWxlRXh0ZW5zaW9uOwotICAgIFBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNVUkwgbV9zdXBw
b3J0c1VSTDsKLSAgICBQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWRGb3JTZXR0aW5ncyBtX2lzRW5h
YmxlZEJ5U2V0dGluZ3M7Ci19OwotCi10eXBlZGVmIHZvaWQgKCpQbHVnaW5SZXBsYWNlbWVudFJl
Z2lzdHJhcikoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNz
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMTk3NDdlMzg0NjIxMTBh
MTUzNThlMWYyNWI4NGFiYTBmMmY4MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1lbWJlZDo6LXdlYmtpdC1wbHVnaW4tcmVwbGFj
ZW1lbnQsCi1vYmplY3Q6Oi13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50Ci17Ci0gICAgcG9zaXRp
b246IHJlbGF0aXZlOwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICB3aWR0aDogMTAw
JTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMjAwZjE1N2ExMTY2NzAxNWU1OTY5ZTc2YzRiYjZhZjhl
NTVlMmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiUGx1Z2luUmVw
bGFjZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERPTVdyYXBwZXJXb3JsZDsKLWNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7Ci0K
LWNsYXNzIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IGZpbmFsIDogcHVibGljIFBsdWdpblJl
cGxhY2VtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlclBsdWdpblJlcGxh
Y2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0cmFyKTsKLQotICAgIHZpcnR1YWwgflF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50KCk7Ci0KLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW92aWVT
aXplKCkgY29uc3Q7Ci0gICAgdm9pZCBwb3N0RXZlbnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBI
VE1MVmlkZW9FbGVtZW50KiBwYXJlbnRFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQu
Z2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudChIVE1M
UGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIHN0YXRpYyBSZWY8UGx1Z2luUmVwbGFj
ZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9vbCBp
c0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJik7Ci0KLSAgICBJbnN0YWxsUmVzdWx0
IGluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JikgZmluYWw7Ci0KLSAgICBib29sIHdpbGxD
cmVhdGVSZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwot
Ci0gICAgYm9vbCBlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCk7Ci0gICAgRE9NV3Jh
cHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKCk7Ci0KLSAgICBXZWFrUHRyPEhUTUxQbHVnSW5FbGVt
ZW50PiBtX3BhcmVudEVsZW1lbnQ7Ci0gICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fbWVk
aWFFbGVtZW50OwotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IG1fbmFtZXM7Ci0gICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gbV92YWx1ZXM7Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFhMDQ1ZmYwNjYyNzhiOTE1ZjY4OTBh
YmM3MGJkNGU1MGQyMTE4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1bCi0gICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbG9uZyBtb3ZpZVNpemU7Ci0gICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRl
IGFueSB0aW1lZE1ldGFEYXRhOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBhbnkgYWNjZXNzTG9nOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBh
bnkgZXJyb3JMb2c7Ci0gICAgdW5kZWZpbmVkIHBvc3RFdmVudChET01TdHJpbmcgZXZlbnROYW1l
KTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU1OWY4MzViMGUyMmM1ODJmMTA3ZDZiYWYzYTE1MDg1ZmRlOWIxYmIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMzUwICswLDAgQEAKLQotZnVuY3Rpb24gY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQocm9vdCwg
cGFyZW50LCBob3N0LCBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlVmFsdWVzKQotewotICAgIHJl
dHVybiBuZXcgUmVwbGFjZW1lbnQocm9vdCwgcGFyZW50LCBob3N0LCBhdHRyaWJ1dGVOYW1lcywg
YXR0cmlidXRlVmFsdWVzKTsKLX07Ci0KLWZ1bmN0aW9uIFJlcGxhY2VtZW50KHJvb3QsIHBhcmVu
dCwgaG9zdCwgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZVZhbHVlcykKLXsKLSAgICB0aGlzLnJv
b3QgPSByb290OwotICAgIHRoaXMucGFyZW50ID0gcGFyZW50OwotICAgIHRoaXMuaG9zdCA9IGhv
c3Q7Ci0gICAgdGhpcy5saXN0ZW5lcnMgPSB7fTsKLSAgICB0aGlzLnNjcmlwdE9iamVjdCA9IHt9
OwotCi0gICAgdGhpcy5hdXRvRXhpdEZ1bGxTY3JlZW4gPSB0cnVlOwotICAgIHRoaXMucG9zdEV2
ZW50cyA9IGZhbHNlOwotICAgIHRoaXMuaGVpZ2h0ID0gMDsKLSAgICB0aGlzLndpZHRoID0gMDsK
LSAgICB0aGlzLnNyYyA9ICIiOwotICAgIHRoaXMuYXV0b2hyZWYgPSBmYWxzZTsKLSAgICB0aGlz
LmhyZWYgPSAiIjsKLSAgICB0aGlzLnF0c3JjID0gIiI7Ci0gICAgdGhpcy5iYXNlVXJsID0gIiI7
Ci0gICAgdGhpcy50YXJnZXQgPSAiIjsKLQotICAgIHRoaXMuY3JlYXRlVmlkZW9FbGVtZW50KGF0
dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVWYWx1ZXMpOwotICAgIHRoaXMuY3JlYXRlU2NyaXB0SW50
ZXJmYWNlKCk7Ci19OwotCi1SZXBsYWNlbWVudC5wcm90b3R5cGUgPSB7Ci0KLSAgICBIYW5kbGVk
VmlkZW9FdmVudHM6IHsKLSAgICAgICAgbG9hZHN0YXJ0OiAnaGFuZGxlTG9hZFN0YXJ0JywKLSAg
ICAgICAgZXJyb3I6ICdoYW5kbGVFcnJvcicsCi0gICAgICAgIGxvYWRlZG1ldGFkYXRhOiAnaGFu
ZGxlTG9hZGVkTWV0YURhdGEnLAotICAgICAgICBjYW5wbGF5OiAncXRfY2FucGxheScsCi0gICAg
ICAgIGNhbnBsYXl0aHJvdWdoOiAncXRfY2FucGxheXRocm91Z2gnLAotICAgICAgICBwbGF5OiAn
cXRfcGxheScsCi0gICAgICAgIHBhdXNlOiAncXRfcGF1c2UnLAotICAgICAgICBlbmRlZDogJ2hh
bmRsZUVuZGVkJywKLSAgICAgICAgd2Via2l0ZnVsbHNjcmVlbmNoYW5nZTogJ2hhbmRsZUZ1bGxz
Y3JlZW5DaGFuZ2UnLAotICAgIH0sCi0KLSAgICBBdHRyaWJ1dGVNYXA6IHsKLSAgICAgICAgYXV0
b2V4aXRmdWxsc2NyZWVuOiAnYXV0b0V4aXRGdWxsU2NyZWVuJywKLSAgICAgICAgcG9zdGRvbWV2
ZW50czogJ3Bvc3RFdmVudHMnLAotICAgICAgICBoZWlnaHQ6ICdoZWlnaHQnLAotICAgICAgICB3
aWR0aDogJ3dpZHRoJywKLSAgICAgICAgcXRzcmM6ICdxdHNyYycsCi0gICAgICAgIHNyYzogJ3Ny
YycsCi0gICAgICAgIGFpcnBsYXk6ICd4LXdlYmtpdC1haXJwbGF5PScsCi0gICAgICAgIGhyZWY6
ICdocmVmJywKLSAgICAgICAgdGFyZ2V0OiAndGFyZ2V0JywKLSAgICB9LAotICAgIAotICAgIE1l
dGhvZE1hcDogewotICAgICAgICBTZXRVUkwgOiAnc2V0VVJMJywKLSAgICAgICAgR2V0VVJMIDog
J3VybCcsCi0gICAgICAgIFBsYXkgOiAncGxheScsCi0gICAgICAgIFN0b3AgOiAncGF1c2UnLAot
ICAgICAgICBHZXRSYXRlIDogJ3JhdGUnLAotICAgICAgICBTZXRSYXRlIDogJ3NldFJhdGUnLAot
ICAgICAgICBJc0Z1bGxTY3JlZW4gOiAnaXNGdWxsU2NyZWVuJywKLSAgICAgICAgRXhpdEZ1bGxT
Y3JlZW4gOiAnZXhpdEZ1bGxTY3JlZW4nLAotICAgICAgICBHZXRQbHVnaW5TdGF0dXMgOiAncGx1
Z2luU3RhdHVzJywKLSAgICAgICAgR2V0VGltZSA6ICdjdXJyZW50VGltZScsCi0gICAgICAgIFNl
dFRpbWUgOiAnc2V0Q3VycmVudFRpbWUnLAotICAgICAgICBTZWVrVG9EYXRlIDogJ3NlZWtUb0Rh
dGUnLAotICAgICAgICBHZXREYXRlIDogJ2RhdGUnLAotICAgICAgICBHZXREdXJhdGlvbiA6ICdk
dXJhdGlvbicsCi0gICAgICAgIEdldFRpbWVTY2FsZSA6ICd0aW1lU2NhbGUnLAotICAgICAgICBH
ZXRNYXhUaW1lTG9hZGVkIDogJ21heFRpbWVMb2FkZWQnLAotICAgICAgICBHZXRNYXhCeXRlc0xv
YWRlZCA6ICdtYXhCeXRlc0xvYWRlZCcsCi0gICAgICAgIEdldE1vdmllU2l6ZSA6ICdtb3ZpZVNp
emUnLAotICAgICAgICBHZXRUaW1lZE1ldGFkYXRhVXBkYXRlcyA6ICd0aW1lZE1ldGFkYXRhVXBk
YXRlcycsCi0gICAgICAgIEdldEFjY2Vzc0xvZyA6ICdhY2Nlc3NMb2cnLAotICAgICAgICBHZXRF
cnJvckxvZyA6ICdlcnJvckxvZycsCi0gICAgfSwKLQotICAgIFRpbWVTY2FsZTogMzAwMDAsCi0K
LSAgICBjcmVhdGVWaWRlb0VsZW1lbnQ6IGZ1bmN0aW9uKGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1
dGVWYWx1ZXMpCi0gICAgewotICAgICAgICB2YXIgdmlkZW8gPSB0aGlzLnZpZGVvID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKLQotICAgICAgICBmb3IgKG5hbWUgaW4gdGhpcy5I
YW5kbGVkVmlkZW9FdmVudHMpCi0gICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKG5h
bWUsIHRoaXMsIGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhdHRy
aWJ1dGVOYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhp
cy5BdHRyaWJ1dGVNYXBbYXR0cmlidXRlTmFtZXNbaV1dOwotICAgICAgICAgICAgaWYgKHRoaXNb
cHJvcGVydHldICE9IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICB0aGlzW3Byb3BlcnR5XSA9
IGF0dHJpYnV0ZVZhbHVlc1tpXTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpZGVvLnNldEF0dHJp
YnV0ZSgncHNldWRvJywgJy13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50Jyk7Ci0gICAgICAgIHZp
ZGVvLnNldEF0dHJpYnV0ZSgnY29udHJvbHMnLCAnY29udHJvbHMnKTsKLSAgICAgICAgdGhpcy5z
ZXRTdGF0dXMoJ1dhaXRpbmcnKTsKLQotICAgICAgICB2YXIgc3JjID0gdGhpcy5yZXNvbHZlUmVs
YXRpdmVUb1VybCh0aGlzLnNyYywgIiIpOwotICAgICAgICB0aGlzLmJhc2VVcmwgPSBzcmM7Ci0K
LSAgICAgICAgLy8gVGhlICdxdHNyYycgYXR0cmlidXRlIGlzIHVzZWQgd2hlbiBhIHBhZ2UgYXV0
aG9yIHdhbnRlZCB0byBhbHdheXMgdXNlIHRoZSBRdWlja1RpbWUgcGx1Zy1pbgotICAgICAgICAv
LyB0byBsb2FkIGEgbWVkaWEgdHlwZSBldmVuIGlmIGFub3RoZXIgcGx1Zy1pbiB3YXMgcmVnaXN0
ZXJlZCBmb3IgdGhhdCB0eXBlLiBJdCB0ZWxscyB0aGUKLSAgICAgICAgLy8gcGx1Zy1pbiB0byBp
Z25vcmUgdGhlICdzcmMnIHVybCwgYW5kIHRvIGxvYWQgdGhlICdxdHNyYycgdXJsIGluc3RlYWQu
Ci0gICAgICAgIGlmICh0aGlzLnF0c3JjKQotICAgICAgICAgICAgc3JjID0gdGhpcy5yZXNvbHZl
UmVsYXRpdmVUb1VybCh0aGlzLnF0c3JjLCB0aGlzLnNyYyk7Ci0gICAgICAgIGlmICh0aGlzLmhy
ZWYgJiYgdGhpcy50YXJnZXQpIHsKLSAgICAgICAgICAgIHNyYyA9IHRoaXMucmVzb2x2ZVJlbGF0
aXZlVG9VcmwodGhpcy5ocmVmLCB0aGlzLnNyYyk7Ci0gICAgICAgICAgICB2aWRlby5wb3N0ZXIg
PSB0aGlzLnNyYzsKLSAgICAgICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgncHJlbG9hZCcsICdu
b25lJyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzcmMubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICB0aGlzLnNldFN0YXR1cygnVmFsaWRhdGluZycpOwotICAgICAgICAgICAgdGhp
cy52aWRlby5zcmMgPSBzcmM7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnJvb3QuYXBwZW5k
Q2hpbGQodmlkZW8pOwotICAgIH0sCi0KLSAgICByZXNvbHZlUmVsYXRpdmVUb1VybDogZnVuY3Rp
b24odXJsLCBiYXNlVXJsKQotICAgIHsKLSAgICAgICAgaWYgKHVybC5pbmRleE9mKCc6Ly8nKSAh
PSAtMSkKLSAgICAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgICAgIGlmIChiYXNlVXJsLmluZGV4
T2YoJzovLycpID09IC0xKQotICAgICAgICAgICAgYmFzZVVybCA9IHRoaXMucmVzb2x2ZVJlbGF0
aXZlVG9VcmwoYmFzZVVybCwgZG9jdW1lbnQuYmFzZVVSSSk7Ci0KLSAgICAgICAgdmFyIGJhc2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiYXNlJyk7Ci0gICAgICAgIGJhc2UuaHJlZiA9IGJh
c2VVcmw7Ci0gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYmFzZSk7Ci0KLSAgICAg
ICAgdmFyIHJlc29sdmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwotICAgICAgICBy
ZXNvbHZlci5ocmVmID0gdXJsOwotICAgICAgICB1cmwgPSByZXNvbHZlci5ocmVmOwotCi0gICAg
ICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYmFzZSk7Ci0gICAgICAgIGJhc2UgPSBudWxs
OwotCi0gICAgICAgIHJldHVybiB1cmw7Ci0gICAgfSwKLSAKLSAgICBjcmVhdGVTY3JpcHRJbnRl
cmZhY2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZvciAobmFtZSBpbiB0aGlzLk1ldGhv
ZE1hcCkgewotICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSB0aGlzLk1ldGhvZE1hcFtuYW1l
XTsKLSAgICAgICAgICAgIHRoaXMuc2NyaXB0T2JqZWN0W25hbWVdID0gdGhpc1ttZXRob2ROYW1l
XS5iaW5kKHRoaXMpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGhhbmRsZUV2ZW50OiBmdW5j
dGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMudmlk
ZW8pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZh
ciBldmVudERhdGEgPSB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50c1tldmVudC50eXBlXTsKLSAgICAg
ICAgICAgIGlmICghZXZlbnREYXRhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgaWYgKHRoaXNbZXZlbnREYXRhXSAmJiB0eXBlb2YgdGhpc1tldmVudERhdGFdID09PSAi
ZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgIHRoaXNbZXZlbnREYXRhXS5jYWxsKHRoaXMsIGV2
ZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnBvc3RFdmVudChl
dmVudERhdGEpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
Y29uc29sZSkKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOwotICAgICAgICB9Ci0g
ICAgfSwKLQotICAgIHBvc3RFdmVudDogZnVuY3Rpb24oZXZlbnROYW1lKQotICAgIHsKLSAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICh0aGlzLnBvc3RFdmVudHMpCi0gICAgICAgICAgICAg
ICAgdGhpcy5ob3N0LnBvc3RFdmVudChldmVudE5hbWUpOwotICAgICAgICB9IGNhdGNoKGUpIHsg
fQotICAgIH0sCi0KLSAgICBzZXRTdGF0dXM6IGZ1bmN0aW9uKHN0YXR1cykKLSAgICB7Ci0gICAg
ICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwotICAgIH0sCi0KLSAgICBoYW5kbGVMb2FkZWRNZXRh
RGF0YTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnNldFN0YXR1cygnUGxh
eWFibGUnKTsKLSAgICAgICAgdGhpcy5wb3N0RXZlbnQoJ3F0X3ZhbGlkYXRlZCcpOwotICAgICAg
ICB0aGlzLnBvc3RFdmVudCgncXRfbG9hZGVkZmlyc3RmcmFtZScpOwotICAgICAgICB0aGlzLnBv
c3RFdmVudCgncXRfbG9hZGVkbWV0YWRhdGEnKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRnVsbHNj
cmVlbkNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnBvc3RFdmVu
dCh0aGlzLmlzRnVsbFNjcmVlbigpID8gJ3F0X2VudGVyZnVsbHNjcmVlbicgOiAncXRfZXhpdGZ1
bGxzY3JlZW4nKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgdGhpcy5zZXRTdGF0dXMoJ0Vycm9yJyk7Ci0gICAgICAgIHRoaXMucG9z
dEV2ZW50KCdxdF9lcnJvcicpOwotICAgIH0sCi0KLSAgICBoYW5kbGVMb2FkU3RhcnQ6ZnVuY3Rp
b24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy52aWRlby5wb3N0ZXIpCi0gICAgICAg
ICAgICB0aGlzLnNldFN0YXR1cygnV2FpdGluZycpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLnNldFN0YXR1cygnTG9hZGluZycpOwotICAgICAgICB0aGlzLnBvc3RFdmVudCgncXRf
YmVnaW4nKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRW5kZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdGhpcy5wb3N0RXZlbnQoJ3F0X2VuZGVkJyk7Ci0gICAgICAgIGlmICh0aGlz
LmlzRnVsbFNjcmVlbigpICYmIHRoaXMuYXV0b0V4aXRGdWxsU2NyZWVuKQotICAgICAgICAgICAg
ZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKLSAgICB9LAotCi0gICAgaXNGdWxsU2Ny
ZWVuOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gZG9jdW1lbnQud2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50ID09PSB0aGlzLnZpZGVvOwotICAgIH0sCi0KLSAgICBzZXRV
Ukw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2V0U3RhdHVzKCdWYWxpZGF0
aW5nJyk7Ci0gICAgICAgIGlmICh1cmwubGVuZ3RoKQotICAgICAgICAgICAgdXJsID0gdGhpcy5y
ZXNvbHZlUmVsYXRpdmVUb1VybCh1cmwsIHRoaXMuYmFzZVVybCk7Ci0gICAgICAgIHRoaXMudmlk
ZW8uc3JjID0gdXJsOwotICAgIH0sCi0gICAgCi0gICAgdXJsOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jdXJyZW50U3JjOwotICAgIH0sCi0gICAgCi0gICAg
cGxheTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7Ci0gICAg
fSwKLSAgICAKLSAgICBwYXVzZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy52aWRl
by5wbGF5YmFja1JhdGUgPSAwOwotICAgICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7Ci0gICAgfSwK
LSAgICAKLSAgICByYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy52
aWRlby5wYXVzZWQgPyAwIDogMTsKLSAgICB9LAotICAgIAotICAgIHNldFJhdGU6IGZ1bmN0aW9u
KHJhdGUpCi0gICAgewotICAgICAgICBpZiAocmF0ZSkKLSAgICAgICAgICAgIHRoaXMudmlkZW8u
cGxheSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7Ci0g
ICAgfSwKLSAgICAKLSAgICBleGl0RnVsbFNjcmVlbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKLSAgICB9LAotICAgIAotICAgIHBs
dWdpblN0YXR1czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVz
OwotICAgIH0sCi0KLSAgICBjdXJyZW50VGltZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMudmlkZW8uY3VycmVudFRpbWUgKiB0aGlzLlRpbWVTY2FsZTsKLSAgICB9LAot
Ci0gICAgc2V0Q3VycmVudFRpbWU6IGZ1bmN0aW9uKHRpbWUpCi0gICAgewotICAgICAgICB0aGlz
LnZpZGVvLmN1cnJlbnRUaW1lID0gdGltZSAvIHRoaXMuVGltZVNjYWxlOwotICAgIH0sCi0KLSAg
ICBzZWVrVG9EYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogbm90IGlt
cGxlbWVudGVkIHlldC4KLSAgICB9LAotICAgIAotICAgIGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOwotICAgIH0sCi0gICAgCi0gICAgZHVyYXRpb246
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnZpZGVvLmR1cmF0aW9uICog
dGhpcy5UaW1lU2NhbGU7Ci0gICAgfSwKLSAgICAKLSAgICB0aW1lU2NhbGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIC8vIE5vdGU6IFF1aWNrVGltZSBtb3ZpZXMgYW5kIE1QRUctNCBmaWxl
cyBoYXZlIGEgdGltZXNjYWxlLCBidXQgaXQgaXMgbm90IGV4cG9zZWQgYnkgYWxsIG1lZGlhIGVu
Z2luZXMuCi0gICAgICAgIC8vIDMwMDAwIHdvcmtzIHdlbGwgd2l0aCBjb21tb24gZnJhbWUgcmF0
ZXMsIGVnLiAyOS45NyBOVFNDIGNhbiBiZSByZXByZXNlbnRlZCBhY2N1cmF0ZWx5IGFzIGEgdGlt
ZQotICAgICAgICAvLyBzY2FsZSBvZiAzMDAwMCBhbmQgZnJhbWUgZHVyYXRpb24gb2YgMTAwMS4K
LSAgICAgICAgcmV0dXJuIDMwMDAwOwotICAgIH0sCi0gICAgCi0gICAgbWF4VGltZUxvYWRlZDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudmlkZW8uZHVyYXRpb24gKiB0
aGlzLlRpbWVTY2FsZTsKLSAgICB9LAotICAgIAotICAgIG1heEJ5dGVzTG9hZGVkOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB2YXIgcGVyY2VudExvYWRlZCA9IHRoaXMudmlkZW8uYnVmZmVy
ZWQuZW5kKDApIC8gdGhpcy52aWRlby5kdXJhdGlvbjsKLSAgICAgICAgcmV0dXJuIHBlcmNlbnRM
b2FkZWQgKiB0aGlzLm1vdmllU2l6ZSgpOwotICAgIH0sCi0gICAgCi0gICAgbW92aWVTaXplOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
aG9zdC5tb3ZpZVNpemU7Ci0gICAgICAgIH0gY2F0Y2goZSkgeyB9Ci0KLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfSwKLSAgICAKLSAgICB0aW1lZE1ldGFkYXRhVXBkYXRlczogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmhvc3QudGltZWRN
ZXRhRGF0YTsKLSAgICAgICAgfSBjYXRjaChlKSB7IH0KLQotICAgICAgICByZXR1cm4gbnVsbDsK
LSAgICB9LAotICAgIAotICAgIGFjY2Vzc0xvZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmhvc3QuYWNjZXNzTG9nOwotICAgICAgICB9
IGNhdGNoKGUpIHsgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0gICAgCi0gICAg
ZXJyb3JMb2c6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5ob3N0LmVycm9yTG9nOwotICAgICAgICB9IGNhdGNoKGUpIHsgfQotCi0gICAg
ICAgIHJldHVybiBudWxsOwotICAgIH0sCi19OwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYzEwMmEyNTc5NjRjYjIwMmRmMDE0MzlkZDky
NmE4ZGVhYjlhOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQot
I2ltcG9ydCAiUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCIKLQotI2ltcG9ydCAiQ29tbW9u
Vk0uaCIKLSNpbXBvcnQgIkV2ZW50LmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiSFRN
TFBsdWdJbkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxWaWRlb0VsZW1lbnQuaCIKLSNpbXBvcnQg
IkpTRE9NQmluZGluZy5oIgotI2ltcG9ydCAiSlNET01Db252ZXJ0TnVsbGFibGUuaCIKLSNpbXBv
cnQgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgotI2ltcG9ydCAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgotI2ltcG9ydCAiSlNET01HbG9iYWxPYmplY3QuaCIKLSNpbXBvcnQgIkpTSFRNTFZpZGVv
RWxlbWVudC5oIgotI2ltcG9ydCAiSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIgotI2lt
cG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiUmVuZGVyRWxlbWVudC5oIgotI2ltcG9ydCAiU2Ny
aXB0Q29udHJvbGxlci5oIgotI2ltcG9ydCAiU2NyaXB0U291cmNlQ29kZS5oIgotI2ltcG9ydCAi
U2V0dGluZ3MuaCIKLSNpbXBvcnQgIlNoYWRvd1Jvb3QuaCIKLSNpbXBvcnQgIlVzZXJBZ2VudFNj
cmlwdHMuaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk1ldGFkYXRhSXRlbS5oPgotI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU1N0cmluZy5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2Fz
dC5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgotI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgot
I2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMg
SlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCwgSlNDb250ZXh0ICopOwotc3Rh
dGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0
YUl0ZW0gKiwgSlNDb250ZXh0ICopOwotI2VuZGlmCi0KLXN0YXRpYyBTdHJpbmcgcXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHNjcmlwdChTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudEphdmFTY3JpcHQsIHNpemVvZihRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudEphdmFTY3JpcHQpKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKLX0KLQotdm9pZCBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6cmVnaXN0ZXJQbHVnaW5SZXBsYWNlbWVudChQbHVnaW5SZXBs
YWNlbWVudFJlZ2lzdHJhciByZWdpc3RyYXIpCi17Ci0gICAgcmVnaXN0cmFyKFJlcGxhY2VtZW50
UGx1Z2luKGNyZWF0ZSwgc3VwcG9ydHNNaW1lVHlwZSwgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uLCBz
dXBwb3J0c1VSTCwgaXNFbmFibGVkQnlTZXR0aW5ncykpOwotfQotCi1SZWY8UGx1Z2luUmVwbGFj
ZW1lbnQ+IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGUoSFRNTFBsdWdJbkVsZW1l
bnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudChwbHVnaW4sIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSk7
Ci19Ci0KLWJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzTWltZVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byB0eXBlSGFz
aCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiB7Ci0gICAgICAgICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCIsICJhcHBs
aWNhdGlvbi94LW1wZWd1cmwiLCAiYXVkaW8vM2dwcCIsICJhdWRpby8zZ3BwMiIsICJhdWRpby9h
YWMiLCAiYXVkaW8vYWlmZiIsCi0gICAgICAgICJhdWRpby9hbXIiLCAiYXVkaW8vYmFzaWMiLCAi
YXVkaW8vbXAzIiwgImF1ZGlvL21wNCIsICJhdWRpby9tcGVnIiwgImF1ZGlvL21wZWczIiwgImF1
ZGlvL21wZWd1cmwiLCAiYXVkaW8vc2NwbHMiLAotICAgICAgICAiYXVkaW8vd2F2IiwgImF1ZGlv
L3gtYWFjIiwgImF1ZGlvL3gtYWlmZiIsICJhdWRpby94LWNhZiIsICJhdWRpby94LW00YSIsICJh
dWRpby94LW00YiIsICJhdWRpby94LW00cCIsCi0gICAgICAgICJhdWRpby94LW00ciIsICJhdWRp
by94LW1wMyIsICJhdWRpby94LW1wZWciLCAiYXVkaW8veC1tcGVnMyIsICJhdWRpby94LW1wZWd1
cmwiLCAiYXVkaW8veC1zY3BscyIsICJhdWRpby94LXdhdiIsCi0gICAgICAgICJ2aWRlby8zZ3Bw
IiwgInZpZGVvLzNncHAyIiwgInZpZGVvL21wNCIsICJ2aWRlby9xdWlja3RpbWUiLCAidmlkZW8v
eC1tNHYiCi0gICAgfSk7Ci0gICAgcmV0dXJuIHR5cGVIYXNoLmdldCgpLmNvbnRhaW5zKG1pbWVU
eXBlKTsKLX0KLQotYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxl
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQotewotICAgIHN0YXRpYyBjb25zdCBh
dXRvIGV4dGVuc2lvblNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7Ci0gICAgICAgICIzZzIiLCAiM2dwIiwgIjNncDIiLCAi
M2dwcCIsICJhYWMiLCAiYWR0cyIsICJhaWYiLCAiYWlmYyIsICJhaWZmIiwgIkFNUiIsICJhdSIs
ICJid2YiLCAiY2FmIiwgImNkZGEiLCAibTN1IiwKLSAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00
YiIsICJtNHAiLCAibTRyIiwgIm00diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBl
ZyIsICJtcGciLCAibXF2IiwgInBscyIsICJxdCIsCi0gICAgICAgICJzbmQiLCAic3dhIiwgInRz
IiwgInVsdyIsICJ3YXYiCi0gICAgfSk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvblNldC5nZXQoKS5j
b250YWlucyhleHRlbnNpb24pOwotfQotCi1ib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
Ojppc0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICBy
ZXR1cm4gc2V0dGluZ3MucXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKCk7Ci19Ci0K
LVF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudChI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQotICAgIDogbV9wYXJlbnRFbGVt
ZW50KHBsdWdpbikKLSAgICAsIG1fbmFtZXMocGFyYW1OYW1lcykKLSAgICAsIG1fdmFsdWVzKHBh
cmFtVmFsdWVzKQotewotfQotCi1RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6flF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50KCkgPSBkZWZhdWx0OwotCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1M
UGx1Z0luRWxlbWVudCYgcGx1Z2luLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQotewotICAgIEFTU0VSVF9VTlVTRUQocGx1
Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7Ci0KLSAgICBpZiAobV9tZWRpYUVsZW1l
bnQpCi0gICAgICAgIHJldHVybiBtX21lZGlhRWxlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7Ci0KLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQotRE9NV3JhcHBlcldvcmxkJiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aXNv
bGF0ZWRXb3JsZCgpCi17Ci0gICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3Js
ZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGNvbW1vblZNKCksIERPTVdyYXBwZXJXb3JsZDo6
VHlwZTo6SW50ZXJuYWwsICJRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudCJfcykubGVha1JlZigp
OwotICAgIHJldHVybiBpc29sYXRlZFdvcmxkOwotfQotCi1ib29sIFF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkKLXsKLSAgICBpZiAo
IW1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9IGlzb2xhdGVkV29ybGQoKTsK
LSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHRDb250cm9sbGVyID0gbV9wYXJlbnRFbGVtZW50
LT5kb2N1bWVudCgpLmZyYW1lKCktPnNjcmlwdCgpOwotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdENvbnRy
b2xsZXIuZ2xvYmFsT2JqZWN0KHdvcmxkKSk7Ci0gICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Ci0gICAgCi0gICAgSlNDOjpKU1ZhbHVl
IHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVQbHVnaW5SZXBsYWNl
bWVudCIpKTsKLSAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0NhbGxhYmxlKHZtKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUlu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50U2NyaXB0KCkpLCB3b3JsZCk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIC0gRXhjZXB0aW9uIHdoZW4gZXZh
bHVhdGluZyBRdWlja1RpbWUgcGx1Z2luIHJlcGxhY2VtZW50IHNjcmlwdCIsIHRoaXMpOwotICAg
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi1hdXRvIFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkgLT4gSW5zdGFsbFJl
c3VsdAotewotICAgIGlmICghZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgpKQotICAg
ICAgICByZXR1cm4geyBmYWxzZSB9OwotCi0gICAgaWYgKCFtX3BhcmVudEVsZW1lbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLQotICAgIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQgPSBpc29sYXRlZFdvcmxkKCk7Ci0gICAgU2NyaXB0Q29udHJvbGxlciYg
c2NyaXB0Q29udHJvbGxlciA9IG1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5z
Y3JpcHQoKTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLmdsb2JhbE9iamVjdCh3b3Js
ZCkpOwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2sodm0pOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xv
YmFsT2JqZWN0OwotCi0gICAgYXV0byBjbGVhckV4Y2VwdGlvbkFuZFJldHVybkZhbHNlID0gWyZd
ICgpIC0+IEluc3RhbGxSZXN1bHQgewotICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwot
ICAgICAgICByZXR1cm4geyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICAvLyBMb29rdXAgdGhlICJj
cmVhdGVQbHVnaW5SZXBsYWNlbWVudCIgZnVuY3Rpb24uCi0gICAgSlNDOjpKU1ZhbHVlIHJlcGxh
Y2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIp
KTsKLSAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAg
ICAgICByZXR1cm4geyBmYWxzZSB9OwotICAgIEpTQzo6SlNPYmplY3QqIHJlcGxhY2VtZW50T2Jq
ZWN0ID0gcmVwbGFjZW1lbnRGdW5jdGlvbi50b09iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBjbGVhckV4Y2VwdGlvbkFuZFJldHVybkZh
bHNlKCkpOwotCi0gICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNlbWVu
dE9iamVjdCk7Ci0gICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkKLSAgICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLQotICAgIEpTQzo6TWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnTGlzdDsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgJnJvb3QpKTsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgbV9wYXJlbnRFbGVtZW50LmdldCgpKSk7
Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHRoaXMpKTsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTPElETFNlcXVlbmNlPElETE51bGxh
YmxlPElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmdsb2JhbE9iamVjdCwg
bV9uYW1lcykpOwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8SURMTnVsbGFi
bGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCBt
X3ZhbHVlcykpOwotICAgIEFTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpT
Qzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVwbGFj
ZW1lbnRPYmplY3QsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ0xpc3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGNsZWFyRXhjZXB0aW9uQW5kUmV0dXJuRmFsc2UoKSk7Ci0K
LSAgICAvLyBHZXQgdGhlIDx2aWRlbz4gY3JlYXRlZCB0byByZXBsYWNlIHRoZSBwbHVnLWluLgot
ICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2aWRlbyIpKTsKLSAgICBpZiAo
IXNjb3BlLmV4Y2VwdGlvbigpICYmICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICBtX21lZGlhRWxlbWVudCA9IEpTSFRNTFZpZGVvRWxlbWVudDo6dG9XcmFwcGVkKHZtLCB2YWx1
ZSk7Ci0KLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50KSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAi
JXAgLSBGYWlsZWQgdG8gZmluZCA8dmlkZW8+IGVsZW1lbnQgY3JlYXRlZCBieSBRdWlja1RpbWUg
cGx1Z2luIHJlcGxhY2VtZW50IHNjcmlwdC4iLCB0aGlzKTsKLSAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLSAgICB9Ci0KLSAgICAvLyBH
ZXQgdGhlIHNjcmlwdGluZyBpbnRlcmZhY2UuCi0gICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2Ny
aXB0T2JqZWN0IikpOwotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBMT0co
UGx1Z2lucywgIiVwIC0gRmFpbGVkIHRvIGZpbmQgc2NyaXB0IG9iamVjdCBjcmVhdGVkIGJ5IFF1
aWNrVGltZSBwbHVnaW4gcmVwbGFjZW1lbnQuIiwgdGhpcyk7Ci0gICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiB7IGZhbHNlIH07Ci0gICAgfQotCi0gICAgcmV0
dXJuIHsgdHJ1ZSwgdmFsdWUgfTsKLX0KLQotdW5zaWduZWQgbG9uZyBsb25nIFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Ojptb3ZpZVNpemUoKSBjb25zdAotewotICAgIGlmIChtX21lZGlhRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5maWxlU2l6ZSgpOwotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLXZvaWQgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnBvc3RFdmVu
dChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKLXsKLSAgICBSZWY8SFRNTFBsdWdJbkVsZW1lbnQ+
IHByb3RlY3QoKm1fcGFyZW50RWxlbWVudCk7Ci0gICAgUmVmPEV2ZW50PiBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKLSAgICBtX3BhcmVudEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwot
fQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVX
aXRoRGF0YUluQ29udGV4dChOU0RhdGEgKmRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEpT
Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICAvLyBGSVhNRTogQWRkIG1ha2VDRlN0cmluZy9tYWtl
TlNTdHJpbmcgdG8gYXZvaWQgdW5uZWNlc3NhcnkgU3RyaW5nIGFsbG9jYXRpb24uCi0gICAgU3Ry
aW5nIGRhdGE2NDsKLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgZGF0YTY0
ID0gbWFrZVN0cmluZygiZGF0YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQsIiwgYmFzZTY0RW5jb2Rl
ZChbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pKTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGE2
NCA9IG1ha2VTdHJpbmcoImRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsIiwgYmFzZTY0RW5jb2RlZChb
ZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pKTsKLQotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1
ZVdpdGhPYmplY3Q6KGlkKWRhdGE2NC5jcmVhdGVDRlN0cmluZygpLmdldCgpIGluQ29udGV4dDpj
b250ZXh0XTsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQXJyYXlJbkNvbnRleHQo
TlNBcnJheSAqYXJyYXksIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3
QXJyYXlJbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0T2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1bHQgSlNW
YWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07Ci0KLSAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gW2FycmF5IGNvdW50XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgKnZhbHVlID0ganNWYWx1ZVdp
dGhWYWx1ZUluQ29udGV4dChbYXJyYXkgb2JqZWN0QXRJbmRleDppXSwgY29udGV4dCk7Ci0gICAg
ICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBKU09iamVj
dFNldFByb3BlcnR5QXRJbmRleChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRP
YmplY3QsICh1bnNpZ25lZClpLCBbdmFsdWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAg
ICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFy
eUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGV4dCAqY29udGV4dCkK
LXsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0g
W0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOwotICAgIEpTT2Jq
ZWN0UmVmIHJlc3VsdE9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdLCBbcmVzdWx0IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhj
ZXB0aW9uKQotICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250
ZXh0OmNvbnRleHRdOwotCi0gICAgZm9yIChpZCBrZXkgaW4gW2RpY3Rpb25hcnkga2V5RW51bWVy
YXRvcl0pIHsKLSAgICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IGpz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0sIGNv
bnRleHQpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShrZXkpOwotICAgICAg
ICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3Vs
dE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgIH0KLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVl
SW5Db250ZXh0KGlkIHZhbHVlLCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8IFt2YWx1ZSBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoT2Jq
ZWN0OnZhbHVlIGluQ29udGV4dDpjb250ZXh0XTsKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNMb2NhbGUgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVl
V2l0aE9iamVjdDpbdmFsdWUgbG9jYWxlSWRlbnRpZmllcl0gaW5Db250ZXh0OmNvbnRleHRdOwot
ICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkK
LSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCh2YWx1ZSwgY29u
dGV4dCk7Ci0gICAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoQXJyYXlJbkNvbnRleHQodmFsdWUsIGNvbnRl
eHQpOwotICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkK
LSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGF0YUluQ29udGV4dCh2YWx1ZSwgZW1wdHlTdHJp
bmcoKSwgY29udGV4dCk7Ci0gICAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6UEFMOjpn
ZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCldKQotICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhBVk1l
dGFkYXRhSXRlbUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0KLSAgICByZXR1cm4gbmlsOwot
fQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChB
Vk1ldGFkYXRhSXRlbSAqaXRlbSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aERpY3Rpb25hcnk6W2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXV07Ci0KLSAgICBpZiAoaXRlbS5r
ZXlTcGFjZSkKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0ua2V5U3BhY2UgZm9y
S2V5OkAia2V5c3BhY2UiXTsKLQotICAgIGlmIChpdGVtLmtleSkKLSAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0Oml0ZW0ua2V5IGZvcktleTpAImtleSJdOwotCi0gICAgaWYgKGl0ZW0ubG9j
YWxlKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5sb2NhbGUgZm9yS2V5OkAi
bG9jYWxlIl07Ci0KLSAgICBpZiAoQ01USU1FX0lTX1ZBTElEKGl0ZW0udGltZSkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gdGltZURpY3Rpb25hcnkgPSBhZG9wdENGKFBBTDo6Q01UaW1lQ29weUFzRGlj
dGlvbmFyeShpdGVtLnRpbWUsIGtDRkFsbG9jYXRvckRlZmF1bHQpKSkKLSAgICAgICAgICAgIFtk
aWN0aW9uYXJ5IHNldE9iamVjdDooX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopdGltZURpY3Rpb25h
cnkuZ2V0KCkgZm9yS2V5OkAidGltZXN0YW1wIl07Ci0gICAgfQotICAgIAotICAgIGlmIChpdGVt
LnZhbHVlKSB7Ci0gICAgICAgIGlkIHZhbHVlID0gaXRlbS52YWx1ZTsKLSAgICAgICAgTlNTdHJp
bmcgKm1pbWVUeXBlID0gW1tpdGVtIGV4dHJhQXR0cmlidXRlc10gb2JqZWN0Rm9yS2V5OkAiTUlN
RXR5cGUiXTsKLSAgICAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3Nd
XSAmJiBtaW1lVHlwZSkgewotICAgICAgICAgICAgYXV0byBkYXRhNjQgPSBtYWtlU3RyaW5nKCJk
YXRhOiIsIFN0cmluZyhtaW1lVHlwZSksICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoW3ZhbHVl
IGJ5dGVzXSwgW3ZhbHVlIGxlbmd0aF0pKTsKLSAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9i
amVjdDooX19icmlkZ2UgTlNTdHJpbmcgKilkYXRhNjQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSBm
b3JLZXk6QCJ2YWx1ZSJdOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFtkaWN0aW9uYXJ5
IHNldE9iamVjdDp2YWx1ZSBmb3JLZXk6QCJ2YWx1ZSJdOwotICAgIH0KLQotICAgIHJldHVybiBq
c1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoZGljdGlvbmFyeSwgY29udGV4dCk7Ci19Ci0K
LSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6dGlt
ZWRNZXRhRGF0YShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSkgY29uc3QKLXsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQo
KS5wYXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkp
Ci0gICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgRnJhbWUqIGZyYW1lID0gcGFy
ZW50LT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7Ci0KLSAgICBOU0FycmF5ICptZXRhRGF0YSA9IHBhcmVudC0+cGxheWVy
KCktPnRpbWVkTWV0YWRhdGEoKTsKLSAgICBpZiAoIW1ldGFEYXRhKQotICAgICAgICByZXR1cm4g
SlNDOjpqc051bGwoKTsKLQotICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gZnJhbWUtPnNjcmlw
dCgpLmphdmFTY3JpcHRDb250ZXh0KCk7Ci0gICAgSlNWYWx1ZSAqbWV0YURhdGFWYWx1ZSA9IGpz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQobWV0YURhdGEsIGpzQ29udGV4dCk7Ci0KLSAgICByZXR1
cm4gdG9KUygmc3RhdGUsIFttZXRhRGF0YVZhbHVlIEpTVmFsdWVSZWZdKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLSNlbmRpZgot
fQotCi1KU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9n
KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVs
ZW1lbnQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKLSAgICAgICAg
cmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBwYXJlbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKLQotICAgIEpTVmFsdWUgKmRpY3Rpb25hcnkgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdP
YmplY3RJbkNvbnRleHQ6ZnJhbWUtPnNjcmlwdCgpLmphdmFTY3JpcHRDb250ZXh0KCldOwotICAg
IFN0cmluZyBhY2Nlc3NMb2dTdHJpbmcgPSBwYXJlbnQtPnBsYXllcigpLT5hY2Nlc3NMb2coKTsK
LSAgICBbZGljdGlvbmFyeSBzZXRWYWx1ZTpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihhY2Nlc3NM
b2dTdHJpbmcpIGZvclByb3BlcnR5OihOU1N0cmluZyAqKUNGU1RSKCJleHRlbmRlZExvZyIpXTsK
LQotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgW2RpY3Rpb25hcnkgSlNWYWx1ZVJlZl0pOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwot
I2VuZGlmCi19Ci0KLUpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojpl
cnJvckxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSkgY29uc3QKLXsKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQoKS5w
YXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkpCi0g
ICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgRnJhbWUqIGZyYW1lID0gcGFyZW50
LT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7Ci0KLSAgICBKU1ZhbHVlICpkaWN0aW9uYXJ5ID0gW0pTVmFsdWUgdmFsdWVX
aXRoTmV3T2JqZWN0SW5Db250ZXh0OmZyYW1lLT5zY3JpcHQoKS5qYXZhU2NyaXB0Q29udGV4dCgp
XTsKLSAgICBTdHJpbmcgZXJyb3JMb2dTdHJpbmcgPSBwYXJlbnQtPnBsYXllcigpLT5lcnJvckxv
ZygpOwotICAgIFtkaWN0aW9uYXJ5IHNldFZhbHVlOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGVy
cm9yTG9nU3RyaW5nKSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilDRlNUUigiZXh0ZW5kZWRMb2ci
KV07Ci0KLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIFtkaWN0aW9uYXJ5IEpTVmFsdWVSZWZdKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICByZXR1cm4gSlNDOjpqc051bGwo
KTsKLSNlbmRpZgotfQotCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI2ZGQyNWNjYmU4MmE4OTlhNmJmMzUxNGFmNWNiZTY2MDEwODFjMzcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNs
dWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKLSNp
bmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJZ
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0
cmFyIHJlZ2lzdHJhcikKLXsKLSAgICByZWdpc3RyYXIoUmVwbGFjZW1lbnRQbHVnaW4oY3JlYXRl
LCBzdXBwb3J0c01pbWVUeXBlLCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24sIHN1cHBvcnRzVVJMLCBp
c0VuYWJsZWRCeVNldHRpbmdzKSk7Ci19Ci0KLVJlZjxQbHVnaW5SZXBsYWNlbWVudD4gWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGUoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQocGx1Z2luLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcykpOwotfQotCi1ib29sIFlvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikKLSAgICAgICAgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9mdXR1cmVzcGxhc2gi
KTsKLX0KLQotYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKLXsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCAic3BsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCAic3dmIik7Ci19Ci0KLVlvdVR1YmVQbHVnaW5SZXBsYWNl
bWVudDo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpCi0gICAgOiBtX3BhcmVudEVsZW1lbnQocGx1Z2luKQotewotICAgIEFTU0VS
VChwYXJhbU5hbWVzLnNpemUoKSA9PSBwYXJhbVZhbHVlcy5zaXplKCkpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcGFyYW1OYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9hdHRyaWJ1
dGVzLmFkZChwYXJhbU5hbWVzW2ldLCBwYXJhbVZhbHVlc1tpXSk7Ci19Ci0KLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQotewotICAgIEFTU0VSVF9V
TlVTRUQocGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7Ci0KLSAgICBpZiAoIW1f
ZW1iZWRTaGFkb3dFbGVtZW50KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBy
ZXR1cm4gbV9lbWJlZFNoYWRvd0VsZW1lbnQtPmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3Zl
KHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwotfQotCi1hdXRvIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmIHJvb3QpIC0+IEluc3RhbGxS
ZXN1bHQKLXsKLSAgICBtX2VtYmVkU2hhZG93RWxlbWVudCA9IFlvdVR1YmVFbWJlZFNoYWRvd0Vs
ZW1lbnQ6OmNyZWF0ZShtX3BhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkpOwotCi0gICAgcm9vdC5h
cHBlbmRDaGlsZCgqbV9lbWJlZFNoYWRvd0VsZW1lbnQpOwotCi0gICAgYXV0byBpZnJhbWVFbGVt
ZW50ID0gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmlmcmFtZVRhZywgbV9w
YXJlbnRFbGVtZW50LT5kb2N1bWVudCgpKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNvbnRhaW5z
KCJ3aWR0aCIpKQotICAgICAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIxMDAlIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIGNvbnN0IGF1dG8mIGhlaWdo
dFZhbHVlID0gbV9hdHRyaWJ1dGVzLmZpbmQoImhlaWdodCIpOwotICAgIGlmIChoZWlnaHRWYWx1
ZSAhPSBtX2F0dHJpYnV0ZXMuZW5kKCkpIHsKLSAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJtYXgtaGVpZ2h0OiAxMDAl
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAgICAgaWZyYW1lRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdo
dEF0dHIsIGhlaWdodFZhbHVlLT52YWx1ZSk7Ci0gICAgfQotCi0gICAgaWZyYW1lRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIHlv
dVR1YmVVUkwobV9hdHRyaWJ1dGVzLmdldCgic3JjIikpKTsKLSAgICBpZnJhbWVFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6ZnJhbWVib3JkZXJB
dHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICAKLSAgICAvLyBEaXNhYmxlIGZyYW1lIGZsYXR0ZW5pbmcgZm9yIHRoaXMgaWZyYW1lLgot
ICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzY3JvbGxpbmdBdHRyLCBBdG9tU3RyaW5nKCJubyIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgbV9lbWJlZFNoYWRvd0VsZW1lbnQtPmFwcGVuZENoaWxk
KGlmcmFtZUVsZW1lbnQpOwotCi0gICAgcmV0dXJuIHsgdHJ1ZSB9OwotfQotICAgIAotc3RhdGlj
IFVSTCBjcmVhdGVZb3VUdWJlVVJMKFN0cmluZ1ZpZXcgdmlkZW9JRCwgU3RyaW5nVmlldyB0aW1l
SUQpCi17Ci0gICAgQVNTRVJUKCF2aWRlb0lELmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHZpZGVv
SUQgIT0gIi8iKTsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJ5b3V0dWJlOiIs
IHZpZGVvSUQsIHRpbWVJRC5pc0VtcHR5KCkgPyAiIiA6ICJ0PSIsIHRpbWVJRCkpOwotfQotCi1z
dGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRW
YWx1ZXMoU3RyaW5nVmlldyBxdWVyeVN0cmluZykKLXsKLSAgICBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5RGljdGlvbmFyeTsKLSAgICAKLSAgICBzaXplX3QgcXVl
cnlMZW5ndGggPSBxdWVyeVN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIXF1ZXJ5TGVuZ3RoKQot
ICAgICAgICByZXR1cm4gcXVlcnlEaWN0aW9uYXJ5OwotICAgIAotICAgIHNpemVfdCBlcXVhbFNl
YXJjaExvY2F0aW9uID0gMDsKLSAgICBzaXplX3QgZXF1YWxTZWFyY2hMZW5ndGggPSBxdWVyeUxl
bmd0aDsKLSAgICAKLSAgICB3aGlsZSAoZXF1YWxTZWFyY2hMb2NhdGlvbiA8IHF1ZXJ5TGVuZ3Ro
IC0gMSAmJiBlcXVhbFNlYXJjaExlbmd0aCkgewotICAgICAgICAKLSAgICAgICAgLy8gU2VhcmNo
IGZvciAiPSIuCi0gICAgICAgIHNpemVfdCBlcXVhbExvY2F0aW9uID0gcXVlcnlTdHJpbmcuZmlu
ZCgnPScsIGVxdWFsU2VhcmNoTG9jYXRpb24pOwotICAgICAgICBpZiAoZXF1YWxMb2NhdGlvbiA9
PSBub3RGb3VuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgc2l6ZV90
IGluZGV4QWZ0ZXJFcXVhbCA9IGVxdWFsTG9jYXRpb24gKyAxOwotICAgICAgICBpZiAoaW5kZXhB
ZnRlckVxdWFsID4gcXVlcnlMZW5ndGggLSAxKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IAotICAgICAgICAvLyBHZXQgdGhlIGtleSBiZWZvcmUgdGhlICI9Ii4KLSAgICAgICAgc2l6ZV90
IGtleUxvY2F0aW9uID0gZXF1YWxTZWFyY2hMb2NhdGlvbjsKLSAgICAgICAgc2l6ZV90IGtleUxl
bmd0aCA9IGVxdWFsTG9jYXRpb24gLSBlcXVhbFNlYXJjaExvY2F0aW9uOwotICAgICAgICAKLSAg
ICAgICAgLy8gU2VhY2ggZm9yIHRoZSBhbXBlcnNhbmQuCi0gICAgICAgIHNpemVfdCBhbXBlcnNh
bmRMb2NhdGlvbiA9IHF1ZXJ5U3RyaW5nLmZpbmQoJyYnLCBpbmRleEFmdGVyRXF1YWwpOwotICAg
ICAgICAKLSAgICAgICAgLy8gR2V0IHRoZSB2YWx1ZSBhZnRlciB0aGUgIj0iLCBiZWZvcmUgdGhl
IGFtcGVyc2FuZC4KLSAgICAgICAgc2l6ZV90IHZhbHVlTG9jYXRpb24gPSBpbmRleEFmdGVyRXF1
YWw7Ci0gICAgICAgIHNpemVfdCB2YWx1ZUxlbmd0aDsKLSAgICAgICAgaWYgKGFtcGVyc2FuZExv
Y2F0aW9uICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgdmFsdWVMZW5ndGggPSBhbXBlcnNhbmRM
b2NhdGlvbiAtIGluZGV4QWZ0ZXJFcXVhbDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFs
dWVMZW5ndGggPSBxdWVyeUxlbmd0aCAtIGluZGV4QWZ0ZXJFcXVhbDsKLSAgICAgICAgCi0gICAg
ICAgIC8vIFNhdmUgdGhlIGtleSBhbmQgdGhlIHZhbHVlLgotICAgICAgICBpZiAoa2V5TGVuZ3Ro
ICYmIHZhbHVlTGVuZ3RoKSB7Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gcXVlcnlTdHJpbmcu
c3Vic3RyaW5nKGtleUxvY2F0aW9uLCBrZXlMZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFs
dWVMb2NhdGlvbiwgdmFsdWVMZW5ndGgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICB2YWx1ZS5y
ZXBsYWNlKCcrJywgJyAnKTsKLQotICAgICAgICAgICAgaWYgKCFrZXkuaXNFbXB0eSgpICYmICF2
YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcXVlcnlEaWN0aW9uYXJ5LmFkZChrZXks
IHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0
aW9uID09IG5vdEZvdW5kKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICAv
LyBDb250aW51ZSBzZWFyY2hpbmcgYWZ0ZXIgdGhlIGFtcGVyc2FuZC4KLSAgICAgICAgc2l6ZV90
IGluZGV4QWZ0ZXJBbXBlcnNhbmQgPSBhbXBlcnNhbmRMb2NhdGlvbiArIDE7Ci0gICAgICAgIGVx
dWFsU2VhcmNoTG9jYXRpb24gPSBpbmRleEFmdGVyQW1wZXJzYW5kOwotICAgICAgICBlcXVhbFNl
YXJjaExlbmd0aCA9IHF1ZXJ5TGVuZ3RoIC0gaW5kZXhBZnRlckFtcGVyc2FuZDsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIHF1ZXJ5RGljdGlvbmFyeTsKLX0KLSAgICAKLXN0YXRpYyBib29sIGlz
WW91VHViZVVSTChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBhdXRvIGhvc3ROYW1lID0gdXJsLmhv
c3QoKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUs
ICJtLnlvdXR1YmUuY29tIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaG9zdE5hbWUsICJ5b3V0dS5iZSIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGhvc3ROYW1lLCAid3d3LnlvdXR1YmUuY29tIikKLSAgICAgICAgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ5b3V0dWJlLmNvbSIpCi0gICAgICAg
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3ROYW1lLCAid3d3LnlvdXR1YmUt
bm9jb29raWUuY29tIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
aG9zdE5hbWUsICJ5b3V0dWJlLW5vY29va2llLmNvbSIpOwotfQotCi1zdGF0aWMgY29uc3QgU3Ry
aW5nJiB2YWx1ZUZvcktleShjb25zdCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVl
TWFwJiBkaWN0aW9uYXJ5LCBjb25zdCBTdHJpbmcmIGtleSkKLXsKLSAgICBjb25zdCBhdXRvJiB2
YWx1ZSA9IGRpY3Rpb25hcnkuZmluZChrZXkpOwotICAgIGlmICh2YWx1ZSA9PSBkaWN0aW9uYXJ5
LmVuZCgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVybiB2YWx1
ZS0+dmFsdWU7Ci19Ci0KLXN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29u
c3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgU3RyaW5nJiBvdXRQYXRo
QWZ0ZXJGaXJzdEFtcGVyc2FuZCkKLXsKLSAgICBpZiAoIXVybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpCi0gICAgICAgIHJldHVybiBVUkwoKTsKLQotICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlm
IHdlIGFyZW4ndCBldmVuIG9uIHd3dy55b3V0dWJlLmNvbSBvciB5b3V0dWJlLmNvbS4KLSAgICBp
ZiAoIWlzWW91VHViZVVSTCh1cmwpKQotICAgICAgICByZXR1cm4gVVJMKCk7Ci0KLSAgICBhdXRv
IGhvc3ROYW1lID0gdXJsLmhvc3QoKTsKLSAgICBib29sIGlzWW91VHViZU1vYmlsZVdlYkFwcFVS
TCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3ROYW1lLCAibS55b3V0dWJlLmNv
bSIpOwotICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGhvc3ROYW1lLCAieW91dHUuYmUiKTsKLQotICAgIC8vIFNob3J0IFVSTCBvZiB0aGUg
Zm9ybTogaHR0cDovL3lvdXR1LmJlL3YxZDMwMUQKLSAgICBpZiAoaXNZb3VUdWJlU2hvcnRlbmVk
VVJMKSB7Ci0gICAgICAgIGF1dG8gdmlkZW9JRCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwot
ICAgICAgICBpZiAodmlkZW9JRC5pc0VtcHR5KCkgfHwgdmlkZW9JRCA9PSAiLyIpCi0gICAgICAg
ICAgICByZXR1cm4gVVJMKCk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVv
SUQsIHsgfSk7Ci0gICAgfQotCi0gICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsKLSAgICBhdXRv
IHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7Ci0gICAgYXV0byBmcmFnbWVudCA9IHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKTsKLQotICAgIC8vIE9uIHRoZSBZb3VUdWJlIG1vYmlsZSB3ZWIgYXBwLCB0aGUg
cGF0aCBhbmQgcXVlcnkgc3RyaW5nIGFyZSBwdXQgaW50byB0aGUKLSAgICAvLyBmcmFnbWVudCBz
byB0aGF0IG9uZSB3ZWIgcGFnZSBpcyBvbmx5IGV2ZXIgbG9hZGVkIChzZWUgPHJkYXI6Ly9wcm9i
bGVtLzk1NTA2Mzk+KS4KLSAgICBpZiAoaXNZb3VUdWJlTW9iaWxlV2ViQXBwVVJMKSB7Ci0gICAg
ICAgIHNpemVfdCBsb2NhdGlvbiA9IGZyYWdtZW50LmZpbmQoJz8nKTsKLSAgICAgICAgaWYgKGxv
Y2F0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQ7Ci0gICAg
ICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBwYXRoID0gZnJhZ21lbnQuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKTsKLSAgICAgICAgICAg
IHF1ZXJ5ID0gZnJhZ21lbnQuc3Vic3RyaW5nKGxvY2F0aW9uICsgMSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZnJhZ21lbnQgPSBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICAKLSAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi93YXRjaCIpKSB7Ci0gICAgICAgIGlm
ICghcXVlcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBxdWVyeURpY3Rp
b25hcnkgPSBxdWVyeUtleXNBbmRWYWx1ZXMocXVlcnkpOwotICAgICAgICAgICAgU3RyaW5nIHZp
ZGVvSUQgPSB2YWx1ZUZvcktleShxdWVyeURpY3Rpb25hcnksICJ2Iik7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBj
b25zdCBhdXRvJiBmcmFnbWVudERpY3Rpb25hcnkgPSBxdWVyeUtleXNBbmRWYWx1ZXModXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgdGltZUlEID0gdmFs
dWVGb3JLZXkoZnJhZ21lbnREaWN0aW9uYXJ5LCAidCIpOwotICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHRpbWVJRCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIE1heSBiZSBhIG5ldy1zdHlsZSBsaW5rIChzZWUg
PHJkYXI6Ly9wcm9ibGVtLzc3MzM2OTI+KS4KLSAgICAgICAgaWYgKGZyYWdtZW50LnN0YXJ0c1dp
dGgoJyEnKSkgewotICAgICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmcoMSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghcXVlcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgYXV0byYgcXVlcnlEaWN0aW9uYXJ5ID0gcXVlcnlLZXlzQW5kVmFsdWVz
KHF1ZXJ5KTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgdmlkZW9JRCA9IHZhbHVlRm9yS2V5KHF1
ZXJ5RGljdGlvbmFyeSwgInYiKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBp
ZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyB0aW1l
SUQgPSB2YWx1ZUZvcktleShxdWVyeURpY3Rpb25hcnksICJ0Iik7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHRpbWVJRCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvdi8iKSB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvZS8iKSkgewotICAgICAgICBTdHJpbmdWaWV3
IHZpZGVvSUQ7Ci0gICAgICAgIFN0cmluZ1ZpZXcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7Ci0K
LSAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgp
OwotICAgICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRpb24gPSBsYXN0UGF0aENvbXBvbmVudC5m
aW5kKCcmJyk7Ci0gICAgICAgIGlmIChhbXBlcnNhbmRMb2NhdGlvbiAhPSBub3RGb3VuZCkgewot
ICAgICAgICAgICAgLy8gU29tZSBVUkxzIHdlIGNhcmUgYWJvdXQgdXNlICYgaW4gcGxhY2Ugb2Yg
PyBmb3IgdGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KLSAgICAgICAgICAgIHZpZGVvSUQgPSBs
YXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoMCwgYW1wZXJzYW5kTG9jYXRpb24pOwotICAgICAg
ICAgICAgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJp
bmcoYW1wZXJzYW5kTG9jYXRpb24gKyAxLCBsYXN0UGF0aENvbXBvbmVudC5sZW5ndGgoKSAtIGFt
cGVyc2FuZExvY2F0aW9uKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2aWRlb0lEID0g
bGFzdFBhdGhDb21wb25lbnQ7Ci0KLSAgICAgICAgaWYgKCF2aWRlb0lELmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJGaXJzdEFt
cGVyc2FuZC50b1N0cmluZygpOwotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwo
dmlkZW9JRCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
VVJMKCk7Ci19Ci0KLVN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkwo
Y29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpCi17Ci0gICAgVVJMIHNyY1VSTCA9IG1fcGFyZW50RWxl
bWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoc3JjU3RyaW5nKSk7Ci0gICAgcmV0dXJuIHlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwo
c3JjVVJMLCBzcmNTdHJpbmcpOwotfQotCi1TdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIHNyY1N0cmluZykKLXsKLSAgICBib29sIGlzWW91VHViZVNob3J0ZW5lZFVSTCA9IGZhbHNl
OwotICAgIFN0cmluZyBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OwotICAgIFVSTCB5b3VUdWJlVVJM
ID0gcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRV
UkwsIHBvc3NpYmx5TWFsZm9ybWVkUXVlcnkpOwotICAgIGlmIChzcmNVUkwuaXNFbXB0eSgpIHx8
IHlvdVR1YmVVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3JjU3RyaW5nOwotCi0gICAg
Ly8gVHJhbnNmb3JtIHRoZSB5b3V0dWJlVVJMICh5b3V0dWJlOlZpZGVvSUQpIHRvIGlmcmFtZSBl
bWJlZCB1cmwgd2hpY2ggaGFzIHRoZSBmb3JtYXQ6IGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1i
ZWQvVmlkZW9JRAotICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCk7Ci0gICAgY29uc3Qg
U3RyaW5nJiB2aWRlb0lEID0geW91VHViZVVSTC5zdHJpbmcoKS5zdWJzdHJpbmcoeW91VHViZVVS
TC5wcm90b2NvbCgpLmxlbmd0aCgpICsgMSk7Ci0gICAgc2l6ZV90IGxvY2F0aW9uT2ZWaWRlb0lE
SW5QYXRoID0gc3JjUGF0aC5maW5kKHZpZGVvSUQpOwotCi0gICAgc2l6ZV90IGxvY2F0aW9uT2ZQ
YXRoQmVmb3JlVmlkZW9JRCA9IG5vdEZvdW5kOwotICAgIGlmIChsb2NhdGlvbk9mVmlkZW9JRElu
UGF0aCAhPSBub3RGb3VuZCkgewotICAgICAgICBBU1NFUlQobG9jYXRpb25PZlZpZGVvSURJblBh
dGgpOwotICAgIAotICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8g
Z2V0IHRoZSBwYXJ0IGJlZm9yZSAvcGF0aC9WaWRlb0lkLgotICAgICAgICBsb2NhdGlvbk9mUGF0
aEJlZm9yZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQYXRoLnN1YnN0
cmluZygwLCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3JjUGF0aCwgIi93YXRjaCIpKSB7Ci0gICAgICAgIC8v
IEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC93
YXRjaC8jIXY9VmlkZW9JRAotICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgYmUgQVND
SUkgY2FzZS1pbnNlbnNpdGl2ZT8KLSAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lE
ID0gc3JjU3RyaW5nLmZpbmQoIi93YXRjaCIpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4g
c3JjU3RyaW5nOwotCi0gICAgQVNTRVJUKGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCAhPSBu
b3RGb3VuZCk7Ci0KLSAgICBhdXRvIHNyY1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5n
KS5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKLSAgICBhdXRvIHF1
ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7Ci0KLSAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVyeSwg
dXNlIHRoZSBwb3NzaWJseSBtYWxmb3JtZWQgcXVlcnkgd2UgZm91bmQuCi0gICAgaWYgKHF1ZXJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgcXVlcnkgPSBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OwotCi0g
ICAgLy8gQXBwZW5kIHRoZSBxdWVyeSBzdHJpbmcgaWYgaXQgaXMgdmFsaWQuCi0gICAgcmV0dXJu
IG1ha2VTdHJpbmcoCi0gICAgICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA/ICJodHRwOi8vd3d3
LnlvdXR1YmUuY29tIiA6IHNyY1VSTFByZWZpeCwKLSAgICAgICAgIi9lbWJlZC8iLAotICAgICAg
ICB2aWRlb0lELAotICAgICAgICBxdWVyeS5pc0VtcHR5KCkgPyAiIiA6ICI/IiwKLSAgICAgICAg
cXVlcnkKLSAgICApOwotfQotICAgIAotYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1
cHBvcnRzVVJMKGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJldHVybiBpc1lvdVR1YmVVUkwodXJs
KTsKLX0KLQotYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmlzRW5hYmxlZEJ5U2V0dGlu
Z3MoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQotewotICAgIHJldHVybiBzZXR0aW5ncy55b3VU
dWJlRmxhc2hQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQoKTsKLX0KLSAgICAKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc5ZWE5N2MyMjJhMzgwNWI3
MTg3MTgwM2Y1NTgyNWY3YWMwMDU2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiUGx1Z2luUmVwbGFjZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgWW91
VHViZUVtYmVkU2hhZG93RWxlbWVudDsKLQotY2xhc3MgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
IGZpbmFsIDogcHVibGljIFBsdWdpblJlcGxhY2VtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCByZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0cmFy
KTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gS2V5VmFsdWVNYXA7Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHlvdVR1YmVVUkxGcm9tQWJzb2x1dGVV
UkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKTsKLQotcHJpdmF0
ZToKLSAgICBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKLSAgICBzdGF0aWMgUmVmPFBsdWdpblJlcGxhY2VtZW50PiBjcmVhdGUoSFRNTFBs
dWdJbkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01pbWVU
eXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmlsZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1VSTChjb25zdCBVUkwm
KTsKLSAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJik7
Ci0KLSAgICBJbnN0YWxsUmVzdWx0IGluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JikgZmlu
YWw7Ci0KLSAgICBTdHJpbmcgeW91VHViZVVSTChjb25zdCBTdHJpbmcmIHJhd1VSTCk7Ci0KLSAg
ICBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dF
bGVtZW50OyB9Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIGZpbmFsOwotCi0gICAgV2Vha1B0cjxIVE1MUGx1Z0luRWxlbWVudD4gbV9wYXJl
bnRFbGVtZW50OwotICAgIFJlZlB0cjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBtX2VtYmVk
U2hhZG93RWxlbWVudDsKLSAgICBLZXlWYWx1ZU1hcCBtX2F0dHJpYnV0ZXM7Ci19OwotCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCAwY2U1ODRiZTYyNzBmMWM1NzU0MzI0ZTUxZGJhODk1
ODk5YzdiNGRjLi4xZWVhZjAwMWRiMmVjNDU1NmM4NGJhNTM0ZjZlYjVjNjBlM2FiZTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTEwMCw4ICsxMDAsNiBAQCBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcAogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQotTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCi1Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcAogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVl
Y2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkBAIC0xNzIsNyArMTcwLDYg
QEAgZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIEBuby11bmlmeQogZWRp
dGluZy9tYWMvVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0KIGZpbGVhcGkvRmlsZUNvY29h
Lm1tCiBoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQotaHRtbC9zaGFkb3cvWW91VHViZUVt
YmVkU2hhZG93RWxlbWVudC5jcHAKIGluc3BlY3Rvci9tYWMvUGFnZURlYnVnZ2VyTWFjLm1tCiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgxOTUyOTdlYTZlNWJhZjkyMjU4N2U2ZTY3NmE4
ZDJjMTIzYzhkMjguLjg1YTA2NzlkNTQ2YmU1OThlZTIwMDU2NDBhNzc2N2JkNzZjMjMzYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwOSw4ICsxMDksNiBAQAogCQkwNzI3N0U1NTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRp
YVN0cmVhbVRyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3Mjc3RTQ5MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tF
dmVudC5oICovOyB9OwogCQkwNzI4ODBEMTIwMTBGMUY2MDA3MUIyNTUgLyogUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjg4MEQwMjAxMEVFRDcwMDcxQjI1NSAvKiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTA3MkE3MDQwMUQ2RThGNjIwMERGMEFGQyAvKiBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJBNzAzRTFE
NkU4RjYyMDBERjBBRkMgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oICovOyB9OwotCQkw
NzJBRTFFNTE4M0MwNzQxMDAwQTU5ODggLyogUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MkFFMURGMTgzQzA3NDEwMDBB
NTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTA3MkFFMUU4MTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyQUUxRTIxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmggKi87IH07CiAJCTA3Mzc5NERFMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZl
ckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMu
aCAqLzsgfTsKIAkJMDczNzk0RTYxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0
RTQxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlvbi5oICovOyB9OwogCQkwNzM3
OTRFQzE5RUUzNDFFMDBFNUEwNDUgLyogSlNSVENJY2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc5NEVBMTlFRTM0MUUwMEU1QTA0NSAv
KiBKU1JUQ0ljZVNlcnZlci5oICovOyB9OwpAQCAtMTMyLDcgKzEzMCw2IEBACiAJCTA3Njk3MDg3
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4
dFRyYWNrTGlzdC5oICovOyB9OwogCQkwNzZEMUMxRjIzRjZFQjVCMDBEOTVCMDYgLyogU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzZEMUMxRDIzRjZEOUQ4MDBEOTVCMDYgLyogU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oICovOyB9OwotCQkwNzc2NjRGRDE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKIAkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxMTFC
OTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg1OCw3ICsxODU1
LDYgQEAKIAkJNTM4RUM5MzIxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTWFsbG9jU3RhdGlzdGljcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0RUE2
ODE0QzkzNDg0MDBDOEY1QkYgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmNwcCAqLzsgfTsKIAkJNTM4
RUM5MzMxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzJFMUUwM0NBNEEwMEUyMzVB
MiAvKiBKU01vY2tDRE1GYWN0b3J5LmggKi87IH07CiAJCTUzOEVDOTM0MUY5OUI5RjcwMDREMjJB
OCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ2RjNFOTMxQzFGODU1NTAwNjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVy
bGF5LmggKi87IH07Ci0JCTUzOEVDOTNFMUY5OUJGNUEwMDREMjJBOCAvKiBKU1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3NzY2NEZBMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNwcCAqLzsgfTsKIAkJNTM4RjEwQTgxRjkwMjJBNDAwNTEwMkNFIC8qIFNvZnRM
aW5rTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzhGMTBBMzFGOTAwQkRDMDA1MTAyQ0UgLyogU29mdExpbmtMaWJ4c2x0LmNwcCAqLzsg
fTsKIAkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQjg5NUFEMTlEQzdDMzcwMDlD
QUE5MyAvKiBNaWNyb3Rhc2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTNDODI5OEUxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxl
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M4
Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM0OCw3ICsyMzQ0LDYgQEAK
IAkJN0E0NTAzMzAxOERCNzE3MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E0NTAzMkUxOERCNzE3
MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5oICovOyB9OwogCQk3QTU0ODU4MDE0RTAy
RDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3Bl
Y3Rvckhpc3RvcnkuaCAqLzsgfTsKIAkJN0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBh
dGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E1NDg4MTUxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oICovOyB9Owot
CQk3QTU1MTVGNTE5MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU1MTVGMzE5
MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E1Njk5NzAyMDg2QzYxOTAw
MEUwNDMzIC8qIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU2OTk2RTIwODZDNjE4MDAwRTA0MzMg
LyogQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTY3NEJEQzBGOUVCRjRFMDA2Q0YwOTkgLyog
UGFnZUdyb3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmggKi87IH07CiAJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNDI5
LDcgKzM0MjQsNiBAQAogCQlBNTJCMzQ4RjFGQTNCREE2MDA4QjYyNDYgLyogU2VydmljZVdvcmtl
ckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MkIzNDhDMUZBM0JENzkwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VyRGVidWdnYWJsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MkIz
NDk2MUZBM0UyOTAwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MkIzNDkzMUZBM0Uy
ODYwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTJCMzQ5RTFGQTQxNzAzMDA4
QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyQjM0OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtlckRl
YnVnZ2VyUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlBNTQxNkZFNjE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0
MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLzsg
fTsKIAkJQTU0QTBDNjIxREI3RjhDMTAwMTdBOTBCIC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEEw
QzYwMURCN0Y4QjcwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IH07
CiAJCUE1NEEwQzY2MURCODA1MzYwMDE3QTkwQiAvKiBXb3JrZXJEZWJ1Z2dlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTBDNjQxREI4MDUzMjAw
MTdBOTBCIC8qIFdvcmtlckRlYnVnZ2VyLmggKi87IH07CiAJCUE1NEEwQzY4MURCODA3RDkwMDE3
QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEEwQzY3MURCODA3RDAwMDE3QTkwQiAvKiBX
b3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCAqLzsgfTsKQEAgLTU5MzUsMTIgKzU5MjksNiBA
QAogCQkwNzI4ODBEMDIwMTBFRUQ3MDA3MUIyNTUgLyogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVWaWRlb0NhcHR1
cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyQTcwM0UxRDZFOEY2
MjAwREYwQUZDIC8qIE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzJBNzAzRjFENkU4RjYyMDBERjBBRkMgLyogT3ZlcmNvbnN0
cmFpbmVkRXJyb3JFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT3ZlcmNvbnN0cmFp
bmVkRXJyb3JFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MkFFMURG
MTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5SZXBsYWNlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwNzJBRTFFMDE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDcyQUUxRTExODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
Y3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzJBRTFFMjE4M0MwNzQxMDAwQTU5
ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMDcyQUUxRTMxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MkFFMUU0MTgz
QzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJDQTg2MDE2Q0I0REMzMDA4QUUx
MzEgLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDcyREJCRkIyNURCMzhCQzAwQTEzNTBFIC8qIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkRCQzAzMjVEQzZCRDMwMEExMzUwRSAvKiBNZWRpYVNl
c3Npb25Db29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25Db29yZGluYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk5Niw4ICs1OTg0LDYgQEAKIAkJ
MDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2YXRlQmFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTA3NzY2NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QUYxM0UxOEY0QUU0
MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
NjkyLDggKzEwNjc4LDYgQEAKIAkJN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rv
ckhpc3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySGlz
dG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODgxNTE0RTQzMkExMDA2
QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVBhdGNoU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0
ODgxNjE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVBhdGNoU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTdBNTUxNUYzMTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBNTUx
NUY0MTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1Njk5NkUyMDg2QzYxODAwMEUw
NDMzIC8qIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDA2LDggKzEyOTkwLDYgQEAKIAkJQTUyQjM0
OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtlckRlYnVnZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyRGVidWdnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTJEODVDQTIxQjA5ODJGMDA2MUMxRUIgLyogU2VydmVyVGltaW5n
UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZlclRpbWluZ1BhcnNlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MkQ4NUNCMjFCMDk4MzAwMDYxQzFFQiAvKiBT
ZXJ2ZXJUaW1pbmdQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmVyVGltaW5nUGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NDE2RkUzMTg4MTBFRjgwMDA5RkM1RiAv
KiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNTQxNkZFNDE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBZb3VUdWJl
RW1iZWRTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEEw
QzVGMURCN0Y4QjcwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBMEM2MDFEQjdGOEI3MDAx
N0E5MEIgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1NEEwQzYzMURCODA1MzIwMDE3QTkwQiAvKiBXb3JrZXJEZWJ1Z2dl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJEZWJ1Z2dl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg2MiwyMSArMTc4NDQsNiBA
QAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTA3
MkFFMURFMTgzQzA1MTMwMDBBNTk4OCAvKiBwbHVnaW5zICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkwNzJBRTFERjE4M0MwNzQxMDAwQTU5ODggLyogUGx1
Z2luUmVwbGFjZW1lbnQuaCAqLywKLQkJCQkwNzJBRTFFMTE4M0MwNzQxMDAwQTU5ODggLyogUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzICovLAotCQkJCTA3MkFFMUUyMTgzQzA3NDEwMDBB
NTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovLAotCQkJCTA3MkFFMUUzMTgz
QzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwgKi8sCi0JCQkJ
MDcyQUUxRTQxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmpz
ICovLAotCQkJCTA3MkFFMUUwMTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSAqLywKLQkJCQk3QTU1MTVGNDE5MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCAqLywKLQkJCQk3QTU1MTVGMzE5MTgzMEEzMDA5Njg3RDIgLyog
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IHBsdWdpbnM7
Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQkwNzZGMEQwODEyQjgxOTI3MDBD
MjZBQTQgLyogYXZmb3VuZGF0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTE4NjAyLDggKzE4NTY5LDYgQEAKIAkJCQlCQzk4NTQ0MzBDRDNEOUQwMDAw
NjlCQzEgLyogV2luZG93ICovLAogCQkJCUE4M0I3OTIyMENDQjAwRjAwMDBCMDgyNSAvKiBYTUwg
Ki8sCiAJCQkJQTgzQjc5MEMwQ0NBRkY4MzAwMEIwODI1IC8qIFhQYXRoICovLAotCQkJCTA3NzY2
NEZBMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCAq
LywKLQkJCQkwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5oICovLAogCQkJCUJDMzQ4QkQxMERCN0Y4MDQwMDRBQkFCQiAvKiBXZWJDb3JlSlNC
dWlsdGluSW50ZXJuYWxzLmNwcCAqLywKIAkJCQlCQzM0OEJEMjBEQjdGODA0MDA0QUJBQkIgLyog
V2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oICovLAogCQkJCUJDMzQ4QkQxMERCN0Y4MDQwMDRB
QkFCQSAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi8sCkBAIC0xOTgxNyw4ICsxOTc4Miw2IEBA
CiAJCQkJMTQyQjk3QzgxMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oICovLAogCQkJCUNFMjEyMTU0MjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmNwcCAqLywKIAkJCQlDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNl
aG9sZGVyRWxlbWVudC5oICovLAotCQkJCUE1NDE2RkUzMTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCAqLywKLQkJCQlBNTQxNkZFNDE4ODEwRUY4MDAwOUZD
NUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBz
aGFkb3c7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ0NzAsNyArMjQ0MzMsNiBA
QAogCQkJCUExRjc2QjBFMUY0NEMwQ0YwMDE0QzMxOCAvKiBwYXltZW50cmVxdWVzdCAqLywKIAkJ
CQk5M0IwQTY0MjI2Q0RDNTc0MDBBQTIxRTQgLyogcGVybWlzc2lvbnMgKi8sCiAJCQkJMURFRjA2
QTIyMzNDMzJEQjAwRUUyMjhEIC8qIHBpY3R1cmVpbnBpY3R1cmUgKi8sCi0JCQkJMDcyQUUxREUx
ODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8sCiAJCQkJNDE4RkNCQjgyNzA2RTRCRDAwRjk2
RUNBIC8qIHB1c2gtYXBpICovLAogCQkJCUNEQzMxMkUwMjJGQ0QwQjAwMDEyMDRFQyAvKiByZW1v
dGVwbGF5YmFjayAqLywKIAkJCQlBQTJBNUFCNzE2QTQ4NUE0MDA5NzVBMjUgLyogc3BlZWNoICov
LApAQCAtMzM5MDcsNyArMzM4NjksNiBAQAogCQkJCTU3MzAzQkY0MjAwOTkwNDYwMDM1NTk2NSAv
KiBKU1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
NzMwM0MxMTIwMDk5Q0IxMDAzNTU5NjUgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzAwMjAwOTk1MUMwMDM1NTk2NSAvKiBK
U1B1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzc2NjRGRDE4
M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjY1OEZGQTIxNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZDNEM5NkRGMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4NjYsNyArMzQ4
MjcsNiBAQAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDhGRUREMUQ1OTJCOEIwMDhCQThDQiAvKiBQbHVn
aW5JbmZvUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3MkFFMUU1MTgzQzA3NDEwMDBB
NTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFFMjE4M0Ex
NzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNvdXJjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNCQjhBQjkxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0OTQzLDcgKzM0OTAzLDYgQEAKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMDcyQUUxRTgxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFFRTkyQzIyMzg4QTdEMDA0MTU3QTkgLyogUXVpcmtz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcxNzEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVk
UHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QTU3NEYyOTEzMURCOTZEMDA0NzFCODgg
LyogUXVvdGVzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjM5Miw4ICszNjM1MSw2IEBACiAJ
CQkJRTFGMUU4MzAwQzNDMkJCOTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU0MTZGRTYxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBNTUxNUY1MTkx
ODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBA
IC0zNjg2Myw3ICszNjgyMCw2IEBACiAJCQkJQ0QyN0FFNTEyMkE5ODY4NzAwOTQ3RkY5IC8qIElt
YWdlUm90YXRpb25TZXNzaW9uVlQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBFMkQwRjI2RjI1
MDg5MDAxNEFBQzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzhFQzkzRTFGOTlCRjVBMDA0RDIyQTggLyogSlNR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3
MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
REE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNERThCNUVDMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXku
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCBlOGI5NTRlNDQ2ZDBlMTc4YmM4
YzQ0YzRmNDRlNTZiZmEwOWJjMzE1Li4yOTZjNTM1ZThjNWI3OTNlOWIxZGNjYjU4MTA1ZjgxMDcz
MGY4NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTc4LDEyICs3OCw4IEBAIEpTT2JqZWN0KiBwbHVn
aW5TY3JpcHRPYmplY3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTSFRN
TEVsZW1lbnQqCiAKICAgICAvLyBDaG9rZSBwb2ludCBmb3Igc2NyaXB0L3BsdWdpbiBpbnRlcmFj
dGlvbjsgbm90aWZ5IERPTVRpbWVyIG9mIHRoZSBldmVudC4KICAgICBET01UaW1lcjo6c2NyaXB0
RGlkSW50ZXJhY3RXaXRoUGx1Z2luKHBsdWdpbkVsZW1lbnQpOwotCi0gICAgLy8gRmlyc3QsIHNl
ZSBpZiB0aGUgZWxlbWVudCBoYXMgYSBwbHVnLWluIHJlcGxhY2VtZW50IHdpdGggYSBzY3JpcHQu
Ci0gICAgaWYgKGF1dG8qIHNjcmlwdE9iamVjdCA9IHBsdWdpbkVsZW1lbnQuc2NyaXB0T2JqZWN0
Rm9yUGx1Z2luUmVwbGFjZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsKICAg
ICAKLSAgICAvLyBOZXh0LCBzZWUgaWYgd2UgY2FuIGFzayB0aGUgcGx1Zy1pbiB2aWV3IGZvciBp
dHMgc2NyaXB0IG9iamVjdC4KKyAgICAvLyBTZWUgaWYgd2UgY2FuIGFzayB0aGUgcGx1Zy1pbiB2
aWV3IGZvciBpdHMgc2NyaXB0IG9iamVjdC4KICAgICBpZiAoYXV0byogc2NyaXB0T2JqZWN0ID0g
cGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNlKHBsdWdpbkVsZW1lbnQsIGpzSFRN
TEVsZW1lbnQtPmdsb2JhbE9iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCA4YzY3MjkxNzNjZjZiMDYwMzA2ZDc4NDNmOTE0Nzc5MmY2MjIwYTJkLi5lZThi
NzE4MGYxYmY4ZDBjZWFjOGIzYTIyMDIyNzYyYzUwZjQxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDg3OSwxMSAr
NDg3OSw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHRoaXNPYmplY3QtPnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKHZpc2l0b3IpO1xuIikg
aWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNDdXN0b21NYXJrRnVuY3Rpb259
OwotICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgUExBVEZPUk0oQ09DT0EpXG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5wbHVnaW5SZXBsYWNlbWVudFNjcmlwdE9iamVjdCgpLnZpc2l0KHZpc2l0b3IpO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIik7Ci0gICAgICAgIH0K
ICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0dlbmVyYXRlQWRk
T3BhcXVlUm9vdH0pIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL0dldFB0
ci5oPiIpOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0dlbmVyYXRlQWRkT3BhcXVlUm9vdH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVn
aW5JbnRlcmZhY2UuY3BwCmluZGV4IDJjOWZmOGYxYjU2YTViOWMxM2Y1ZGVjOGExOWRiMjU0YTlj
YTA2NWYuLjFiNzgyMDEwZjgwYTU5ZTY4MjhjOTg4NzJhMGYwMTk3OGEyZjFiYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC0yNjUsOSArMjY1LDYgQEAgdm9pZCBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRv
ciYgdmlzaXRvcikKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBsdWdpbklu
dGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5wbHVnaW5S
ZXBsYWNlbWVudFNjcmlwdE9iamVjdCgpLnZpc2l0KHZpc2l0b3IpOwotI2VuZGlmCiB9CiAKIERF
RklORV9WSVNJVF9DSElMRFJFTihKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA5NjUxZDg0ZWEwMmI1Zjk3ZjI2Yjc3
NGUwZjM2ODVkZTI5ODc0NzlhLi40ZTRhMDE2ZmZjYjI5YzI4YjYyMDk4NDQ3MDNhYjRmMjE0N2Y3
NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMzcs
NyArMzcsNiBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgotI2luY2x1ZGUgIlBsdWdpblJlcGxhY2VtZW50
LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRl
ZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC01NCwxMSArNTMsNiBAQAog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotI2luY2x1ZGUgIlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgiCi0jaW5jbHVkZSAiWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTFBsdWdJbkVsZW1lbnQpOwpAQCAtMjU2
LDExICsyNTAsOCBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29u
c3QKICAgICByZXR1cm4gIWRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIo
KSkuaXNQbHVnaW5VbmF2YWlsYWJsZSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAg
ICBpZiAobV9wbHVnaW5SZXBsYWNlbWVudCAmJiBtX3BsdWdpblJlcGxhY2VtZW50LT53aWxsQ3Jl
YXRlUmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIG1fcGx1Z2luUmVwbGFjZW1lbnQtPmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcigqdGhpcywgV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9u
KTsKLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIApAQCAtMjg4LDEyMyArMjc5LDEzIEBAIHZvaWQgSFRN
TFBsdWdJbkVsZW1lbnQ6OnNldERpc3BsYXlTdGF0ZShEaXNwbGF5U3RhdGUgc3RhdGUpCiAgICAg
ICAgIG1fc3dhcFJlbmRlcmVyVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgSFRN
TFBsdWdJbkVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9v
dCkKLXsKLSAgICBpZiAoIW1fcGx1Z2luUmVwbGFjZW1lbnQgfHwgIWRvY3VtZW50KCkucGFnZSgp
IHx8IGRpc3BsYXlTdGF0ZSgpICE9IFByZXBhcmluZ1BsdWdpblJlcGxhY2VtZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgcm9vdC5zZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UodHJ1ZSk7
Ci0gICAgYXV0byByZXN1bHQgPSBtX3BsdWdpblJlcGxhY2VtZW50LT5pbnN0YWxsUmVwbGFjZW1l
bnQocm9vdCk7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuc3VjY2VzcyB8fCAhcmVzdWx0LnNjcmlwdE9iamVjdCk7Ci0gICAgbV9wbHVnaW5SZXBsYWNl
bWVudFNjcmlwdE9iamVjdCA9IHJlc3VsdC5zY3JpcHRPYmplY3Q7Ci0jZW5kaWYKLQotICAgIGlm
IChyZXN1bHQuc3VjY2VzcykgewotICAgICAgICBzZXREaXNwbGF5U3RhdGUoRGlzcGxheWluZ1Bs
dWdpblJlcGxhY2VtZW50KTsKLSAgICAgICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9y
U3VidHJlZSgpOwotICAgIH0KLX0KLQotI2lmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIHZvaWQg
cmVnaXN0cmFyKGNvbnN0IFJlcGxhY2VtZW50UGx1Z2luJik7Ci0jZW5kaWYKLQotc3RhdGljIFZl
Y3RvcjxSZXBsYWNlbWVudFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkK
LXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4+
IHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7Ci0gICAgc3RhdGljIGJvb2wgZW5naW5lc1F1ZXJpZWQg
PSBmYWxzZTsKLSAgICAKLSAgICBpZiAoZW5naW5lc1F1ZXJpZWQpCi0gICAgICAgIHJldHVybiBy
ZWdpc3RlcmVkUmVwbGFjZW1lbnRzOwotICAgIGVuZ2luZXNRdWVyaWVkID0gdHJ1ZTsKLQotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpyZWdpc3Rl
clBsdWdpblJlcGxhY2VtZW50KHJlZ2lzdHJhcik7Ci0gICAgWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KHJlZ2lzdHJhcik7Ci0jZW5kaWYKLSAgICAK
LSAgICByZXR1cm4gcmVnaXN0ZXJlZFJlcGxhY2VtZW50czsKLX0KLQotI2lmIFBMQVRGT1JNKENP
Q09BKQotc3RhdGljIHZvaWQgcmVnaXN0cmFyKGNvbnN0IFJlcGxhY2VtZW50UGx1Z2luJiByZXBs
YWNlbWVudCkKLXsKLSAgICByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkuYXBwZW5kKG5l
dyBSZXBsYWNlbWVudFBsdWdpbihyZXBsYWNlbWVudCkpOwotfQotI2VuZGlmCi0KLXN0YXRpYyBS
ZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIFZlY3RvcjxSZXBsYWNlbWVudFBsdWdp
bio+JiByZXBsYWNlbWVudHMgPSByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCk7Ci0gICAg
aWYgKHJlcGxhY2VtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgU3RyaW5nIGV4dGVuc2lvbjsKLSAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxh
c3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgc2l6ZV90IGRvdE9mZnNldCA9IGxhc3RQYXRoQ29tcG9u
ZW50LnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgaWYgKGRvdE9mZnNldCAhPSBub3RGb3VuZCkKLSAg
ICAgICAgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCAr
IDEpLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlOwotICAgIGlmICh0
eXBlLmlzRW1wdHkoKSAmJiB1cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgdHlwZSA9IG1p
bWVUeXBlRnJvbURhdGFVUkwodXJsLnN0cmluZygpKTsKLSAgICAKLSAgICBpZiAodHlwZS5pc0Vt
cHR5KCkgJiYgIWV4dGVuc2lvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiByZXBs
YWNlbWVudCA6IHJlcGxhY2VtZW50cykgewotICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50LT5z
dXBwb3J0c0ZpbGVFeHRlbnNpb24oZXh0ZW5zaW9uKSAmJiByZXBsYWNlbWVudC0+c3VwcG9ydHNV
UkwodXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChleHRl
bnNpb24uaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHR5
cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bik7Ci0gICAgfQotCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGZvciAoYXV0byogcmVwbGFjZW1lbnQgOiByZXBsYWNlbWVudHMpIHsKLSAg
ICAgICAgaWYgKHJlcGxhY2VtZW50LT5zdXBwb3J0c1R5cGUodHlwZSkgJiYgcmVwbGFjZW1lbnQt
PnN1cHBvcnRzVVJMKHVybCkpCi0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQ7Ci0gICAg
fQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OnJl
cXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVSTCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykKK3ZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYpCiB7Ci0gICAgaWYgKG1fcGx1Z2luUmVwbGFjZW1lbnQp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgVVJMIGNvbXBsZXRlZFVSTDsKLSAgICBpZiAo
IXJlbGF0aXZlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgY29tcGxldGVkVVJMID0gZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTChyZWxhdGl2ZVVSTCk7Ci0KLSAgICBSZXBsYWNlbWVudFBsdWdpbiogcmVw
bGFjZW1lbnQgPSBwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUoY29tcGxldGVkVVJMLCBtaW1lVHlw
ZSk7Ci0gICAgaWYgKCFyZXBsYWNlbWVudCB8fCAhcmVwbGFjZW1lbnQtPmlzRW5hYmxlZEJ5U2V0
dGluZ3MoZG9jdW1lbnQoKS5zZXR0aW5ncygpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgTE9HKFBsdWdpbnMsICIlcCAtIEZvdW5kIHBsdWctaW4gcmVwbGFjZW1lbnQgZm9yICVzLiIs
IHRoaXMsIGNvbXBsZXRlZFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIG1fcGx1
Z2luUmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudC0+Y3JlYXRlKCp0aGlzLCBwYXJhbU5hbWVzLCBw
YXJhbVZhbHVlcyk7Ci0gICAgc2V0RGlzcGxheVN0YXRlKFByZXBhcmluZ1BsdWdpblJlcGxhY2Vt
ZW50KTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNDOjpKU09iamVjdCogSFRNTFBsdWdJbkVs
ZW1lbnQ6OnNjcmlwdE9iamVjdEZvclBsdWdpblJlcGxhY2VtZW50KCkKK2Jvb2wgSFRNTFBsdWdJ
bkVsZW1lbnQ6OnJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gbV9wbHVnaW5SZXBsYWNlbWVudFNj
cmlwdE9iamVjdDsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gdmFsdWUuZ2V0T2JqZWN0KCk7Ci0jZWxzZQotICAgIHJldHVybiBudWxscHRyOwot
I2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojpp
c0JlbG93U2l6ZVRocmVzaG9sZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmgKaW5kZXggYTczYTVkNGJlNzFhNjUwYjJjMDVkMmE2OTZiY2NiMDM1MTk2M2M3MS4u
ZTE5NWQ3ZDcxOGY5YzEyMWIyMjYyMGRkOGEzZGI3ODE0ZWMyZWM4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAtMzUsNyArMzUsNiBAQCBjbGFzcyBJbnN0YW5j
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbHVnaW5SZXBsYWNlbWVudDsKIGNs
YXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFdpZGdldDsKIApAQCAtNTksMTEgKzU4LDYgQEAgcHVi
bGljOgogICAgIERpc3BsYXlTdGF0ZSBkaXNwbGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlTdGF0ZTsgfQogICAgIHZvaWQgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSk7CiAK
LSAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3RGb3JQbHVnaW5SZXBsYWNlbWVudCgpOwot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIHBsdWdpblJl
cGxhY2VtZW50U2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gbV9wbHVnaW5SZXBsYWNlbWVudFNjcmlw
dE9iamVjdDsgfQotI2VuZGlmCi0KICAgICBib29sIGlzQ2FwdHVyaW5nTW91c2VFdmVudHMoKSBj
b25zdCB7IHJldHVybiBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7IH0KICAgICB2b2lkIHNldElz
Q2FwdHVyaW5nTW91c2VFdmVudHMoYm9vbCBjYXB0dXJpbmcpIHsgbV9pc0NhcHR1cmluZ01vdXNl
RXZlbnRzID0gY2FwdHVyaW5nOyB9CiAKQEAgLTExOSwxMCArMTEzLDYgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gbV9pbnN0YW5jZTsKICAgICBUaW1l
ciBtX3N3YXBSZW5kZXJlclRpbWVyOwotICAgIFJlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gbV9w
bHVnaW5SZXBsYWNlbWVudDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBKU1ZhbHVlSW5XcmFw
cGVkT2JqZWN0IG1fcGx1Z2luUmVwbGFjZW1lbnRTY3JpcHRPYmplY3Q7Ci0jZW5kaWYKICAgICBi
b29sIG1faXNDYXB0dXJpbmdNb3VzZUV2ZW50cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2luQmVm
b3JlTG9hZEV2ZW50SGFuZGxlciB7IGZhbHNlIH07CiAgICAgRGlzcGxheVN0YXRlIG1fZGlzcGxh
eVN0YXRlIHsgUGxheWluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2hhZG93UHNldWRvSWRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NoYWRv
d1BzZXVkb0lkcy5jcHAKaW5kZXggZjA4YTQxMzFlNWQzZmE5YjdlNDliOTU2NzEzYTE5MjVhMGEx
MGY2Ni4uMjUwNmYzM2RmMDY2ZGRmOTFmMjczZjVjNTlkNTUyNDIxYjY4MTlmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93UHNldWRvSWRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMuY3BwCkBAIC0yMTksMTIg
KzIxOSw2IEBAIGNvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUo
KQogICAgIHJldHVybiB3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlOwogfQogCi1jb25zdCBB
dG9tU3RyaW5nJiB3ZWJraXRQbHVnaW5SZXBsYWNlbWVudCgpCi17Ci0gICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQbHVnaW5SZXBsYWNl
bWVudCgiLXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHdlYmtpdFBsdWdpblJlcGxhY2VtZW50OwotfQotCiBj
b25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQcm9ncmVzc0JhcigpCiB7CiAgICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQcm9ncmVzc0Jhcigi
LXdlYmtpdC1wcm9ncmVzcy1iYXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NoYWRvd1BzZXVkb0lkcy5oCmluZGV4IGEy
NzdjN2NkMDQ2YzMwYzJkN2RjNTQzNjczMjFhNTQyYmU4YTdkMGUuLmE3NmNmYTY0NDZlMDBkNzBl
Njg2N2Y3YzgxMjMyOWZlMjY5MDczMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NoYWRvd1BzZXVkb0lkcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NoYWRvd1BzZXVkb0lkcy5oCkBAIC03OSw4ICs3OSw2IEBAIGNvbnN0IEF0b21TdHJpbmcmIHdl
YmtpdE1ldGVyT3B0aW11bVZhbHVlKCk7CiBjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRNZXRlclN1
Ym9wdGltdW1WYWx1ZSgpOwogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWV0ZXJFdmVuTGVzc0dv
b2RWYWx1ZSgpOwogCi1jb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQbHVnaW5SZXBsYWNlbWVudCgp
OwotCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQcm9ncmVzc0JhcigpOwogY29uc3QgQXRvbVN0
cmluZyYgd2Via2l0UHJvZ3Jlc3NWYWx1ZSgpOwogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UHJv
Z3Jlc3NJbm5lckVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdhNzkyMmU4YTJiMWM2YTE0ZmFmY2M4YWEzYWIxYmVjZDY4N2QzMTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oIgotCi0jaW5jbHVkZSAiUmVuZGVy
QmxvY2tGbG93LmgiCi0jaW5jbHVkZSAiU2hhZG93UHNldWRvSWRzLmgiCi0jaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoWW91VHViZUVtYmVkU2hhZG93RWxlbWVudCk7Ci0KLVJlZjxZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcg
WW91VHViZUVtYmVkU2hhZG93RWxlbWVudChkb2N1bWVudCkpOwotICAgIGVsZW1lbnQtPnNldFBz
ZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFBsdWdpblJlcGxhY2VtZW50KCkpOwotICAgIHJl
dHVybiBlbGVtZW50OwotfQotCi1Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpZb3VUdWJlRW1i
ZWRTaGFkb3dFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50
KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKLXsKLX0KLQotUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQotewotICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxl
KSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVj
ZTA0MjkyNzA4OGVjODEyN2NmMmFmZmM0N2YxYmM1YzBiMDI2Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Z
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIVE1MRGl2RWxl
bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgWW91VHViZUVtYmVkU2hhZG93RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2
RWxlbWVudCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChZb3VUdWJlRW1iZWRTaGFkb3dF
bGVtZW50KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBmaW5hbDsKLQotcHJpdmF0ZToKLSAgICBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50KERv
Y3VtZW50Jik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLnlhbWwKaW5kZXggNjJjY2MzYjM2MTJhZjdkZjNjYThhZmExMTJiZDFjNmNjYzY4ODllMS4u
MmFlNzBjYjFkYTg0ZThjYWQzZWNjYzBjOWZmZWY0MzZmOGU4OWY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbApAQCAtNDQ1LDEyICs0NDUsNiBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZyYXVkUHJldmVudGlvbkVuYWJsZWQ6CiAgICAgICAiSEFWRShSU0FfQlNTQSkiOiB0cnVlCiAg
ICAgICBkZWZhdWx0OiBmYWxzZQogCi1RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQ6
Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZh
dWx0OiBmYWxzZQotCiBSZXBhaW50T3V0c2lkZUxheW91dEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wK
ICAgZGVmYXVsdFZhbHVlOgpAQCAtNjM4LDkgKzYzMiwzIEBAIFdlYmtpdEltYWdlUmVhZHlFdmVu
dEVuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDog
ZmFsc2UKLQotWW91VHViZUZsYXNoUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkOgotICB0eXBlOiBi
b29sCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9O
YXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCmluZGV4IGVmNzkyNTM2
OTEwNDVjMDUyNGFlOGJjMDcyOWEwNzhlNmZlODRlYmIuLmE3YjY1OTFjNjljZGJiMmMwYTdjZDEy
YWQxZTAwMzNlNDYyOTVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1l
dGVycy5qcwpAQCAtMTI3MSwxMSArMTI3MSw2IEBAIFdJLk5hdGl2ZVByb3RvdHlwZUZ1bmN0aW9u
UGFyYW1ldGVycyA9IHsKICAgICAgICAgX19wcm90b19fOiBudWxsLAogICAgIH0sCiAKLSAgICBR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDogewotICAgICAgICBwb3N0RXZlbnQ6ICJldmVudE5h
bWUiLAotICAgICAgICBfX3Byb3RvX186IG51bGwsCi0gICAgfSwKLQogICAgIFJUQ0RUTUZTZW5k
ZXI6IHsKICAgICAgICAgaW5zZXJ0RFRNRjogInRvbmVzLCBbZHVyYXRpb25dLCBbaW50ZXJUb25l
R2FwXSIsCiAgICAgICAgIF9fcHJvdG9fXzogbnVsbCwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNmE1Nzk0YzA1ZTIxYzE0YzhlMTg5NGQ4NmI0
MjM2MjMyZDFiYTMyLi40OGI4OWYzYjliNGQ4ZmQwZGQ0N2Y4ODM2MmUyMDdlOWFmZTFiNDk0IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjEtMTAtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQgYW5k
IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDogUmVtb3ZlZC4KKwogMjAyMS0xMC0yNyAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBbaU9TXSBUZXN0V2ViS2l0QVBJLkluQXBwQnJvd3NlclByaXZhY3kuQXBwQm91bmREb21h
aW5BbGxvd3NTZXJ2aWNlV29ya2VycyBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDU4ZGNiZDUwMTI3MzQ0YzhjOTYzNDE1YTU2NTRkMTBkOTYzYmRkOGQuLjAxMDg0NzYzYmU3
MTEzM2RlYTU5YThmMjE0OGEzZTQ1ZTMxNmYyOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05NDUsNyArOTQ1LDYgQEAKIAkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRG
RC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCREQ5
NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi87IH07CiAJCTlCRjAwMTMzMjY3
QzRDNTkwMERDRkIzRiAvKiBDaGVja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjAwMTMyMjY3QzRDNTkwMERDRkIzRiAvKiBDaGVja2Vk
UmVmLmNwcCAqLzsgfTsKIAkJOUJGMzU2Q0QyMDJENDU4NTAwRjcxMTYwIC8qIG1zby1saXN0Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwgKi87IH07Ci0JCTlDNjRE
QzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUM2NERDMzExRDc2MTk4
QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCUExMEYw
NDdFMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwRjA0N0MxRTNBRDI5QzAwQzk1
RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CiAJCUExMTQ2QThEMUQyRDcxMTUw
MDBGRTcxMCAvKiBDb250ZW50RmlsdGVyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNDZBOEExRDJENzA0RjAwMEZFNzEwIC8qIENvbnRlbnRG
aWx0ZXJpbmcubW0gKi87IH07CiAJCUExMUU3REEwMjRBMTY5RjkwMDAyNjc0NSAvKiBsaW5rLXdp
dGgtaG92ZXItbWVudS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMUU3RDlGMjRBMTY5RTIwMDAyNjc0NSAvKiBsaW5rLXdpdGgtaG92
ZXItbWVudS5odG1sICovOyB9OwpAQCAtMjcwNyw3ICsyNzA2LDYgQEAKIAkJOUJERDk1NTYxRjgz
NjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3Rl
UlRGRC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJGMDAxMzIyNjdDNEM1OTAw
RENGQjNGIC8qIENoZWNrZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tlZFJlZi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRjM1NkNDMjAyRDQ0RjIwMEY3MTE2
MCAvKiBtc28tbGlzdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1zby1saXN0Lmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNGaWxlTWFuYWdlckV4dHJh
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNDZBOEExRDJENzA0RjAwMEZF
NzEwIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBDb250ZW50RmlsdGVyaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTFFN0Q5RjI0QTE2OUUyMDAwMjY3NDUgLyogbGluay13aXRoLWhvdmVyLW1lbnUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJsaW5rLXdpdGgtaG92ZXItbWVudS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM4NTEsNyArMzg0OSw2IEBACiAJCQkJN0FEM0ZFOEQxRDc1RkI4RDAw
QjE2OUE0IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKIAkJCQk1N0QxRDc1RTIxRENC
N0E4MDA5M0U4NkEgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAgKi8sCiAJCQkJRTNB
MUU3N0UyMUIyNUIzOTAwOEM2MDA3IC8qIFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgKi8sCi0J
CQkJOUM2NERDMzExRDc2MTk4QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkNvcmU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtNjA3Miw3ICs2MDY5LDYgQEAKIAkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMg
LyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M3NEM4RkEyMkRGQkE5NjAwREEyREFCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMTREMzA0NjI0QjRDM0JBMDA0ODAzODcgLyogWFBDRW5kcG9pbnQu
bW0gaW4gU291cmNlcyAqLywKLQkJCQk5QzY0REMzMjFENzYxOThBMDA0QjU5OEUgLyogWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAwYjEzY2JjYTEwYzIxYjMw
N2VlZTMxMTRkZTAwZmJmMGZlMDJkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKLQotY2xhc3MgWW91VHViZVBsdWdpblJlcGxhY2VtZW50VGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoKLSAgICB2b2lkIFNldFVwKCkgZmluYWwgewotICAg
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgfQotfTsKLQotc3RhdGljIGJv
b2wgdGVzdChjb25zdCBTdHJpbmcmIGlucHV0VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cGVj
dGVkVVJMU3RyaW5nKQotewotICAgIFVSTCBpbnB1dFVSTChVUkwoKSwgaW5wdXRVUkxTdHJpbmcp
OwotICAgIFN0cmluZyBhY3R1YWxVUkxTdHJpbmcgPSBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6
OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoaW5wdXRVUkwsIGlucHV0VVJMU3RyaW5nKTsKLSAg
ICByZXR1cm4gYWN0dWFsVVJMU3RyaW5nLnV0ZjgoKSA9PSBleHBlY3RlZFVSTFN0cmluZy51dGY4
KCk7Ci19Ci0KLVRFU1RfRihZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnRUZXN0LCBZb3VUdWJlVVJM
RnJvbUFic29sdXRlVVJMKQotewotICAgIC8vIFlvdVR1YmUgbm9uLXZpZGVvIFVSTCwgbm90IGV4
cGVjdGVkIHRvIGJlIHRyYW5zZm9ybWVkLgotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHBzOi8v
d3d3LnlvdXR1YmUuY29tIiwgImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tIikpOwotCi0gICAgLy8g
QmFzaWMgWW91VHViZSB2aWRlbyBsaW5rcywgZXhwZWN0ZWQgdG8gYmUgdHJhbnNmb3JtZWQuCi0g
ICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly93d3cueW91dHViZS5jb20vdi9kUXc0dzlXZ1hj
USIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUSIpKTsKLSAgICBF
WFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvZFF3NHc5V2dYY1EiLCAi
aHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXN0KCJodHRwczovL3lvdXR1YmUuY29tL3YvZFF3NHc5V2dYY1EiLCAiaHR0cHM6Ly95
b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUSIpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJo
dHRwOi8veW91dHViZS5jb20vdi9kUXc0dzlXZ1hjUSIsICJodHRwOi8veW91dHViZS5jb20vZW1i
ZWQvZFF3NHc5V2dYY1EiKSk7Ci0KLSAgICAvLyBXaXRoIHN0YXJ0IHRpbWUsIHByZXNlcnZlZC4K
LSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvZFF3NHc5V2dY
Y1E/c3RhcnQ9NCIsICJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRP3N0
YXJ0PTQiKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92
L2RRdzR3OVdnWGNRP3N0YXJ0PTQmZnM9MSIsICJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVk
L2RRdzR3OVdnWGNRP3N0YXJ0PTQmZnM9MSIpKTsKLQotICAgIC8vIFdpdGggYW4gaW52YWxpZCBx
dWVyeSAoc2VlICYgaW5zdGVhZCBvZiA/KSwgd2UgcHJlc2VydmUgYW5kIGZpeCB0aGUgcXVlcnku
Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L2RRdzR3OVdn
WGNRJnN0YXJ0PTQiLCAiaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUT9z
dGFydD00IikpOwotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHA6Ly93d3cueW91dHViZS5jb20v
di9kUXc0dzlXZ1hjUSZzdGFydD00JmZzPTEiLCAiaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJl
ZC9kUXc0dzlXZ1hjUT9zdGFydD00JmZzPTEiKSk7Ci0KLSAgICAvLyBOb24tRmxhc2ggVVJMIGlz
IHVudG91Y2hlZC4KLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwczovL3d3dy55b3V0dWJlLmNv
bS9lbWJlZC9kUXc0dzlXZ1hjUSIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0
dzlXZ1hjUSIpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3LnlvdXR1YmUuY29t
L2VtYmVkL2RRdzR3OVdnWGNRIiwgImh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5
V2dYY1EiKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly95b3V0dWJlLmNvbS9lbWJl
ZC9kUXc0dzlXZ1hjUSIsICJodHRwczovL3lvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRIikp
OwotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHA6Ly95b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlX
Z1hjUSIsICJodHRwOi8veW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1EiKSk7Ci0gICAgLy8g
RXZlbiB3aXRoIGV4dHJhIHBhcmFtZXRlcnMuCi0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6
Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1E/c3RhcnQ9NCIsICJodHRwczovL3d3
dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUT9zdGFydD00IikpOwotICAgIEVYUEVDVF9U
UlVFKHRlc3QoImh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1E/ZW5hYmxl
anNhcGk9MSIsICJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRP2VuYWJs
ZWpzYXBpPTEiKSk7Ci0gICAgLy8gRXZlbiB3aXRoIGFuIGludmFsaWQgInF1ZXJ5Ii4KLSAgICBF
WFBFQ1RfVFJVRSh0ZXN0KCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hj
USZzdGFydD00IiwgImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRJnN0
YXJ0PTQiKSk7Ci0KLSAgICAvLyBEb24ndCB0cmFuc2Zvcm0gYW55dGhpbmcgd2l0aCBhIG5vbiAi
L3YvIiBwYXRoIGNvbXBvbmVudCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGRvbWFpbi4KLSAg
ICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9zb21ldGhpbmcvdi9k
UXc0dzlXZ1hjUSIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9zb21ldGhpbmcvdi9kUXc0dzlX
Z1hjUSIpKTsKLQotICAgIC8vIE5vbi1Zb3VUdWJlIGRvbWFpbiB3aG9zZSBwYXRoIGxvb2tzIGxp
a2UgYSBGbGFzaCB2aWRlbyBzaG91bGRuJ3QgYmUgdHJhbnNmb3JtZWQuCi0gICAgRVhQRUNUX1RS
VUUodGVzdCgiaHR0cHM6Ly93d3cubm90eW91dHViZS5jb20vdi9kUXc0dzlXZ1hjUSIsICJodHRw
czovL3d3dy5ub3R5b3V0dWJlLmNvbS92L2RRdzR3OVdnWGNRIikpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWI2Yzk3NWI5MzM2MjgyY2YyZjM0M2VlZGYzZmVh
ZTUxZDUzZWFiZi4uNzM4ZjA2MWVkZmEwZjJmZGJiYTFkZDM4ZjYxZTNiMjc5ZDY1OTUzNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEwLTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50IGFuZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L29iamVjdC1zcmMtbm9uZS1ibG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9vYmplY3Qtc3JjLW5vbmUtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0
bWw6IFJlbW92ZWQuCisKIDIwMjEtMTAtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBhdXRvZm9jdXMgSURMIGF0dHJpYnV0ZSBzaG91bGQgYmUgZXhwb3NlZCBv
biBhbGwgSFRNTCBvciBTVkcgZWxlbWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA5MTRmMzFhYjcxNTBkMTI3Yzg5MWFlZWUwYjkxN2MwM2JlMmEx
NzU5Li44MjNhMGYzYjFkYjVjOGEyMTllZTE4ZjQ4NzBiNzE1OTY1MTFmYjY5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzkzLDcgKzE3OTMsNiBA
QCBpbXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3BsdWdpbnMgWyBTa2lwIF0KIGltcG9ydGVkL2Js
aW5rL3BsdWdpbnMgWyBTa2lwIF0KIGpzL2RvbS9yZWZsZWN0LXNldC1vbnRvLWRvbS5odG1sIFsg
U2tpcCBdCiBzZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNyYy1ub25lLWJs
b2Nrcy1xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBTa2lwIF0KLXNlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9vYmplY3Qtc3JjLW5vbmUtYmxvY2tzLXlvdXR1YmUtcGx1
Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBTa2lwIF0KIHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9wbHVnaW5zLXR5cGVzLWFsbG93cy1xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0
bWwgWyBTa2lwIF0KIHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVz
LWFsbG93cy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC5odG1sIFsgU2tpcCBdCiBzZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MtcXVpY2t0aW1lLXBs
dWdpbi1yZXBsYWNlbWVudC13aXRob3V0LW1pbWUtdHlwZS5odG1sIFsgU2tpcCBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNy
Yy1ub25lLWJsb2Nrcy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNyYy1ub25l
LWJsb2Nrcy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMjIxNDE5ZTZlODA3NjY3YTY3YzBiYjYxNWZhNzUxZDZk
NjI0ZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L29iamVjdC1zcmMtbm9uZS1i
bG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMiArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCBodHRw
czovL3d3dy55b3V0dWJlLmNvbS92L1VGOHVSNlo2S0xjIGJlY2F1c2UgaXQgZG9lcyBub3QgYXBw
ZWFyIGluIHRoZSBvYmplY3Qtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9vYmplY3Qtc3JjLW5vbmUtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0
LXNyYy1ub25lLWJsb2Nrcy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTg1M2NlMjc2ZjE5YWUyY2IxYjk3NDI3ODA0YTFmNTY1
YWJhNzcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9vYmplY3Qtc3JjLW5vbmUt
YmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0ib2JqZWN0LXNyYyAnbm9u
ZSciPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1pZiAo
d2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFlvdVR1
YmVGbGFzaFBsdWdpblJlcGxhY2VtZW50RW5hYmxlZCh0cnVlKTsKLQotZnVuY3Rpb24gZG9uZSgp
Ci17Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLX0KLQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VjdXJpdHlwb2xpY3l2
aW9sYXRpb24iLCBkb25lLCBmYWxzZSk7Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPG9i
amVjdCB3aWR0aD0iNDI1IiBoZWlnaHQ9IjM1MCIgY2xhc3NpZD0iY2xzaWQ6ZDI3Y2RiNmUtYWU2
ZC0xMWNmLTk2YjgtNDQ0NTUzNTQwMDAwIgotICAgIGNvZGViYXNlPSJodHRwOi8vZG93bmxvYWQu
bWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNp
b249NiwwLDQwLDAiPgotICAgIDxlbWJlZCB3aWR0aD0iNDI1IiBoZWlnaHQ9IjM1MCIgdHlwZT0i
YXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5j
b20vdi9VRjh1UjZaNktMYyI+Ci08L29iamVjdD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="467277"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442712</attachid>
            <date>2021-10-28 09:54:06 -0700</date>
            <delta_ts>2021-10-29 14:10:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232400-20211028095405.patch</filename>
            <type>text/plain</type>
            <size>130556</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ4Mjk5MWYxNDg1ZGY5
NDU0YjBkNjA5ZmUxNDkyYTg2YjI1MWQ1ZC4uMjU1ZGYwNTRhNTEyNjFlNmU1MzE5YmE2YjBlNGJl
MDhmMTI1MGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI4ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3Zl
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IGFuZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXkgd2Vy
ZSBkaXNhYmxlZCBhdCBydW50aW1lIGluIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNzU5MTEvd2Via2l0CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1BsdWdp
blJlcGxhY2VtZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW06IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5TY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpyZXF1ZXN0T2JqZWN0KToKKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RyYXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpzY3JpcHRPYmplY3RGb3JQbHVnaW5S
ZXBsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpblJlcGxhY2VtZW50
U2NyaXB0T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TaGFkb3dQc2V1
ZG9JZHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRQbHVn
aW5SZXBsYWNlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvU2hhZG93UHNl
dWRvSWRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVu
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93
RWxlbWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKwogMjAy
MS0xMC0yNyAgS2lldCBIbyAgPHRobzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZGlzY3Jl
dGUgYW5pbWF0aW9uIHN1cHBvcnQgYmV0d2VlbiBQYXRoT3BlcmF0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggOTQzOTYzMGEzMjE4MTI3MGVlNjk0M2RiOTVlNjMxZmZhYTBlZmU1My4u
ZmZhZjczOTIwYTk1ZjE1M2I5MmQzOWUxNWVkZjJkYTAxNTQyYWNlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMjggIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQgYW5kIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanM6CisKIDIwMjEtMTAtMjcgIEJKIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0ZW5zaW9uIGlmcmFt
ZXMgbGVhayB3aGVuIGRpc2FibGluZyBhbiBleHRlbnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGEwOWMyOThiOGRlYjU0MjBhYWU3
NDk2YWFhYmU2Mjg0NDA2YmIzMzkuLjRiM2MwZGFlM2EyMjcwNTc3ZDRmNWUyY2RmMTliY2UwNGQ4
MGJlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdApAQCAtNDIyLDkgKzQyMiw2IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcGljdHVyZWlu
cGljdHVyZS9Eb2N1bWVudE9yU2hhZG93Um9vdCtQaWN0dXJlSW5QaWN0dXJlLmlkCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZl
bnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVv
RWxlbWVudCtQaWN0dXJlSW5QaWN0dXJlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9waWN0
dXJlaW5waWN0dXJlL1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaWRsCi0kKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzCi0kKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsCi0kKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuanMK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvcHVzaC1hcGkvUHVzaEVuY3J5cHRpb25LZXlOYW1lLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hFdmVudEluaXQuaWRsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDgyMmZjODVhMTE2
ZWFlNmNhNTA0YjZiNTE2ZTFlYTI2ODgyMDQwYzEuLjgwYWNlNzhkMmU5NTMzNDhiODU4NjY4NDcz
NTJkNzVhMmYxOWE3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNjI5LDggKzE2MjksNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1B1c2hTdWJzY3JpcHRpb25PcHRpb25zLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQdXNoU3Vic2Ny
aXB0aW9uT3B0aW9ucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1B1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0
LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDQW5zd2VyT3B0aW9ucy5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDQW5zd2Vy
T3B0aW9ucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ0NlcnRpZmljYXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDky
NGFiZTlhNzdmNzc5ZGMyMjU2ZTkzZWZkMzMyMDA0ZjU1Njk4ZS4uMjRhYTk2NDY1NjFmNGU2YjQy
NjZiYmQyN2M0ODFlNTAzMmI0M2I0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0zNTIsNyArMzUyLDYgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvcGljdHVyZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnQr
UGljdHVyZUluUGljdHVyZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9waWN0dXJlaW5w
aWN0dXJlL1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRW5jcnlwdGlvbktleU5hbWUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hFdmVudEluaXQuaWRsIFwKQEAgLTE2MTgsNyArMTYxNyw2IEBA
IFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTID0gXAogICAgICQoV2ViQ29yZSkvY3NzL3N2Zy5jc3Mg
XAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcyBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL3NoYWRvdy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MgXAogICAg
IE1vZGVybk1lZGlhQ29udHJvbHMuY3NzIFwKICAgICAkKFBPU1NJQkxFX0FERElUSU9OQUxfVVNF
Ul9BR0VOVF9TVFlMRV9TSEVFVFMpIFwKICMKQEAgLTE3MjcsNyArMTcyNSw2IEBAIE1vZGVybk1l
ZGlhQ29udHJvbHMuanMgOiAkKE1PREVSTl9NRURJQV9DT05UUk9MU19TQ1JJUFRTKQogIyB1c2Vy
IGFnZW50IHNjcmlwdHMKIAogVVNFUl9BR0VOVF9TQ1JJUFRTID0gXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmpzIFwKICAgICBNb2Rl
cm5NZWRpYUNvbnRyb2xzLmpzIFwKICMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzFhNmViYmU5
MzhiZWE3Yzk2MGViYWJjNGFlNzY2NmY1OGVlNDQ5Zi4uZDVjYjc1NWE1MmQ0MDE0ZmQ5OTExYzE1
NzkzZGY5ZGMzMGJiNzY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTEsOSArMTUxLDYgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvcGVybWlz
c2lvbnMvUGVybWlzc2lvbk9ic2VydmVyLmgKICAgICBNb2R1bGVzL3Blcm1pc3Npb25zL1Blcm1p
c3Npb25TdGF0ZS5oCiAKLSAgICBNb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAot
ICAgIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaAotCiAgICAgTW9k
dWxlcy9wdXNoLWFwaS9QdXNoUGVybWlzc2lvblN0YXRlLmgKICAgICBNb2R1bGVzL3B1c2gtYXBp
L1B1c2hTdWJzY3JpcHRpb25EYXRhLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDlkMjg1ZDE1ZGQ3OGJmZDQyM2QxN2FiMjRhYzVjZGU3NjZlY2M1Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiUmVuZGVyUHRyLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
ewotY2xhc3MgSlNPYmplY3Q7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRN
TFBsdWdJbkVsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJFbGVtZW50OwotY2xhc3MgUmVuZGVyU3R5bGU7
Ci1jbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247Ci1jbGFzcyBTZXR0aW5nczsKLWNsYXNzIFNoYWRv
d1Jvb3Q7Ci0KLWNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1
Z2luUmVwbGFjZW1lbnQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbHVnaW5SZXBsYWNlbWVu
dCgpID0gZGVmYXVsdDsKLQotICAgIHN0cnVjdCBJbnN0YWxsUmVzdWx0IHsKLSAgICAgICAgYm9v
bCBzdWNjZXNzOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBKU0M6OkpTVmFsdWUgc2Ny
aXB0T2JqZWN0IHsgfTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICB2aXJ0dWFsIEluc3RhbGxSZXN1
bHQgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSA9IDA7Ci19
OwotCi10eXBlZGVmIFJlZjxQbHVnaW5SZXBsYWNlbWVudD4gKCpDcmVhdGVQbHVnaW5SZXBsYWNl
bWVudCkoSFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKLXR5cGVkZWYgYm9vbCAoKlBs
dWdpblJlcGxhY2VtZW50U3VwcG9ydHNUeXBlKShjb25zdCBTdHJpbmcmKTsKLXR5cGVkZWYgYm9v
bCAoKlBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNGaWxlRXh0ZW5zaW9uKShjb25zdCBTdHJpbmcm
KTsKLXR5cGVkZWYgYm9vbCAoKlBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNVUkwpKGNvbnN0IFVS
TCYpOwotdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkRm9yU2V0dGluZ3Mp
KGNvbnN0IFNldHRpbmdzJik7Ci0KLWNsYXNzIFJlcGxhY2VtZW50UGx1Z2luIHsKLXB1YmxpYzoK
LSAgICBSZXBsYWNlbWVudFBsdWdpbihDcmVhdGVQbHVnaW5SZXBsYWNlbWVudCBjb25zdHJ1Y3Rv
ciwgUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLCBQbHVnaW5SZXBs
YWNlbWVudFN1cHBvcnRzRmlsZUV4dGVuc2lvbiBzdXBwb3J0c0ZpbGVFeHRlbnNpb24sIFBsdWdp
blJlcGxhY2VtZW50U3VwcG9ydHNVUkwgc3VwcG9ydHNVUkwsIFBsdWdpblJlcGxhY2VtZW50RW5h
YmxlZEZvclNldHRpbmdzIGlzRW5hYmxlZEJ5U2V0dGluZ3MpCi0gICAgICAgIDogbV9jb25zdHJ1
Y3Rvcihjb25zdHJ1Y3RvcikKLSAgICAgICAgLCBtX3N1cHBvcnRzVHlwZShzdXBwb3J0c1R5cGUp
Ci0gICAgICAgICwgbV9zdXBwb3J0c0ZpbGVFeHRlbnNpb24oc3VwcG9ydHNGaWxlRXh0ZW5zaW9u
KQotICAgICAgICAsIG1fc3VwcG9ydHNVUkwoc3VwcG9ydHNVUkwpCi0gICAgICAgICwgbV9pc0Vu
YWJsZWRCeVNldHRpbmdzKGlzRW5hYmxlZEJ5U2V0dGluZ3MpCi0gICAgewotICAgIH0KLQotICAg
IGV4cGxpY2l0IFJlcGxhY2VtZW50UGx1Z2luKGNvbnN0IFJlcGxhY2VtZW50UGx1Z2luJiBvdGhl
cikKLSAgICAgICAgOiBtX2NvbnN0cnVjdG9yKG90aGVyLm1fY29uc3RydWN0b3IpCi0gICAgICAg
ICwgbV9zdXBwb3J0c1R5cGUob3RoZXIubV9zdXBwb3J0c1R5cGUpCi0gICAgICAgICwgbV9zdXBw
b3J0c0ZpbGVFeHRlbnNpb24ob3RoZXIubV9zdXBwb3J0c0ZpbGVFeHRlbnNpb24pCi0gICAgICAg
ICwgbV9zdXBwb3J0c1VSTChvdGhlci5tX3N1cHBvcnRzVVJMKQotICAgICAgICAsIG1faXNFbmFi
bGVkQnlTZXR0aW5ncyhvdGhlci5tX2lzRW5hYmxlZEJ5U2V0dGluZ3MpCi0gICAgewotICAgIH0K
LQotICAgIFJlZjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiBl
bGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yKGVsZW1lbnQs
IHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsgfQotICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNUeXBlKG1pbWVUeXBl
KTsgfQotICAgIGJvb2wgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzRmlsZUV4dGVuc2lvbihleHRlbnNpb24pOyB9
Ci0gICAgYm9vbCBzdXBwb3J0c1VSTChjb25zdCBVUkwmIHVybCkgY29uc3QgeyByZXR1cm4gbV9z
dXBwb3J0c1VSTCh1cmwpOyB9Ci0gICAgYm9vbCBpc0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNl
dHRpbmdzJiBzZXR0aW5ncykgY29uc3QgeyByZXR1cm4gbV9pc0VuYWJsZWRCeVNldHRpbmdzKHNl
dHRpbmdzKTsgfTsKLQotcHJpdmF0ZToKLSAgICBDcmVhdGVQbHVnaW5SZXBsYWNlbWVudCBtX2Nv
bnN0cnVjdG9yOwotICAgIFBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNUeXBlIG1fc3VwcG9ydHNU
eXBlOwotICAgIFBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNGaWxlRXh0ZW5zaW9uIG1fc3VwcG9y
dHNGaWxlRXh0ZW5zaW9uOwotICAgIFBsdWdpblJlcGxhY2VtZW50U3VwcG9ydHNVUkwgbV9zdXBw
b3J0c1VSTDsKLSAgICBQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWRGb3JTZXR0aW5ncyBtX2lzRW5h
YmxlZEJ5U2V0dGluZ3M7Ci19OwotCi10eXBlZGVmIHZvaWQgKCpQbHVnaW5SZXBsYWNlbWVudFJl
Z2lzdHJhcikoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNz
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMTk3NDdlMzg0NjIxMTBh
MTUzNThlMWYyNWI4NGFiYTBmMmY4MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1lbWJlZDo6LXdlYmtpdC1wbHVnaW4tcmVwbGFj
ZW1lbnQsCi1vYmplY3Q6Oi13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50Ci17Ci0gICAgcG9zaXRp
b246IHJlbGF0aXZlOwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICB3aWR0aDogMTAw
JTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMjAwZjE1N2ExMTY2NzAxNWU1OTY5ZTc2YzRiYjZhZjhl
NTVlMmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiUGx1Z2luUmVw
bGFjZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERPTVdyYXBwZXJXb3JsZDsKLWNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7Ci0K
LWNsYXNzIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50IGZpbmFsIDogcHVibGljIFBsdWdpblJl
cGxhY2VtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlclBsdWdpblJlcGxh
Y2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0cmFyKTsKLQotICAgIHZpcnR1YWwgflF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50KCk7Ci0KLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbW92aWVT
aXplKCkgY29uc3Q7Ci0gICAgdm9pZCBwb3N0RXZlbnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBI
VE1MVmlkZW9FbGVtZW50KiBwYXJlbnRFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQu
Z2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudChIVE1M
UGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIHN0YXRpYyBSZWY8UGx1Z2luUmVwbGFj
ZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9vbCBp
c0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJik7Ci0KLSAgICBJbnN0YWxsUmVzdWx0
IGluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JikgZmluYWw7Ci0KLSAgICBib29sIHdpbGxD
cmVhdGVSZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0gICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwot
Ci0gICAgYm9vbCBlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCk7Ci0gICAgRE9NV3Jh
cHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKCk7Ci0KLSAgICBXZWFrUHRyPEhUTUxQbHVnSW5FbGVt
ZW50PiBtX3BhcmVudEVsZW1lbnQ7Ci0gICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fbWVk
aWFFbGVtZW50OwotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IG1fbmFtZXM7Ci0gICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gbV92YWx1ZXM7Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFhMDQ1ZmYwNjYyNzhiOTE1ZjY4OTBh
YmM3MGJkNGU1MGQyMTE4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1bCi0gICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbG9uZyBtb3ZpZVNpemU7Ci0gICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRl
IGFueSB0aW1lZE1ldGFEYXRhOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBhbnkgYWNjZXNzTG9nOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBh
bnkgZXJyb3JMb2c7Ci0gICAgdW5kZWZpbmVkIHBvc3RFdmVudChET01TdHJpbmcgZXZlbnROYW1l
KTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU1OWY4MzViMGUyMmM1ODJmMTA3ZDZiYWYzYTE1MDg1ZmRlOWIxYmIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMzUwICswLDAgQEAKLQotZnVuY3Rpb24gY3JlYXRlUGx1Z2luUmVwbGFjZW1lbnQocm9vdCwg
cGFyZW50LCBob3N0LCBhdHRyaWJ1dGVOYW1lcywgYXR0cmlidXRlVmFsdWVzKQotewotICAgIHJl
dHVybiBuZXcgUmVwbGFjZW1lbnQocm9vdCwgcGFyZW50LCBob3N0LCBhdHRyaWJ1dGVOYW1lcywg
YXR0cmlidXRlVmFsdWVzKTsKLX07Ci0KLWZ1bmN0aW9uIFJlcGxhY2VtZW50KHJvb3QsIHBhcmVu
dCwgaG9zdCwgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZVZhbHVlcykKLXsKLSAgICB0aGlzLnJv
b3QgPSByb290OwotICAgIHRoaXMucGFyZW50ID0gcGFyZW50OwotICAgIHRoaXMuaG9zdCA9IGhv
c3Q7Ci0gICAgdGhpcy5saXN0ZW5lcnMgPSB7fTsKLSAgICB0aGlzLnNjcmlwdE9iamVjdCA9IHt9
OwotCi0gICAgdGhpcy5hdXRvRXhpdEZ1bGxTY3JlZW4gPSB0cnVlOwotICAgIHRoaXMucG9zdEV2
ZW50cyA9IGZhbHNlOwotICAgIHRoaXMuaGVpZ2h0ID0gMDsKLSAgICB0aGlzLndpZHRoID0gMDsK
LSAgICB0aGlzLnNyYyA9ICIiOwotICAgIHRoaXMuYXV0b2hyZWYgPSBmYWxzZTsKLSAgICB0aGlz
LmhyZWYgPSAiIjsKLSAgICB0aGlzLnF0c3JjID0gIiI7Ci0gICAgdGhpcy5iYXNlVXJsID0gIiI7
Ci0gICAgdGhpcy50YXJnZXQgPSAiIjsKLQotICAgIHRoaXMuY3JlYXRlVmlkZW9FbGVtZW50KGF0
dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVWYWx1ZXMpOwotICAgIHRoaXMuY3JlYXRlU2NyaXB0SW50
ZXJmYWNlKCk7Ci19OwotCi1SZXBsYWNlbWVudC5wcm90b3R5cGUgPSB7Ci0KLSAgICBIYW5kbGVk
VmlkZW9FdmVudHM6IHsKLSAgICAgICAgbG9hZHN0YXJ0OiAnaGFuZGxlTG9hZFN0YXJ0JywKLSAg
ICAgICAgZXJyb3I6ICdoYW5kbGVFcnJvcicsCi0gICAgICAgIGxvYWRlZG1ldGFkYXRhOiAnaGFu
ZGxlTG9hZGVkTWV0YURhdGEnLAotICAgICAgICBjYW5wbGF5OiAncXRfY2FucGxheScsCi0gICAg
ICAgIGNhbnBsYXl0aHJvdWdoOiAncXRfY2FucGxheXRocm91Z2gnLAotICAgICAgICBwbGF5OiAn
cXRfcGxheScsCi0gICAgICAgIHBhdXNlOiAncXRfcGF1c2UnLAotICAgICAgICBlbmRlZDogJ2hh
bmRsZUVuZGVkJywKLSAgICAgICAgd2Via2l0ZnVsbHNjcmVlbmNoYW5nZTogJ2hhbmRsZUZ1bGxz
Y3JlZW5DaGFuZ2UnLAotICAgIH0sCi0KLSAgICBBdHRyaWJ1dGVNYXA6IHsKLSAgICAgICAgYXV0
b2V4aXRmdWxsc2NyZWVuOiAnYXV0b0V4aXRGdWxsU2NyZWVuJywKLSAgICAgICAgcG9zdGRvbWV2
ZW50czogJ3Bvc3RFdmVudHMnLAotICAgICAgICBoZWlnaHQ6ICdoZWlnaHQnLAotICAgICAgICB3
aWR0aDogJ3dpZHRoJywKLSAgICAgICAgcXRzcmM6ICdxdHNyYycsCi0gICAgICAgIHNyYzogJ3Ny
YycsCi0gICAgICAgIGFpcnBsYXk6ICd4LXdlYmtpdC1haXJwbGF5PScsCi0gICAgICAgIGhyZWY6
ICdocmVmJywKLSAgICAgICAgdGFyZ2V0OiAndGFyZ2V0JywKLSAgICB9LAotICAgIAotICAgIE1l
dGhvZE1hcDogewotICAgICAgICBTZXRVUkwgOiAnc2V0VVJMJywKLSAgICAgICAgR2V0VVJMIDog
J3VybCcsCi0gICAgICAgIFBsYXkgOiAncGxheScsCi0gICAgICAgIFN0b3AgOiAncGF1c2UnLAot
ICAgICAgICBHZXRSYXRlIDogJ3JhdGUnLAotICAgICAgICBTZXRSYXRlIDogJ3NldFJhdGUnLAot
ICAgICAgICBJc0Z1bGxTY3JlZW4gOiAnaXNGdWxsU2NyZWVuJywKLSAgICAgICAgRXhpdEZ1bGxT
Y3JlZW4gOiAnZXhpdEZ1bGxTY3JlZW4nLAotICAgICAgICBHZXRQbHVnaW5TdGF0dXMgOiAncGx1
Z2luU3RhdHVzJywKLSAgICAgICAgR2V0VGltZSA6ICdjdXJyZW50VGltZScsCi0gICAgICAgIFNl
dFRpbWUgOiAnc2V0Q3VycmVudFRpbWUnLAotICAgICAgICBTZWVrVG9EYXRlIDogJ3NlZWtUb0Rh
dGUnLAotICAgICAgICBHZXREYXRlIDogJ2RhdGUnLAotICAgICAgICBHZXREdXJhdGlvbiA6ICdk
dXJhdGlvbicsCi0gICAgICAgIEdldFRpbWVTY2FsZSA6ICd0aW1lU2NhbGUnLAotICAgICAgICBH
ZXRNYXhUaW1lTG9hZGVkIDogJ21heFRpbWVMb2FkZWQnLAotICAgICAgICBHZXRNYXhCeXRlc0xv
YWRlZCA6ICdtYXhCeXRlc0xvYWRlZCcsCi0gICAgICAgIEdldE1vdmllU2l6ZSA6ICdtb3ZpZVNp
emUnLAotICAgICAgICBHZXRUaW1lZE1ldGFkYXRhVXBkYXRlcyA6ICd0aW1lZE1ldGFkYXRhVXBk
YXRlcycsCi0gICAgICAgIEdldEFjY2Vzc0xvZyA6ICdhY2Nlc3NMb2cnLAotICAgICAgICBHZXRF
cnJvckxvZyA6ICdlcnJvckxvZycsCi0gICAgfSwKLQotICAgIFRpbWVTY2FsZTogMzAwMDAsCi0K
LSAgICBjcmVhdGVWaWRlb0VsZW1lbnQ6IGZ1bmN0aW9uKGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1
dGVWYWx1ZXMpCi0gICAgewotICAgICAgICB2YXIgdmlkZW8gPSB0aGlzLnZpZGVvID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKLQotICAgICAgICBmb3IgKG5hbWUgaW4gdGhpcy5I
YW5kbGVkVmlkZW9FdmVudHMpCi0gICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKG5h
bWUsIHRoaXMsIGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhdHRy
aWJ1dGVOYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhp
cy5BdHRyaWJ1dGVNYXBbYXR0cmlidXRlTmFtZXNbaV1dOwotICAgICAgICAgICAgaWYgKHRoaXNb
cHJvcGVydHldICE9IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICB0aGlzW3Byb3BlcnR5XSA9
IGF0dHJpYnV0ZVZhbHVlc1tpXTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpZGVvLnNldEF0dHJp
YnV0ZSgncHNldWRvJywgJy13ZWJraXQtcGx1Z2luLXJlcGxhY2VtZW50Jyk7Ci0gICAgICAgIHZp
ZGVvLnNldEF0dHJpYnV0ZSgnY29udHJvbHMnLCAnY29udHJvbHMnKTsKLSAgICAgICAgdGhpcy5z
ZXRTdGF0dXMoJ1dhaXRpbmcnKTsKLQotICAgICAgICB2YXIgc3JjID0gdGhpcy5yZXNvbHZlUmVs
YXRpdmVUb1VybCh0aGlzLnNyYywgIiIpOwotICAgICAgICB0aGlzLmJhc2VVcmwgPSBzcmM7Ci0K
LSAgICAgICAgLy8gVGhlICdxdHNyYycgYXR0cmlidXRlIGlzIHVzZWQgd2hlbiBhIHBhZ2UgYXV0
aG9yIHdhbnRlZCB0byBhbHdheXMgdXNlIHRoZSBRdWlja1RpbWUgcGx1Zy1pbgotICAgICAgICAv
LyB0byBsb2FkIGEgbWVkaWEgdHlwZSBldmVuIGlmIGFub3RoZXIgcGx1Zy1pbiB3YXMgcmVnaXN0
ZXJlZCBmb3IgdGhhdCB0eXBlLiBJdCB0ZWxscyB0aGUKLSAgICAgICAgLy8gcGx1Zy1pbiB0byBp
Z25vcmUgdGhlICdzcmMnIHVybCwgYW5kIHRvIGxvYWQgdGhlICdxdHNyYycgdXJsIGluc3RlYWQu
Ci0gICAgICAgIGlmICh0aGlzLnF0c3JjKQotICAgICAgICAgICAgc3JjID0gdGhpcy5yZXNvbHZl
UmVsYXRpdmVUb1VybCh0aGlzLnF0c3JjLCB0aGlzLnNyYyk7Ci0gICAgICAgIGlmICh0aGlzLmhy
ZWYgJiYgdGhpcy50YXJnZXQpIHsKLSAgICAgICAgICAgIHNyYyA9IHRoaXMucmVzb2x2ZVJlbGF0
aXZlVG9VcmwodGhpcy5ocmVmLCB0aGlzLnNyYyk7Ci0gICAgICAgICAgICB2aWRlby5wb3N0ZXIg
PSB0aGlzLnNyYzsKLSAgICAgICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgncHJlbG9hZCcsICdu
b25lJyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzcmMubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICB0aGlzLnNldFN0YXR1cygnVmFsaWRhdGluZycpOwotICAgICAgICAgICAgdGhp
cy52aWRlby5zcmMgPSBzcmM7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnJvb3QuYXBwZW5k
Q2hpbGQodmlkZW8pOwotICAgIH0sCi0KLSAgICByZXNvbHZlUmVsYXRpdmVUb1VybDogZnVuY3Rp
b24odXJsLCBiYXNlVXJsKQotICAgIHsKLSAgICAgICAgaWYgKHVybC5pbmRleE9mKCc6Ly8nKSAh
PSAtMSkKLSAgICAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgICAgIGlmIChiYXNlVXJsLmluZGV4
T2YoJzovLycpID09IC0xKQotICAgICAgICAgICAgYmFzZVVybCA9IHRoaXMucmVzb2x2ZVJlbGF0
aXZlVG9VcmwoYmFzZVVybCwgZG9jdW1lbnQuYmFzZVVSSSk7Ci0KLSAgICAgICAgdmFyIGJhc2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiYXNlJyk7Ci0gICAgICAgIGJhc2UuaHJlZiA9IGJh
c2VVcmw7Ci0gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYmFzZSk7Ci0KLSAgICAg
ICAgdmFyIHJlc29sdmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwotICAgICAgICBy
ZXNvbHZlci5ocmVmID0gdXJsOwotICAgICAgICB1cmwgPSByZXNvbHZlci5ocmVmOwotCi0gICAg
ICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYmFzZSk7Ci0gICAgICAgIGJhc2UgPSBudWxs
OwotCi0gICAgICAgIHJldHVybiB1cmw7Ci0gICAgfSwKLSAKLSAgICBjcmVhdGVTY3JpcHRJbnRl
cmZhY2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZvciAobmFtZSBpbiB0aGlzLk1ldGhv
ZE1hcCkgewotICAgICAgICAgICAgdmFyIG1ldGhvZE5hbWUgPSB0aGlzLk1ldGhvZE1hcFtuYW1l
XTsKLSAgICAgICAgICAgIHRoaXMuc2NyaXB0T2JqZWN0W25hbWVdID0gdGhpc1ttZXRob2ROYW1l
XS5iaW5kKHRoaXMpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGhhbmRsZUV2ZW50OiBmdW5j
dGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMudmlk
ZW8pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZh
ciBldmVudERhdGEgPSB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50c1tldmVudC50eXBlXTsKLSAgICAg
ICAgICAgIGlmICghZXZlbnREYXRhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgaWYgKHRoaXNbZXZlbnREYXRhXSAmJiB0eXBlb2YgdGhpc1tldmVudERhdGFdID09PSAi
ZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgIHRoaXNbZXZlbnREYXRhXS5jYWxsKHRoaXMsIGV2
ZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnBvc3RFdmVudChl
dmVudERhdGEpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
Y29uc29sZSkKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOwotICAgICAgICB9Ci0g
ICAgfSwKLQotICAgIHBvc3RFdmVudDogZnVuY3Rpb24oZXZlbnROYW1lKQotICAgIHsKLSAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICh0aGlzLnBvc3RFdmVudHMpCi0gICAgICAgICAgICAg
ICAgdGhpcy5ob3N0LnBvc3RFdmVudChldmVudE5hbWUpOwotICAgICAgICB9IGNhdGNoKGUpIHsg
fQotICAgIH0sCi0KLSAgICBzZXRTdGF0dXM6IGZ1bmN0aW9uKHN0YXR1cykKLSAgICB7Ci0gICAg
ICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwotICAgIH0sCi0KLSAgICBoYW5kbGVMb2FkZWRNZXRh
RGF0YTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnNldFN0YXR1cygnUGxh
eWFibGUnKTsKLSAgICAgICAgdGhpcy5wb3N0RXZlbnQoJ3F0X3ZhbGlkYXRlZCcpOwotICAgICAg
ICB0aGlzLnBvc3RFdmVudCgncXRfbG9hZGVkZmlyc3RmcmFtZScpOwotICAgICAgICB0aGlzLnBv
c3RFdmVudCgncXRfbG9hZGVkbWV0YWRhdGEnKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRnVsbHNj
cmVlbkNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnBvc3RFdmVu
dCh0aGlzLmlzRnVsbFNjcmVlbigpID8gJ3F0X2VudGVyZnVsbHNjcmVlbicgOiAncXRfZXhpdGZ1
bGxzY3JlZW4nKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgdGhpcy5zZXRTdGF0dXMoJ0Vycm9yJyk7Ci0gICAgICAgIHRoaXMucG9z
dEV2ZW50KCdxdF9lcnJvcicpOwotICAgIH0sCi0KLSAgICBoYW5kbGVMb2FkU3RhcnQ6ZnVuY3Rp
b24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy52aWRlby5wb3N0ZXIpCi0gICAgICAg
ICAgICB0aGlzLnNldFN0YXR1cygnV2FpdGluZycpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLnNldFN0YXR1cygnTG9hZGluZycpOwotICAgICAgICB0aGlzLnBvc3RFdmVudCgncXRf
YmVnaW4nKTsKLSAgICB9LAotCi0gICAgaGFuZGxlRW5kZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdGhpcy5wb3N0RXZlbnQoJ3F0X2VuZGVkJyk7Ci0gICAgICAgIGlmICh0aGlz
LmlzRnVsbFNjcmVlbigpICYmIHRoaXMuYXV0b0V4aXRGdWxsU2NyZWVuKQotICAgICAgICAgICAg
ZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKLSAgICB9LAotCi0gICAgaXNGdWxsU2Ny
ZWVuOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gZG9jdW1lbnQud2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50ID09PSB0aGlzLnZpZGVvOwotICAgIH0sCi0KLSAgICBzZXRV
Ukw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2V0U3RhdHVzKCdWYWxpZGF0
aW5nJyk7Ci0gICAgICAgIGlmICh1cmwubGVuZ3RoKQotICAgICAgICAgICAgdXJsID0gdGhpcy5y
ZXNvbHZlUmVsYXRpdmVUb1VybCh1cmwsIHRoaXMuYmFzZVVybCk7Ci0gICAgICAgIHRoaXMudmlk
ZW8uc3JjID0gdXJsOwotICAgIH0sCi0gICAgCi0gICAgdXJsOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jdXJyZW50U3JjOwotICAgIH0sCi0gICAgCi0gICAg
cGxheTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7Ci0gICAg
fSwKLSAgICAKLSAgICBwYXVzZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy52aWRl
by5wbGF5YmFja1JhdGUgPSAwOwotICAgICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7Ci0gICAgfSwK
LSAgICAKLSAgICByYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy52
aWRlby5wYXVzZWQgPyAwIDogMTsKLSAgICB9LAotICAgIAotICAgIHNldFJhdGU6IGZ1bmN0aW9u
KHJhdGUpCi0gICAgewotICAgICAgICBpZiAocmF0ZSkKLSAgICAgICAgICAgIHRoaXMudmlkZW8u
cGxheSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnZpZGVvLnBhdXNlKCk7Ci0g
ICAgfSwKLSAgICAKLSAgICBleGl0RnVsbFNjcmVlbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKLSAgICB9LAotICAgIAotICAgIHBs
dWdpblN0YXR1czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVz
OwotICAgIH0sCi0KLSAgICBjdXJyZW50VGltZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMudmlkZW8uY3VycmVudFRpbWUgKiB0aGlzLlRpbWVTY2FsZTsKLSAgICB9LAot
Ci0gICAgc2V0Q3VycmVudFRpbWU6IGZ1bmN0aW9uKHRpbWUpCi0gICAgewotICAgICAgICB0aGlz
LnZpZGVvLmN1cnJlbnRUaW1lID0gdGltZSAvIHRoaXMuVGltZVNjYWxlOwotICAgIH0sCi0KLSAg
ICBzZWVrVG9EYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogbm90IGlt
cGxlbWVudGVkIHlldC4KLSAgICB9LAotICAgIAotICAgIGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOwotICAgIH0sCi0gICAgCi0gICAgZHVyYXRpb246
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnZpZGVvLmR1cmF0aW9uICog
dGhpcy5UaW1lU2NhbGU7Ci0gICAgfSwKLSAgICAKLSAgICB0aW1lU2NhbGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIC8vIE5vdGU6IFF1aWNrVGltZSBtb3ZpZXMgYW5kIE1QRUctNCBmaWxl
cyBoYXZlIGEgdGltZXNjYWxlLCBidXQgaXQgaXMgbm90IGV4cG9zZWQgYnkgYWxsIG1lZGlhIGVu
Z2luZXMuCi0gICAgICAgIC8vIDMwMDAwIHdvcmtzIHdlbGwgd2l0aCBjb21tb24gZnJhbWUgcmF0
ZXMsIGVnLiAyOS45NyBOVFNDIGNhbiBiZSByZXByZXNlbnRlZCBhY2N1cmF0ZWx5IGFzIGEgdGlt
ZQotICAgICAgICAvLyBzY2FsZSBvZiAzMDAwMCBhbmQgZnJhbWUgZHVyYXRpb24gb2YgMTAwMS4K
LSAgICAgICAgcmV0dXJuIDMwMDAwOwotICAgIH0sCi0gICAgCi0gICAgbWF4VGltZUxvYWRlZDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudmlkZW8uZHVyYXRpb24gKiB0
aGlzLlRpbWVTY2FsZTsKLSAgICB9LAotICAgIAotICAgIG1heEJ5dGVzTG9hZGVkOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB2YXIgcGVyY2VudExvYWRlZCA9IHRoaXMudmlkZW8uYnVmZmVy
ZWQuZW5kKDApIC8gdGhpcy52aWRlby5kdXJhdGlvbjsKLSAgICAgICAgcmV0dXJuIHBlcmNlbnRM
b2FkZWQgKiB0aGlzLm1vdmllU2l6ZSgpOwotICAgIH0sCi0gICAgCi0gICAgbW92aWVTaXplOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
aG9zdC5tb3ZpZVNpemU7Ci0gICAgICAgIH0gY2F0Y2goZSkgeyB9Ci0KLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfSwKLSAgICAKLSAgICB0aW1lZE1ldGFkYXRhVXBkYXRlczogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmhvc3QudGltZWRN
ZXRhRGF0YTsKLSAgICAgICAgfSBjYXRjaChlKSB7IH0KLQotICAgICAgICByZXR1cm4gbnVsbDsK
LSAgICB9LAotICAgIAotICAgIGFjY2Vzc0xvZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmhvc3QuYWNjZXNzTG9nOwotICAgICAgICB9
IGNhdGNoKGUpIHsgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0gICAgCi0gICAg
ZXJyb3JMb2c6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5ob3N0LmVycm9yTG9nOwotICAgICAgICB9IGNhdGNoKGUpIHsgfQotCi0gICAg
ICAgIHJldHVybiBudWxsOwotICAgIH0sCi19OwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYzEwMmEyNTc5NjRjYjIwMmRmMDE0MzlkZDky
NmE4ZGVhYjlhOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQot
I2ltcG9ydCAiUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCIKLQotI2ltcG9ydCAiQ29tbW9u
Vk0uaCIKLSNpbXBvcnQgIkV2ZW50LmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiSFRN
TFBsdWdJbkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxWaWRlb0VsZW1lbnQuaCIKLSNpbXBvcnQg
IkpTRE9NQmluZGluZy5oIgotI2ltcG9ydCAiSlNET01Db252ZXJ0TnVsbGFibGUuaCIKLSNpbXBv
cnQgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgotI2ltcG9ydCAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgotI2ltcG9ydCAiSlNET01HbG9iYWxPYmplY3QuaCIKLSNpbXBvcnQgIkpTSFRNTFZpZGVv
RWxlbWVudC5oIgotI2ltcG9ydCAiSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIgotI2lt
cG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiUmVuZGVyRWxlbWVudC5oIgotI2ltcG9ydCAiU2Ny
aXB0Q29udHJvbGxlci5oIgotI2ltcG9ydCAiU2NyaXB0U291cmNlQ29kZS5oIgotI2ltcG9ydCAi
U2V0dGluZ3MuaCIKLSNpbXBvcnQgIlNoYWRvd1Jvb3QuaCIKLSNpbXBvcnQgIlVzZXJBZ2VudFNj
cmlwdHMuaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk1ldGFkYXRhSXRlbS5oPgotI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU1N0cmluZy5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2Fz
dC5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgotI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgot
I2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMg
SlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCwgSlNDb250ZXh0ICopOwotc3Rh
dGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0
YUl0ZW0gKiwgSlNDb250ZXh0ICopOwotI2VuZGlmCi0KLXN0YXRpYyBTdHJpbmcgcXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHNjcmlwdChTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudEphdmFTY3JpcHQsIHNpemVvZihRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudEphdmFTY3JpcHQpKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKLX0KLQotdm9pZCBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6cmVnaXN0ZXJQbHVnaW5SZXBsYWNlbWVudChQbHVnaW5SZXBs
YWNlbWVudFJlZ2lzdHJhciByZWdpc3RyYXIpCi17Ci0gICAgcmVnaXN0cmFyKFJlcGxhY2VtZW50
UGx1Z2luKGNyZWF0ZSwgc3VwcG9ydHNNaW1lVHlwZSwgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uLCBz
dXBwb3J0c1VSTCwgaXNFbmFibGVkQnlTZXR0aW5ncykpOwotfQotCi1SZWY8UGx1Z2luUmVwbGFj
ZW1lbnQ+IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGUoSFRNTFBsdWdJbkVsZW1l
bnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudChwbHVnaW4sIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSk7
Ci19Ci0KLWJvb2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzTWltZVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgYXV0byB0eXBlSGFz
aCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiB7Ci0gICAgICAgICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCIsICJhcHBs
aWNhdGlvbi94LW1wZWd1cmwiLCAiYXVkaW8vM2dwcCIsICJhdWRpby8zZ3BwMiIsICJhdWRpby9h
YWMiLCAiYXVkaW8vYWlmZiIsCi0gICAgICAgICJhdWRpby9hbXIiLCAiYXVkaW8vYmFzaWMiLCAi
YXVkaW8vbXAzIiwgImF1ZGlvL21wNCIsICJhdWRpby9tcGVnIiwgImF1ZGlvL21wZWczIiwgImF1
ZGlvL21wZWd1cmwiLCAiYXVkaW8vc2NwbHMiLAotICAgICAgICAiYXVkaW8vd2F2IiwgImF1ZGlv
L3gtYWFjIiwgImF1ZGlvL3gtYWlmZiIsICJhdWRpby94LWNhZiIsICJhdWRpby94LW00YSIsICJh
dWRpby94LW00YiIsICJhdWRpby94LW00cCIsCi0gICAgICAgICJhdWRpby94LW00ciIsICJhdWRp
by94LW1wMyIsICJhdWRpby94LW1wZWciLCAiYXVkaW8veC1tcGVnMyIsICJhdWRpby94LW1wZWd1
cmwiLCAiYXVkaW8veC1zY3BscyIsICJhdWRpby94LXdhdiIsCi0gICAgICAgICJ2aWRlby8zZ3Bw
IiwgInZpZGVvLzNncHAyIiwgInZpZGVvL21wNCIsICJ2aWRlby9xdWlja3RpbWUiLCAidmlkZW8v
eC1tNHYiCi0gICAgfSk7Ci0gICAgcmV0dXJuIHR5cGVIYXNoLmdldCgpLmNvbnRhaW5zKG1pbWVU
eXBlKTsKLX0KLQotYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNGaWxl
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQotewotICAgIHN0YXRpYyBjb25zdCBh
dXRvIGV4dGVuc2lvblNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7Ci0gICAgICAgICIzZzIiLCAiM2dwIiwgIjNncDIiLCAi
M2dwcCIsICJhYWMiLCAiYWR0cyIsICJhaWYiLCAiYWlmYyIsICJhaWZmIiwgIkFNUiIsICJhdSIs
ICJid2YiLCAiY2FmIiwgImNkZGEiLCAibTN1IiwKLSAgICAgICAgIm0zdTgiLCAibTRhIiwgIm00
YiIsICJtNHAiLCAibTRyIiwgIm00diIsICJtb3YiLCAibXAzIiwgIm1wMyIsICJtcDQiLCAibXBl
ZyIsICJtcGciLCAibXF2IiwgInBscyIsICJxdCIsCi0gICAgICAgICJzbmQiLCAic3dhIiwgInRz
IiwgInVsdyIsICJ3YXYiCi0gICAgfSk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvblNldC5nZXQoKS5j
b250YWlucyhleHRlbnNpb24pOwotfQotCi1ib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
Ojppc0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICBy
ZXR1cm4gc2V0dGluZ3MucXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKCk7Ci19Ci0K
LVF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudChI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQotICAgIDogbV9wYXJlbnRFbGVt
ZW50KHBsdWdpbikKLSAgICAsIG1fbmFtZXMocGFyYW1OYW1lcykKLSAgICAsIG1fdmFsdWVzKHBh
cmFtVmFsdWVzKQotewotfQotCi1RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6flF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50KCkgPSBkZWZhdWx0OwotCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1M
UGx1Z0luRWxlbWVudCYgcGx1Z2luLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQotewotICAgIEFTU0VSVF9VTlVTRUQocGx1
Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7Ci0KLSAgICBpZiAobV9tZWRpYUVsZW1l
bnQpCi0gICAgICAgIHJldHVybiBtX21lZGlhRWxlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7Ci0KLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQotRE9NV3JhcHBlcldvcmxkJiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aXNv
bGF0ZWRXb3JsZCgpCi17Ci0gICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3Js
ZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKGNvbW1vblZNKCksIERPTVdyYXBwZXJXb3JsZDo6
VHlwZTo6SW50ZXJuYWwsICJRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudCJfcykubGVha1JlZigp
OwotICAgIHJldHVybiBpc29sYXRlZFdvcmxkOwotfQotCi1ib29sIFF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkKLXsKLSAgICBpZiAo
IW1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9IGlzb2xhdGVkV29ybGQoKTsK
LSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHRDb250cm9sbGVyID0gbV9wYXJlbnRFbGVtZW50
LT5kb2N1bWVudCgpLmZyYW1lKCktPnNjcmlwdCgpOwotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdENvbnRy
b2xsZXIuZ2xvYmFsT2JqZWN0KHdvcmxkKSk7Ci0gICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Ci0gICAgCi0gICAgSlNDOjpKU1ZhbHVl
IHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVQbHVnaW5SZXBsYWNl
bWVudCIpKTsKLSAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0NhbGxhYmxlKHZtKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUlu
V29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50U2NyaXB0KCkpLCB3b3JsZCk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIC0gRXhjZXB0aW9uIHdoZW4gZXZh
bHVhdGluZyBRdWlja1RpbWUgcGx1Z2luIHJlcGxhY2VtZW50IHNjcmlwdCIsIHRoaXMpOwotICAg
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi1hdXRvIFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkgLT4gSW5zdGFsbFJl
c3VsdAotewotICAgIGlmICghZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgpKQotICAg
ICAgICByZXR1cm4geyBmYWxzZSB9OwotCi0gICAgaWYgKCFtX3BhcmVudEVsZW1lbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLQotICAgIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQgPSBpc29sYXRlZFdvcmxkKCk7Ci0gICAgU2NyaXB0Q29udHJvbGxlciYg
c2NyaXB0Q29udHJvbGxlciA9IG1fcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5z
Y3JpcHQoKTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLmdsb2JhbE9iamVjdCh3b3Js
ZCkpOwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2sodm0pOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xv
YmFsT2JqZWN0OwotCi0gICAgYXV0byBjbGVhckV4Y2VwdGlvbkFuZFJldHVybkZhbHNlID0gWyZd
ICgpIC0+IEluc3RhbGxSZXN1bHQgewotICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwot
ICAgICAgICByZXR1cm4geyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICAvLyBMb29rdXAgdGhlICJj
cmVhdGVQbHVnaW5SZXBsYWNlbWVudCIgZnVuY3Rpb24uCi0gICAgSlNDOjpKU1ZhbHVlIHJlcGxh
Y2VtZW50RnVuY3Rpb24gPSBnbG9iYWxPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIp
KTsKLSAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAg
ICAgICByZXR1cm4geyBmYWxzZSB9OwotICAgIEpTQzo6SlNPYmplY3QqIHJlcGxhY2VtZW50T2Jq
ZWN0ID0gcmVwbGFjZW1lbnRGdW5jdGlvbi50b09iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBjbGVhckV4Y2VwdGlvbkFuZFJldHVybkZh
bHNlKCkpOwotCi0gICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCByZXBsYWNlbWVu
dE9iamVjdCk7Ci0gICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6
Tm9uZSkKLSAgICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLQotICAgIEpTQzo6TWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnTGlzdDsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGxleGljYWxHbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgJnJvb3QpKTsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgbV9wYXJlbnRFbGVtZW50LmdldCgpKSk7
Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHRoaXMpKTsKLSAgICBhcmdMaXN0LmFwcGVuZCh0b0pTPElETFNlcXVlbmNlPElETE51bGxh
YmxlPElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmdsb2JhbE9iamVjdCwg
bV9uYW1lcykpOwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8SURMTnVsbGFi
bGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCBt
X3ZhbHVlcykpOwotICAgIEFTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxvd2VkKCkpOwotICAgIEpT
Qzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVwbGFj
ZW1lbnRPYmplY3QsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ0xpc3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGNsZWFyRXhjZXB0aW9uQW5kUmV0dXJuRmFsc2UoKSk7Ci0K
LSAgICAvLyBHZXQgdGhlIDx2aWRlbz4gY3JlYXRlZCB0byByZXBsYWNlIHRoZSBwbHVnLWluLgot
ICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHJlcGxhY2VtZW50LmdldChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2aWRlbyIpKTsKLSAgICBpZiAo
IXNjb3BlLmV4Y2VwdGlvbigpICYmICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICBtX21lZGlhRWxlbWVudCA9IEpTSFRNTFZpZGVvRWxlbWVudDo6dG9XcmFwcGVkKHZtLCB2YWx1
ZSk7Ci0KLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50KSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAi
JXAgLSBGYWlsZWQgdG8gZmluZCA8dmlkZW8+IGVsZW1lbnQgY3JlYXRlZCBieSBRdWlja1RpbWUg
cGx1Z2luIHJlcGxhY2VtZW50IHNjcmlwdC4iLCB0aGlzKTsKLSAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIHsgZmFsc2UgfTsKLSAgICB9Ci0KLSAgICAvLyBH
ZXQgdGhlIHNjcmlwdGluZyBpbnRlcmZhY2UuCi0gICAgdmFsdWUgPSByZXBsYWNlbWVudC5nZXQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2Ny
aXB0T2JqZWN0IikpOwotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBMT0co
UGx1Z2lucywgIiVwIC0gRmFpbGVkIHRvIGZpbmQgc2NyaXB0IG9iamVjdCBjcmVhdGVkIGJ5IFF1
aWNrVGltZSBwbHVnaW4gcmVwbGFjZW1lbnQuIiwgdGhpcyk7Ci0gICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiB7IGZhbHNlIH07Ci0gICAgfQotCi0gICAgcmV0
dXJuIHsgdHJ1ZSwgdmFsdWUgfTsKLX0KLQotdW5zaWduZWQgbG9uZyBsb25nIFF1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Ojptb3ZpZVNpemUoKSBjb25zdAotewotICAgIGlmIChtX21lZGlhRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5maWxlU2l6ZSgpOwotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLXZvaWQgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OnBvc3RFdmVu
dChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKLXsKLSAgICBSZWY8SFRNTFBsdWdJbkVsZW1lbnQ+
IHByb3RlY3QoKm1fcGFyZW50RWxlbWVudCk7Ci0gICAgUmVmPEV2ZW50PiBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKLSAgICBtX3BhcmVudEVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwot
fQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVX
aXRoRGF0YUluQ29udGV4dChOU0RhdGEgKmRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEpT
Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICAvLyBGSVhNRTogQWRkIG1ha2VDRlN0cmluZy9tYWtl
TlNTdHJpbmcgdG8gYXZvaWQgdW5uZWNlc3NhcnkgU3RyaW5nIGFsbG9jYXRpb24uCi0gICAgU3Ry
aW5nIGRhdGE2NDsKLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgZGF0YTY0
ID0gbWFrZVN0cmluZygiZGF0YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQsIiwgYmFzZTY0RW5jb2Rl
ZChbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pKTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGE2
NCA9IG1ha2VTdHJpbmcoImRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsIiwgYmFzZTY0RW5jb2RlZChb
ZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pKTsKLQotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1
ZVdpdGhPYmplY3Q6KGlkKWRhdGE2NC5jcmVhdGVDRlN0cmluZygpLmdldCgpIGluQ29udGV4dDpj
b250ZXh0XTsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQXJyYXlJbkNvbnRleHQo
TlNBcnJheSAqYXJyYXksIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3
QXJyYXlJbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0T2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1bHQgSlNW
YWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07Ci0KLSAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gW2FycmF5IGNvdW50XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgKnZhbHVlID0ganNWYWx1ZVdp
dGhWYWx1ZUluQ29udGV4dChbYXJyYXkgb2JqZWN0QXRJbmRleDppXSwgY29udGV4dCk7Ci0gICAg
ICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBKU09iamVj
dFNldFByb3BlcnR5QXRJbmRleChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRP
YmplY3QsICh1bnNpZ25lZClpLCBbdmFsdWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAg
ICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFy
eUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGV4dCAqY29udGV4dCkK
LXsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0g
W0pTVmFsdWUgdmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOwotICAgIEpTT2Jq
ZWN0UmVmIHJlc3VsdE9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdLCBbcmVzdWx0IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhj
ZXB0aW9uKQotICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250
ZXh0OmNvbnRleHRdOwotCi0gICAgZm9yIChpZCBrZXkgaW4gW2RpY3Rpb25hcnkga2V5RW51bWVy
YXRvcl0pIHsKLSAgICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IGpz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0sIGNv
bnRleHQpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgYXV0byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShrZXkpOwotICAgICAg
ICBKU09iamVjdFNldFByb3BlcnR5KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3Vs
dE9iamVjdCwgbmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsK
LSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgIH0KLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVl
SW5Db250ZXh0KGlkIHZhbHVlLCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8IFt2YWx1ZSBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoT2Jq
ZWN0OnZhbHVlIGluQ29udGV4dDpjb250ZXh0XTsKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNMb2NhbGUgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVl
V2l0aE9iamVjdDpbdmFsdWUgbG9jYWxlSWRlbnRpZmllcl0gaW5Db250ZXh0OmNvbnRleHRdOwot
ICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkK
LSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dCh2YWx1ZSwgY29u
dGV4dCk7Ci0gICAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoQXJyYXlJbkNvbnRleHQodmFsdWUsIGNvbnRl
eHQpOwotICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkK
LSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGF0YUluQ29udGV4dCh2YWx1ZSwgZW1wdHlTdHJp
bmcoKSwgY29udGV4dCk7Ci0gICAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6UEFMOjpn
ZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCldKQotICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhBVk1l
dGFkYXRhSXRlbUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0KLSAgICByZXR1cm4gbmlsOwot
fQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChB
Vk1ldGFkYXRhSXRlbSAqaXRlbSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aERpY3Rpb25hcnk6W2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXV07Ci0KLSAgICBpZiAoaXRlbS5r
ZXlTcGFjZSkKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0ua2V5U3BhY2UgZm9y
S2V5OkAia2V5c3BhY2UiXTsKLQotICAgIGlmIChpdGVtLmtleSkKLSAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0Oml0ZW0ua2V5IGZvcktleTpAImtleSJdOwotCi0gICAgaWYgKGl0ZW0ubG9j
YWxlKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5sb2NhbGUgZm9yS2V5OkAi
bG9jYWxlIl07Ci0KLSAgICBpZiAoQ01USU1FX0lTX1ZBTElEKGl0ZW0udGltZSkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gdGltZURpY3Rpb25hcnkgPSBhZG9wdENGKFBBTDo6Q01UaW1lQ29weUFzRGlj
dGlvbmFyeShpdGVtLnRpbWUsIGtDRkFsbG9jYXRvckRlZmF1bHQpKSkKLSAgICAgICAgICAgIFtk
aWN0aW9uYXJ5IHNldE9iamVjdDooX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopdGltZURpY3Rpb25h
cnkuZ2V0KCkgZm9yS2V5OkAidGltZXN0YW1wIl07Ci0gICAgfQotICAgIAotICAgIGlmIChpdGVt
LnZhbHVlKSB7Ci0gICAgICAgIGlkIHZhbHVlID0gaXRlbS52YWx1ZTsKLSAgICAgICAgTlNTdHJp
bmcgKm1pbWVUeXBlID0gW1tpdGVtIGV4dHJhQXR0cmlidXRlc10gb2JqZWN0Rm9yS2V5OkAiTUlN
RXR5cGUiXTsKLSAgICAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3Nd
XSAmJiBtaW1lVHlwZSkgewotICAgICAgICAgICAgYXV0byBkYXRhNjQgPSBtYWtlU3RyaW5nKCJk
YXRhOiIsIFN0cmluZyhtaW1lVHlwZSksICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoW3ZhbHVl
IGJ5dGVzXSwgW3ZhbHVlIGxlbmd0aF0pKTsKLSAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9i
amVjdDooX19icmlkZ2UgTlNTdHJpbmcgKilkYXRhNjQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSBm
b3JLZXk6QCJ2YWx1ZSJdOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFtkaWN0aW9uYXJ5
IHNldE9iamVjdDp2YWx1ZSBmb3JLZXk6QCJ2YWx1ZSJdOwotICAgIH0KLQotICAgIHJldHVybiBq
c1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoZGljdGlvbmFyeSwgY29udGV4dCk7Ci19Ci0K
LSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6dGlt
ZWRNZXRhRGF0YShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSkgY29uc3QKLXsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQo
KS5wYXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkp
Ci0gICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgRnJhbWUqIGZyYW1lID0gcGFy
ZW50LT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7Ci0KLSAgICBOU0FycmF5ICptZXRhRGF0YSA9IHBhcmVudC0+cGxheWVy
KCktPnRpbWVkTWV0YWRhdGEoKTsKLSAgICBpZiAoIW1ldGFEYXRhKQotICAgICAgICByZXR1cm4g
SlNDOjpqc051bGwoKTsKLQotICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gZnJhbWUtPnNjcmlw
dCgpLmphdmFTY3JpcHRDb250ZXh0KCk7Ci0gICAgSlNWYWx1ZSAqbWV0YURhdGFWYWx1ZSA9IGpz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQobWV0YURhdGEsIGpzQ29udGV4dCk7Ci0KLSAgICByZXR1
cm4gdG9KUygmc3RhdGUsIFttZXRhRGF0YVZhbHVlIEpTVmFsdWVSZWZdKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLSNlbmRpZgot
fQotCi1KU0M6OkpTVmFsdWUgSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6YWNjZXNzTG9n
KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlKSBjb25zdAotewotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50ID0gd3JhcHBlZCgpLnBhcmVudEVs
ZW1lbnQoKTsKLSAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5wbGF5ZXIoKSkKLSAgICAgICAg
cmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBwYXJlbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gSlNDOjpqc051
bGwoKTsKLQotICAgIEpTVmFsdWUgKmRpY3Rpb25hcnkgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdP
YmplY3RJbkNvbnRleHQ6ZnJhbWUtPnNjcmlwdCgpLmphdmFTY3JpcHRDb250ZXh0KCldOwotICAg
IFN0cmluZyBhY2Nlc3NMb2dTdHJpbmcgPSBwYXJlbnQtPnBsYXllcigpLT5hY2Nlc3NMb2coKTsK
LSAgICBbZGljdGlvbmFyeSBzZXRWYWx1ZTpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihhY2Nlc3NM
b2dTdHJpbmcpIGZvclByb3BlcnR5OihOU1N0cmluZyAqKUNGU1RSKCJleHRlbmRlZExvZyIpXTsK
LQotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgW2RpY3Rpb25hcnkgSlNWYWx1ZVJlZl0pOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwot
I2VuZGlmCi19Ci0KLUpTQzo6SlNWYWx1ZSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojpl
cnJvckxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSkgY29uc3QKLXsKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBhcmVudCA9IHdyYXBwZWQoKS5w
YXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+cGxheWVyKCkpCi0g
ICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgRnJhbWUqIGZyYW1lID0gcGFyZW50
LT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7Ci0KLSAgICBKU1ZhbHVlICpkaWN0aW9uYXJ5ID0gW0pTVmFsdWUgdmFsdWVX
aXRoTmV3T2JqZWN0SW5Db250ZXh0OmZyYW1lLT5zY3JpcHQoKS5qYXZhU2NyaXB0Q29udGV4dCgp
XTsKLSAgICBTdHJpbmcgZXJyb3JMb2dTdHJpbmcgPSBwYXJlbnQtPnBsYXllcigpLT5lcnJvckxv
ZygpOwotICAgIFtkaWN0aW9uYXJ5IHNldFZhbHVlOnN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGVy
cm9yTG9nU3RyaW5nKSBmb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilDRlNUUigiZXh0ZW5kZWRMb2ci
KV07Ci0KLSAgICByZXR1cm4gdG9KUygmc3RhdGUsIFtkaWN0aW9uYXJ5IEpTVmFsdWVSZWZdKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICByZXR1cm4gSlNDOjpqc051bGwo
KTsKLSNlbmRpZgotfQotCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI2ZGQyNWNjYmU4MmE4OTlhNmJmMzUxNGFmNWNiZTY2MDEwODFjMzcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNs
dWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKLSNp
bmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJZ
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0
cmFyIHJlZ2lzdHJhcikKLXsKLSAgICByZWdpc3RyYXIoUmVwbGFjZW1lbnRQbHVnaW4oY3JlYXRl
LCBzdXBwb3J0c01pbWVUeXBlLCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24sIHN1cHBvcnRzVVJMLCBp
c0VuYWJsZWRCeVNldHRpbmdzKSk7Ci19Ci0KLVJlZjxQbHVnaW5SZXBsYWNlbWVudD4gWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGUoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQocGx1Z2luLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcykpOwotfQotCi1ib29sIFlvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudDo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikKLSAgICAgICAgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9mdXR1cmVzcGxhc2gi
KTsKLX0KLQotYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKLXsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCAic3BsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCAic3dmIik7Ci19Ci0KLVlvdVR1YmVQbHVnaW5SZXBsYWNl
bWVudDo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpCi0gICAgOiBtX3BhcmVudEVsZW1lbnQocGx1Z2luKQotewotICAgIEFTU0VS
VChwYXJhbU5hbWVzLnNpemUoKSA9PSBwYXJhbVZhbHVlcy5zaXplKCkpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcGFyYW1OYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9hdHRyaWJ1
dGVzLmFkZChwYXJhbU5hbWVzW2ldLCBwYXJhbVZhbHVlc1tpXSk7Ci19Ci0KLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQotewotICAgIEFTU0VSVF9V
TlVTRUQocGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7Ci0KLSAgICBpZiAoIW1f
ZW1iZWRTaGFkb3dFbGVtZW50KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBy
ZXR1cm4gbV9lbWJlZFNoYWRvd0VsZW1lbnQtPmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3Zl
KHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwotfQotCi1hdXRvIFlvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmIHJvb3QpIC0+IEluc3RhbGxS
ZXN1bHQKLXsKLSAgICBtX2VtYmVkU2hhZG93RWxlbWVudCA9IFlvdVR1YmVFbWJlZFNoYWRvd0Vs
ZW1lbnQ6OmNyZWF0ZShtX3BhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkpOwotCi0gICAgcm9vdC5h
cHBlbmRDaGlsZCgqbV9lbWJlZFNoYWRvd0VsZW1lbnQpOwotCi0gICAgYXV0byBpZnJhbWVFbGVt
ZW50ID0gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmlmcmFtZVRhZywgbV9w
YXJlbnRFbGVtZW50LT5kb2N1bWVudCgpKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVzLmNvbnRhaW5z
KCJ3aWR0aCIpKQotICAgICAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nKCIxMDAlIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIGNvbnN0IGF1dG8mIGhlaWdo
dFZhbHVlID0gbV9hdHRyaWJ1dGVzLmZpbmQoImhlaWdodCIpOwotICAgIGlmIChoZWlnaHRWYWx1
ZSAhPSBtX2F0dHJpYnV0ZXMuZW5kKCkpIHsKLSAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJtYXgtaGVpZ2h0OiAxMDAl
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAgICAgaWZyYW1lRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdo
dEF0dHIsIGhlaWdodFZhbHVlLT52YWx1ZSk7Ci0gICAgfQotCi0gICAgaWZyYW1lRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIHlv
dVR1YmVVUkwobV9hdHRyaWJ1dGVzLmdldCgic3JjIikpKTsKLSAgICBpZnJhbWVFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6ZnJhbWVib3JkZXJB
dHRyLCBBdG9tU3RyaW5nKCIwIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICAKLSAgICAvLyBEaXNhYmxlIGZyYW1lIGZsYXR0ZW5pbmcgZm9yIHRoaXMgaWZyYW1lLgot
ICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpzY3JvbGxpbmdBdHRyLCBBdG9tU3RyaW5nKCJubyIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgbV9lbWJlZFNoYWRvd0VsZW1lbnQtPmFwcGVuZENoaWxk
KGlmcmFtZUVsZW1lbnQpOwotCi0gICAgcmV0dXJuIHsgdHJ1ZSB9OwotfQotICAgIAotc3RhdGlj
IFVSTCBjcmVhdGVZb3VUdWJlVVJMKFN0cmluZ1ZpZXcgdmlkZW9JRCwgU3RyaW5nVmlldyB0aW1l
SUQpCi17Ci0gICAgQVNTRVJUKCF2aWRlb0lELmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHZpZGVv
SUQgIT0gIi8iKTsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJ5b3V0dWJlOiIs
IHZpZGVvSUQsIHRpbWVJRC5pc0VtcHR5KCkgPyAiIiA6ICJ0PSIsIHRpbWVJRCkpOwotfQotCi1z
dGF0aWMgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpLZXlWYWx1ZU1hcCBxdWVyeUtleXNBbmRW
YWx1ZXMoU3RyaW5nVmlldyBxdWVyeVN0cmluZykKLXsKLSAgICBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQ6OktleVZhbHVlTWFwIHF1ZXJ5RGljdGlvbmFyeTsKLSAgICAKLSAgICBzaXplX3QgcXVl
cnlMZW5ndGggPSBxdWVyeVN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIXF1ZXJ5TGVuZ3RoKQot
ICAgICAgICByZXR1cm4gcXVlcnlEaWN0aW9uYXJ5OwotICAgIAotICAgIHNpemVfdCBlcXVhbFNl
YXJjaExvY2F0aW9uID0gMDsKLSAgICBzaXplX3QgZXF1YWxTZWFyY2hMZW5ndGggPSBxdWVyeUxl
bmd0aDsKLSAgICAKLSAgICB3aGlsZSAoZXF1YWxTZWFyY2hMb2NhdGlvbiA8IHF1ZXJ5TGVuZ3Ro
IC0gMSAmJiBlcXVhbFNlYXJjaExlbmd0aCkgewotICAgICAgICAKLSAgICAgICAgLy8gU2VhcmNo
IGZvciAiPSIuCi0gICAgICAgIHNpemVfdCBlcXVhbExvY2F0aW9uID0gcXVlcnlTdHJpbmcuZmlu
ZCgnPScsIGVxdWFsU2VhcmNoTG9jYXRpb24pOwotICAgICAgICBpZiAoZXF1YWxMb2NhdGlvbiA9
PSBub3RGb3VuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgc2l6ZV90
IGluZGV4QWZ0ZXJFcXVhbCA9IGVxdWFsTG9jYXRpb24gKyAxOwotICAgICAgICBpZiAoaW5kZXhB
ZnRlckVxdWFsID4gcXVlcnlMZW5ndGggLSAxKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IAotICAgICAgICAvLyBHZXQgdGhlIGtleSBiZWZvcmUgdGhlICI9Ii4KLSAgICAgICAgc2l6ZV90
IGtleUxvY2F0aW9uID0gZXF1YWxTZWFyY2hMb2NhdGlvbjsKLSAgICAgICAgc2l6ZV90IGtleUxl
bmd0aCA9IGVxdWFsTG9jYXRpb24gLSBlcXVhbFNlYXJjaExvY2F0aW9uOwotICAgICAgICAKLSAg
ICAgICAgLy8gU2VhY2ggZm9yIHRoZSBhbXBlcnNhbmQuCi0gICAgICAgIHNpemVfdCBhbXBlcnNh
bmRMb2NhdGlvbiA9IHF1ZXJ5U3RyaW5nLmZpbmQoJyYnLCBpbmRleEFmdGVyRXF1YWwpOwotICAg
ICAgICAKLSAgICAgICAgLy8gR2V0IHRoZSB2YWx1ZSBhZnRlciB0aGUgIj0iLCBiZWZvcmUgdGhl
IGFtcGVyc2FuZC4KLSAgICAgICAgc2l6ZV90IHZhbHVlTG9jYXRpb24gPSBpbmRleEFmdGVyRXF1
YWw7Ci0gICAgICAgIHNpemVfdCB2YWx1ZUxlbmd0aDsKLSAgICAgICAgaWYgKGFtcGVyc2FuZExv
Y2F0aW9uICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgdmFsdWVMZW5ndGggPSBhbXBlcnNhbmRM
b2NhdGlvbiAtIGluZGV4QWZ0ZXJFcXVhbDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFs
dWVMZW5ndGggPSBxdWVyeUxlbmd0aCAtIGluZGV4QWZ0ZXJFcXVhbDsKLSAgICAgICAgCi0gICAg
ICAgIC8vIFNhdmUgdGhlIGtleSBhbmQgdGhlIHZhbHVlLgotICAgICAgICBpZiAoa2V5TGVuZ3Ro
ICYmIHZhbHVlTGVuZ3RoKSB7Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gcXVlcnlTdHJpbmcu
c3Vic3RyaW5nKGtleUxvY2F0aW9uLCBrZXlMZW5ndGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBxdWVyeVN0cmluZy5zdWJzdHJpbmcodmFs
dWVMb2NhdGlvbiwgdmFsdWVMZW5ndGgpLnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICB2YWx1ZS5y
ZXBsYWNlKCcrJywgJyAnKTsKLQotICAgICAgICAgICAgaWYgKCFrZXkuaXNFbXB0eSgpICYmICF2
YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcXVlcnlEaWN0aW9uYXJ5LmFkZChrZXks
IHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0
aW9uID09IG5vdEZvdW5kKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICAv
LyBDb250aW51ZSBzZWFyY2hpbmcgYWZ0ZXIgdGhlIGFtcGVyc2FuZC4KLSAgICAgICAgc2l6ZV90
IGluZGV4QWZ0ZXJBbXBlcnNhbmQgPSBhbXBlcnNhbmRMb2NhdGlvbiArIDE7Ci0gICAgICAgIGVx
dWFsU2VhcmNoTG9jYXRpb24gPSBpbmRleEFmdGVyQW1wZXJzYW5kOwotICAgICAgICBlcXVhbFNl
YXJjaExlbmd0aCA9IHF1ZXJ5TGVuZ3RoIC0gaW5kZXhBZnRlckFtcGVyc2FuZDsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIHF1ZXJ5RGljdGlvbmFyeTsKLX0KLSAgICAKLXN0YXRpYyBib29sIGlz
WW91VHViZVVSTChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBhdXRvIGhvc3ROYW1lID0gdXJsLmhv
c3QoKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUs
ICJtLnlvdXR1YmUuY29tIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaG9zdE5hbWUsICJ5b3V0dS5iZSIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGhvc3ROYW1lLCAid3d3LnlvdXR1YmUuY29tIikKLSAgICAgICAgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ5b3V0dWJlLmNvbSIpCi0gICAgICAg
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3ROYW1lLCAid3d3LnlvdXR1YmUt
bm9jb29raWUuY29tIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
aG9zdE5hbWUsICJ5b3V0dWJlLW5vY29va2llLmNvbSIpOwotfQotCi1zdGF0aWMgY29uc3QgU3Ry
aW5nJiB2YWx1ZUZvcktleShjb25zdCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OktleVZhbHVl
TWFwJiBkaWN0aW9uYXJ5LCBjb25zdCBTdHJpbmcmIGtleSkKLXsKLSAgICBjb25zdCBhdXRvJiB2
YWx1ZSA9IGRpY3Rpb25hcnkuZmluZChrZXkpOwotICAgIGlmICh2YWx1ZSA9PSBkaWN0aW9uYXJ5
LmVuZCgpKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVybiB2YWx1
ZS0+dmFsdWU7Ci19Ci0KLXN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29u
c3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSTCwgU3RyaW5nJiBvdXRQYXRo
QWZ0ZXJGaXJzdEFtcGVyc2FuZCkKLXsKLSAgICBpZiAoIXVybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpCi0gICAgICAgIHJldHVybiBVUkwoKTsKLQotICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlm
IHdlIGFyZW4ndCBldmVuIG9uIHd3dy55b3V0dWJlLmNvbSBvciB5b3V0dWJlLmNvbS4KLSAgICBp
ZiAoIWlzWW91VHViZVVSTCh1cmwpKQotICAgICAgICByZXR1cm4gVVJMKCk7Ci0KLSAgICBhdXRv
IGhvc3ROYW1lID0gdXJsLmhvc3QoKTsKLSAgICBib29sIGlzWW91VHViZU1vYmlsZVdlYkFwcFVS
TCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3ROYW1lLCAibS55b3V0dWJlLmNv
bSIpOwotICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGhvc3ROYW1lLCAieW91dHUuYmUiKTsKLQotICAgIC8vIFNob3J0IFVSTCBvZiB0aGUg
Zm9ybTogaHR0cDovL3lvdXR1LmJlL3YxZDMwMUQKLSAgICBpZiAoaXNZb3VUdWJlU2hvcnRlbmVk
VVJMKSB7Ci0gICAgICAgIGF1dG8gdmlkZW9JRCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwot
ICAgICAgICBpZiAodmlkZW9JRC5pc0VtcHR5KCkgfHwgdmlkZW9JRCA9PSAiLyIpCi0gICAgICAg
ICAgICByZXR1cm4gVVJMKCk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVv
SUQsIHsgfSk7Ci0gICAgfQotCi0gICAgYXV0byBwYXRoID0gdXJsLnBhdGgoKTsKLSAgICBhdXRv
IHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7Ci0gICAgYXV0byBmcmFnbWVudCA9IHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKTsKLQotICAgIC8vIE9uIHRoZSBZb3VUdWJlIG1vYmlsZSB3ZWIgYXBwLCB0aGUg
cGF0aCBhbmQgcXVlcnkgc3RyaW5nIGFyZSBwdXQgaW50byB0aGUKLSAgICAvLyBmcmFnbWVudCBz
byB0aGF0IG9uZSB3ZWIgcGFnZSBpcyBvbmx5IGV2ZXIgbG9hZGVkIChzZWUgPHJkYXI6Ly9wcm9i
bGVtLzk1NTA2Mzk+KS4KLSAgICBpZiAoaXNZb3VUdWJlTW9iaWxlV2ViQXBwVVJMKSB7Ci0gICAg
ICAgIHNpemVfdCBsb2NhdGlvbiA9IGZyYWdtZW50LmZpbmQoJz8nKTsKLSAgICAgICAgaWYgKGxv
Y2F0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQ7Ci0gICAg
ICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBwYXRoID0gZnJhZ21lbnQuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKTsKLSAgICAgICAgICAg
IHF1ZXJ5ID0gZnJhZ21lbnQuc3Vic3RyaW5nKGxvY2F0aW9uICsgMSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZnJhZ21lbnQgPSBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICAKLSAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGF0aCwgIi93YXRjaCIpKSB7Ci0gICAgICAgIGlm
ICghcXVlcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBxdWVyeURpY3Rp
b25hcnkgPSBxdWVyeUtleXNBbmRWYWx1ZXMocXVlcnkpOwotICAgICAgICAgICAgU3RyaW5nIHZp
ZGVvSUQgPSB2YWx1ZUZvcktleShxdWVyeURpY3Rpb25hcnksICJ2Iik7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICghdmlkZW9JRC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBj
b25zdCBhdXRvJiBmcmFnbWVudERpY3Rpb25hcnkgPSBxdWVyeUtleXNBbmRWYWx1ZXModXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgdGltZUlEID0gdmFs
dWVGb3JLZXkoZnJhZ21lbnREaWN0aW9uYXJ5LCAidCIpOwotICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHRpbWVJRCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIE1heSBiZSBhIG5ldy1zdHlsZSBsaW5rIChzZWUg
PHJkYXI6Ly9wcm9ibGVtLzc3MzM2OTI+KS4KLSAgICAgICAgaWYgKGZyYWdtZW50LnN0YXJ0c1dp
dGgoJyEnKSkgewotICAgICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmcoMSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghcXVlcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgYXV0byYgcXVlcnlEaWN0aW9uYXJ5ID0gcXVlcnlLZXlzQW5kVmFsdWVz
KHF1ZXJ5KTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgdmlkZW9JRCA9IHZhbHVlRm9yS2V5KHF1
ZXJ5RGljdGlvbmFyeSwgInYiKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBp
ZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyB0aW1l
SUQgPSB2YWx1ZUZvcktleShxdWVyeURpY3Rpb25hcnksICJ0Iik7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQsIHRpbWVJRCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChzdGFydHNX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvdi8iKSB8fCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhdGgsICIvZS8iKSkgewotICAgICAgICBTdHJpbmdWaWV3
IHZpZGVvSUQ7Ci0gICAgICAgIFN0cmluZ1ZpZXcgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQ7Ci0K
LSAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgp
OwotICAgICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRpb24gPSBsYXN0UGF0aENvbXBvbmVudC5m
aW5kKCcmJyk7Ci0gICAgICAgIGlmIChhbXBlcnNhbmRMb2NhdGlvbiAhPSBub3RGb3VuZCkgewot
ICAgICAgICAgICAgLy8gU29tZSBVUkxzIHdlIGNhcmUgYWJvdXQgdXNlICYgaW4gcGxhY2Ugb2Yg
PyBmb3IgdGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KLSAgICAgICAgICAgIHZpZGVvSUQgPSBs
YXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcoMCwgYW1wZXJzYW5kTG9jYXRpb24pOwotICAgICAg
ICAgICAgcGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJp
bmcoYW1wZXJzYW5kTG9jYXRpb24gKyAxLCBsYXN0UGF0aENvbXBvbmVudC5sZW5ndGgoKSAtIGFt
cGVyc2FuZExvY2F0aW9uKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2aWRlb0lEID0g
bGFzdFBhdGhDb21wb25lbnQ7Ci0KLSAgICAgICAgaWYgKCF2aWRlb0lELmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgb3V0UGF0aEFmdGVyRmlyc3RBbXBlcnNhbmQgPSBwYXRoQWZ0ZXJGaXJzdEFt
cGVyc2FuZC50b1N0cmluZygpOwotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwo
dmlkZW9JRCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
VVJMKCk7Ci19Ci0KLVN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkwo
Y29uc3QgU3RyaW5nJiBzcmNTdHJpbmcpCi17Ci0gICAgVVJMIHNyY1VSTCA9IG1fcGFyZW50RWxl
bWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoc3JjU3RyaW5nKSk7Ci0gICAgcmV0dXJuIHlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwo
c3JjVVJMLCBzcmNTdHJpbmcpOwotfQotCi1TdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIHNyY1N0cmluZykKLXsKLSAgICBib29sIGlzWW91VHViZVNob3J0ZW5lZFVSTCA9IGZhbHNl
OwotICAgIFN0cmluZyBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OwotICAgIFVSTCB5b3VUdWJlVVJM
ID0gcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoc3JjVVJMLCBpc1lvdVR1YmVTaG9ydGVuZWRV
UkwsIHBvc3NpYmx5TWFsZm9ybWVkUXVlcnkpOwotICAgIGlmIChzcmNVUkwuaXNFbXB0eSgpIHx8
IHlvdVR1YmVVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3JjU3RyaW5nOwotCi0gICAg
Ly8gVHJhbnNmb3JtIHRoZSB5b3V0dWJlVVJMICh5b3V0dWJlOlZpZGVvSUQpIHRvIGlmcmFtZSBl
bWJlZCB1cmwgd2hpY2ggaGFzIHRoZSBmb3JtYXQ6IGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1i
ZWQvVmlkZW9JRAotICAgIGF1dG8gc3JjUGF0aCA9IHNyY1VSTC5wYXRoKCk7Ci0gICAgY29uc3Qg
U3RyaW5nJiB2aWRlb0lEID0geW91VHViZVVSTC5zdHJpbmcoKS5zdWJzdHJpbmcoeW91VHViZVVS
TC5wcm90b2NvbCgpLmxlbmd0aCgpICsgMSk7Ci0gICAgc2l6ZV90IGxvY2F0aW9uT2ZWaWRlb0lE
SW5QYXRoID0gc3JjUGF0aC5maW5kKHZpZGVvSUQpOwotCi0gICAgc2l6ZV90IGxvY2F0aW9uT2ZQ
YXRoQmVmb3JlVmlkZW9JRCA9IG5vdEZvdW5kOwotICAgIGlmIChsb2NhdGlvbk9mVmlkZW9JRElu
UGF0aCAhPSBub3RGb3VuZCkgewotICAgICAgICBBU1NFUlQobG9jYXRpb25PZlZpZGVvSURJblBh
dGgpOwotICAgIAotICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8g
Z2V0IHRoZSBwYXJ0IGJlZm9yZSAvcGF0aC9WaWRlb0lkLgotICAgICAgICBsb2NhdGlvbk9mUGF0
aEJlZm9yZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQYXRoLnN1YnN0
cmluZygwLCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3JjUGF0aCwgIi93YXRjaCIpKSB7Ci0gICAgICAgIC8v
IEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC93
YXRjaC8jIXY9VmlkZW9JRAotICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgYmUgQVND
SUkgY2FzZS1pbnNlbnNpdGl2ZT8KLSAgICAgICAgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lE
ID0gc3JjU3RyaW5nLmZpbmQoIi93YXRjaCIpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4g
c3JjU3RyaW5nOwotCi0gICAgQVNTRVJUKGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCAhPSBu
b3RGb3VuZCk7Ci0KLSAgICBhdXRvIHNyY1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5n
KS5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKLSAgICBhdXRvIHF1
ZXJ5ID0gc3JjVVJMLnF1ZXJ5KCk7Ci0KLSAgICAvLyBJZiB0aGUgVVJMIGhhcyBubyBxdWVyeSwg
dXNlIHRoZSBwb3NzaWJseSBtYWxmb3JtZWQgcXVlcnkgd2UgZm91bmQuCi0gICAgaWYgKHF1ZXJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgcXVlcnkgPSBwb3NzaWJseU1hbGZvcm1lZFF1ZXJ5OwotCi0g
ICAgLy8gQXBwZW5kIHRoZSBxdWVyeSBzdHJpbmcgaWYgaXQgaXMgdmFsaWQuCi0gICAgcmV0dXJu
IG1ha2VTdHJpbmcoCi0gICAgICAgIGlzWW91VHViZVNob3J0ZW5lZFVSTCA/ICJodHRwOi8vd3d3
LnlvdXR1YmUuY29tIiA6IHNyY1VSTFByZWZpeCwKLSAgICAgICAgIi9lbWJlZC8iLAotICAgICAg
ICB2aWRlb0lELAotICAgICAgICBxdWVyeS5pc0VtcHR5KCkgPyAiIiA6ICI/IiwKLSAgICAgICAg
cXVlcnkKLSAgICApOwotfQotICAgIAotYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnN1
cHBvcnRzVVJMKGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJldHVybiBpc1lvdVR1YmVVUkwodXJs
KTsKLX0KLQotYm9vbCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmlzRW5hYmxlZEJ5U2V0dGlu
Z3MoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQotewotICAgIHJldHVybiBzZXR0aW5ncy55b3VU
dWJlRmxhc2hQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQoKTsKLX0KLSAgICAKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc5ZWE5N2MyMjJhMzgwNWI3
MTg3MTgwM2Y1NTgyNWY3YWMwMDU2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiUGx1Z2luUmVwbGFjZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgWW91
VHViZUVtYmVkU2hhZG93RWxlbWVudDsKLQotY2xhc3MgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
IGZpbmFsIDogcHVibGljIFBsdWdpblJlcGxhY2VtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCByZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaXN0cmFy
KTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gS2V5VmFsdWVNYXA7Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHlvdVR1YmVVUkxGcm9tQWJzb2x1dGVV
UkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKTsKLQotcHJpdmF0
ZToKLSAgICBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKLSAgICBzdGF0aWMgUmVmPFBsdWdpblJlcGxhY2VtZW50PiBjcmVhdGUoSFRNTFBs
dWdJbkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01pbWVU
eXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmlsZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1VSTChjb25zdCBVUkwm
KTsKLSAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWRCeVNldHRpbmdzKGNvbnN0IFNldHRpbmdzJik7
Ci0KLSAgICBJbnN0YWxsUmVzdWx0IGluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290JikgZmlu
YWw7Ci0KLSAgICBTdHJpbmcgeW91VHViZVVSTChjb25zdCBTdHJpbmcmIHJhd1VSTCk7Ci0KLSAg
ICBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dF
bGVtZW50OyB9Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIGZpbmFsOwotCi0gICAgV2Vha1B0cjxIVE1MUGx1Z0luRWxlbWVudD4gbV9wYXJl
bnRFbGVtZW50OwotICAgIFJlZlB0cjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBtX2VtYmVk
U2hhZG93RWxlbWVudDsKLSAgICBLZXlWYWx1ZU1hcCBtX2F0dHJpYnV0ZXM7Ci19OwotCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCAwY2U1ODRiZTYyNzBmMWM1NzU0MzI0ZTUxZGJhODk1
ODk5YzdiNGRjLi4xZWVhZjAwMWRiMmVjNDU1NmM4NGJhNTM0ZjZlYjVjNjBlM2FiZTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTEwMCw4ICsxMDAsNiBAQCBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcAogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQotTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCi1Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcAogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVl
Y2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkBAIC0xNzIsNyArMTcwLDYg
QEAgZWRpdGluZy9tYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIEBuby11bmlmeQogZWRp
dGluZy9tYWMvVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0KIGZpbGVhcGkvRmlsZUNvY29h
Lm1tCiBoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQotaHRtbC9zaGFkb3cvWW91VHViZUVt
YmVkU2hhZG93RWxlbWVudC5jcHAKIGluc3BlY3Rvci9tYWMvUGFnZURlYnVnZ2VyTWFjLm1tCiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgxOTUyOTdlYTZlNWJhZjkyMjU4N2U2ZTY3NmE4
ZDJjMTIzYzhkMjguLjg1YTA2NzlkNTQ2YmU1OThlZTIwMDU2NDBhNzc2N2JkNzZjMjMzYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwOSw4ICsxMDksNiBAQAogCQkwNzI3N0U1NTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRp
YVN0cmVhbVRyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3Mjc3RTQ5MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tF
dmVudC5oICovOyB9OwogCQkwNzI4ODBEMTIwMTBGMUY2MDA3MUIyNTUgLyogUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mjg4MEQwMjAxMEVFRDcwMDcxQjI1NSAvKiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTA3MkE3MDQwMUQ2RThGNjIwMERGMEFGQyAvKiBPdmVyY29uc3RyYWluZWRFcnJvckV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzJBNzAzRTFE
NkU4RjYyMDBERjBBRkMgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oICovOyB9OwotCQkw
NzJBRTFFNTE4M0MwNzQxMDAwQTU5ODggLyogUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MkFFMURGMTgzQzA3NDEwMDBB
NTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTA3MkFFMUU4MTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcyQUUxRTIxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmggKi87IH07CiAJCTA3Mzc5NERFMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZl
ckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Mzc5NERDMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dlck9wdGlvbnMu
aCAqLzsgfTsKIAkJMDczNzk0RTYxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0
RTQxOUVFMkZGMjAwRTVBMDQ1IC8qIEpTUlRDQ29uZmlndXJhdGlvbi5oICovOyB9OwogCQkwNzM3
OTRFQzE5RUUzNDFFMDBFNUEwNDUgLyogSlNSVENJY2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc5NEVBMTlFRTM0MUUwMEU1QTA0NSAv
KiBKU1JUQ0ljZVNlcnZlci5oICovOyB9OwpAQCAtMTMyLDcgKzEzMCw2IEBACiAJCTA3Njk3MDg3
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4
dFRyYWNrTGlzdC5oICovOyB9OwogCQkwNzZEMUMxRjIzRjZFQjVCMDBEOTVCMDYgLyogU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzZEMUMxRDIzRjZEOUQ4MDBEOTVCMDYgLyogU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oICovOyB9OwotCQkwNzc2NjRGRDE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKIAkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxMTFC
OTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg1OCw3ICsxODU1
LDYgQEAKIAkJNTM4RUM5MzIxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTWFsbG9jU3RhdGlzdGljcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0RUE2
ODE0QzkzNDg0MDBDOEY1QkYgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmNwcCAqLzsgfTsKIAkJNTM4
RUM5MzMxRjk5QjlGNzAwNEQyMkE4IC8qIEpTTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjRCNzJFMUUwM0NBNEEwMEUyMzVB
MiAvKiBKU01vY2tDRE1GYWN0b3J5LmggKi87IH07CiAJCTUzOEVDOTM0MUY5OUI5RjcwMDREMjJB
OCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ2RjNFOTMxQzFGODU1NTAwNjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVy
bGF5LmggKi87IH07Ci0JCTUzOEVDOTNFMUY5OUJGNUEwMDREMjJBOCAvKiBKU1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3NzY2NEZBMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNwcCAqLzsgfTsKIAkJNTM4RjEwQTgxRjkwMjJBNDAwNTEwMkNFIC8qIFNvZnRM
aW5rTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzhGMTBBMzFGOTAwQkRDMDA1MTAyQ0UgLyogU29mdExpbmtMaWJ4c2x0LmNwcCAqLzsg
fTsKIAkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvdGFza3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQjg5NUFEMTlEQzdDMzcwMDlD
QUE5MyAvKiBNaWNyb3Rhc2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTNDODI5OEUxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxl
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M4
Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM0OCw3ICsyMzQ0LDYgQEAK
IAkJN0E0NTAzMzAxOERCNzE3MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E0NTAzMkUxOERCNzE3
MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5oICovOyB9OwogCQk3QTU0ODU4MDE0RTAy
RDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3Bl
Y3Rvckhpc3RvcnkuaCAqLzsgfTsKIAkJN0E1NDg4MTcxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBh
dGNoU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E1NDg4MTUxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oICovOyB9Owot
CQk3QTU1MTVGNTE5MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU1MTVGMzE5
MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E1Njk5NzAyMDg2QzYxOTAw
MEUwNDMzIC8qIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU2OTk2RTIwODZDNjE4MDAwRTA0MzMg
LyogQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QTY3NEJEQzBGOUVCRjRFMDA2Q0YwOTkgLyog
UGFnZUdyb3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmggKi87IH07CiAJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNDI5
LDcgKzM0MjQsNiBAQAogCQlBNTJCMzQ4RjFGQTNCREE2MDA4QjYyNDYgLyogU2VydmljZVdvcmtl
ckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MkIzNDhDMUZBM0JENzkwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VyRGVidWdnYWJsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MkIz
NDk2MUZBM0UyOTAwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MkIzNDkzMUZBM0Uy
ODYwMDhCNjI0NiAvKiBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTJCMzQ5RTFGQTQxNzAzMDA4
QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyQjM0OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtlckRl
YnVnZ2VyUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlBNTQxNkZFNjE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0
MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCAqLzsg
fTsKIAkJQTU0QTBDNjIxREI3RjhDMTAwMTdBOTBCIC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEEw
QzYwMURCN0Y4QjcwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IH07
CiAJCUE1NEEwQzY2MURCODA1MzYwMDE3QTkwQiAvKiBXb3JrZXJEZWJ1Z2dlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0QTBDNjQxREI4MDUzMjAw
MTdBOTBCIC8qIFdvcmtlckRlYnVnZ2VyLmggKi87IH07CiAJCUE1NEEwQzY4MURCODA3RDkwMDE3
QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEEwQzY3MURCODA3RDAwMDE3QTkwQiAvKiBX
b3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCAqLzsgfTsKQEAgLTU5MzUsMTIgKzU5MjksNiBA
QAogCQkwNzI4ODBEMDIwMTBFRUQ3MDA3MUIyNTUgLyogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVWaWRlb0NhcHR1
cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcyQTcwM0UxRDZFOEY2
MjAwREYwQUZDIC8qIE92ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzJBNzAzRjFENkU4RjYyMDBERjBBRkMgLyogT3ZlcmNvbnN0
cmFpbmVkRXJyb3JFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT3ZlcmNvbnN0cmFp
bmVkRXJyb3JFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MkFFMURG
MTgzQzA3NDEwMDBBNTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5SZXBsYWNlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwNzJBRTFFMDE4M0MwNzQxMDAwQTU5ODggLyogUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDcyQUUxRTExODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
Y3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzJBRTFFMjE4M0MwNzQxMDAwQTU5
ODggLyogUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMDcyQUUxRTMxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MkFFMUU0MTgz
QzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzJDQTg2MDE2Q0I0REMzMDA4QUUx
MzEgLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDcyREJCRkIyNURCMzhCQzAwQTEzNTBFIC8qIE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVNlc3Npb25Db29yZGluYXRvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MkRCQzAzMjVEQzZCRDMwMEExMzUwRSAvKiBNZWRpYVNl
c3Npb25Db29yZGluYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25Db29yZGluYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk5Niw4ICs1OTg0LDYgQEAKIAkJ
MDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2YXRlQmFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTA3NzY2NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QUYxM0UxOEY0QUU0
MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
NjkyLDggKzEwNjc4LDYgQEAKIAkJN0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rv
ckhpc3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySGlz
dG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODgxNTE0RTQzMkExMDA2
QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVBhdGNoU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0
ODgxNjE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVBhdGNoU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTdBNTUxNUYzMTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBNTUx
NUY0MTkxODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E1Njk5NkUyMDg2QzYxODAwMEUw
NDMzIC8qIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDA2LDggKzEyOTkwLDYgQEAKIAkJQTUyQjM0
OUMxRkE0MTZGODAwOEI2MjQ2IC8qIFdvcmtlckRlYnVnZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyRGVidWdnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTJEODVDQTIxQjA5ODJGMDA2MUMxRUIgLyogU2VydmVyVGltaW5n
UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZlclRpbWluZ1BhcnNlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MkQ4NUNCMjFCMDk4MzAwMDYxQzFFQiAvKiBT
ZXJ2ZXJUaW1pbmdQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmVyVGltaW5nUGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NDE2RkUzMTg4MTBFRjgwMDA5RkM1RiAv
KiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNTQxNkZFNDE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVtYmVk
U2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBZb3VUdWJl
RW1iZWRTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NEEw
QzVGMURCN0Y4QjcwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTRBMEM2MDFEQjdGOEI3MDAx
N0E5MEIgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1NEEwQzYzMURCODA1MzIwMDE3QTkwQiAvKiBXb3JrZXJEZWJ1Z2dl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJEZWJ1Z2dl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg2MiwyMSArMTc4NDQsNiBA
QAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTA3
MkFFMURFMTgzQzA1MTMwMDBBNTk4OCAvKiBwbHVnaW5zICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkwNzJBRTFERjE4M0MwNzQxMDAwQTU5ODggLyogUGx1
Z2luUmVwbGFjZW1lbnQuaCAqLywKLQkJCQkwNzJBRTFFMTE4M0MwNzQxMDAwQTU5ODggLyogUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzICovLAotCQkJCTA3MkFFMUUyMTgzQzA3NDEwMDBB
NTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovLAotCQkJCTA3MkFFMUUzMTgz
QzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5pZGwgKi8sCi0JCQkJ
MDcyQUUxRTQxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmpz
ICovLAotCQkJCTA3MkFFMUUwMTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbSAqLywKLQkJCQk3QTU1MTVGNDE5MTgzMEEzMDA5Njg3RDIgLyogWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCAqLywKLQkJCQk3QTU1MTVGMzE5MTgzMEEzMDA5Njg3RDIgLyog
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IHBsdWdpbnM7
Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQkwNzZGMEQwODEyQjgxOTI3MDBD
MjZBQTQgLyogYXZmb3VuZGF0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTE4NjAyLDggKzE4NTY5LDYgQEAKIAkJCQlCQzk4NTQ0MzBDRDNEOUQwMDAw
NjlCQzEgLyogV2luZG93ICovLAogCQkJCUE4M0I3OTIyMENDQjAwRjAwMDBCMDgyNSAvKiBYTUwg
Ki8sCiAJCQkJQTgzQjc5MEMwQ0NBRkY4MzAwMEIwODI1IC8qIFhQYXRoICovLAotCQkJCTA3NzY2
NEZBMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCAq
LywKLQkJCQkwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5oICovLAogCQkJCUJDMzQ4QkQxMERCN0Y4MDQwMDRBQkFCQiAvKiBXZWJDb3JlSlNC
dWlsdGluSW50ZXJuYWxzLmNwcCAqLywKIAkJCQlCQzM0OEJEMjBEQjdGODA0MDA0QUJBQkIgLyog
V2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oICovLAogCQkJCUJDMzQ4QkQxMERCN0Y4MDQwMDRB
QkFCQSAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi8sCkBAIC0xOTgxNyw4ICsxOTc4Miw2IEBA
CiAJCQkJMTQyQjk3QzgxMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oICovLAogCQkJCUNFMjEyMTU0MjQwREJEMzAwMDZFRDQ0MyAvKiBUZXh0UGxhY2Vob2xkZXJF
bGVtZW50LmNwcCAqLywKIAkJCQlDRTIxMjE1MzI0MERCRDMwMDA2RUQ0NDMgLyogVGV4dFBsYWNl
aG9sZGVyRWxlbWVudC5oICovLAotCQkJCUE1NDE2RkUzMTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCAqLywKLQkJCQlBNTQxNkZFNDE4ODEwRUY4MDAwOUZD
NUYgLyogWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBz
aGFkb3c7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ0NzAsNyArMjQ0MzMsNiBA
QAogCQkJCUExRjc2QjBFMUY0NEMwQ0YwMDE0QzMxOCAvKiBwYXltZW50cmVxdWVzdCAqLywKIAkJ
CQk5M0IwQTY0MjI2Q0RDNTc0MDBBQTIxRTQgLyogcGVybWlzc2lvbnMgKi8sCiAJCQkJMURFRjA2
QTIyMzNDMzJEQjAwRUUyMjhEIC8qIHBpY3R1cmVpbnBpY3R1cmUgKi8sCi0JCQkJMDcyQUUxREUx
ODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdpbnMgKi8sCiAJCQkJNDE4RkNCQjgyNzA2RTRCRDAwRjk2
RUNBIC8qIHB1c2gtYXBpICovLAogCQkJCUNEQzMxMkUwMjJGQ0QwQjAwMDEyMDRFQyAvKiByZW1v
dGVwbGF5YmFjayAqLywKIAkJCQlBQTJBNUFCNzE2QTQ4NUE0MDA5NzVBMjUgLyogc3BlZWNoICov
LApAQCAtMzM5MDcsNyArMzM4NjksNiBAQAogCQkJCTU3MzAzQkY0MjAwOTkwNDYwMDM1NTk2NSAv
KiBKU1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
NzMwM0MxMTIwMDk5Q0IxMDAzNTU5NjUgLyogSlNQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQzAwMjAwOTk1MUMwMDM1NTk2NSAvKiBK
U1B1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzc2NjRGRDE4
M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjY1OEZGQTIxNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZDNEM5NkRGMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4NjYsNyArMzQ4
MjcsNiBAQAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgwMDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDhGRUREMUQ1OTJCOEIwMDhCQThDQiAvKiBQbHVn
aW5JbmZvUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3MkFFMUU1MTgzQzA3NDEwMDBB
NTk4OCAvKiBQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFFMjE4M0Ex
NzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNvdXJjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNCQjhBQjkxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0OTQzLDcgKzM0OTAzLDYgQEAKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMDcyQUUxRTgxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFFRTkyQzIyMzg4QTdEMDA0MTU3QTkgLyogUXVpcmtz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcxNzEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVk
UHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QTU3NEYyOTEzMURCOTZEMDA0NzFCODgg
LyogUXVvdGVzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjM5Miw4ICszNjM1MSw2IEBACiAJ
CQkJRTFGMUU4MzAwQzNDMkJCOTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU0MTZGRTYxODgxMEVGODAwMDlGQzVGIC8qIFlv
dVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBNTUxNUY1MTkx
ODMwQTMwMDk2ODdEMiAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBA
IC0zNjg2Myw3ICszNjgyMCw2IEBACiAJCQkJQ0QyN0FFNTEyMkE5ODY4NzAwOTQ3RkY5IC8qIElt
YWdlUm90YXRpb25TZXNzaW9uVlQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBFMkQwRjI2RjI1
MDg5MDAxNEFBQzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzhFQzkzRTFGOTlCRjVBMDA0RDIyQTggLyogSlNR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVDNDc3
MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
REE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNERThCNUVDMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXku
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCBlOGI5NTRlNDQ2ZDBlMTc4YmM4
YzQ0YzRmNDRlNTZiZmEwOWJjMzE1Li4yOTZjNTM1ZThjNWI3OTNlOWIxZGNjYjU4MTA1ZjgxMDcz
MGY4NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTc4LDEyICs3OCw4IEBAIEpTT2JqZWN0KiBwbHVn
aW5TY3JpcHRPYmplY3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTSFRN
TEVsZW1lbnQqCiAKICAgICAvLyBDaG9rZSBwb2ludCBmb3Igc2NyaXB0L3BsdWdpbiBpbnRlcmFj
dGlvbjsgbm90aWZ5IERPTVRpbWVyIG9mIHRoZSBldmVudC4KICAgICBET01UaW1lcjo6c2NyaXB0
RGlkSW50ZXJhY3RXaXRoUGx1Z2luKHBsdWdpbkVsZW1lbnQpOwotCi0gICAgLy8gRmlyc3QsIHNl
ZSBpZiB0aGUgZWxlbWVudCBoYXMgYSBwbHVnLWluIHJlcGxhY2VtZW50IHdpdGggYSBzY3JpcHQu
Ci0gICAgaWYgKGF1dG8qIHNjcmlwdE9iamVjdCA9IHBsdWdpbkVsZW1lbnQuc2NyaXB0T2JqZWN0
Rm9yUGx1Z2luUmVwbGFjZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsKICAg
ICAKLSAgICAvLyBOZXh0LCBzZWUgaWYgd2UgY2FuIGFzayB0aGUgcGx1Zy1pbiB2aWV3IGZvciBp
dHMgc2NyaXB0IG9iamVjdC4KKyAgICAvLyBTZWUgaWYgd2UgY2FuIGFzayB0aGUgcGx1Zy1pbiB2
aWV3IGZvciBpdHMgc2NyaXB0IG9iamVjdC4KICAgICBpZiAoYXV0byogc2NyaXB0T2JqZWN0ID0g
cGx1Z2luU2NyaXB0T2JqZWN0RnJvbVBsdWdpblZpZXdCYXNlKHBsdWdpbkVsZW1lbnQsIGpzSFRN
TEVsZW1lbnQtPmdsb2JhbE9iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCA4YzY3MjkxNzNjZjZiMDYwMzA2ZDc4NDNmOTE0Nzc5MmY2MjIwYTJkLi5lZThi
NzE4MGYxYmY4ZDBjZWFjOGIzYTIyMDIyNzYyYzUwZjQxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDg3OSwxMSAr
NDg3OSw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHRoaXNPYmplY3QtPnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKHZpc2l0b3IpO1xuIikg
aWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNDdXN0b21NYXJrRnVuY3Rpb259
OwotICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgUExBVEZPUk0oQ09DT0EpXG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPndyYXBw
ZWQoKS5wbHVnaW5SZXBsYWNlbWVudFNjcmlwdE9iamVjdCgpLnZpc2l0KHZpc2l0b3IpO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIik7Ci0gICAgICAgIH0K
ICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0dlbmVyYXRlQWRk
T3BhcXVlUm9vdH0pIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL0dldFB0
ci5oPiIpOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0dlbmVyYXRlQWRkT3BhcXVlUm9vdH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVn
aW5JbnRlcmZhY2UuY3BwCmluZGV4IDJjOWZmOGYxYjU2YTViOWMxM2Y1ZGVjOGExOWRiMjU0YTlj
YTA2NWYuLjFiNzgyMDEwZjgwYTU5ZTY4MjhjOTg4NzJhMGYwMTk3OGEyZjFiYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC0yNjUsOSArMjY1LDYgQEAgdm9pZCBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2U6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRv
ciYgdmlzaXRvcikKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBsdWdpbklu
dGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHRoaXNPYmplY3QtPndyYXBwZWQoKS5wbHVnaW5S
ZXBsYWNlbWVudFNjcmlwdE9iamVjdCgpLnZpc2l0KHZpc2l0b3IpOwotI2VuZGlmCiB9CiAKIERF
RklORV9WSVNJVF9DSElMRFJFTihKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA5NjUxZDg0ZWEwMmI1Zjk3ZjI2Yjc3
NGUwZjM2ODVkZTI5ODc0NzlhLi40ZTRhMDE2ZmZjYjI5YzI4YjYyMDk4NDQ3MDNhYjRmMjE0N2Y3
NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMzcs
NyArMzcsNiBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgotI2luY2x1ZGUgIlBsdWdpblJlcGxhY2VtZW50
LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRl
ZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC01NCwxMSArNTMsNiBAQAog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotI2luY2x1ZGUgIlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgiCi0jaW5jbHVkZSAiWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTFBsdWdJbkVsZW1lbnQpOwpAQCAtMjU2
LDExICsyNTAsOCBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29u
c3QKICAgICByZXR1cm4gIWRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIo
KSkuaXNQbHVnaW5VbmF2YWlsYWJsZSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAg
ICBpZiAobV9wbHVnaW5SZXBsYWNlbWVudCAmJiBtX3BsdWdpblJlcGxhY2VtZW50LT53aWxsQ3Jl
YXRlUmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIG1fcGx1Z2luUmVwbGFjZW1lbnQtPmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcigqdGhpcywgV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9u
KTsKLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIApAQCAtMjg4LDEyMyArMjc5LDEzIEBAIHZvaWQgSFRN
TFBsdWdJbkVsZW1lbnQ6OnNldERpc3BsYXlTdGF0ZShEaXNwbGF5U3RhdGUgc3RhdGUpCiAgICAg
ICAgIG1fc3dhcFJlbmRlcmVyVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKLXZvaWQgSFRN
TFBsdWdJbkVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9v
dCkKLXsKLSAgICBpZiAoIW1fcGx1Z2luUmVwbGFjZW1lbnQgfHwgIWRvY3VtZW50KCkucGFnZSgp
IHx8IGRpc3BsYXlTdGF0ZSgpICE9IFByZXBhcmluZ1BsdWdpblJlcGxhY2VtZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgcm9vdC5zZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UodHJ1ZSk7
Ci0gICAgYXV0byByZXN1bHQgPSBtX3BsdWdpblJlcGxhY2VtZW50LT5pbnN0YWxsUmVwbGFjZW1l
bnQocm9vdCk7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuc3VjY2VzcyB8fCAhcmVzdWx0LnNjcmlwdE9iamVjdCk7Ci0gICAgbV9wbHVnaW5SZXBsYWNl
bWVudFNjcmlwdE9iamVjdCA9IHJlc3VsdC5zY3JpcHRPYmplY3Q7Ci0jZW5kaWYKLQotICAgIGlm
IChyZXN1bHQuc3VjY2VzcykgewotICAgICAgICBzZXREaXNwbGF5U3RhdGUoRGlzcGxheWluZ1Bs
dWdpblJlcGxhY2VtZW50KTsKLSAgICAgICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9y
U3VidHJlZSgpOwotICAgIH0KLX0KLQotI2lmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIHZvaWQg
cmVnaXN0cmFyKGNvbnN0IFJlcGxhY2VtZW50UGx1Z2luJik7Ci0jZW5kaWYKLQotc3RhdGljIFZl
Y3RvcjxSZXBsYWNlbWVudFBsdWdpbio+JiByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkK
LXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlcGxhY2VtZW50UGx1Z2luKj4+
IHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7Ci0gICAgc3RhdGljIGJvb2wgZW5naW5lc1F1ZXJpZWQg
PSBmYWxzZTsKLSAgICAKLSAgICBpZiAoZW5naW5lc1F1ZXJpZWQpCi0gICAgICAgIHJldHVybiBy
ZWdpc3RlcmVkUmVwbGFjZW1lbnRzOwotICAgIGVuZ2luZXNRdWVyaWVkID0gdHJ1ZTsKLQotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpyZWdpc3Rl
clBsdWdpblJlcGxhY2VtZW50KHJlZ2lzdHJhcik7Ci0gICAgWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KHJlZ2lzdHJhcik7Ci0jZW5kaWYKLSAgICAK
LSAgICByZXR1cm4gcmVnaXN0ZXJlZFJlcGxhY2VtZW50czsKLX0KLQotI2lmIFBMQVRGT1JNKENP
Q09BKQotc3RhdGljIHZvaWQgcmVnaXN0cmFyKGNvbnN0IFJlcGxhY2VtZW50UGx1Z2luJiByZXBs
YWNlbWVudCkKLXsKLSAgICByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCkuYXBwZW5kKG5l
dyBSZXBsYWNlbWVudFBsdWdpbihyZXBsYWNlbWVudCkpOwotfQotI2VuZGlmCi0KLXN0YXRpYyBS
ZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIFZlY3RvcjxSZXBsYWNlbWVudFBsdWdp
bio+JiByZXBsYWNlbWVudHMgPSByZWdpc3RlcmVkUGx1Z2luUmVwbGFjZW1lbnRzKCk7Ci0gICAg
aWYgKHJlcGxhY2VtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgU3RyaW5nIGV4dGVuc2lvbjsKLSAgICBhdXRvIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxh
c3RQYXRoQ29tcG9uZW50KCk7Ci0gICAgc2l6ZV90IGRvdE9mZnNldCA9IGxhc3RQYXRoQ29tcG9u
ZW50LnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgaWYgKGRvdE9mZnNldCAhPSBub3RGb3VuZCkKLSAg
ICAgICAgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGRvdE9mZnNldCAr
IDEpLnRvU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlOwotICAgIGlmICh0
eXBlLmlzRW1wdHkoKSAmJiB1cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgdHlwZSA9IG1p
bWVUeXBlRnJvbURhdGFVUkwodXJsLnN0cmluZygpKTsKLSAgICAKLSAgICBpZiAodHlwZS5pc0Vt
cHR5KCkgJiYgIWV4dGVuc2lvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiByZXBs
YWNlbWVudCA6IHJlcGxhY2VtZW50cykgewotICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50LT5z
dXBwb3J0c0ZpbGVFeHRlbnNpb24oZXh0ZW5zaW9uKSAmJiByZXBsYWNlbWVudC0+c3VwcG9ydHNV
UkwodXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQ7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChleHRl
bnNpb24uaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHR5
cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bik7Ci0gICAgfQotCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGZvciAoYXV0byogcmVwbGFjZW1lbnQgOiByZXBsYWNlbWVudHMpIHsKLSAg
ICAgICAgaWYgKHJlcGxhY2VtZW50LT5zdXBwb3J0c1R5cGUodHlwZSkgJiYgcmVwbGFjZW1lbnQt
PnN1cHBvcnRzVVJMKHVybCkpCi0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQ7Ci0gICAg
fQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OnJl
cXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVSTCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykKK3ZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYpCiB7Ci0gICAgaWYgKG1fcGx1Z2luUmVwbGFjZW1lbnQp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgVVJMIGNvbXBsZXRlZFVSTDsKLSAgICBpZiAo
IXJlbGF0aXZlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgY29tcGxldGVkVVJMID0gZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTChyZWxhdGl2ZVVSTCk7Ci0KLSAgICBSZXBsYWNlbWVudFBsdWdpbiogcmVw
bGFjZW1lbnQgPSBwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUoY29tcGxldGVkVVJMLCBtaW1lVHlw
ZSk7Ci0gICAgaWYgKCFyZXBsYWNlbWVudCB8fCAhcmVwbGFjZW1lbnQtPmlzRW5hYmxlZEJ5U2V0
dGluZ3MoZG9jdW1lbnQoKS5zZXR0aW5ncygpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgTE9HKFBsdWdpbnMsICIlcCAtIEZvdW5kIHBsdWctaW4gcmVwbGFjZW1lbnQgZm9yICVzLiIs
IHRoaXMsIGNvbXBsZXRlZFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIG1fcGx1
Z2luUmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudC0+Y3JlYXRlKCp0aGlzLCBwYXJhbU5hbWVzLCBw
YXJhbVZhbHVlcyk7Ci0gICAgc2V0RGlzcGxheVN0YXRlKFByZXBhcmluZ1BsdWdpblJlcGxhY2Vt
ZW50KTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNDOjpKU09iamVjdCogSFRNTFBsdWdJbkVs
ZW1lbnQ6OnNjcmlwdE9iamVjdEZvclBsdWdpblJlcGxhY2VtZW50KCkKK2Jvb2wgSFRNTFBsdWdJ
bkVsZW1lbnQ6OnJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gbV9wbHVnaW5SZXBsYWNlbWVudFNj
cmlwdE9iamVjdDsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gdmFsdWUuZ2V0T2JqZWN0KCk7Ci0jZWxzZQotICAgIHJldHVybiBudWxscHRyOwot
I2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojpp
c0JlbG93U2l6ZVRocmVzaG9sZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmgKaW5kZXggYTczYTVkNGJlNzFhNjUwYjJjMDVkMmE2OTZiY2NiMDM1MTk2M2M3MS4u
ZTE5NWQ3ZDcxOGY5YzEyMWIyMjYyMGRkOGEzZGI3ODE0ZWMyZWM4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAtMzUsNyArMzUsNiBAQCBjbGFzcyBJbnN0YW5j
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbHVnaW5SZXBsYWNlbWVudDsKIGNs
YXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFdpZGdldDsKIApAQCAtNTksMTEgKzU4LDYgQEAgcHVi
bGljOgogICAgIERpc3BsYXlTdGF0ZSBkaXNwbGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlTdGF0ZTsgfQogICAgIHZvaWQgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSk7CiAK
LSAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3RGb3JQbHVnaW5SZXBsYWNlbWVudCgpOwot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIHBsdWdpblJl
cGxhY2VtZW50U2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gbV9wbHVnaW5SZXBsYWNlbWVudFNjcmlw
dE9iamVjdDsgfQotI2VuZGlmCi0KICAgICBib29sIGlzQ2FwdHVyaW5nTW91c2VFdmVudHMoKSBj
b25zdCB7IHJldHVybiBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7IH0KICAgICB2b2lkIHNldElz
Q2FwdHVyaW5nTW91c2VFdmVudHMoYm9vbCBjYXB0dXJpbmcpIHsgbV9pc0NhcHR1cmluZ01vdXNl
RXZlbnRzID0gY2FwdHVyaW5nOyB9CiAKQEAgLTExOSwxMCArMTEzLDYgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gbV9pbnN0YW5jZTsKICAgICBUaW1l
ciBtX3N3YXBSZW5kZXJlclRpbWVyOwotICAgIFJlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gbV9w
bHVnaW5SZXBsYWNlbWVudDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBKU1ZhbHVlSW5XcmFw
cGVkT2JqZWN0IG1fcGx1Z2luUmVwbGFjZW1lbnRTY3JpcHRPYmplY3Q7Ci0jZW5kaWYKICAgICBi
b29sIG1faXNDYXB0dXJpbmdNb3VzZUV2ZW50cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2luQmVm
b3JlTG9hZEV2ZW50SGFuZGxlciB7IGZhbHNlIH07CiAgICAgRGlzcGxheVN0YXRlIG1fZGlzcGxh
eVN0YXRlIHsgUGxheWluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2hhZG93UHNldWRvSWRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NoYWRv
d1BzZXVkb0lkcy5jcHAKaW5kZXggZjA4YTQxMzFlNWQzZmE5YjdlNDliOTU2NzEzYTE5MjVhMGEx
MGY2Ni4uMjUwNmYzM2RmMDY2ZGRmOTFmMjczZjVjNTlkNTUyNDIxYjY4MTlmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2hhZG93UHNldWRvSWRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMuY3BwCkBAIC0yMTksMTIg
KzIxOSw2IEBAIGNvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUo
KQogICAgIHJldHVybiB3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlOwogfQogCi1jb25zdCBB
dG9tU3RyaW5nJiB3ZWJraXRQbHVnaW5SZXBsYWNlbWVudCgpCi17Ci0gICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQbHVnaW5SZXBsYWNl
bWVudCgiLXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHdlYmtpdFBsdWdpblJlcGxhY2VtZW50OwotfQotCiBj
b25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQcm9ncmVzc0JhcigpCiB7CiAgICAgc3RhdGljIE1haW5U
aHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQcm9ncmVzc0Jhcigi
LXdlYmtpdC1wcm9ncmVzcy1iYXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NoYWRvd1BzZXVkb0lkcy5oCmluZGV4IGEy
NzdjN2NkMDQ2YzMwYzJkN2RjNTQzNjczMjFhNTQyYmU4YTdkMGUuLmE3NmNmYTY0NDZlMDBkNzBl
Njg2N2Y3YzgxMjMyOWZlMjY5MDczMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NoYWRvd1BzZXVkb0lkcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NoYWRvd1BzZXVkb0lkcy5oCkBAIC03OSw4ICs3OSw2IEBAIGNvbnN0IEF0b21TdHJpbmcmIHdl
YmtpdE1ldGVyT3B0aW11bVZhbHVlKCk7CiBjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRNZXRlclN1
Ym9wdGltdW1WYWx1ZSgpOwogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWV0ZXJFdmVuTGVzc0dv
b2RWYWx1ZSgpOwogCi1jb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQbHVnaW5SZXBsYWNlbWVudCgp
OwotCiBjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRQcm9ncmVzc0JhcigpOwogY29uc3QgQXRvbVN0
cmluZyYgd2Via2l0UHJvZ3Jlc3NWYWx1ZSgpOwogY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UHJv
Z3Jlc3NJbm5lckVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdhNzkyMmU4YTJiMWM2YTE0ZmFmY2M4YWEzYWIxYmVjZDY4N2QzMTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5oIgotCi0jaW5jbHVkZSAiUmVuZGVy
QmxvY2tGbG93LmgiCi0jaW5jbHVkZSAiU2hhZG93UHNldWRvSWRzLmgiCi0jaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoWW91VHViZUVtYmVkU2hhZG93RWxlbWVudCk7Ci0KLVJlZjxZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50PiBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0UmVmKCpuZXcg
WW91VHViZUVtYmVkU2hhZG93RWxlbWVudChkb2N1bWVudCkpOwotICAgIGVsZW1lbnQtPnNldFBz
ZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFBsdWdpblJlcGxhY2VtZW50KCkpOwotICAgIHJl
dHVybiBlbGVtZW50OwotfQotCi1Zb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpZb3VUdWJlRW1i
ZWRTaGFkb3dFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50
KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKLXsKLX0KLQotUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQotewotICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxl
KSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVj
ZTA0MjkyNzA4OGVjODEyN2NmMmFmZmM0N2YxYmM1YzBiMDI2Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Z
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIVE1MRGl2RWxl
bWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgWW91VHViZUVtYmVkU2hhZG93RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2
RWxlbWVudCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChZb3VUdWJlRW1iZWRTaGFkb3dF
bGVtZW50KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotCi0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBmaW5hbDsKLQotcHJpdmF0ZToKLSAgICBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50KERv
Y3VtZW50Jik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLnlhbWwKaW5kZXggNjJjY2MzYjM2MTJhZjdkZjNjYThhZmExMTJiZDFjNmNjYzY4ODllMS4u
MmFlNzBjYjFkYTg0ZThjYWQzZWNjYzBjOWZmZWY0MzZmOGU4OWY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbApAQCAtNDQ1LDEyICs0NDUsNiBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZyYXVkUHJldmVudGlvbkVuYWJsZWQ6CiAgICAgICAiSEFWRShSU0FfQlNTQSkiOiB0cnVlCiAg
ICAgICBkZWZhdWx0OiBmYWxzZQogCi1RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQ6
Ci0gIHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYkNvcmU6Ci0gICAgICBkZWZh
dWx0OiBmYWxzZQotCiBSZXBhaW50T3V0c2lkZUxheW91dEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wK
ICAgZGVmYXVsdFZhbHVlOgpAQCAtNjM4LDkgKzYzMiwzIEBAIFdlYmtpdEltYWdlUmVhZHlFdmVu
dEVuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDog
ZmFsc2UKLQotWW91VHViZUZsYXNoUGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkOgotICB0eXBlOiBi
b29sCi0gIGRlZmF1bHRWYWx1ZToKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9O
YXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCmluZGV4IGVmNzkyNTM2
OTEwNDVjMDUyNGFlOGJjMDcyOWEwNzhlNmZlODRlYmIuLmE3YjY1OTFjNjljZGJiMmMwYTdjZDEy
YWQxZTAwMzNlNDYyOTVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1l
dGVycy5qcwpAQCAtMTI3MSwxMSArMTI3MSw2IEBAIFdJLk5hdGl2ZVByb3RvdHlwZUZ1bmN0aW9u
UGFyYW1ldGVycyA9IHsKICAgICAgICAgX19wcm90b19fOiBudWxsLAogICAgIH0sCiAKLSAgICBR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDogewotICAgICAgICBwb3N0RXZlbnQ6ICJldmVudE5h
bWUiLAotICAgICAgICBfX3Byb3RvX186IG51bGwsCi0gICAgfSwKLQogICAgIFJUQ0RUTUZTZW5k
ZXI6IHsKICAgICAgICAgaW5zZXJ0RFRNRjogInRvbmVzLCBbZHVyYXRpb25dLCBbaW50ZXJUb25l
R2FwXSIsCiAgICAgICAgIF9fcHJvdG9fXzogbnVsbCwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNmE1Nzk0YzA1ZTIxYzE0YzhlMTg5NGQ4NmI0
MjM2MjMyZDFiYTMyLi4wZDNkNmY2MWVhMmRkYjRiZmZiNTg3Y2ZjNzVmOWMzNWNmYzYyZTM2IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjEtMTAtMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQgYW5k
IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDogUmVtb3ZlZC4KKwogMjAyMS0xMC0yNyAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBbaU9TXSBUZXN0V2ViS2l0QVBJLkluQXBwQnJvd3NlclByaXZhY3kuQXBwQm91bmREb21h
aW5BbGxvd3NTZXJ2aWNlV29ya2VycyBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDU4ZGNiZDUwMTI3MzQ0YzhjOTYzNDE1YTU2NTRkMTBkOTYzYmRkOGQuLjAxMDg0NzYzYmU3
MTEzM2RlYTU5YThmMjE0OGEzZTQ1ZTMxNmYyOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05NDUsNyArOTQ1LDYgQEAKIAkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRG
RC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCREQ5
NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi87IH07CiAJCTlCRjAwMTMzMjY3
QzRDNTkwMERDRkIzRiAvKiBDaGVja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjAwMTMyMjY3QzRDNTkwMERDRkIzRiAvKiBDaGVja2Vk
UmVmLmNwcCAqLzsgfTsKIAkJOUJGMzU2Q0QyMDJENDU4NTAwRjcxMTYwIC8qIG1zby1saXN0Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUJGMzU2Q0MyMDJENDRGMjAwRjcxMTYwIC8qIG1zby1saXN0Lmh0bWwgKi87IH07Ci0JCTlDNjRE
QzMyMUQ3NjE5OEEwMDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUM2NERDMzExRDc2MTk4
QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCUExMEYw
NDdFMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwRjA0N0MxRTNBRDI5QzAwQzk1
RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CiAJCUExMTQ2QThEMUQyRDcxMTUw
MDBGRTcxMCAvKiBDb250ZW50RmlsdGVyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNDZBOEExRDJENzA0RjAwMEZFNzEwIC8qIENvbnRlbnRG
aWx0ZXJpbmcubW0gKi87IH07CiAJCUExMUU3REEwMjRBMTY5RjkwMDAyNjc0NSAvKiBsaW5rLXdp
dGgtaG92ZXItbWVudS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMUU3RDlGMjRBMTY5RTIwMDAyNjc0NSAvKiBsaW5rLXdpdGgtaG92
ZXItbWVudS5odG1sICovOyB9OwpAQCAtMjcwNyw3ICsyNzA2LDYgQEAKIAkJOUJERDk1NTYxRjgz
NjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3Rl
UlRGRC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJGMDAxMzIyNjdDNEM1OTAw
RENGQjNGIC8qIENoZWNrZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tlZFJlZi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRjM1NkNDMjAyRDQ0RjIwMEY3MTE2
MCAvKiBtc28tbGlzdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1zby1saXN0Lmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5QzY0REMzMTFENzYxOThBMDA0QjU5OEUgLyogWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNGaWxlTWFuYWdlckV4dHJh
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNDZBOEExRDJENzA0RjAwMEZF
NzEwIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBDb250ZW50RmlsdGVyaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTFFN0Q5RjI0QTE2OUUyMDAwMjY3NDUgLyogbGluay13aXRoLWhvdmVyLW1lbnUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJsaW5rLXdpdGgtaG92ZXItbWVudS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM4NTEsNyArMzg0OSw2IEBACiAJCQkJN0FEM0ZFOEQxRDc1RkI4RDAw
QjE2OUE0IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAqLywKIAkJCQk1N0QxRDc1RTIxRENC
N0E4MDA5M0U4NkEgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAgKi8sCiAJCQkJRTNB
MUU3N0UyMUIyNUIzOTAwOEM2MDA3IC8qIFVSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgKi8sCi0J
CQkJOUM2NERDMzExRDc2MTk4QTAwNEI1OThFIC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkNvcmU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtNjA3Miw3ICs2MDY5LDYgQEAKIAkJCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMg
LyogV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M3NEM4RkEyMkRGQkE5NjAwREEyREFCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDMTREMzA0NjI0QjRDM0JBMDA0ODAzODcgLyogWFBDRW5kcG9pbnQu
bW0gaW4gU291cmNlcyAqLywKLQkJCQk5QzY0REMzMjFENzYxOThBMDA0QjU5OEUgLyogWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAwYjEzY2JjYTEwYzIxYjMw
N2VlZTMxMTRkZTAwZmJmMGZlMDJkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKLQotY2xhc3MgWW91VHViZVBsdWdpblJlcGxhY2VtZW50VGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoKLSAgICB2b2lkIFNldFVwKCkgZmluYWwgewotICAg
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgfQotfTsKLQotc3RhdGljIGJv
b2wgdGVzdChjb25zdCBTdHJpbmcmIGlucHV0VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cGVj
dGVkVVJMU3RyaW5nKQotewotICAgIFVSTCBpbnB1dFVSTChVUkwoKSwgaW5wdXRVUkxTdHJpbmcp
OwotICAgIFN0cmluZyBhY3R1YWxVUkxTdHJpbmcgPSBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6
OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoaW5wdXRVUkwsIGlucHV0VVJMU3RyaW5nKTsKLSAg
ICByZXR1cm4gYWN0dWFsVVJMU3RyaW5nLnV0ZjgoKSA9PSBleHBlY3RlZFVSTFN0cmluZy51dGY4
KCk7Ci19Ci0KLVRFU1RfRihZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnRUZXN0LCBZb3VUdWJlVVJM
RnJvbUFic29sdXRlVVJMKQotewotICAgIC8vIFlvdVR1YmUgbm9uLXZpZGVvIFVSTCwgbm90IGV4
cGVjdGVkIHRvIGJlIHRyYW5zZm9ybWVkLgotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHBzOi8v
d3d3LnlvdXR1YmUuY29tIiwgImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tIikpOwotCi0gICAgLy8g
QmFzaWMgWW91VHViZSB2aWRlbyBsaW5rcywgZXhwZWN0ZWQgdG8gYmUgdHJhbnNmb3JtZWQuCi0g
ICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly93d3cueW91dHViZS5jb20vdi9kUXc0dzlXZ1hj
USIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUSIpKTsKLSAgICBF
WFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvZFF3NHc5V2dYY1EiLCAi
aHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXN0KCJodHRwczovL3lvdXR1YmUuY29tL3YvZFF3NHc5V2dYY1EiLCAiaHR0cHM6Ly95
b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUSIpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJo
dHRwOi8veW91dHViZS5jb20vdi9kUXc0dzlXZ1hjUSIsICJodHRwOi8veW91dHViZS5jb20vZW1i
ZWQvZFF3NHc5V2dYY1EiKSk7Ci0KLSAgICAvLyBXaXRoIHN0YXJ0IHRpbWUsIHByZXNlcnZlZC4K
LSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvZFF3NHc5V2dY
Y1E/c3RhcnQ9NCIsICJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRP3N0
YXJ0PTQiKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92
L2RRdzR3OVdnWGNRP3N0YXJ0PTQmZnM9MSIsICJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVk
L2RRdzR3OVdnWGNRP3N0YXJ0PTQmZnM9MSIpKTsKLQotICAgIC8vIFdpdGggYW4gaW52YWxpZCBx
dWVyeSAoc2VlICYgaW5zdGVhZCBvZiA/KSwgd2UgcHJlc2VydmUgYW5kIGZpeCB0aGUgcXVlcnku
Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L2RRdzR3OVdn
WGNRJnN0YXJ0PTQiLCAiaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUT9z
dGFydD00IikpOwotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHA6Ly93d3cueW91dHViZS5jb20v
di9kUXc0dzlXZ1hjUSZzdGFydD00JmZzPTEiLCAiaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJl
ZC9kUXc0dzlXZ1hjUT9zdGFydD00JmZzPTEiKSk7Ci0KLSAgICAvLyBOb24tRmxhc2ggVVJMIGlz
IHVudG91Y2hlZC4KLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwczovL3d3dy55b3V0dWJlLmNv
bS9lbWJlZC9kUXc0dzlXZ1hjUSIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0
dzlXZ1hjUSIpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwOi8vd3d3LnlvdXR1YmUuY29t
L2VtYmVkL2RRdzR3OVdnWGNRIiwgImh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5
V2dYY1EiKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6Ly95b3V0dWJlLmNvbS9lbWJl
ZC9kUXc0dzlXZ1hjUSIsICJodHRwczovL3lvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRIikp
OwotICAgIEVYUEVDVF9UUlVFKHRlc3QoImh0dHA6Ly95b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlX
Z1hjUSIsICJodHRwOi8veW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1EiKSk7Ci0gICAgLy8g
RXZlbiB3aXRoIGV4dHJhIHBhcmFtZXRlcnMuCi0gICAgRVhQRUNUX1RSVUUodGVzdCgiaHR0cHM6
Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1E/c3RhcnQ9NCIsICJodHRwczovL3d3
dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hjUT9zdGFydD00IikpOwotICAgIEVYUEVDVF9U
UlVFKHRlc3QoImh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvZFF3NHc5V2dYY1E/ZW5hYmxl
anNhcGk9MSIsICJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRP2VuYWJs
ZWpzYXBpPTEiKSk7Ci0gICAgLy8gRXZlbiB3aXRoIGFuIGludmFsaWQgInF1ZXJ5Ii4KLSAgICBF
WFBFQ1RfVFJVRSh0ZXN0KCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9kUXc0dzlXZ1hj
USZzdGFydD00IiwgImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2RRdzR3OVdnWGNRJnN0
YXJ0PTQiKSk7Ci0KLSAgICAvLyBEb24ndCB0cmFuc2Zvcm0gYW55dGhpbmcgd2l0aCBhIG5vbiAi
L3YvIiBwYXRoIGNvbXBvbmVudCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGRvbWFpbi4KLSAg
ICBFWFBFQ1RfVFJVRSh0ZXN0KCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9zb21ldGhpbmcvdi9k
UXc0dzlXZ1hjUSIsICJodHRwczovL3d3dy55b3V0dWJlLmNvbS9zb21ldGhpbmcvdi9kUXc0dzlX
Z1hjUSIpKTsKLQotICAgIC8vIE5vbi1Zb3VUdWJlIGRvbWFpbiB3aG9zZSBwYXRoIGxvb2tzIGxp
a2UgYSBGbGFzaCB2aWRlbyBzaG91bGRuJ3QgYmUgdHJhbnNmb3JtZWQuCi0gICAgRVhQRUNUX1RS
VUUodGVzdCgiaHR0cHM6Ly93d3cubm90eW91dHViZS5jb20vdi9kUXc0dzlXZ1hjUSIsICJodHRw
czovL3d3dy5ub3R5b3V0dWJlLmNvbS92L2RRdzR3OVdnWGNRIikpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWI2Yzk3NWI5MzM2MjgyY2YyZjM0M2VlZGYzZmVh
ZTUxZDUzZWFiZi4uMjYzMDQ5MmFhZmE2MTQ2NTBlMWZkYmE4MTlkMTRjOWU2ZmJkZWYxNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEwLTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50IGFuZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L29iamVjdC1zcmMtbm9uZS1ibG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9vYmplY3Qtc3JjLW5vbmUtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0
bWw6IFJlbW92ZWQuCisKIDIwMjEtMTAtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBhdXRvZm9jdXMgSURMIGF0dHJpYnV0ZSBzaG91bGQgYmUgZXhwb3NlZCBv
biBhbGwgSFRNTCBvciBTVkcgZWxlbWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ5OWU3NTFk
NjQ1MWZkMWMxNGRkYmYxZmExN2ZjMDVlZjcwNjI3NDkuLmI5ZGM0NmMyNWQ5MzllMzMzZTliOGY5
YzhlMWQ0YTFkN2EwNGNmNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjI4MSwxNCArMjI4MSw2
IEBAIHdlYmtpdC5vcmcvYi8xNTQyMDMgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9yCiB3ZWJraXQub3JnL2IvMTU0NTIyIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zZWN1cml0eXBvbGljeXZpb2xh
dGlvbi1iYXNlLXVyaS1kZW55Lmh0bWwKIHdlYmtpdC5vcmcvYi8xNTg0ODAgaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91cGdyYWRlLXNpbXBsZS13cy5odG1sIFsgU2tpcCBdCiAKLSMg
U2tpcHBpbmcgeW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQgJiBxdWlja3RpbWUtcGx1Z2luLXJl
cGxhY2VtZW50IHRlc3RzCi13ZWJraXQub3JnL2IvMjI5NTA1IHNlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWFsbG93cy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVu
dC5odG1sICBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIyOTUwNSBzZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1l
bnQtd2l0aG91dC1taW1lLXR5cGUuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIyOTUwNSBz
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MteW91dHVi
ZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIyOTUwNSBz
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MtcXVpY2t0
aW1lLXBsdWdpbi1yZXBsYWNlbWVudC13aXRob3V0LW1pbWUtdHlwZS5odG1sIFsgU2tpcCBdCi13
ZWJraXQub3JnL2IvMjI5NTA1IHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5z
LXR5cGVzLWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi8yMjk1MDUgc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdp
bnMtdHlwZXMtYWxsb3dzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAg
XQotCiAjIFRoZXNlIHN0YXRlIG9iamVjdCB0ZXN0cyBwdXJwb3NlZnVsbHkgc3RyZXNzIGEgcmVz
b3VyY2UgbGltaXQsIGFuZCB0YWtlIG11bHRpcGxlIHNlY29uZHMgdG8gcnVuLgogbG9hZGVyL3N0
YXRlb2JqZWN0cy9wdXNoc3RhdGUtc2l6ZS1pZnJhbWUuaHRtbCBbIFNsb3cgXQogbG9hZGVyL3N0
YXRlb2JqZWN0cy9wdXNoc3RhdGUtc2l6ZS5odG1sIFsgU2xvdyBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTE0ZjMxYWI3MTUwZDEyN2M4OTFhZWVl
MGI5MTdjMDNiZTJhMTc1OS4uMWNlODVkMzM1Y2ViOTEyNjY0Y2I3OTYxM2NlZjlkMDJjZTI0ZDQ2
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc5
MiwxNCArMTc5Miw2IEBAIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGx1Z2luLmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQv
YmxpbmsvcGx1Z2lucyBbIFNraXAgXQoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwg
WyBTa2lwIF0KLXNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9vYmplY3Qtc3JjLW5vbmUt
YmxvY2tzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQotc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L29iamVjdC1zcmMtbm9uZS1ibG9ja3MteW91dHViZS1w
bHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQotc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3BsdWdpbnMtdHlwZXMtYWxsb3dzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQu
aHRtbCBbIFNraXAgXQotc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlw
ZXMtYWxsb3dzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBTa2lwIF0KLXNlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy1xdWlja3RpbWUt
cGx1Z2luLXJlcGxhY2VtZW50LXdpdGhvdXQtbWltZS10eXBlLmh0bWwgWyBTa2lwIF0KLXNlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy1xdWlja3RpbWUt
cGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBTa2lwIF0KLXNlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC13
aXRob3V0LW1pbWUtdHlwZS5odG1sIFsgU2tpcCBdCi1zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRt
bCBbIFNraXAgXQogdXNlcnNjcmlwdHMvdXNlci1zY3JpcHQtcGx1Z2luLWRvY3VtZW50Lmh0bWwg
WyBTa2lwIF0KIAogIyBXZWJBcmNoaXZlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmMyY2Y2ZmYzMTgwMzQwMjkzNDE1MWI1YmIyM2IwOGY2
NDNjNGI3OS4uMzZhYjFlMzFmYTk4MWQwMWVjMmMxMGY1ODVjZmU0NGY1YmU3OTE3MiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjA2Nyw4
ICsyMDY3LDYgQEAgd2Via2l0Lm9yZy9iLzIyMzU4NiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNp
b25zL2toci1wYXJhbGxlbC1zaGFkZXItY29tcGlsZS5odG0KIAogd2Via2l0Lm9yZy9iLzIxNDk1
NSBmYXN0L3BhcnNlci94bWwtY29sb24tZW50aXR5Lmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0
Lm9yZy9iLzIyMzc1MCBbIERlYnVnIF0gc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Bs
dWdpbnMtdHlwZXMtYWxsb3dzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBQYXNz
IENyYXNoIF0KLQogd2Via2l0Lm9yZy9iLzE1NTE5NiBzZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvdmlkZW8td2l0aC1maWxlLXVybC1hbGxvd2VkLWJ5LW1lZGlhLXNyYy1zdGFyLXdpdGgt
QWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvY29sLWVu
YWJsZWQuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTU1MTk2
IHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby13aXRoLWZpbGUtdXJsLWFsbG93
ZWQtYnktbWVkaWEtc3JjLXN0YXIuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmQ5NTg3NTliY2Jh
OWNlOTBiNzAyNzE0NmJjODgxY2ZjNmIzOGQwNC4uYzllYmJjZDY2Y2NmNWE4MzMyMGQ4Zjc5MGQ5
OTgxMWQ5MTMzNWM4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTMyNjMsNyArMzI2Myw2IEBAIGpzL3JlZ3Jlc3MtMTQxMDk4Lmh0bWwgWyBGYWlsdXJl
IF0KIHBhZ2VvdmVybGF5L292ZXJsYXktaW5zdGFsbGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIHBh
Z2VvdmVybGF5L292ZXJsYXktbGFyZ2UtZG9jdW1lbnQtc2Nyb2xsZWQuaHRtbCBbIEZhaWx1cmUg
XQogcGFnZW92ZXJsYXkvb3ZlcmxheS1sYXJnZS1kb2N1bWVudC5odG1sIFsgRmFpbHVyZSBdCi1z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1hbGxvd3MteW91dHVi
ZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2Jsb2ItY3Vyc29yLmh0bWwgWyBGYWlsdXJlIF0KIHN0cmVhbXMvcmVhZGFibGUtYnl0
ZS1zdHJlYW0tY29udHJvbGxlci5odG1sIFsgRmFpbHVyZSBdCiBzdHJlYW1zL3JlYWRhYmxlLWJ5
dGUtc3RyZWFtLWNvbnRyb2xsZXItd29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTM0MTAsNyAr
MzQwOSw2IEBAIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzZXR0aW5nLXRpbWVvdXQtdG8t
emVyby5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3RpbWVvdXQtZ3Jl
YXRlci10aGFuLWRlZmF1bHQtbmV0d29yay10aW1lb3V0Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVk
L2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQtYWZ0ZXItZGVsZXRpb24uaHRtbCBb
IFNraXAgXQogaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi12YWxpZC1iZWZv
cmUtY29tbWl0Lmh0bWwgWyBTa2lwIF0KLXNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9w
bHVnaW5zLXR5cGVzLWFsbG93cy1xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBT
a2lwIF0KIHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby13aXRoLWJsb2ItdXJs
LWFsbG93ZWQtYnktbWVkaWEtc3JjLXN0YXIuaHRtbCBbIFNraXAgXQogc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtZGF0YS11cmwtYWxsb3dlZC1ieS1tZWRpYS1zcmMt
c3Rhci5odG1sIFsgU2tpcCBdCiBmYXN0L2V2ZW50cy9naG9zdGx5LW1vdXNlbW92ZXMtaW4tc3Vi
ZnJhbWUuaHRtbCBbIE1pc3NpbmcgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L29iamVjdC1zcmMtbm9uZS1ibG9ja3MtcXVpY2t0aW1lLXBs
dWdpbi1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNyYy1ub25lLWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2lu
LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjczYzJiNDkwNzc2YzgwNzBjOTRkNzAzMzkwMGYwOTFmN2FmOTNkNi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNyYy1ub25lLWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2lu
LXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
Q09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxvYWQgeWVsbG93Lm1vdiBiZWNhdXNlIGl0IGRv
ZXMgbm90IGFwcGVhciBpbiB0aGUgb2JqZWN0LXNyYyBkaXJlY3RpdmUgb2YgdGhlIENvbnRlbnQg
U2VjdXJpdHkgUG9saWN5LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNyYy1ub25lLWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2lu
LXJlcGxhY2VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvb2JqZWN0LXNyYy1ub25lLWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMTBmODQwZjVkMjc5MzI2NDk1
NWQ4YjJkMTBkZTg0YTQxZDg5MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L29i
amVjdC1zcmMtbm9uZS1ibG9ja3MtcXVpY2t0aW1lLXBsdWdpbi1yZXBsYWNlbWVudC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9
Im9iamVjdC1zcmMgJ25vbmUnIj4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLX0KLQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQodHJ1ZSk7Ci0KLWZ1
bmN0aW9uIGRvbmUoKQotewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNl
Y3VyaXR5cG9saWN5dmlvbGF0aW9uIiwgZG9uZSwgZmFsc2UpOwotPC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxlbWJlZCBpZD0iZW1iZWQiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIiBzcmM9
Ii4uLy4uL3BsdWdpbnMvcmVzb3VyY2VzL3llbGxvdy5tb3YiIHF0c3JjPSIuLi8uLi9wbHVnaW5z
L3Jlc291cmNlcy9vcmFuZ2UubW92Ij4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9vYmplY3Qtc3JjLW5vbmUt
YmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9vYmplY3Qtc3JjLW5vbmUtYmxvY2tz
LXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWIyMjE0MTllNmU4MDc2NjdhNjdjMGJiNjE1ZmE3NTFkNmQ2MjRmZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNyYy1ub25lLWJsb2Nrcy15
b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBsb2FkIGh0dHBzOi8vd3d3
LnlvdXR1YmUuY29tL3YvVUY4dVI2WjZLTGMgYmVjYXVzZSBpdCBkb2VzIG5vdCBhcHBlYXIgaW4g
dGhlIG9iamVjdC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L29iamVjdC1zcmMtbm9uZS1ibG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBi
L0xheW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9vYmplY3Qtc3JjLW5v
bmUtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBhODUzY2UyNzZmMTlhZTJjYjFiOTc0Mjc4MDRhMWY1NjVhYmE3NzAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L29iamVjdC1zcmMtbm9uZS1ibG9ja3Mt
eW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJvYmplY3Qtc3JjICdub25lJyI+Ci08
c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0WW91VHViZUZsYXNo
UGx1Z2luUmVwbGFjZW1lbnRFbmFibGVkKHRydWUpOwotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotfQotCi1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzZWN1cml0eXBvbGljeXZpb2xhdGlv
biIsIGRvbmUsIGZhbHNlKTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08b2JqZWN0IHdp
ZHRoPSI0MjUiIGhlaWdodD0iMzUwIiBjbGFzc2lkPSJjbHNpZDpkMjdjZGI2ZS1hZTZkLTExY2Yt
OTZiOC00NDQ1NTM1NDAwMDAiCi0gICAgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21l
ZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAs
NDAsMCI+Ci0gICAgPGVtYmVkIHdpZHRoPSI0MjUiIGhlaWdodD0iMzUwIiB0eXBlPSJhcHBsaWNh
dGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS92L1VG
OHVSNlo2S0xjIj4KLTwvb2JqZWN0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYWxs
b3dzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYWxsb3dzLXF1
aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwNmEzZWU5ZmM3MDA3ZmVjYjBkZDUwMDUzYzQ0MjFhMGNiNjE0OGVmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWFsbG93cy1xdWlj
a3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDIgKzAsMCBAQAotQUxFUlQ6IFBBU1MgZGlkIGxvYWQgcGx1Z2luLgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1h
bGxvd3MtcXVpY2t0aW1lLXBsdWdpbi1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYWxsb3dzLXF1aWNrdGlt
ZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmMwZDVjYjUxOWI5MDk1MTdjM2QwZjExZjRlOWU2YmE2ZTNkMWI1Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1hbGxvd3MtcXVpY2t0aW1lLXBsdWdpbi1y
ZXBsYWNlbWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0
eS1Qb2xpY3kiIGNvbnRlbnQ9InBsdWdpbi10eXBlcyB2aWRlby9xdWlja3RpbWUiPgotPHNjcmlw
dD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1pZiAod2luZG93LmludGVy
bmFscykKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFF1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50RW5hYmxlZCh0cnVlKTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZW1i
ZWQgaWQ9ImVtYmVkIiB0eXBlPSJ2aWRlby9xdWlja3RpbWUiIHdpZHRoPSI2NDAiIGhlaWdodD0i
NDgwIiBzcmM9Ii4uLy4uL3BsdWdpbnMvcmVzb3VyY2VzL3llbGxvdy5tb3YiIHF0c3JjPSIuLi8u
Li9wbHVnaW5zL3Jlc291cmNlcy9vcmFuZ2UubW92IiBwb3N0ZG9tZXZlbnRzPXRydWU+Ci08c2Ny
aXB0PgotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVtYmVkIikuYWRkRXZlbnRMaXN0ZW5lcigi
cXRfYmVnaW4iLCBmdW5jdGlvbiAoKSB7Ci0gICAgYWxlcnQoIlBBU1MgZGlkIGxvYWQgcGx1Z2lu
LiIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci19LCB0cnVlKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMt
dHlwZXMtYWxsb3dzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWFs
bG93cy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGM4Zjc5YzkzYjgzZTBkZGQ3Mzg1OTY0Yjg5ZTBhZDA4ZDAyZDQx
ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYWxsb3dz
LXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDIgKzAsMCBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHBzOi8vd3d3
LnlvdXR1YmUuY29tL2VtYmVkL1VGOHVSNlo2S0xjCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWFsbG93cy15b3V0
dWJlLXBsdWdpbi1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYWxsb3dzLXlvdXR1YmUtcGx1Z2luLXJlcGxh
Y2VtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMmZiNDEwMWI5ODUw
NWExZDM1MGJmYzlmY2JkZjNlYTRlMmQ4ZmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3BsdWdpbnMtdHlwZXMtYWxsb3dzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVu
dD0icGx1Z2luLXR5cGVzIGFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIj4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
LSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRZb3VUdWJlRmxhc2hQbHVnaW5S
ZXBsYWNlbWVudEVuYWJsZWQodHJ1ZSk7Ci0KLS8vIFdhaXRpbmcgYXQgbGVhc3QgMTAwbXMgc2Vl
bXMgdG8gZW5zdXJlIHRoYXQgWW91VHViZSBwbHVnaW4gcmVwbGFjZW1lbnQgaGFzIGxvYWRlZC4K
LXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSwgMTAwKTsKLTwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08b2JqZWN0IHdpZHRoPSI0MjUiIGhlaWdodD0iMzUwIiBjbGFz
c2lkPSJjbHNpZDpkMjdjZGI2ZS1hZTZkLTExY2YtOTZiOC00NDQ1NTM1NDAwMDAiCi0gICAgY29k
ZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMv
Zmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsNDAsMCI+Ci0gICAgPGVtYmVkIHdpZHRoPSI0
MjUiIGhlaWdodD0iMzUwIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgc3Jj
PSJodHRwczovL3d3dy55b3V0dWJlLmNvbS92L1VGOHVSNlo2S0xjIj4KLTwvb2JqZWN0PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFj
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGZlMWI2ODkwM2Rh
NjBiODNkZTQwZTkxN2EwNmExN2U5Yzk3YjM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50LWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBSZWZ1c2VkIHRvIGxvYWQgeWVsbG93Lm1vdiBiZWNhdXNlIGl0cyBNSU1FIHR5cGUgZG9lcyBu
b3QgYXBwZWFyIGluIHRoZSBwbHVnaW4tdHlwZXMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGltZS1wbHVnaW4tcmVw
bGFjZW1lbnQtd2l0aG91dC1taW1lLXR5cGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGlt
ZS1wbHVnaW4tcmVwbGFjZW1lbnQtd2l0aG91dC1taW1lLXR5cGUtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGZlMWI2ODkwM2RhNjBiODNkZTQwZTkxN2EwNmEx
N2U5Yzk3YjM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVz
LWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50LXdpdGhvdXQtbWltZS10eXBlLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBSZWZ1c2VkIHRvIGxvYWQgeWVsbG93Lm1vdiBiZWNhdXNlIGl0cyBNSU1FIHR5cGUgZG9lcyBu
b3QgYXBwZWFyIGluIHRoZSBwbHVnaW4tdHlwZXMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGltZS1wbHVnaW4tcmVw
bGFjZW1lbnQtd2l0aG91dC1taW1lLXR5cGUuaHRtbCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy1xdWlja3RpbWUtcGx1Z2lu
LXJlcGxhY2VtZW50LXdpdGhvdXQtbWltZS10eXBlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDg2YmRlZGY4YzlmNGQ1N2FhNGU1Nzc4ZTEzMDA5YjQ5NTViZThjNmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGlt
ZS1wbHVnaW4tcmVwbGFjZW1lbnQtd2l0aG91dC1taW1lLXR5cGUuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJwbHVnaW4tdHlw
ZXMgdGV4dC9odG1sIj4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
LX0KLQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudEVuYWJsZWQodHJ1ZSk7Ci0KLWZ1bmN0aW9u
IGRvbmUoKQotewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlY3VyaXR5
cG9saWN5dmlvbGF0aW9uIiwgZG9uZSwgZmFsc2UpOwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxlbWJlZCB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCIgc3JjPSIuLi8uLi9wbHVnaW5zL3Jl
c291cmNlcy95ZWxsb3cubW92IiBxdHNyYz0iLi4vLi4vcGx1Z2lucy9yZXNvdXJjZXMvb3Jhbmdl
Lm1vdiI+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10eXBlcy1ibG9ja3MtcXVpY2t0aW1lLXBs
dWdpbi1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXF1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1l
bnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZkYmM2N2I5MDhlMjE3ZmQz
MmE5YWY1MGJjNmVjYTA1OTI1OTI4Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
cGx1Z2lucy10eXBlcy1ibG9ja3MtcXVpY2t0aW1lLXBsdWdpbi1yZXBsYWNlbWVudC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9
InBsdWdpbi10eXBlcyB0ZXh0L2h0bWwiPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotCi1pZiAod2luZG93LmludGVybmFscykKLSAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50RW5hYmxlZCh0cnVlKTsK
LQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLCBkb25lLCBmYWxzZSk7Ci08L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPGVtYmVkIHR5cGU9InZpZGVvL3F1aWNrdGltZSIgd2lkdGg9IjY0MCIg
aGVpZ2h0PSI0ODAiIHNyYz0iLi4vLi4vcGx1Z2lucy9yZXNvdXJjZXMveWVsbG93Lm1vdiIgcXRz
cmM9Ii4uLy4uL3BsdWdpbnMvcmVzb3VyY2VzL29yYW5nZS5tb3YiPgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5z
LXR5cGVzLWJsb2Nrcy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ODdkYTFhZGQ2ZTZmNTk4NWVkODBlZmQ2NGQ3
NDJkYjkwMzM4YzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlw
ZXMtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxvYWQg
aHR0cHM6Ly93d3cueW91dHViZS5jb20vdi9VRjh1UjZaNktMYyBiZWNhdXNlIGl0cyBNSU1FIHR5
cGUgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBwbHVnaW4tdHlwZXMgZGlyZWN0aXZlIG9mIHRoZSBD
b250ZW50IFNlY3VyaXR5IFBvbGljeS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXlvdXR1YmUtcGx1
Z2luLXJlcGxhY2VtZW50LXdpdGhvdXQtbWltZS10eXBlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVzLWJsb2Nrcy15
b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC13aXRob3V0LW1pbWUtdHlwZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ODdkYTFhZGQ2ZTZmNTk4NWVkODBlZmQ2
NGQ3NDJkYjkwMzM4YzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMt
dHlwZXMtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LXdpdGhvdXQtbWltZS10eXBl
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ09OU09MRSBNRVNT
QUdFOiBSZWZ1c2VkIHRvIGxvYWQgaHR0cHM6Ly93d3cueW91dHViZS5jb20vdi9VRjh1UjZaNktM
YyBiZWNhdXNlIGl0cyBNSU1FIHR5cGUgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBwbHVnaW4tdHlw
ZXMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlw
ZXMtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxhY2VtZW50LXdpdGhvdXQtbWltZS10eXBlLmh0
bWwgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1Z2lucy10
eXBlcy1ibG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQtd2l0aG91dC1taW1lLXR5cGUu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y0NGU2YjNiYWZhZjA5NzRiZTVl
MDM1ODg1ZDkwNWE1MGFkZjhmNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcGx1
Z2lucy10eXBlcy1ibG9ja3MteW91dHViZS1wbHVnaW4tcmVwbGFjZW1lbnQtd2l0aG91dC1taW1l
LXR5cGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9s
aWN5IiBjb250ZW50PSJwbHVnaW4tdHlwZXMgdGV4dC9odG1sIj4KLTxzY3JpcHQ+Ci1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAg
d2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRZb3VUdWJlRmxhc2hQbHVnaW5SZXBsYWNlbWVu
dEVuYWJsZWQodHJ1ZSk7Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoInNlY3VyaXR5cG9saWN5dmlvbGF0aW9uIiwgZG9uZSwgZmFsc2Up
OwotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxvYmplY3Qgd2lkdGg9IjQyNSIgaGVpZ2h0
PSIzNTAiIGNsYXNzaWQ9ImNsc2lkOmQyN2NkYjZlLWFlNmQtMTFjZi05NmI4LTQ0NDU1MzU0MDAw
MCIKLSAgICBjb2RlYmFzZT0iaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9j
a3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTYsMCw0MCwwIj4KLSAgICA8ZW1i
ZWQgd2lkdGg9IjQyNSIgaGVpZ2h0PSIzNTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20v
di9VRjh1UjZaNktMYyI+Ci08L29iamVjdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wbHVnaW5zLXR5cGVz
LWJsb2Nrcy15b3V0dWJlLXBsdWdpbi1yZXBsYWNlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXlvdXR1YmUt
cGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2
ZDdhMTlkOTQ1YmU2ZmFjZWIxMzMzN2ExZjQ0ZmRlM2JhMWE4YWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3BsdWdpbnMtdHlwZXMtYmxvY2tzLXlvdXR1YmUtcGx1Z2luLXJlcGxh
Y2VtZW50Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBv
bGljeSIgY29udGVudD0icGx1Z2luLXR5cGVzIHRleHQvaHRtbCI+Ci08c2NyaXB0PgotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0WW91VHViZUZsYXNoUGx1Z2luUmVwbGFjZW1l
bnRFbmFibGVkKHRydWUpOwotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1kb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJzZWN1cml0eXBvbGljeXZpb2xhdGlvbiIsIGRvbmUsIGZhbHNl
KTsKLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08b2JqZWN0IHdpZHRoPSI0MjUiIGhlaWdo
dD0iMzUwIiBjbGFzc2lkPSJjbHNpZDpkMjdjZGI2ZS1hZTZkLTExY2YtOTZiOC00NDQ1NTM1NDAw
MDAiCi0gICAgY29kZWJhc2U9Imh0dHA6Ly9kb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hv
Y2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj02LDAsNDAsMCI+Ci0gICAgPGVt
YmVkIHdpZHRoPSI0MjUiIGhlaWdodD0iMzUwIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2
ZS1mbGFzaCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS92L1VGOHVSNlo2S0xjIj4KLTwv
b2JqZWN0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>
<flag name="review"
          id="467270"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="467421"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>