<?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>247492</bug_id>
          
          <creation_ts>2022-11-04 09:43:14 -0700</creation_ts>
          <short_desc>REGRESSION(256240@main): Broke an internal build configuration</short_desc>
          <delta_ts>2022-11-04 09:48:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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>
          
          <blocked>246410</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1910370</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-11-04 09:43:14 -0700</bug_when>
    <thetext>https://commits.webkit.org/256240@main introduced a regression:
Broke an internal build configuration

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1910372</commentid>
    <comment_count>1</comment_count>
      <attachid>463410</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-11-04 09:43:19 -0700</bug_when>
    <thetext>Created attachment 463410
REVERT of 256240@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1910374</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-11-04 09:47:02 -0700</bug_when>
    <thetext>Committed 256325@main (ca099617d040): &lt;https://commits.webkit.org/256325@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463410.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1910375</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-11-04 09:48:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/101963640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463410</attachid>
            <date>2022-11-04 09:43:19 -0700</date>
            <delta_ts>2022-11-04 09:47:03 -0700</delta_ts>
            <desc>REVERT of 256240@main</desc>
            <filename>bug-247492-20221104094319.patch</filename>
            <type>text/plain</type>
            <size>160389</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBhMDMwODdiZTljODU1ZWQxYTEzN2JlMGUzMDU1ZDFlNjFmYjY4YzlkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDQgTm92IDIwMjIgMDk6NDM6MTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBV
bnJldmlld2VkLCByZXZlcnRpbmcgcjI1NjI0MEBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0NzQ5MgoKQnJva2UgYW4gaW50ZXJuYWwgYnVpbGQgY29uZmln
dXJhdGlvbgoKUmV2ZXJ0ZWQgY2hhbmdlc2V0OgoKIkFkZCBXZWIgRXh0ZW5zaW9uIGNvZGUgZ2Vu
ZXJhdG9yIHNjcmlwdHMsIGJpbmRpbmdzIGdsdWUsIGFuZCBzb21lIElETCBmaWxlcy4iCmh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY0MTAKaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvMjU2MjQwQG1haW4KLS0tCiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QgfCAgIDU3ICstCiAuLi4vV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0ICAgfCAgICA2IC0KIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZSAgICAgICAgICAgICB8ICAgMzMgLQogLi4uL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1z
b3VyY2VzLnNoICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
ICAgICAgICAgICAgICAgIHwgICAgMiAtCiAuLi4vV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qICAgfCAgMTE4IC0tCiAuLi4vQ29jb2EvV2ViRXh0ZW5zaW9uQVBJRXh0ZW5z
aW9uQ29jb2EubW0gICAgfCAgIDUxIC0KIC4uLi9Db2NvYS9XZWJFeHRlbnNpb25BUElOYW1lc3Bh
Y2VDb2NvYS5tbSAgICB8ICAgNTMgLQogLi4uL0FQSS9Db2NvYS9XZWJFeHRlbnNpb25BUElSdW50
aW1lQ29jb2EubW0gIHwgIDExMiAtLQogLi4uL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQ
SUV4dGVuc2lvbi5oIHwgICA1MyAtCiAuLi4vRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJ
TmFtZXNwYWNlLmggfCAgIDU0IC0KIC4uLi9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElP
YmplY3QuaCAgICB8ICAxMDEgLS0KIC4uLi9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElS
dW50aW1lLmggICB8ICAgNzUgLQogLi4uL0NvY29hL0pTV2ViRXh0ZW5zaW9uV3JhcHBlckNvY29h
Lm1tICAgICAgIHwgIDM1MSAtLS0tCiAuLi4vQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFwcGFi
bGUuaCAgICAgICAgfCAgIDQ1IC0KIC4uLi9CaW5kaW5ncy9KU1dlYkV4dGVuc2lvbldyYXBwZXIu
Y3BwICAgICAgICB8ICAgODYgLQogLi4uL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBlci5o
ICAgICAgICAgIHwgIDIwMSAtLS0KIC4uLi9TY3JpcHRzL0NvZGVHZW5lcmF0b3JFeHRlbnNpb25z
LnBtICAgICAgICB8IDE1NzEgLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9CaW5kaW5ncy9TY3JpcHRz
L0lETEF0dHJpYnV0ZXMuanNvbiAgICAgICB8ICAxMjYgLS0KIC4uLi9JbnRlcmZhY2VzL1dlYkV4
dGVuc2lvbkFQSUV4dGVuc2lvbi5pZGwgICB8ICAgMzMgLQogLi4uL0ludGVyZmFjZXMvV2ViRXh0
ZW5zaW9uQVBJTmFtZXNwYWNlLmlkbCAgIHwgICAzNSAtCiAuLi4vSW50ZXJmYWNlcy9XZWJFeHRl
bnNpb25BUElSdW50aW1lLmlkbCAgICAgfCAgIDQxIC0KIC4uLi9GdWxsU2NyZWVuL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyLmNwcCAgICAgICB8ICAgIDEgLQogLi4uL1dlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmggICAgICAgICAgIHwgICAgMSAtCiAuLi4vV2ViUGFnZS9XZWJGb3VuZFRleHRS
YW5nZUNvbnRyb2xsZXIuY3BwICAgfCAgICAxIC0KIDI1IGZpbGVzIGNoYW5nZWQsIDIwIGluc2Vy
dGlvbnMoKyksIDMxODkgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL0NvY29hL1dlYkV4dGVuc2lvbkFQSUV4dGVu
c2lvbkNvY29hLm1tCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0V4dGVuc2lvbnMvQVBJL0NvY29hL1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZUNvY29hLm1tCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJ
L0NvY29hL1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWVDb2NvYS5tbQogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElF
eHRlbnNpb24uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9F
eHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25B
UElPYmplY3QuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9F
eHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElSdW50aW1lLmgKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9Db2NvYS9KU1dl
YkV4dGVuc2lvbldyYXBwZXJDb2NvYS5tbQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBhYmxl
LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9u
cy9CaW5kaW5ncy9KU1dlYkV4dGVuc2lvbldyYXBwZXIuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvSlNXZWJFeHRlbnNp
b25XcmFwcGVyLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RXh0ZW5zaW9ucy9CaW5kaW5ncy9TY3JpcHRzL0NvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmlu
ZGluZ3MvU2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9JbnRlcmZhY2VzL1dlYkV4dGVuc2lvbkFQ
SUV4dGVuc2lvbi5pZGwKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRXh0ZW5zaW9ucy9JbnRlcmZhY2VzL1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5pZGwKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9JbnRl
cmZhY2VzL1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaWRsCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGI3M2U5ZGQxNjlkOC4uZmQ5YWU3NTdk
MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CkBAIC0xLDE1ICsxLDQgQEAKICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJh
dGUteGNmaWxlbGlzdHMgc2NyaXB0LgotJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlL1dlYktpdEFkZGl0aW9ucy9BZGRpdGlvbmFsRmVhdHVyZURlZmluZXMuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9Db21waWxlci5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvd3RmL1BsYXRmb3JtLmgKLSQoQlVJTFRf
UFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93dGYvUGxhdGZvcm1DUFUuaAotJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9QbGF0Zm9ybUNhbGxpbmdDb252
ZW50aW9ucy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvd3RmL1Bs
YXRmb3JtRW5hYmxlLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93
dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUvd3RmL1BsYXRmb3JtSGF2ZS5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xv
Y2FsL2luY2x1ZGUvd3RmL1BsYXRmb3JtTGVnYWN5LmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS91
c3IvbG9jYWwvaW5jbHVkZS93dGYvUGxhdGZvcm1PUy5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
dXNyL2xvY2FsL2luY2x1ZGUvd3RmL1BsYXRmb3JtVXNlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZS93dGYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvd3RmL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlL3d0Zi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFt
bApAQCAtMTczLDIyICsxNjIsMTMgQEAgJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkV2ZW50LnNl
cmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJFeHRlbnNpb25Db250ZXh0
UGFyYW1ldGVycy5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViRXh0
ZW5zaW9uQ29udHJvbGxlclBhcmFtZXRlcnMuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJ
UikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLnNlcmlhbGl6YXRpb24u
aW4KLSQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRW50cnkuc2Vy
aWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RW50cnkuc2VyaWFsaXphdGlvbi5pbgotJChQ
Uk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZENvbXBvbmVudC5zZXJpYWxpemF0
aW9uLmluCi0kKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUuc2Vy
aWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJC
aW5kaW5nLnNlcmlhbGl6YXRpb24uaW4KLSQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQnVmZmVyQmluZGluZ0xheW91dC5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9T
aGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgotJChQ
Uk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLnNlcmlh
bGl6YXRpb24uaW4KLSQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3Iuc2Vy
aWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvclRh
cmdldFN0YXRlLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUv
V2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNU
X0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3Iuc2VyaWFs
aXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21waWxhdGlv
bk1lc3NhZ2Uuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJ
UikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5zZXJpYWxp
emF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dl
YkdQVS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1Rf
RElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVURldmljZURlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5p
bgpAQCAtMjAyLDM5ICsxODIsNDggQEAgJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJH
UFVJbWFnZUNvcHlUZXh0dXJlLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJl
ZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5zZXJpYWxpemF0aW9uLmluCiAk
KFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5zZXJpYWxp
emF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVU11bHRpc2FtcGxl
U3RhdGUuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJH
UFVPYmplY3REZXNjcmlwdG9yQmFzZS5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9T
aGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELnNlcmlhbGl6YXRpb24uaW4KLSQoUFJPSkVDVF9E
SVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVT3JpZ2luM0Quc2VyaWFsaXphdGlvbi5pbgogJChQUk9K
RUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVPdXRPZk1lbW9yeUVycm9yLnNlcmlhbGl6YXRp
b24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZS5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCi0kKFBST0pFQ1Rf
RElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVByaW1pdGl2ZVN0YXRlLnNlcmlhbGl6YXRpb24uaW4K
LSQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2Uuc2Vy
aWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNl
dERlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVD
VF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3Iu
c2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50LnNlcmlhbGl6YXRpb24uaW4KLSQoUFJPSkVDVF9ESVIpL1No
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc2VyaWFs
aXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikv
U2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLnNlcmlhbGl6YXRp
b24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUv
V2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLnNlcmlhbGl6YXRpb24uaW4KICQoUFJPSkVDVF9E
SVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQuc2VyaWFsaXphdGlv
bi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRv
ci5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVNo
YWRlck1vZHVsZUNvbXBpbGF0aW9uSGludC5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElS
KS9TaGFyZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iuc2VyaWFsaXphdGlv
bi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRv
ci5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVRl
eHR1cmVWaWV3RGVzY3JpcHRvci5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElSKS9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVZlcnRleFN0YXRlLnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9E
SVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRW50cnkuc2VyaWFsaXphdGlvbi5pbgor
JChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZENvbXBvbmVudC5zZXJpYWxp
emF0aW9uLmluCiskKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUu
c2VyaWFsaXphdGlvbi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZm
ZXJCaW5kaW5nLnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUv
V2ViR1BVQnVmZmVyQmluZGluZ0xheW91dC5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElS
KS9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uc2VyaWFsaXphdGlvbi5p
bgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvci5zZXJpYWxpemF0aW9u
LmluCiskKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yVGFyZ2V0U3RhdGUu
c2VyaWFsaXphdGlvbi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21w
dXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5zZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElSKS9T
aGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLnNlcmlhbGl6YXRpb24uaW4K
KyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVT3JpZ2luM0Quc2VyaWFsaXphdGlv
bi5pbgorJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5z
ZXJpYWxpemF0aW9uLmluCiskKFBST0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVByb2dy
YW1tYWJsZVN0YWdlLnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5zZXJpYWxpemF0aW9uLmluCiskKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LnNlcmlhbGl6YXRpb24uaW4KKyQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2Vi
R1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1Rf
RElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0ZW5jaWxGYWNlU3RhdGUuc2VyaWFsaXphdGlvbi5p
bgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdG9yYWdlVGV4dHVyZUJpbmRp
bmdMYXlvdXQuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9T
aGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5zZXJpYWxpemF0aW9uLmluCiAkKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0LnNlcmlh
bGl6YXRpb24uaW4KLSQoUFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURl
c2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3Iuc2VyaWFsaXphdGlvbi5pbgogJChQUk9KRUNUX0RJ
UikvU2hhcmVkL1dlYkdQVS9XZWJHUFVWYWxpZGF0aW9uRXJyb3Iuc2VyaWFsaXphdGlvbi5pbgog
JChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUuc2VyaWFs
aXphdGlvbi5pbgogJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZm
ZXJMYXlvdXQuc2VyaWFsaXphdGlvbi5pbgotJChQUk9KRUNUX0RJUikvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVWZXJ0ZXhTdGF0ZS5zZXJpYWxpemF0aW9uLmluCiAkKFBST0pFQ1RfRElSKS9TaGFyZWQv
V2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uLnNlcmlhbGl6YXRpb24uaW4KICQo
UFJPSkVDVF9ESVIpL1NoYXJlZC9XZWJQdXNoTWVzc2FnZS5zZXJpYWxpemF0aW9uLmluCiAkKFBS
T0pFQ1RfRElSKS9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5zZXJp
YWxpemF0aW9uLmluCkBAIC0yODksMTEgKzI3OCw2IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCi0kKFBST0pFQ1Rf
RElSKS9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvU2NyaXB0cy9Db2RlR2VuZXJhdG9y
RXh0ZW5zaW9ucy5wbQotJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRp
bmdzL1NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaWRsCi0kKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25B
UElOYW1lc3BhY2UuaWRsCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50
ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElSdW50aW1lLmlkbAogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9FeHRlbnNpb25zL1dlYkV4dGVuc2lvbkNvbnRleHRQcm94eS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL1dlYkV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0zNzMsNiArMzU3LDMgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQ
cm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS93ZWJwdXNoZC9tYWMvY29tLmFwcGxlLldlYktp
dC53ZWJwdXNoZC5zYi5pbgotJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0NvZGVHZW5l
cmF0b3IucG0KLSQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9JRExQYXJzZXIucG0KLSQo
V0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9nZW5lcmF0ZS1iaW5kaW5ncy5wbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYmJlMzIw
N2VjNDQ3Li5mMDE2YzRiNDI4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjEsMTIgKzYxLDYgQEAgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9JUENTdHJlYW1UZXN0ZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvSVBDVGVz
dGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9JUENUZXN0ZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L0lQQ1Rlc3Rlck1lc3NhZ2VzUmVwbGllcy5oCi0kKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0pTV2ViRXh0ZW5zaW9uQVBJRXh0ZW5z
aW9uLm1tCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0pTV2Vi
RXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvSlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UubW0KLSQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvSlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2Uu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9KU1dlYkV4dGVu
c2lvbkFQSVJ1bnRpbWUubW0KLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQvSlNXZWJFeHRlbnNpb25BUElSdW50aW1lLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWUwZjUyN2I3NzIx
Li42NDBmYjU0MDE2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTUxLDcgKzUx
LDYgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dG9tYXRpb24gXAog
ICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9DYWNoZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIgXAotICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9FeHRl
bnNpb25zL0ludGVyZmFjZXMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24gXAogICAgICQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9HUFUgXApAQCAtMzI3LDE0ICszMjYsNiBAQCBHRU5FUkFURV9NRVNTQUdF
X1JFQ0VJVkVSX1NDUklQVFMgPSBcCiBGUkFNRVdPUktfRkxBR1MgOj0gJChzaGVsbCBlY2hvICQo
QlVJTFRfUFJPRFVDVFNfRElSKSAkKEZSQU1FV09SS19TRUFSQ0hfUEFUSFMpICQoU1lTVEVNX0ZS
QU1FV09SS19TRUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1GICIgLiBqb2luKCIgLUYg
Iiwgc3BsaXQoIiAiLCA8PikpOycpCiBIRUFERVJfRkxBR1MgOj0gJChzaGVsbCBlY2hvICQoQlVJ
TFRfUFJPRFVDVFNfRElSKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpICQoU1lTVEVNX0hFQURFUl9T
RUFSQ0hfUEFUSFMpIHwgcGVybCAtZSAncHJpbnQgIi1JIiAuIGpvaW4oIiAtSSIsIHNwbGl0KCIg
IiwgPD4pKTsnKQogCi1wbGF0Zm9ybV9oX2NvbXBpbGVyX2NvbW1hbmQgPSAkKENDKSAtc3RkPWMr
KzJhIC14IGMrKyAkKDEpICQoU0RLX0ZMQUdTKSAkKFRBUkdFVF9UUklQTEVfRkxBR1MpICQoRlJB
TUVXT1JLX0ZMQUdTKSAkKEhFQURFUl9GTEFHUykgLWluY2x1ZGUgInd0Zi9QbGF0Zm9ybS5oIiAv
ZGV2L251bGwKLQotRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUyA6PSAkKHNoZWxsICQoY2Fs
bCBwbGF0Zm9ybV9oX2NvbXBpbGVyX2NvbW1hbmQsLUUgLVAgLWRNKSB8ICQoUEVSTCkgLW5lICJw
cmludCBpZiBzL1wjZGVmaW5lICgoSEFWRV98VVNFX3xFTkFCTEVffFdURl9QTEFURk9STV8pXHcr
KSAxL1wxLyIpCi0KLVBMQVRGT1JNX0hFQURFUl9ESVIgOj0gJChyZWFscGF0aCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikkKFdLX0xJQlJBUllfSEVBREVSU19GT0xERVJfUEFUSCkpCi1QTEFURk9STV9I
RUFERVJfREVQRU5ERU5DSUVTIDo9ICQoZmlsdGVyICQoUExBVEZPUk1fSEVBREVSX0RJUikvJSwk
KHJlYWxwYXRoICQoc2hlbGwgJChjYWxsIHBsYXRmb3JtX2hfY29tcGlsZXJfY29tbWFuZCwtTSkg
fCAkKFBFUkwpIC1lICJsb2NhbCBcJCQvOyBteSAoXCQkdGFyZ2V0LCBcJCRkZXBzKSA9IHNwbGl0
KC86LywgPD4pOyBwcmludCBzcGxpdCgvXFxcXC8sIFwkJGRlcHMpOyIpKSkKLUZFQVRVUkVfQU5E
X1BMQVRGT1JNX0RFRklORV9ERVBFTkRFTkNJRVMgPSAkKFdlYktpdDIpL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgJChQTEFURk9STV9IRUFERVJfREVQRU5ERU5DSUVTKQotCiBNRVNTQUdFX1JFQ0VJVkVS
X0ZJTEVTIDo9ICQoYWRkc3VmZml4IE1lc3NhZ2VSZWNlaXZlci5jcHAsJChub3RkaXIgJChNRVNT
QUdFX1JFQ0VJVkVSUykpKQogTUVTU0FHRVNfRklMRVMgOj0gJChhZGRzdWZmaXggTWVzc2FnZXMu
aCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpCiBNRVNTQUdFX1JFUExJRVNfRklMRVMg
Oj0gJChhZGRzdWZmaXggTWVzc2FnZXNSZXBsaWVzLmgsJChub3RkaXIgJChNRVNTQUdFX1JFQ0VJ
VkVSUykpKQpAQCAtNTYyLDI3ICs1NTMsMyBAQCBhbGwgOiBHZW5lcmF0ZWRTZXJpYWxpemVycy5o
IEdlbmVyYXRlZFNlcmlhbGl6ZXJzLmNwcCBHZW5lcmF0ZWRTZXJpYWxpemVycy5tbSBTZQogCiBH
ZW5lcmF0ZWRTZXJpYWxpemVycy5oIEdlbmVyYXRlZFNlcmlhbGl6ZXJzLmNwcCBHZW5lcmF0ZWRT
ZXJpYWxpemVycy5tbSBTZXJpYWxpemVkVHlwZUluZm8uY3BwIDogJChXZWJLaXQyKS9TY3JpcHRz
L2dlbmVyYXRlLXNlcmlhbGl6ZXJzLnB5ICQoU0VSSUFMSVpBVElPTl9ERVNDUklQVElPTl9GSUxF
UykgJChXZWJLaXQyKS9EZXJpdmVkU291cmNlcy5tYWtlCiAJJChQWVRIT04pICQoV2ViS2l0Mikv
U2NyaXB0cy9nZW5lcmF0ZS1zZXJpYWxpemVycy5weSAkKFdlYktpdDIpLyAkKFNFUklBTElaQVRJ
T05fREVTQ1JJUFRJT05fRklMRVMpCi0KLUVYVEVOU0lPTlNfRElSID0gJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL0V4dGVuc2lvbnMKLUVYVEVOU0lPTlNfU0NSSVBUU19ESVIgPSAkKEVYVEVOU0lPTlNf
RElSKS9CaW5kaW5ncy9TY3JpcHRzCi1FWFRFTlNJT05TX0lOVEVSRkFDRVNfRElSID0gJChFWFRF
TlNJT05TX0RJUikvSW50ZXJmYWNlcwotSURMX0FUVFJJQlVURVNfRklMRSA9ICQoRVhURU5TSU9O
U19TQ1JJUFRTX0RJUikvSURMQXR0cmlidXRlcy5qc29uCi0KLUJJTkRJTkdTX1NDUklQVFMgPSBc
Ci0gICAgJChXZWJDb3JlU2NyaXB0cykvZ2VuZXJhdGUtYmluZGluZ3MucGwgXAotICAgICQoV2Vi
Q29yZVNjcmlwdHMpL0lETFBhcnNlci5wbSBcCi0gICAgJChXZWJDb3JlU2NyaXB0cykvQ29kZUdl
bmVyYXRvci5wbSBcCi0gICAgJChFWFRFTlNJT05TX1NDUklQVFNfRElSKS9Db2RlR2VuZXJhdG9y
RXh0ZW5zaW9ucy5wbSBcCi0jCi0KLUVYVEVOU0lPTl9JTlRFUkZBQ0VTID0gXAotICAgIFdlYkV4
dGVuc2lvbkFQSUV4dGVuc2lvbiBcCi0gICAgV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlIFwKLSAg
ICBXZWJFeHRlbnNpb25BUElSdW50aW1lIFwKLSMKLQotSlMlLmggSlMlLm1tIDogJS5pZGwgJChC
SU5ESU5HU19TQ1JJUFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoRkVBVFVSRV9BTkRfUExB
VEZPUk1fREVGSU5FX0RFUEVOREVOQ0lFUykKLQlAZWNobyBHZW5lcmF0aW5nIGJpbmRpbmdzIGZv
ciAkKi4uLgotCSQoUEVSTCkgLUkgJChXZWJDb3JlU2NyaXB0cykgLUkgJChFWFRFTlNJT05TX1ND
UklQVFNfRElSKSAkKFdlYkNvcmVTY3JpcHRzKS9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAtLWRlZmlu
ZXMgIiQoRkVBVFVSRV9BTkRfUExBVEZPUk1fREVGSU5FUykiIC0taW5jbHVkZSAkKEVYVEVOU0lP
TlNfSU5URVJGQUNFU19ESVIpIC0tb3V0cHV0RGlyIC4gLS1nZW5lcmF0b3IgRXh0ZW5zaW9ucyAt
LWlkbEF0dHJpYnV0ZXNGaWxlICQoSURMX0FUVFJJQlVURVNfRklMRSkgJDwKLQotYWxsIDogJChF
WFRFTlNJT05fSU5URVJGQUNFUzolPUpTJS5oKSAkKEVYVEVOU0lPTl9JTlRFUkZBQ0VTOiU9SlMl
Lm1tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQt
c291cmNlcy5zaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJj
ZXMuc2gKaW5kZXggMzVkODJlOTU1ZjUxLi40MjZlOWU3MDNiMDEgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaApAQCAtOCw3ICs4LDcg
QEAgbWtkaXIgLXAgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJLaXQi
CiBjZCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYktpdCIKIAogZXhw
b3J0IFdlYktpdDI9IiR7U1JDUk9PVH0iCi1leHBvcnQgV2ViQ29yZVNjcmlwdHM9IiR7V0VCQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSfSIKKwogCiBpZiBbIC16ICQxIF0gfHwgWyAkMSAhPSAic2Fu
ZGJveC1wcm9maWxlcy1pb3MiIF07IHRoZW4KICAgICAvYmluL2xuIC1zZmggIiR7SkFWQVNDUklQ
VENPUkVfUFJJVkFURV9IRUFERVJTX0RJUn0iIEphdmFTY3JpcHRDb3JlUHJpdmF0ZUhlYWRlcnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAppbmRleCBkOWQwY2NhNThhNWMuLmMzMGIzYzI5OGI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtNjEzLDggKzYxMyw2IEBAIFdlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCiAKIFdlYlByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2
aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQogCi1XZWJQcm9jZXNzL0V4dGVuc2lv
bnMvQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFwcGVyLmNwcAotCiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE4OTcyYmQ5YjA4OS4uN2FkYmFjMDA0NGQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQyMCwxOSArNDIwLDYgQEAKIAkJMUM1NjU1N0YyNzQ1QzVBMTAwNjMwMEFGIC8qIFVuaWZpZWRT
b3VyY2UxMDEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM1NjU1N0MyNzQ1QzVBMDAwNjMwMEFGIC8qIFVuaWZpZWRTb3VyY2UxMDEuY3BwICovOyB9
OwogCQkxQzU2NTU4MDI3NDVDNUExMDA2MzAwQUYgLyogVW5pZmllZFNvdXJjZTEwMi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzU2NTU3RDI3NDVD
NUExMDA2MzAwQUYgLyogVW5pZmllZFNvdXJjZTEwMi5jcHAgKi87IH07CiAJCTFDNTY1NTgxMjc0
NUM1QTEwMDYzMDBBRiAvKiBVbmlmaWVkU291cmNlMTAzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTY1NTdFMjc0NUM1QTEwMDYzMDBBRiAvKiBV
bmlmaWVkU291cmNlMTAzLmNwcCAqLzsgfTsKLQkJMUM1REM0NTIyOTA4QTlEMDAwNjFFQzYyIC8q
IFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1REM0NTEyOTA4QTlEMDAwNjFFQzYyIC8qIFdlYkV4
dGVuc2lvbkFQSU5hbWVzcGFjZUNvY29hLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFH
UyA9ICItZm9iamMtYXJjIjsgfTsgfTsKLQkJMUM1REM0NTUyOTA4QUM5MDAwNjFFQzYyIC8qIEpT
V2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM1REM0NTQyOTA4QUMyNjAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5z
aW9uQVBJTmFtZXNwYWNlLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm9i
amMtYXJjIjsgfTsgfTsKLQkJMUM1REM0NUYyOTA5QjA1QTAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5z
aW9uV3JhcHBlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM1REM0NUEyOTA5OUYwMTAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uV3JhcHBl
ckNvY29hLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm9iamMtYXJjIjsg
fTsgfTsKLQkJMUM1REM0NjYyOTBCMjM4OTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSVJ1bnRp
bWVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDNURDNDY0MjkwQjIzODkwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElSdW50aW1lQ29jb2Eu
bW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9Owot
CQkxQzVEQzQ2NzI5MEIyMzg5MDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVE
QzQ2NTI5MEIyMzg5MDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uQ29jb2EubW0g
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9OwotCQkx
QzVEQzQ2QTI5MEIyNzFBMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1REM0NjkyOTBCMjM5
QzAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaCAqLzsgfTsKLQkJMUM1REM0NkIy
OTBCMjcxRTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSU9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1REM0NEUyOTA4N0U3RjAwNjFFQzYy
IC8qIFdlYkV4dGVuc2lvbkFQSU9iamVjdC5oICovOyB9OwotCQkxQzVEQzQ2QzI5MEIyNzFFMDA2
MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVEQzQ0RjI5MDg4ODE0MDA2MUVDNjIgLyogV2Vi
RXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmggKi87IH07Ci0JCTFDNURDNDZEMjkwQjI3MUUwMDYxRUM2
MiAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNURDNDY4MjkwQjIzOUMwMDYxRUM2MiAvKiBXZWJFeHRl
bnNpb25BUElFeHRlbnNpb24uaCAqLzsgfTsKLQkJMUM1REM0NkUyOTBCMjcyNjAwNjFFQzYyIC8q
IEpTV2ViRXh0ZW5zaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM1REM0NTgyOTA5OUYwMTAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9u
V3JhcHBlci5oICovOyB9OwotCQkxQzVEQzQ2RjI5MEIyNzI2MDA2MUVDNjIgLyogSlNXZWJFeHRl
bnNpb25XcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDNURDNDVCMjkwOTlGMDEwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbldyYXBwYWJs
ZS5oICovOyB9OwotCQkxQzVEQzQ3MTI5MEIzM0EyMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25B
UElFeHRlbnNpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzVEQzQ2MDI5MEIxQzQ0MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElFeHRlbnNp
b24ubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mb2JqYy1hcmMiOyB9OyB9
OwotCQkxQzVEQzQ3MjI5MEIzM0E2MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElSdW50aW1l
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1REM0
NjMyOTBCMUM0NzAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5tbSAqLzsgc2V0
dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLWZvYmpjLWFyYyI7IH07IH07CiAJCTFDNjI3NDc4
Mjg4QTFFMUQwMENFRDNBMiAvKiBXZWJFeHRlbnNpb25Db2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjI3NDc3Mjg4QTFEREUwMENFRDNBMiAv
KiBXZWJFeHRlbnNpb25Db2NvYS5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAi
LWZvYmpjLWFyYyI7IH07IH07CiAJCTFDNjI3NDc5Mjg4QjJGNzQwMENFRDNBMiAvKiBfV0tXZWJF
eHRlbnNpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzNCRUI2RTI4ODg4M0UyMDBFNjZFMzggLyogX1dLV2ViRXh0ZW5zaW9uLm1tICovOyBzZXR0
aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm9iamMtYXJjIjsgfTsgfTsKIAkJMUM2Mjc0N0Ey
ODhCMkY3NDAwQ0VEM0EyIC8qIF9XS1dlYkV4dGVuc2lvbkNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzNCRUI1NTI4ODc1Q0U0MDBF
NjZFMzggLyogX1dLV2ViRXh0ZW5zaW9uQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09N
UElMRVJfRkxBR1MgPSAiLWZvYmpjLWFyYyI7IH07IH07CkBAIC0zNjQ4LDI1ICszNjM1LDYgQEAK
IAkJMUM1NjU1N0UyNzQ1QzVBMTAwNjMwMEFGIC8qIFVuaWZpZWRTb3VyY2UxMDMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTEwMy5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTAzLmNwcCI7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDNUExMDRFMjg3QkIxRTkwMDM0RkRBNCAv
KiBPdmVycmlkZUxhbmd1YWdlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdmVycmlkZUxhbmd1
YWdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUExMDRGMjg3QkIxRTkw
MDM0RkRBNCAvKiBPdmVycmlkZUxhbmd1YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVycmlkZUxh
bmd1YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ0RTI5MDg3RTdG
MDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkV4
dGVuc2lvbkFQSU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ0
RjI5MDg4ODE0MDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkxQzVEQzQ1MTI5MDhBOUQwMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFtZXNw
YWNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJF
eHRlbnNpb25BUElOYW1lc3BhY2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUM1REM0NTMyOTA4QUMyNjAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDU0MjkwOEFDMjYwMDYxRUM2MiAvKiBKU1dlYkV4
dGVuc2lvbkFQSU5hbWVzcGFjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTV2ViRXh0ZW5z
aW9uQVBJTmFtZXNwYWNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ1
NzI5MDk5RjAxMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2ViRXh0ZW5zaW9uV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFDNURDNDU4MjkwOTlGMDEwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbldyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJFeHRlbnNpb25XcmFwcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDVBMjkwOTlGMDEwMDYxRUM2MiAvKiBKU1dlYkV4dGVu
c2lvbldyYXBwZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTV2ViRXh0ZW5zaW9u
V3JhcHBlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ1QjI5
MDk5RjAxMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGFibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNXZWJFeHRlbnNpb25XcmFwcGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUM1REM0NUQyOTA5QTM2ODAwNjFFQzYyIC8qIENvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBt
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucGVybDsgcGF0aCA9IENvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ1RTI5MDlBMzY4MDA2MUVDNjIgLyogSURMQXR0cmli
dXRlcy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5qc29uOyBwYXRoID0gSURMQXR0cmlidXRlcy5qc29uOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQzVEQzQ2MDI5MEIxQzQ0MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25B
UElFeHRlbnNpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU1dlYkV4dGVuc2lvbkFQSUV4
dGVuc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1REM0NjEyOTBCMUM0
NzAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUM1REM0NjIyOTBCMUM0NzAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDYzMjkwQjFDNDcwMDYxRUM2MiAvKiBKU1dlYkV4dGVu
c2lvbkFQSVJ1bnRpbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU1dlYkV4dGVuc2lvbkFQ
SVJ1bnRpbWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDY0MjkwQjIz
ODkwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElSdW50aW1lQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFeHRlbnNpb25BUElSdW50aW1lQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNURDNDY1MjkwQjIzODkwMDYxRUM2
MiAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbkNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ2ODI5MEIyMzlDMDA2MUVDNjIgLyog
V2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkV4dGVuc2lvbkFQ
SUV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVEQzQ2OTI5MEIy
MzlDMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJFeHRlbnNpb25BUElSdW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
NjI3NDc3Mjg4QTFEREUwMENFRDNBMiAvKiBXZWJFeHRlbnNpb25Db2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkV4dGVuc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzYyNzQ3QjI4OEI0QzNFMDBDRUQzQTIgLyogQ29jb2FIZWxwZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvY29hSGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzYyNzQ3QzI4OEI0QzNFMDBDRUQzQTIgLyogQ29jb2FIZWxwZXJz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29jb2FIZWxwZXJz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgyNSw5ICszNzkzLDYgQEAKIAkJ
MUM5OEMwRDYyNzQ2MjY4MjAwMkNDQjc4IC8qIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
OThDMEQ3Mjc0NjI2ODIwMDJDQ0I3OCAvKiBXZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVURldmljZURlc2NyaXB0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzk4QzBEODI3NDYyNjgyMDAyQ0NC
NzggLyogV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQzlERDk5MDI4RkExOUEzMDA5M0JEQjAgLyogV2ViRXh0
ZW5zaW9uQVBJRXh0ZW5zaW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzlERDk5QzI4RkExOUEzMDA5M0JEQjAg
LyogV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRXh0ZW5zaW9uQVBJUnVudGlt
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOUREOUE0MjhGQTE5QTMwMDkz
QkRCMCAvKiBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkV4dGVuc2lvbkFQ
SU5hbWVzcGFjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOUVCQTVCMjA4
N0U3NEUwMDA1NDQyOSAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbTsgcGF0
aCA9IGlvcy9OYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0E4QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlQcm94eU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
clVJUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQzMTI3
Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclVJUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkluc3Bl
Y3RvclVJUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtODgwMiw1NyArODc2Nyw2IEBACiAJCQlwYXRoID0gQXV0b21hdGlvbjsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTFDNURDNDREMjkwODdFN0YwMDYx
RUM2MiAvKiBBUEkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAot
CQkJCTFDNURDNDUwMjkwOEE5RDAwMDYxRUM2MiAvKiBDb2NvYSAqLywKLQkJCQkxQzVEQzQ2ODI5
MEIyMzlDMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmggKi8sCi0JCQkJMUM1
REM0NEYyOTA4ODgxNDAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oICovLAot
CQkJCTFDNURDNDRFMjkwODdFN0YwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElPYmplY3QuaCAq
LywKLQkJCQkxQzVEQzQ2OTI5MEIyMzlDMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJUnVudGlt
ZS5oICovLAotCQkJKTsKLQkJCXBhdGggPSBBUEk7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwotCQkxQzVEQzQ1MDI5MDhBOUQwMDA2MUVDNjIgLyogQ29jb2EgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFDNURDNDY1MjkwQjIzODkwMDYx
RUM2MiAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb25Db2NvYS5tbSAqLywKLQkJCQkxQzVEQzQ1
MTI5MDhBOUQwMDA2MUVDNjIgLyogV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlQ29jb2EubW0gKi8s
Ci0JCQkJMUM1REM0NjQyOTBCMjM4OTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVD
b2NvYS5tbSAqLywKLQkJCSk7Ci0JCQlwYXRoID0gQ29jb2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwotCQkxQzVEQzQ1NjI5MDk5RjAxMDA2MUVDNjIgLyogQmluZGluZ3MgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFDNURDNDU5Mjkw
OTlGMDEwMDYxRUM2MiAvKiBDb2NvYSAqLywKLQkJCQkxQzVEQzQ1QzI5MDlBMzY4MDA2MUVDNjIg
LyogU2NyaXB0cyAqLywKLQkJCQkxQzVEQzQ1QjI5MDk5RjAxMDA2MUVDNjIgLyogSlNXZWJFeHRl
bnNpb25XcmFwcGFibGUuaCAqLywKLQkJCQkxQzVEQzQ1NzI5MDk5RjAxMDA2MUVDNjIgLyogSlNX
ZWJFeHRlbnNpb25XcmFwcGVyLmNwcCAqLywKLQkJCQkxQzVEQzQ1ODI5MDk5RjAxMDA2MUVDNjIg
LyogSlNXZWJFeHRlbnNpb25XcmFwcGVyLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IEJpbmRpbmdz
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMUM1REM0NTkyOTA5OUYwMTAw
NjFFQzYyIC8qIENvY29hICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9
ICgKLQkJCQkxQzVEQzQ1QTI5MDk5RjAxMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGVy
Q29jb2EubW0gKi8sCi0JCQkpOwotCQkJcGF0aCA9IENvY29hOwotCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKLQkJfTsKLQkJMUM1REM0NUMyOTA5QTM2ODAwNjFFQzYyIC8qIFNjcmlwdHMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFDNURDNDVEMjkw
OUEzNjgwMDYxRUM2MiAvKiBDb2RlR2VuZXJhdG9yRXh0ZW5zaW9ucy5wbSAqLywKLQkJCQkxQzVE
QzQ1RTI5MDlBMzY4MDA2MUVDNjIgLyogSURMQXR0cmlidXRlcy5qc29uICovLAotCQkJKTsKLQkJ
CXBhdGggPSBTY3JpcHRzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJMUM2
Mjc0NzYyODhBMURERTAwQ0VEM0EyIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTg5NDAsMTYgKzg4NTQsNiBAQAogCQkJcGF0aCA9IFdlYkdQ
VTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTFDOUREOThGMjhGQTE5QTMw
MDkzQkRCMCAvKiBJbnRlcmZhY2VzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGls
ZHJlbiA9ICgKLQkJCQkxQzlERDk5MDI4RkExOUEzMDA5M0JEQjAgLyogV2ViRXh0ZW5zaW9uQVBJ
RXh0ZW5zaW9uLmlkbCAqLywKLQkJCQkxQzlERDlBNDI4RkExOUEzMDA5M0JEQjAgLyogV2ViRXh0
ZW5zaW9uQVBJTmFtZXNwYWNlLmlkbCAqLywKLQkJCQkxQzlERDk5QzI4RkExOUEzMDA5M0JEQjAg
LyogV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5pZGwgKi8sCi0JCQkpOwotCQkJcGF0aCA9IEludGVy
ZmFjZXM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQkxQ0I3NDYxOTI3NDM2
REUzMDBGMTk4NzQgLyogV2ViR1BVICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTkyMjUsOSArOTEyOSw2IEBACiAJCTFDQzIzQjFFMjg4NzMyRjYwMEQwQTY1
QSAvKiBFeHRlbnNpb25zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQkxQzVEQzQ0RDI5MDg3RTdGMDA2MUVDNjIgLyogQVBJICovLAotCQkJCTFDNURDNDU2
MjkwOTlGMDEwMDYxRUM2MiAvKiBCaW5kaW5ncyAqLywKLQkJCQkxQzlERDk4RjI4RkExOUEzMDA5
M0JEQjAgLyogSW50ZXJmYWNlcyAqLywKIAkJCQkxQzAyMzRDNDI4QTAwRTlFMDBBQzFFNUIgLyog
V2ViRXh0ZW5zaW9uQ29udGV4dFByb3h5LmNwcCAqLywKIAkJCQkxQzAyMzRDNjI4QTAwRTlGMDBB
QzFFNUIgLyogV2ViRXh0ZW5zaW9uQ29udGV4dFByb3h5LmggKi8sCiAJCQkJMUMwMjM0QzUyOEEw
MEU5RTAwQUMxRTVCIC8qIFdlYkV4dGVuc2lvbkNvbnRleHRQcm94eS5tZXNzYWdlcy5pbiAqLywK
QEAgLTEzMzk4LDEyICsxMzI5OSw2IEBACiAJCQkJMEY1NTYyRTgyN0VFMjhEMjAwOTUzNTg1IC8q
IEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEY1NTYyRTQyN0VF
MjhEMTAwOTUzNTg1IC8qIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMEY1NTYy
RTEyN0VFMjhEMTAwOTUzNTg1IC8qIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oICov
LAotCQkJCTFDNURDNDYyMjkwQjFDNDcwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSUV4dGVu
c2lvbi5oICovLAotCQkJCTFDNURDNDYwMjkwQjFDNDQwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lv
bkFQSUV4dGVuc2lvbi5tbSAqLywKLQkJCQkxQzVEQzQ1MzI5MDhBQzI2MDA2MUVDNjIgLyogSlNX
ZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaCAqLywKLQkJCQkxQzVEQzQ1NDI5MDhBQzI2MDA2MUVD
NjIgLyogSlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UubW0gKi8sCi0JCQkJMUM1REM0NjEyOTBC
MUM0NzAwNjFFQzYyIC8qIEpTV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oICovLAotCQkJCTFDNURD
NDYzMjkwQjFDNDcwMDYxRUM2MiAvKiBKU1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUubW0gKi8sCiAJ
CQkJMjk4NEY1ODYxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMjk4NEY1ODcxNjRCQTA5NTAwNEJDMEM2IC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJMjk4NEY1N0Ex
NjRCOTE1RjAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKQEAgLTE0OTc0LDggKzE0ODY5LDYgQEAKIAkJCQlBMzFGNjBBNDI1
Q0M3REI5MDBBRjE0RjQgLyogSVBDU2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkUz
N0Y5MzI3QzdDQTUxMDA3QTZDRDMgLyogSVBDU3RyZWFtVGVzdGVySWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOUI0NzkwOEYyNTMxNTFDQzAwRUMxMUFCIC8qIEpTSVBDQmluZGluZy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUM1REM0NkYyOTBCMjcyNjAwNjFFQzYyIC8qIEpTV2ViRXh0
ZW5zaW9uV3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQzVEQzQ2RTI5MEIyNzI2MDA2
MUVDNjIgLyogSlNXZWJFeHRlbnNpb25XcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEREEw
QTNGRjI3RTY2RjVGMDA1RTA4NkUgLyogS2V5RXZlbnRDb2Rlc0lPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTkwNDlBMjdCQ0I5RDQwMDkyOUU3
RSAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTQ2NCwxMCArMTUz
NTcsNiBAQAogCQkJCUJDMTExQjVEMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3Rvcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2REQ1MTkwMjhFRjI4RTgwMERGMkE1OCAvKiBXZWJFdmVu
dE1vZGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEREEwQTQxNzI3RTY3MDM5MDA1RTA4NkUg
LyogV2ViRXZlbnRSZWdpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTFDNURDNDZEMjkwQjI3MUUw
MDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAotCQkJ
CTFDNURDNDZDMjkwQjI3MUUwMDYxRUM2MiAvKiBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaCBp
biBIZWFkZXJzICovLAotCQkJCTFDNURDNDZCMjkwQjI3MUUwMDYxRUM2MiAvKiBXZWJFeHRlbnNp
b25BUElPYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTFDNURDNDZBMjkwQjI3MUEwMDYxRUM2
MiAvKiBXZWJFeHRlbnNpb25BUElSdW50aW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzAyMzRE
OTI4QTAxQjFDMDBBQzFFNUIgLyogV2ViRXh0ZW5zaW9uQ29udGV4dElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDMDIzNEQyMjhBMDBGRjAwMEFDMUU1QiAvKiBXZWJFeHRlbnNpb25D
b250ZXh0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMDIzNENGMjhBMDBGRjAwMEFD
MUU1QiAvKiBXZWJFeHRlbnNpb25Db250ZXh0TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTE3ODQwLDEwICsxNzcyOSw2IEBACiAJCQkJNTFFOTA0OTcyN0JDQjNEOTAwOTI5RTdF
IC8qIElDQXBwQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAw
ODM4MEJGIC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkxQzVEQzQ3MTI5MEIzM0EyMDA2MUVDNjIgLyogSlNXZWJF
eHRlbnNpb25BUElFeHRlbnNpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzVEQzQ1NTI5MDhB
QzkwMDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElOYW1lc3BhY2UubW0gaW4gU291cmNlcyAq
LywKLQkJCQkxQzVEQzQ3MjI5MEIzM0E2MDA2MUVDNjIgLyogSlNXZWJFeHRlbnNpb25BUElSdW50
aW1lLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1REM0NUYyOTA5QjA1QTAwNjFFQzYyIC8qIEpT
V2ViRXh0ZW5zaW9uV3JhcHBlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE0RDM3RkUy
NEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzE3MTBDRjcyNEFBNjQzMjAwRDdDMTEyIC8qIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUw
MDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0xODE2MCw5ICsxODA0NSw2IEBACiAJCQkJRTM4NjZCMEIyMzk5
QTJERDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUzODY2QjA5MjM5OUEyRDUwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMUM1REM0NjcyOTBCMjM4OTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbkNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1REM0NTIyOTA4QTlEMDAwNjFFQzYyIC8qIFdl
YkV4dGVuc2lvbkFQSU5hbWVzcGFjZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1REM0
NjYyOTBCMjM4OTAwNjFFQzYyIC8qIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFDNjI3NDc4Mjg4QTFFMUQwMENFRDNBMiAvKiBXZWJFeHRlbnNpb25D
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDMDIzNERDMjhBMDI2OEMwMEFDMUU1QiAvKiBX
ZWJFeHRlbnNpb25Db250ZXh0Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzAyMzRDRDI4
QTAwRkU0MDBBQzFFNUIgLyogV2ViRXh0ZW5zaW9uQ29udGV4dE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRl
bnNpb25zL0FQSS9Db2NvYS9XZWJFeHRlbnNpb25BUElFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9Db2NvYS9XZWJFeHRlbnNpb25BUElF
eHRlbnNpb25Db2NvYS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyMDQ0Y2Fj
N2Y5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lv
bnMvQVBJL0NvY29hL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbkNvY29hLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiAhX19oYXNfZmVhdHVyZShvYmpj
X2FyYykKLSNlcnJvciBUaGlzIGZpbGUgcmVxdWlyZXMgQVJDLiBBZGQgdGhlICItZm9iamMtYXJj
IiBjb21waWxlciBmbGFnIGZvciB0aGlzIGZpbGUuCi0jZW5kaWYKLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJXZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaCIKLQotI2lmIEVOQUJMRShX
S19XRUJfRVhURU5TSU9OUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViRXh0ZW5z
aW9uQVBJRXh0ZW5zaW9uOjppc1Byb3BlcnR5QWxsb3dlZChTdHJpbmcsIFdlYlBhZ2UqKQotewot
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1OU1VSTCAq
V2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uOjpnZXRVUkwoTlNTdHJpbmcgKnJlc291cmNlUGF0aCwg
TlNTdHJpbmcgKiplcnJvclN0cmluZykKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAg
IHJldHVybiBuaWw7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0V4dGVuc2lvbnMvQVBJL0NvY29hL1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL0NvY29hL1dlYkV4dGVu
c2lvbkFQSU5hbWVzcGFjZUNvY29hLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MDVhYTc4NjdjNmEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RXh0ZW5zaW9ucy9BUEkvQ29jb2EvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlQ29jb2EubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmICFfX2hhc19mZWF0
dXJlKG9iamNfYXJjKQotI2Vycm9yIFRoaXMgZmlsZSByZXF1aXJlcyBBUkMuIEFkZCB0aGUgIi1m
b2JqYy1hcmMiIGNvbXBpbGVyIGZsYWcgZm9yIHRoaXMgZmlsZS4KLSNlbmRpZgotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oIgotCi0jaWYg
RU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViRXh0
ZW5zaW9uQVBJRXh0ZW5zaW9uJiBXZWJFeHRlbnNpb25BUElOYW1lc3BhY2U6OmV4dGVuc2lvbigp
Ci17Ci0gICAgaWYgKCFtX2V4dGVuc2lvbikKLSAgICAgICAgbV9leHRlbnNpb24gPSBXZWJFeHRl
bnNpb25BUElFeHRlbnNpb246OmNyZWF0ZShmb3JNYWluV29ybGQoKSwgcnVudGltZSgpKTsKLSAg
ICByZXR1cm4gKm1fZXh0ZW5zaW9uOwotfQotCi1XZWJFeHRlbnNpb25BUElSdW50aW1lJiBXZWJF
eHRlbnNpb25BUElOYW1lc3BhY2U6OnJ1bnRpbWUoKQotewotICAgIGlmICghbV9ydW50aW1lKQot
ICAgICAgICBtX3J1bnRpbWUgPSBXZWJFeHRlbnNpb25BUElSdW50aW1lOjpjcmVhdGUoZm9yTWFp
bldvcmxkKCkpOwotICAgIHJldHVybiAqbV9ydW50aW1lOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9Db2NvYS9XZWJFeHRlbnNp
b25BUElSdW50aW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9u
cy9BUEkvQ29jb2EvV2ViRXh0ZW5zaW9uQVBJUnVudGltZUNvY29hLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjMDM0NjgyNDRkYWYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvQ29jb2EvV2ViRXh0ZW5zaW9uQVBJUnVu
dGltZUNvY29hLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWYgIV9faGFzX2ZlYXR1cmUob2JqY19hcmMpCi0jZXJyb3IgVGhpcyBmaWxlIHJlcXVpcmVz
IEFSQy4gQWRkIHRoZSAiLWZvYmpjLWFyYyIgY29tcGlsZXIgZmxhZyBmb3IgdGhpcyBmaWxlLgot
I2VuZGlmCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2ViRXh0ZW5zaW9uQVBJUnVu
dGltZS5oIgotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdm9pZCBXZWJFeHRlbnNpb25BUElSdW50aW1lQmFzZTo6cmVwb3J0RXJyb3JGb3JD
YWxsYmFja0hhbmRsZXIoV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyJiBjYWxsYmFjaywgTlNT
dHJpbmcgKmVycm9yTWVzc2FnZSwgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHRSZWYpCi17Ci0g
ICAgQVNTRVJUKGVycm9yTWVzc2FnZS5sZW5ndGgpOwotICAgIEFTU0VSVChjb250ZXh0UmVmKTsK
LQotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2Jh
bENvbnRleHRSZWY6Y29udGV4dFJlZl07Ci0KLSAgICBtX2xhc3RFcnJvckFjY2Vzc2VkID0gZmFs
c2U7Ci0gICAgbV9sYXN0RXJyb3IgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNz
YWdlOmVycm9yTWVzc2FnZSBpbkNvbnRleHQ6Y29udGV4dF07Ci0KLSAgICBjYWxsYmFjay5jYWxs
KCk7Ci0KLSAgICBpZiAoIW1fbGFzdEVycm9yQWNjZXNzZWQpIHsKLSAgICAgICAgLy8gTG9nIHRo
ZSBlcnJvciB0byB0aGUgY29uc29sZSBpZiBpdCB3YXNuJ3QgY2hlY2tlZCBpbiB0aGUgY2FsbGJh
Y2suCi0gICAgICAgIEpTVmFsdWUgKmNvbnNvbGVFcnJvckZ1bmN0aW9uID0gY29udGV4dC5nbG9i
YWxPYmplY3RbQCJjb25zb2xlIl1bQCJlcnJvciJdOwotICAgICAgICBbY29uc29sZUVycm9yRnVu
Y3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6QFsgW0pTVmFsdWUgdmFsdWVXaXRoTmV3RXJyb3JGcm9t
TWVzc2FnZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlVuY2hlY2tlZCBydW50aW1lLmxh
c3RFcnJvcjogJUAiLCBlcnJvck1lc3NhZ2VdIGluQ29udGV4dDpjb250ZXh0XSBdXTsKLSAgICB9
Ci0KLSAgICBtX2xhc3RFcnJvckFjY2Vzc2VkID0gZmFsc2U7Ci0gICAgbV9sYXN0RXJyb3IgPSBu
aWw7Ci19Ci0KLU5TVVJMICpXZWJFeHRlbnNpb25BUElSdW50aW1lOjpnZXRVUkwoTlNTdHJpbmcg
KnJlc291cmNlUGF0aCwgTlNTdHJpbmcgKiplcnJvclN0cmluZykKLXsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50LgotICAgIHJldHVybiBuaWw7Ci19Ci0KLU5TU3RyaW5nICpXZWJFeHRlbnNpb25B
UElSdW50aW1lOjpnZXRNYW5pZmVzdCgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAg
ICByZXR1cm4gbmlsOwotfQotCi1OU1N0cmluZyAqV2ViRXh0ZW5zaW9uQVBJUnVudGltZTo6cnVu
dGltZUlkZW50aWZpZXIoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJu
IG5pbDsKLX0KLQotdm9pZCBXZWJFeHRlbnNpb25BUElSdW50aW1lOjpnZXRQbGF0Zm9ybUluZm8o
UmVmPFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcj4mJiBjYWxsYmFjaykKLXsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qgb3NWYWx1ZSA9IEAibWFjIjsK
LSNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
b3NWYWx1ZSA9IEAiaW9zIjsKLSNlbHNlCi0gICAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qgb3NW
YWx1ZSA9IEAidW5rbm93biI7Ci0jZW5kaWYKLQotI2lmIENQVShYODZfNjQpCi0gICAgc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgYXJjaFZhbHVlID0gQCJ4ODYtNjQiOwotI2VsaWYgQ1BVKEFSTSkg
fHwgQ1BVKEFSTTY0KQotICAgIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGFyY2hWYWx1ZSA9IEAi
YXJtIjsKLSNlbHNlCi0gICAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgYXJjaFZhbHVlID0gQCJ1
bmtub3duIjsKLSNlbmRpZgotCi0gICAgc3RhdGljIE5TRGljdGlvbmFyeSAqcGxhdGZvcm1JbmZv
ID0gQHsKLSAgICAgICAgQCJvcyI6IG9zVmFsdWUsCi0gICAgICAgIEAiYXJjaCI6IGFyY2hWYWx1
ZQotICAgIH07Ci0KLSAgICBjYWxsYmFjay0+Y2FsbChwbGF0Zm9ybUluZm8pOwotfQotCi1KU1Zh
bHVlUmVmIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWU6Omxhc3RFcnJvcigpCi17Ci0gICAgbV9sYXN0
RXJyb3JBY2Nlc3NlZCA9IHRydWU7Ci0KLSAgICByZXR1cm4gbV9sYXN0RXJyb3IuZ2V0KCkuSlNW
YWx1ZVJlZjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0tfV0VCX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZmM5ZTFlNjQ3NS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25B
UElFeHRlbnNpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKLQotI2luY2x1
ZGUgIkpTV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiV2ViRXh0ZW5zaW9u
QVBJT2JqZWN0LmgiCi0KLU9CSkNfQ0xBU1MgTlNTdHJpbmc7Ci1PQkpDX0NMQVNTIE5TVVJMOwot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZTsKLQotY2xhc3MgV2ViRXh0ZW5z
aW9uQVBJRXh0ZW5zaW9uIDogcHVibGljIFdlYkV4dGVuc2lvbkFQSU9iamVjdCwgcHVibGljIEpT
V2ViRXh0ZW5zaW9uV3JhcHBhYmxlIHsKLSAgICBXRUJfRVhURU5TSU9OX0RFQ0xBUkVfSlNfV1JB
UFBFUl9DTEFTUyhXZWJFeHRlbnNpb25BUElFeHRlbnNpb24sIGV4dGVuc2lvbik7Ci0KLXB1Ymxp
YzoKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGlzUHJvcGVydHlBbGxvd2VkKFN0cmlu
ZyBwcm9wZXJ0eU5hbWUsIFdlYlBhZ2UqKTsKLQotICAgIE5TVVJMICpnZXRVUkwoTlNTdHJpbmcg
KnJlc291cmNlUGF0aCwgTlNTdHJpbmcgKiplcnJvclN0cmluZyk7Ci0jZW5kaWYKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dl
YkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVu
c2lvbnMvQVBJL1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5OTcyMzlmN2E4NzUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0KLSNpbmNsdWRlICJKU1dlYkV4dGVuc2lv
bkFQSU5hbWVzcGFjZS5oIgotI2luY2x1ZGUgIldlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5oIgot
I2luY2x1ZGUgIldlYkV4dGVuc2lvbkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkV4dGVuc2lv
bkFQSVJ1bnRpbWUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkV4dGVuc2lv
bkFQSUV4dGVuc2lvbjsKLWNsYXNzIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWU7Ci0KLWNsYXNzIFdl
YkV4dGVuc2lvbkFQSU5hbWVzcGFjZSA6IHB1YmxpYyBXZWJFeHRlbnNpb25BUElPYmplY3QsIHB1
YmxpYyBKU1dlYkV4dGVuc2lvbldyYXBwYWJsZSB7Ci0gICAgV0VCX0VYVEVOU0lPTl9ERUNMQVJF
X0pTX1dSQVBQRVJfQ0xBU1MoV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlLCBuYW1lc3BhY2UpOwot
Ci1wdWJsaWM6Ci0gICAgV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uJiBleHRlbnNpb24oKTsKLSAg
ICBXZWJFeHRlbnNpb25BUElSdW50aW1lJiBydW50aW1lKCkgZmluYWw7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVmUHRyPFdlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbj4gbV9leHRlbnNpb247Ci0gICAgUmVm
UHRyPFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWU+IG1fcnVudGltZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dlYkV4dGVuc2lv
bkFQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQVBJL1dl
YkV4dGVuc2lvbkFQSU9iamVjdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWI0
MzZmZmQ1NjIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0
ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJT2JqZWN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdLX1dF
Ql9FWFRFTlNJT05TKQotCi0jaW5jbHVkZSAiSlNXZWJFeHRlbnNpb25XcmFwcGFibGUuaCIKLSNp
bmNsdWRlICJKU1dlYkV4dGVuc2lvbldyYXBwZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdl
YkV4dGVuc2lvbkFQSVJ1bnRpbWU7Ci0KLWNsYXNzIFdlYkV4dGVuc2lvbkFQSU9iamVjdCB7Ci1w
dWJsaWM6Ci0gICAgZW51bSBjbGFzcyBGb3JNYWluV29ybGQgOiBib29sIHsgTm8sIFllcyB9Owot
Ci0gICAgV2ViRXh0ZW5zaW9uQVBJT2JqZWN0KEZvck1haW5Xb3JsZCBmb3JNYWluV29ybGQpCi0g
ICAgICAgIDogbV9mb3JNYWluV29ybGQoZm9yTWFpbldvcmxkKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBXZWJFeHRlbnNpb25BUElPYmplY3QoRm9yTWFpbldvcmxkIGZvck1haW5Xb3JsZCwgV2ViRXh0
ZW5zaW9uQVBJUnVudGltZUJhc2UmIHJ1bnRpbWUpCi0gICAgICAgIDogbV9mb3JNYWluV29ybGQo
Zm9yTWFpbldvcmxkKQotICAgICAgICAsIG1fcnVudGltZSgmcnVudGltZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+V2ViRXh0ZW5zaW9uQVBJT2JqZWN0KCkgPSBkZWZhdWx0OwotCi0g
ICAgRm9yTWFpbldvcmxkIGZvck1haW5Xb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yTWFpbldv
cmxkOyB9Ci0gICAgYm9vbCBpc0Zvck1haW5Xb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yTWFp
bldvcmxkID09IEZvck1haW5Xb3JsZDo6WWVzOyB9Ci0KLSAgICB2aXJ0dWFsIFdlYkV4dGVuc2lv
bkFQSVJ1bnRpbWVCYXNlJiBydW50aW1lKCkgeyByZXR1cm4gKm1fcnVudGltZTsgfQotCi1wcml2
YXRlOgotICAgIEZvck1haW5Xb3JsZCBtX2Zvck1haW5Xb3JsZCA9IEZvck1haW5Xb3JsZDo6WWVz
OwotICAgIFJlZlB0cjxXZWJFeHRlbnNpb25BUElSdW50aW1lQmFzZT4gbV9ydW50aW1lOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNkZWZpbmUgV0VCX0VYVEVOU0lPTl9ERUNMQVJF
X0pTX1dSQVBQRVJfQ0xBU1MoSW1wbENsYXNzLCBTY3JpcHRDbGFzcykgXAotcHVibGljOiBcCi0g
ICAgdXNpbmcgRm9yTWFpbldvcmxkID0gV2ViRXh0ZW5zaW9uQVBJT2JqZWN0OjpGb3JNYWluV29y
bGQ7IFwKLVwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBcCi0gICAgc3RhdGljIFJl
ZjxJbXBsQ2xhc3M+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgXAotICAgIHsgXAotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbXBsQ2xhc3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7IFwKLSAgICB9IFwKLVwKLSAgICB2aXJ0dWFsIH5JbXBsQ2xhc3MoKSA9IGRlZmF1bHQ7IFwK
LVwKLXByaXZhdGU6IFwKLSAgICBleHBsaWNpdCBJbXBsQ2xhc3MoRm9yTWFpbldvcmxkIGZvck1h
aW5Xb3JsZCkgXAotICAgICAgICA6IFdlYkV4dGVuc2lvbkFQSU9iamVjdChmb3JNYWluV29ybGQp
IFwKLSAgICB7IFwKLSAgICB9IFwKLVwKLSAgICBleHBsaWNpdCBJbXBsQ2xhc3MoRm9yTWFpbldv
cmxkIGZvck1haW5Xb3JsZCwgV2ViRXh0ZW5zaW9uQVBJUnVudGltZUJhc2UmIHJ1bnRpbWUpIFwK
LSAgICAgICAgOiBXZWJFeHRlbnNpb25BUElPYmplY3QoZm9yTWFpbldvcmxkLCBydW50aW1lKSBc
Ci0gICAgeyBcCi0gICAgfSBcCi1cCi0gICAgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKSBmaW5h
bCB7IHJldHVybiBKUyMjSW1wbENsYXNzOjpTY3JpcHRDbGFzcyMjQ2xhc3MoKTsgfSBcCi1cCi0g
ICAgdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyBVTlVT
RURfVFlQRV9BTElBUyA9IGludAotCi0vLyBFbmQgb2YgbWFjcm8uCi0KLS8vIE5lZWRzIHRvIGJl
IGF0IHRoZSBlbmQgdG8gYWxsb3cgV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oIHRvIGluY2x1ZGUg
dGhpcyBoZWFkZXIKLS8vIGFuZCBhdm9pZCBoYXZpbmcgYWxsIEFQSXMgbmVlZCB0byBpbmNsdWRl
IGl0LgotI2luY2x1ZGUgIldlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaCIKLQotI2VuZGlmIC8vIEVO
QUJMRShXS19XRUJfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9FeHRlbnNpb25zL0FQSS9XZWJFeHRlbnNpb25BUElSdW50aW1lLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDYwNDllYzU4YmIuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9BUEkvV2ViRXh0ZW5zaW9u
QVBJUnVudGltZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi0jaW5jbHVk
ZSAiSlNXZWJFeHRlbnNpb25BUElSdW50aW1lLmgiCi0jaW5jbHVkZSAiV2ViRXh0ZW5zaW9uQVBJ
T2JqZWN0LmgiCi0KLU9CSkNfQ0xBU1MgTlNTdHJpbmc7Ci1PQkpDX0NMQVNTIE5TVVJMOwotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRXh0ZW5zaW9uQVBJUnVudGltZTsKLQotY2xh
c3MgV2ViRXh0ZW5zaW9uQVBJUnVudGltZUJhc2UgOiBwdWJsaWMgSlNXZWJFeHRlbnNpb25XcmFw
cGFibGUgewotcHVibGljOgotICAgIHZvaWQgcmVwb3J0RXJyb3JGb3JDYWxsYmFja0hhbmRsZXIo
V2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyJiwgTlNTdHJpbmcgKmVycm9yLCBKU0dsb2JhbENv
bnRleHRSZWYpOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBXZWJFeHRlbnNpb25BUElS
dW50aW1lOwotCi0gICAgYm9vbCBtX2xhc3RFcnJvckFjY2Vzc2VkID0gZmFsc2U7Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8SlNWYWx1ZT4gbV9sYXN0RXJyb3I7Ci0jZW5k
aWYKLX07Ci0KLWNsYXNzIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWUgOiBwdWJsaWMgV2ViRXh0ZW5z
aW9uQVBJT2JqZWN0LCBwdWJsaWMgV2ViRXh0ZW5zaW9uQVBJUnVudGltZUJhc2UgewotICAgIFdF
Ql9FWFRFTlNJT05fREVDTEFSRV9KU19XUkFQUEVSX0NMQVNTKFdlYkV4dGVuc2lvbkFQSVJ1bnRp
bWUsIHJ1bnRpbWUpOwotCi1wdWJsaWM6Ci0gICAgV2ViRXh0ZW5zaW9uQVBJUnVudGltZSYgcnVu
dGltZSgpIGZpbmFsIHsgcmV0dXJuICp0aGlzOyB9Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBOU1VSTCAqZ2V0VVJMKE5TU3RyaW5nICpyZXNvdXJjZVBhdGgsIE5TU3RyaW5nICoqZXJyb3JT
dHJpbmcpOwotCi0gICAgTlNTdHJpbmcgKmdldE1hbmlmZXN0KCk7Ci0KLSAgICBOU1N0cmluZyAq
cnVudGltZUlkZW50aWZpZXIoKTsKLQotICAgIHZvaWQgZ2V0UGxhdGZvcm1JbmZvKFJlZjxXZWJF
eHRlbnNpb25DYWxsYmFja0hhbmRsZXI+JiYpOwotCi0gICAgSlNWYWx1ZVJlZiBsYXN0RXJyb3Io
KTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0tfV0VCX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9Db2NvYS9KU1dlYkV4dGVuc2lvbldyYXBwZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0NvY29hL0pT
V2ViRXh0ZW5zaW9uV3JhcHBlckNvY29hLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjYTY2MGYxZjAwZGEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9Db2NvYS9KU1dlYkV4dGVuc2lvbldyYXBwZXJDb2NvYS5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDM1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmICFfX2hh
c19mZWF0dXJlKG9iamNfYXJjKQotI2Vycm9yIFRoaXMgZmlsZSByZXF1aXJlcyBBUkMuIEFkZCB0
aGUgIi1mb2JqYy1hcmMiIGNvbXBpbGVyIGZsYWcgZm9yIHRoaXMgZmlsZS4KLSNlbmRpZgotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkpTV2ViRXh0ZW5zaW9uV3JhcHBlci5oIgotCi0j
aWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi0jaW1wb3J0ICJDb2NvYUhlbHBlcnMuaCIK
LSNpbXBvcnQgIkpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlLmgiCi0jaW1wb3J0ICJXZWJFeHRlbnNp
b25BUElSdW50aW1lLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyOjpXZWJF
eHRlbnNpb25DYWxsYmFja0hhbmRsZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGNhbGxiYWNrRnVuY3Rpb24sIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVCYXNlJiBydW50aW1lKQot
ICAgIDogbV9jYWxsYmFja0Z1bmN0aW9uKGNhbGxiYWNrRnVuY3Rpb24pCi0gICAgLCBtX2dsb2Jh
bENvbnRleHQoSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChjb250ZXh0KSkKLSAgICAsIG1fcnVu
dGltZSgmcnVudGltZSkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgQVNTRVJUKGNhbGxi
YWNrRnVuY3Rpb24pOwotCi0gICAgSlNWYWx1ZVByb3RlY3QobV9nbG9iYWxDb250ZXh0LmdldCgp
LCBtX2NhbGxiYWNrRnVuY3Rpb24pOwotfQotCi1XZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI6
OldlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcihKU0NvbnRleHRSZWYgY29udGV4dCwgV2ViRXh0
ZW5zaW9uQVBJUnVudGltZUJhc2UmIHJ1bnRpbWUpCi0gICAgOiBtX2dsb2JhbENvbnRleHQoSlND
b250ZXh0R2V0R2xvYmFsQ29udGV4dChjb250ZXh0KSkKLSAgICAsIG1fcnVudGltZSgmcnVudGlt
ZSkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci19Ci0KLVdlYkV4dGVuc2lvbkNhbGxiYWNrSGFu
ZGxlcjo6V2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiByZXNvbHZlRnVuY3Rpb24sIEpTT2JqZWN0UmVmIHJlamVjdEZ1bmN0aW9uKQot
ICAgIDogbV9jYWxsYmFja0Z1bmN0aW9uKHJlc29sdmVGdW5jdGlvbikKLSAgICAsIG1fcmVqZWN0
RnVuY3Rpb24ocmVqZWN0RnVuY3Rpb24pCi0gICAgLCBtX2dsb2JhbENvbnRleHQoSlNDb250ZXh0
R2V0R2xvYmFsQ29udGV4dChjb250ZXh0KSkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAg
QVNTRVJUKHJlc29sdmVGdW5jdGlvbik7Ci0gICAgQVNTRVJUKHJlamVjdEZ1bmN0aW9uKTsKLQot
ICAgIEpTVmFsdWVQcm90ZWN0KG1fZ2xvYmFsQ29udGV4dC5nZXQoKSwgbV9jYWxsYmFja0Z1bmN0
aW9uKTsKLSAgICBKU1ZhbHVlUHJvdGVjdChtX2dsb2JhbENvbnRleHQuZ2V0KCksIG1fcmVqZWN0
RnVuY3Rpb24pOwotfQotCi1XZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI6On5XZWJFeHRlbnNp
b25DYWxsYmFja0hhbmRsZXIoKQotewotICAgIGlmIChtX2NhbGxiYWNrRnVuY3Rpb24pCi0gICAg
ICAgIEpTVmFsdWVVbnByb3RlY3QobV9nbG9iYWxDb250ZXh0LmdldCgpLCBtX2NhbGxiYWNrRnVu
Y3Rpb24pOwotCi0gICAgaWYgKG1fcmVqZWN0RnVuY3Rpb24pCi0gICAgICAgIEpTVmFsdWVVbnBy
b3RlY3QobV9nbG9iYWxDb250ZXh0LmdldCgpLCBtX3JlamVjdEZ1bmN0aW9uKTsKLX0KLQotSlNW
YWx1ZSAqV2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyOjpjYWxsYmFja0Z1bmN0aW9uKCkgY29u
c3QKLXsKLSAgICBpZiAoIW1fZ2xvYmFsQ29udGV4dCB8fCAhbV9jYWxsYmFja0Z1bmN0aW9uKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFs
dWVSZWY6bV9jYWxsYmFja0Z1bmN0aW9uIGluQ29udGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRo
SlNHbG9iYWxDb250ZXh0UmVmOm1fZ2xvYmFsQ29udGV4dC5nZXQoKV1dOwotfQotCi10ZW1wbGF0
ZTxzaXplX3QgQXJndW1lbnRDb3VudD4KLWlkIGNhbGxXaXRoQXJndW1lbnRzKEpTT2JqZWN0UmVm
IGNhbGxiYWNrRnVuY3Rpb24sIEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4mIGdsb2Jh
bENvbnRleHQsIHN0ZDo6YXJyYXk8SlNWYWx1ZVJlZiwgQXJndW1lbnRDb3VudD4mJiBhcmd1bWVu
dHMpCi17Ci0gICAgaWYgKCFnbG9iYWxDb250ZXh0IHx8ICFjYWxsYmFja0Z1bmN0aW9uKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiB0b05TT2JqZWN0KGdsb2JhbENvbnRleHQuZ2V0
KCksIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oZ2xvYmFsQ29udGV4dC5nZXQoKSwgY2FsbGJhY2tG
dW5jdGlvbiwgbnVsbHB0ciwgQXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEoKSwgbnVsbHB0
cikpOwotfQotCi12b2lkIFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcjo6cmVwb3J0RXJyb3Io
TlNTdHJpbmcgKm1lc3NhZ2UpCi17Ci0gICAgaWYgKCFtX2dsb2JhbENvbnRleHQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX3J1bnRpbWUpIHsKLSAgICAgICAgbV9ydW50aW1lLT5yZXBv
cnRFcnJvckZvckNhbGxiYWNrSGFuZGxlcigqdGhpcywgbWVzc2FnZSwgbV9nbG9iYWxDb250ZXh0
LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9yZWplY3RGdW5j
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSlNWYWx1ZSAqZXJyb3IgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOm1lc3NhZ2UgaW5Db250ZXh0OltKU0NvbnRleHQg
Y29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9nbG9iYWxDb250ZXh0LmdldCgpXV07Ci0K
LSAgICBjYWxsV2l0aEFyZ3VtZW50czwxPihtX3JlamVjdEZ1bmN0aW9uLCBtX2dsb2JhbENvbnRl
eHQsIHsKLSAgICAgICAgdG9KU1ZhbHVlKG1fZ2xvYmFsQ29udGV4dC5nZXQoKSwgZXJyb3IpCi0g
ICAgfSk7Ci19Ci0KLWlkIFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcjo6Y2FsbCgpCi17Ci0g
ICAgcmV0dXJuIGNhbGxXaXRoQXJndW1lbnRzPDA+KG1fY2FsbGJhY2tGdW5jdGlvbiwgbV9nbG9i
YWxDb250ZXh0LCB7IH0pOwotfQotCi1pZCBXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI6OmNh
bGwoaWQgYXJndW1lbnQpCi17Ci0gICAgcmV0dXJuIGNhbGxXaXRoQXJndW1lbnRzPDE+KG1fY2Fs
bGJhY2tGdW5jdGlvbiwgbV9nbG9iYWxDb250ZXh0LCB7Ci0gICAgICAgIHRvSlNWYWx1ZShtX2ds
b2JhbENvbnRleHQuZ2V0KCksIGFyZ3VtZW50KQotICAgIH0pOwotfQotCi1pZCBXZWJFeHRlbnNp
b25DYWxsYmFja0hhbmRsZXI6OmNhbGwoaWQgYXJndW1lbnRPbmUsIGlkIGFyZ3VtZW50VHdvKQot
ewotICAgIHJldHVybiBjYWxsV2l0aEFyZ3VtZW50czwyPihtX2NhbGxiYWNrRnVuY3Rpb24sIG1f
Z2xvYmFsQ29udGV4dCwgewotICAgICAgICB0b0pTVmFsdWUobV9nbG9iYWxDb250ZXh0LmdldCgp
LCBhcmd1bWVudE9uZSksCi0gICAgICAgIHRvSlNWYWx1ZShtX2dsb2JhbENvbnRleHQuZ2V0KCks
IGFyZ3VtZW50VHdvKQotICAgIH0pOwotfQotCi1pZCBXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRs
ZXI6OmNhbGwoaWQgYXJndW1lbnRPbmUsIGlkIGFyZ3VtZW50VHdvLCBpZCBhcmd1bWVudFRocmVl
KQotewotICAgIHJldHVybiBjYWxsV2l0aEFyZ3VtZW50czwzPihtX2NhbGxiYWNrRnVuY3Rpb24s
IG1fZ2xvYmFsQ29udGV4dCwgewotICAgICAgICB0b0pTVmFsdWUobV9nbG9iYWxDb250ZXh0Lmdl
dCgpLCBhcmd1bWVudE9uZSksCi0gICAgICAgIHRvSlNWYWx1ZShtX2dsb2JhbENvbnRleHQuZ2V0
KCksIGFyZ3VtZW50VHdvKSwKLSAgICAgICAgdG9KU1ZhbHVlKG1fZ2xvYmFsQ29udGV4dC5nZXQo
KSwgYXJndW1lbnRUaHJlZSkKLSAgICB9KTsKLX0KLQotc3RhdGljIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uT2JqZWN0QnlOYW1lKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3RS
ZWYsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0K
LSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZVJlZiBmdW5j
dGlvbiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0UmVmLCB0b0pTU3RyaW5n
KGZ1bmN0aW9uTmFtZSkuZ2V0KCksICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24gfHwg
IWZ1bmN0aW9uIHx8ICFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgZnVuY3Rpb24pKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIGZ1bmN0aW9uLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0
aW9uIHx8ICFmdW5jdGlvblJlZiB8fCAhSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIGZ1bmN0
aW9uUmVmKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZnVuY3Rpb25S
ZWY7Ci19Ci0KLWlkIHRvTlNPYmplY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
dmFsdWVSZWYsIENsYXNzIHJlcXVpcmVkQ2xhc3MpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwot
Ci0gICAgaWYgKCF2YWx1ZVJlZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEpTVmFsdWUg
KnZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp2YWx1ZVJlZiBpbkNvbnRleHQ6
W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpKU0NvbnRleHRHZXRHbG9i
YWxDb250ZXh0KGNvbnRleHQpXV07Ci0KLSAgICAvLyBGb3IgZnVuY3Rpb25zIGFuZCBwcm9taXNl
cyAoInRoZW5hYmxlIiBvYmplY3RzKSwgcmV0dXJuIHRoZSBKU1ZhbHVlIGluc3RlYWQgb2YgY2Fs
bGluZyB0b09iamVjdCBzaW5jZSB0aGF0IHdpbGwgY29udmVydCBpdCB0byBhbiBlbXB0eSBOU0Rp
Y3Rpb25hcnkgYW5kIGJlIHVzZWxlc3MuCi0gICAgaWYgKEpTVmFsdWVJc09iamVjdChjb250ZXh0
LCB2YWx1ZVJlZikpIHsKLSAgICAgICAgSlNPYmplY3RSZWYgb2JqZWN0UmVmID0gSlNWYWx1ZVRv
T2JqZWN0KGNvbnRleHQsIHZhbHVlUmVmLCBudWxscHRyKTsKLSAgICAgICAgaWYgKEpTT2JqZWN0
SXNGdW5jdGlvbihjb250ZXh0LCBvYmplY3RSZWYpKQotICAgICAgICAgICAgcmV0dXJuIHZhbHVl
OwotCi0gICAgICAgIGlmICh2YWx1ZS5fdGhlbmFibGUpCi0gICAgICAgICAgICByZXR1cm4gdmFs
dWU7Ci0gICAgfQotCi0gICAgaWQgcmVzdWx0ID0gW3ZhbHVlIHRvT2JqZWN0XTsKLSAgICBOU0Fy
cmF5ICpyZXN1bHRBcnJheSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TQXJyYXk+KHJlc3VsdCk7Ci0g
ICAgaWYgKCFyZXF1aXJlZENsYXNzIHx8ICFyZXN1bHRBcnJheSkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLQotICAgIHJldHVybiBmaWx0ZXJPYmplY3RzKHJlc3VsdEFycmF5LCBeYm9vbCAoaWQs
IGlkIHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiBbdmFsdWUgaXNLaW5kT2ZDbGFzczpyZXF1aXJl
ZENsYXNzXTsKLSAgICB9KTsKLX0KLQotTlNTdHJpbmcgKnRvTlNTdHJpbmcoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIE51bGxTdHJpbmdQb2xpY3kgbnVsbFN0cmluZ1Bv
bGljeSkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAg
IHN3aXRjaCAobnVsbFN0cmluZ1BvbGljeSkgewotICAgIGNhc2UgTnVsbFN0cmluZ1BvbGljeTo6
TnVsbEFuZFVuZGVmaW5lZEFzTnVsbFN0cmluZzoKLSAgICAgICAgaWYgKEpTVmFsdWVJc1VuZGVm
aW5lZChjb250ZXh0LCB2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBG
QUxMVEhST1VHSDsKLQotICAgIGNhc2UgTnVsbFN0cmluZ1BvbGljeTo6TnVsbEFzTnVsbFN0cmlu
ZzoKLSAgICAgICAgaWYgKEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpKQotICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0KLSAgICBjYXNlIE51bGxTdHJp
bmdQb2xpY3k6Ok5vTnVsbFN0cmluZzoKLSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHN0cmluZyhBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgMCkpOwot
ICAgICAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcobnVs
bHB0ciwgc3RyaW5nLmdldCgpKSk7Ci0gICAgfQotfQotCi1OU0RpY3Rpb25hcnkgKnRvTlNEaWN0
aW9uYXJ5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIEFT
U0VSVChjb250ZXh0KTsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFs
dWVUb09iamVjdChjb250ZXh0LCB2YWx1ZSwgbnVsbHB0cik7Ci0gICAgaWYgKCFvYmplY3QpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5
TmFtZXMgPSBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQsIG9iamVjdCk7Ci0gICAg
c2l6ZV90IHByb3BlcnR5TmFtZUNvdW50ID0gSlNQcm9wZXJ0eU5hbWVBcnJheUdldENvdW50KHBy
b3BlcnR5TmFtZXMpOwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcmVzdWx0ID0gW05TTXV0
YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eTpwcm9wZXJ0eU5hbWVDb3VudF07
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZUNvdW50OyArK2kpIHsK
LSAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5TmFtZSA9IEpTUHJvcGVy
dHlOYW1lQXJyYXlHZXROYW1lQXRJbmRleChwcm9wZXJ0eU5hbWVzLCBpKTsKLSAgICAgICAgSlNW
YWx1ZVJlZiBpdGVtID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBvYmplY3QsIHByb3Bl
cnR5TmFtZS5nZXQoKSwgMCk7Ci0KLSAgICAgICAgLy8gQ2hyb21lIGRvZXMgbm90IGluY2x1ZGUg
bnVsbCB2YWx1ZXMgaW4gZGljdGlvbmFyaWVzIGZvciB3ZWIgZXh0ZW5zaW9ucy4KLSAgICAgICAg
aWYgKEpTVmFsdWVJc051bGwoY29udGV4dCwgaXRlbSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBpZiAoaWQgdmFsdWUgPSB0b05TT2JqZWN0KGNvbnRleHQsIGl0ZW0pKQotICAg
ICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6dmFsdWUgZm9yS2V5OnRvTlNTdHJpbmcocHJvcGVy
dHlOYW1lLmdldCgpKV07Ci0gICAgfQotCi0gICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2Uo
cHJvcGVydHlOYW1lcyk7Ci0KLSAgICByZXR1cm4gW3Jlc3VsdCBjb3B5XTsKLX0KLQotSlNWYWx1
ZVJlZiB0b0pTVmFsdWUoSlNDb250ZXh0UmVmIGNvbnRleHQsIE5TU3RyaW5nICpzdHJpbmcsIE51
bGxPckVtcHR5U3RyaW5nIG51bGxPckVtcHR5U3RyaW5nKQotewotICAgIEFTU0VSVChjb250ZXh0
KTsKLQotICAgIHN3aXRjaCAobnVsbE9yRW1wdHlTdHJpbmcpIHsKLSAgICBjYXNlIE51bGxPckVt
cHR5U3RyaW5nOjpOdWxsU3RyaW5nQXNOdWxsOgotICAgICAgICBpZiAoIXN0cmluZykKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Ci0gICAgICAgIEZBTExUSFJP
VUdIOwotCi0gICAgY2FzZSBOdWxsT3JFbXB0eVN0cmluZzo6TnVsbFN0cmluZ0FzRW1wdHlTdHJp
bmc6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCB0b0pTU3RyaW5n
KHN0cmluZykuZ2V0KCkpOwotICAgIH0KLX0KLQotSlNWYWx1ZVJlZiB0b0pTVmFsdWUoSlNDb250
ZXh0UmVmIGNvbnRleHQsIE5TVVJMICp1cmwsIE51bGxPckVtcHR5U3RyaW5nIG51bGxPckVtcHR5
U3RyaW5nKQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIHJldHVybiB0b0pTVmFsdWUo
Y29udGV4dCwgdXJsLmFic29sdXRlVVJMLmFic29sdXRlU3RyaW5nLCBudWxsT3JFbXB0eVN0cmlu
Zyk7Ci19Ci0KLU5TU3RyaW5nICp0b05TU3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZykKLXsKLSAg
ICByZXR1cm4gc3RyaW5nID8gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
bnVsbHB0ciwgc3RyaW5nKSkgOiBuaWw7Ci19Ci0KLVJlZlB0cjxXZWJFeHRlbnNpb25DYWxsYmFj
a0hhbmRsZXI+IHRvSlNDYWxsYmFja0hhbmRsZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgY2FsbGJhY2tWYWx1ZSwgV2ViRXh0ZW5zaW9uQVBJUnVudGltZUJhc2UmIHJ1bnRpbWUp
Ci17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotCi0gICAgaWYgKCFjYWxsYmFja1ZhbHVlKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEpTT2JqZWN0UmVmIGNhbGxiYWNrRnVuY3Rpb24g
PSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgY2FsbGJhY2tWYWx1ZSwgbnVsbHB0cik7Ci0gICAg
aWYgKCFjYWxsYmFja0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlm
ICghSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrRnVuY3Rpb24pKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRs
ZXI6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFja0Z1bmN0aW9uLCBydW50aW1lKTsKLX0KLQotSlNW
YWx1ZVJlZiBkZXNlcmlhbGl6ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGNvbnRleHQsIE5TU3Ry
aW5nICpqc29uU3RyaW5nKQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIGlmICghanNv
blN0cmluZykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKLQotICAg
IGlmIChKU1ZhbHVlUmVmIHZhbHVlID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhjb250ZXh0
LCB0b0pTU3RyaW5nKGpzb25TdHJpbmcpLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwot
Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKLX0KLQotTlNTdHJpbmcgKnNl
cmlhbGl6ZUpTT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG9iamVjdCwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIGlm
ICghb2JqZWN0KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHN0cmluZyhBZG9wdCwgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoY29udGV4dCwgb2Jq
ZWN0LCAwLCBleGNlcHRpb24pKTsKLQotICAgIHJldHVybiB0b05TU3RyaW5nKHN0cmluZy5nZXQo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCi1AaW1wbGVtZW50YXRpb24gSlNWYWx1ZSAoVGhlbmFibGVFeHRyYXMpCi0KLS0gKEJPT0wp
X2lzVGhlbmFibGUKLXsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHNlbGYuY29u
dGV4dC5KU0dsb2JhbENvbnRleHRSZWY7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNlbGYu
SlNWYWx1ZVJlZjsKLQotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHZhbHVlUmVm
KSkKLSAgICAgICAgcmV0dXJuIE5POwotCi0gICAgLy8gQSBQcm9taXNlIG9iamVjdCBvciBhbnkg
InRoZW5hYmxlIiBvYmplY3QganVzdCBuZWVkcyB0byBoYXZlIGEgInRoZW4iIGZ1bmN0aW9uLgot
ICAgIHJldHVybiAhIWZ1bmN0aW9uT2JqZWN0QnlOYW1lKGNvbnRleHQsIEpTVmFsdWVUb09iamVj
dChjb250ZXh0LCB2YWx1ZVJlZiwgbnVsbHB0ciksICJ0aGVuIik7Ci19Ci0KLS0gKHZvaWQpX2F3
YWl0VGhlbmFibGVSZXNvbHV0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCBy
ZXN1bHQsIGlkIGVycm9yKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIEFTU0VSVChzZWxmLl90
aGVuYWJsZSk7Ci0KLSAgICBhdXRvIHJlc29sdmVCbG9jayA9IF4oaWQgcmVzdWx0KSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCwgbmlsKTsKLSAgICB9OwotCi0gICAgYXV0byBy
ZWplY3RCbG9jayA9IF4oaWQgZXJyb3IpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmls
LCBlcnJvcik7Ci0gICAgfTsKLQotICAgIFtzZWxmIGludm9rZU1ldGhvZDpAInRoZW4iIHdpdGhB
cmd1bWVudHM6QFsgcmVzb2x2ZUJsb2NrLCByZWplY3RCbG9jayBdXTsKLX0KLQotQGVuZAotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFwcGFi
bGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2Vi
RXh0ZW5zaW9uV3JhcHBhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZDRh
MjYyOWIzYy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRl
bnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0tfV0VCX0VYVEVOU0lPTlMpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi10eXBl
ZGVmIHN0cnVjdCBPcGFxdWVKU0NsYXNzKiBKU0NsYXNzUmVmOwotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotY2xhc3MgSlNXZWJFeHRlbnNpb25XcmFwcGFibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxK
U1dlYkV4dGVuc2lvbldyYXBwYWJsZT4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkpTV2ViRXh0
ZW5zaW9uV3JhcHBhYmxlKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNs
YXNzKCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0tfV0VCX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dlYkV4dGVuc2lvbldyYXBwZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFw
cGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY1ZWMxNmVmNTdmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGlu
Z3MvSlNXZWJFeHRlbnNpb25XcmFwcGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNXZWJFeHRl
bnNpb25XcmFwcGVyLmgiCi0KLSNpZiBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0KLSNpbmNs
dWRlICJKU1dlYkV4dGVuc2lvbldyYXBwYWJsZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTT2JqZWN0UmVmLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1KU1ZhbHVlUmVmIEpTV2Vi
RXh0ZW5zaW9uV3JhcHBlcjo6d3JhcChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNXZWJFeHRlbnNp
b25XcmFwcGFibGUqIG9iamVjdCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KLSAgICBpZiAo
IW9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKLQotICAg
IGF1dG8gb2JqZWN0Q2xhc3MgPSBvYmplY3QtPndyYXBwZXJDbGFzcygpOwotICAgIEFTU0VSVChv
YmplY3RDbGFzcyk7Ci0KLSAgICBhdXRvIHdyYXBwZXIgPSBKU09iamVjdE1ha2UoY29udGV4dCwg
b2JqZWN0Q2xhc3MsIG9iamVjdCk7Ci0gICAgQVNTRVJUKHdyYXBwZXIpOwotCi0gICAgcmV0dXJu
IHdyYXBwZXI7Ci19Ci0KLUpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlKiBKU1dlYkV4dGVuc2lvbldy
YXBwZXI6OnVud3JhcChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsK
LSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIGlmICghY29u
dGV4dCB8fCAhdmFsdWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEpTV2ViRXh0ZW5zaW9uV3JhcHBhYmxlKj4oSlNPYmplY3RHZXRQcml2YXRlKEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCB2YWx1ZSwgbnVsbHB0cikpKTsKLX0KLQotc3RhdGljIEpT
V2ViRXh0ZW5zaW9uV3JhcHBhYmxlKiB1bndyYXBPYmplY3QoSlNPYmplY3RSZWYgb2JqZWN0KQot
ewotICAgIEFTU0VSVChvYmplY3QpOwotCi0gICAgYXV0byogd3JhcHBhYmxlID0gc3RhdGljX2Nh
c3Q8SlNXZWJFeHRlbnNpb25XcmFwcGFibGUqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7
Ci0gICAgQVNTRVJUKHdyYXBwYWJsZSk7Ci0gICAgcmV0dXJuIHdyYXBwYWJsZTsKLX0KLQotdm9p
ZCBKU1dlYkV4dGVuc2lvbldyYXBwZXI6OmluaXRpYWxpemUoSlNDb250ZXh0UmVmLCBKU09iamVj
dFJlZiBvYmplY3QpCi17Ci0gICAgaWYgKGF1dG8qIHdyYXBwYWJsZSA9IHVud3JhcE9iamVjdChv
YmplY3QpKQotICAgICAgICB3cmFwcGFibGUtPnJlZigpOwotfQotCi12b2lkIEpTV2ViRXh0ZW5z
aW9uV3JhcHBlcjo6ZmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQotewotICAgIGlmIChhdXRv
KiB3cmFwcGFibGUgPSB1bndyYXBPYmplY3Qob2JqZWN0KSkKLSAgICAgICAgd3JhcHBhYmxlLT5k
ZXJlZigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShX
S19XRUJfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9F
eHRlbnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvQmluZGluZ3MvSlNXZWJFeHRlbnNpb25XcmFwcGVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YzYzNzZlNzNhYy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2Vi
RXh0ZW5zaW9uV3JhcHBlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKLQot
I2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgSlNWYWx1ZTsKLU9CSkNfQ0xBU1MgTlNT
dHJpbmc7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBKU1dlYkV4dGVuc2lvbldyYXBw
YWJsZTsKLWNsYXNzIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWVCYXNlOwotY2xhc3MgV2ViRXh0ZW5z
aW9uQ2FsbGJhY2tIYW5kbGVyOwotY2xhc3MgV2ViUGFnZTsKLQotY2xhc3MgSlNXZWJFeHRlbnNp
b25XcmFwcGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgSlNWYWx1ZVJlZiB3cmFwKEpTQ29udGV4
dFJlZiwgSlNXZWJFeHRlbnNpb25XcmFwcGFibGUqKTsKLSAgICBzdGF0aWMgSlNXZWJFeHRlbnNp
b25XcmFwcGFibGUqIHVud3JhcChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwotCi0gICAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKLSAgICBzdGF0
aWMgdm9pZCBmaW5hbGl6ZShKU09iamVjdFJlZik7Ci19OwotCi1jbGFzcyBXZWJFeHRlbnNpb25D
YWxsYmFja0hhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJFeHRlbnNpb25DYWxsYmFja0hh
bmRsZXI+IHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0
YXRpYyBSZWY8V2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyPiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJFeHRlbnNpb25DYWxs
YmFja0hhbmRsZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Ci0gICAgfQotCi0gICAg
fldlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcigpOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgSlNHbG9iYWxDb250ZXh0UmVmIGdsb2JhbENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2ds
b2JhbENvbnRleHQuZ2V0KCk7IH0KLSAgICBKU1ZhbHVlICpjYWxsYmFja0Z1bmN0aW9uKCkgY29u
c3Q7Ci0KLSAgICB2b2lkIHJlcG9ydEVycm9yKE5TU3RyaW5nICopOwotCi0gICAgaWQgY2FsbCgp
OwotICAgIGlkIGNhbGwoaWQgYXJndW1lbnQpOwotICAgIGlkIGNhbGwoaWQgYXJndW1lbnRPbmUs
IGlkIGFyZ3VtZW50VHdvKTsKLSAgICBpZCBjYWxsKGlkIGFyZ3VtZW50T25lLCBpZCBhcmd1bWVu
dFR3bywgaWQgYXJndW1lbnRUaHJlZSk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXIoSlNDb250ZXh0UmVmLCBK
U09iamVjdFJlZiByZXNvbHZlRnVuY3Rpb24sIEpTT2JqZWN0UmVmIHJlamVjdEZ1bmN0aW9uKTsK
LSAgICBXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXIoSlNDb250ZXh0UmVmLCBKU09iamVjdFJl
ZiBjYWxsYmFja0Z1bmN0aW9uLCBXZWJFeHRlbnNpb25BUElSdW50aW1lQmFzZSYpOwotICAgIFdl
YkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcihKU0NvbnRleHRSZWYsIFdlYkV4dGVuc2lvbkFQSVJ1
bnRpbWVCYXNlJik7Ci0KLSAgICBKU09iamVjdFJlZiBtX2NhbGxiYWNrRnVuY3Rpb247Ci0gICAg
SlNPYmplY3RSZWYgbV9yZWplY3RGdW5jdGlvbjsKLSAgICBKU1JldGFpblB0cjxKU0dsb2JhbENv
bnRleHRSZWY+IG1fZ2xvYmFsQ29udGV4dDsKLSAgICBSZWZQdHI8V2ViRXh0ZW5zaW9uQVBJUnVu
dGltZUJhc2U+IG1fcnVudGltZTsKLSNlbmRpZgotfTsKLQotZW51bSBjbGFzcyBOdWxsU3RyaW5n
UG9saWN5IHsKLSAgICBOb051bGxTdHJpbmcsCi0gICAgTnVsbEFzTnVsbFN0cmluZywKLSAgICBO
dWxsQW5kVW5kZWZpbmVkQXNOdWxsU3RyaW5nCi19OwotCi1lbnVtIGNsYXNzIE51bGxPckVtcHR5
U3RyaW5nIHsKLSAgICBOdWxsU3RyaW5nQXNOdWxsLAotICAgIE51bGxTdHJpbmdBc0VtcHR5U3Ry
aW5nCi19OwotCi1pbmxpbmUgV2ViRnJhbWUqIHRvV2ViRnJhbWUoSlNDb250ZXh0UmVmIGNvbnRl
eHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIHJldHVybiBXZWJGcmFtZTo6ZnJhbWVG
b3JDb250ZXh0KEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoY29udGV4dCkpOwotfQotCi1pbmxp
bmUgV2ViUGFnZSogdG9XZWJQYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIEFTU0VS
VChjb250ZXh0KTsKLSAgICBhdXRvKiBmcmFtZSA9IHRvV2ViRnJhbWUoY29udGV4dCk7Ci0gICAg
cmV0dXJuIGZyYW1lID8gZnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7Ci19Ci0KLWlubGluZSBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gdG9KU1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCi17Ci0g
ICAgQVNTRVJUKHN0cmluZyk7Ci0gICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSk7Ci19Ci0KLWlubGlu
ZSBKU1ZhbHVlUmVmIHRvSlNOdWxsSWZOdWxsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIHZhbHVlKQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICByZXR1cm4gdmFsdWUgPyB2
YWx1ZSA6IEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKLX0KLQotaW5saW5lIEpTVmFsdWVSZWYg
dG9KUyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNXZWJFeHRlbnNpb25XcmFwcGFibGUqIGltcGwp
Ci17Ci0gICAgcmV0dXJuIEpTV2ViRXh0ZW5zaW9uV3JhcHBlcjo6d3JhcChjb250ZXh0LCBpbXBs
KTsKLX0KLQotaW5saW5lIFJlZjxXZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI+IHRvSlNQcm9t
aXNlQ2FsbGJhY2tIYW5kbGVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiByZXNv
bHZlRnVuY3Rpb24sIEpTT2JqZWN0UmVmIHJlamVjdEZ1bmN0aW9uKQotewotICAgIHJldHVybiBX
ZWJFeHRlbnNpb25DYWxsYmFja0hhbmRsZXI6OmNyZWF0ZShjb250ZXh0LCByZXNvbHZlRnVuY3Rp
b24sIHJlamVjdEZ1bmN0aW9uKTsKLX0KLQotaW5saW5lIFJlZjxXZWJFeHRlbnNpb25DYWxsYmFj
a0hhbmRsZXI+IHRvSlNFcnJvckNhbGxiYWNrSGFuZGxlcihKU0NvbnRleHRSZWYgY29udGV4dCwg
V2ViRXh0ZW5zaW9uQVBJUnVudGltZUJhc2UmIHJ1bnRpbWUpCi17Ci0gICAgcmV0dXJuIFdlYkV4
dGVuc2lvbkNhbGxiYWNrSGFuZGxlcjo6Y3JlYXRlKGNvbnRleHQsIHJ1bnRpbWUpOwotfQotCi1S
ZWZQdHI8V2ViRXh0ZW5zaW9uQ2FsbGJhY2tIYW5kbGVyPiB0b0pTQ2FsbGJhY2tIYW5kbGVyKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZiBjYWxsYmFjaywgV2ViRXh0ZW5zaW9uQVBJUnVudGltZUJh
c2UmKTsKLQotI2lmZGVmIF9fT0JKQ19fCi0KLWlkIHRvTlNPYmplY3QoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmLCBDbGFzcyBjb250YWluaW5nT2JqZWN0c09mQ2xhc3MgPSBOaWwpOwotTlNTdHJp
bmcgKnRvTlNTdHJpbmcoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBOdWxsU3RyaW5nUG9saWN5
ID0gTnVsbFN0cmluZ1BvbGljeTo6TnVsbEFuZFVuZGVmaW5lZEFzTnVsbFN0cmluZyk7Ci1OU0Rp
Y3Rpb25hcnkgKnRvTlNEaWN0aW9uYXJ5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7Ci0KLWlu
bGluZSBKU1ZhbHVlUmVmIHRvSlNWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgaWQgb2JqZWN0
KQotewotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIGlmICghb2JqZWN0KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChKU1ZhbHVlICp2YWx1ZSA9IGR5bmFtaWNfb2JqY19j
YXN0PEpTVmFsdWU+KG9iamVjdCkpCi0gICAgICAgIHJldHVybiB2YWx1ZS5KU1ZhbHVlUmVmOwot
Ci0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpvYmplY3QgaW5Db250ZXh0OltK
U0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6SlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChjb250ZXh0KV1dLkpTVmFsdWVSZWY7Ci19Ci0KLUpTVmFsdWVSZWYgdG9KU1ZhbHVl
KEpTQ29udGV4dFJlZiwgTlNTdHJpbmcgKiwgTnVsbE9yRW1wdHlTdHJpbmcgPSBOdWxsT3JFbXB0
eVN0cmluZzo6TnVsbFN0cmluZ0FzRW1wdHlTdHJpbmcpOwotSlNWYWx1ZVJlZiB0b0pTVmFsdWUo
SlNDb250ZXh0UmVmLCBOU1VSTCAqLCBOdWxsT3JFbXB0eVN0cmluZyA9IE51bGxPckVtcHR5U3Ry
aW5nOjpOdWxsU3RyaW5nQXNFbXB0eVN0cmluZyk7Ci0KLU5TU3RyaW5nICp0b05TU3RyaW5nKEpT
U3RyaW5nUmVmKTsKLQotaW5saW5lIEpTT2JqZWN0UmVmIHRvSlNFcnJvcihKU0NvbnRleHRSZWYg
Y29udGV4dCwgTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KLSAg
ICBKU1ZhbHVlUmVmIG1lc3NhZ2VBcmd1bWVudCA9IHRvSlNWYWx1ZShjb250ZXh0LCBzdHJpbmcs
IE51bGxPckVtcHR5U3RyaW5nOjpOdWxsU3RyaW5nQXNFbXB0eVN0cmluZyk7Ci0gICAgcmV0dXJu
IEpTT2JqZWN0TWFrZUVycm9yKGNvbnRleHQsIDEsICZtZXNzYWdlQXJndW1lbnQsIG51bGxwdHIp
OwotfQotCi1pbmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlNTdHJpbmcoTlNTdHJp
bmcgKnN0cmluZykKLXsKLSAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KEFkb3B0
LCBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhzdHJpbmcgPyAoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpc3RyaW5nIDogQ0ZTVFIoIiIpKSk7Ci19Ci0KLWlubGluZSBKU1ZhbHVlUmVmIHRvSlNOdWxs
SWZOdWxsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpZCBvYmplY3QpCi17Ci0gICAgQVNTRVJUKGNv
bnRleHQpOwotICAgIHJldHVybiBvYmplY3QgPyB0b0pTVmFsdWUoY29udGV4dCwgb2JqZWN0KSA6
IEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKLX0KLQotSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZUpT
T05TdHJpbmcoSlNDb250ZXh0UmVmLCBOU1N0cmluZyAqanNvblN0cmluZyk7Ci1OU1N0cmluZyAq
c2VyaWFsaXplSlNPYmplY3QoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pOwotCi0jZW5kaWYgLy8gX19PQkpDX18KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNpZmRlZiBfX09CSkNfXwotCi1AaW50ZXJmYWNlIEpTVmFsdWUgKFRoZW5hYmxlRXh0cmFz
KQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzVGhlbmFibGUpIEJP
T0wgX3RoZW5hYmxlOwotLSAodm9pZClfYXdhaXRUaGVuYWJsZVJlc29sdXRpb25XaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIHJlc3VsdCwgaWQgZXJyb3IpKWNvbXBsZXRpb25IYW5k
bGVyOwotQGVuZAotCi0jZW5kaWYgLy8gX19PQkpDX18KLQotI2VuZGlmIC8vIEVOQUJMRShXS19X
RUJfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRl
bnNpb25zL0JpbmRpbmdzL1NjcmlwdHMvQ29kZUdlbmVyYXRvckV4dGVuc2lvbnMucG0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9TY3JpcHRzL0NvZGVHZW5l
cmF0b3JFeHRlbnNpb25zLnBtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDAxMDkw
YWVlYTguLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5z
aW9ucy9CaW5kaW5ncy9TY3JpcHRzL0NvZGVHZW5lcmF0b3JFeHRlbnNpb25zLnBtCisrKyAvZGV2
L251bGwKQEAgLTEsMTU3MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLXBhY2thZ2UgQ29kZUdlbmVyYXRvckV4dGVuc2lvbnM7Ci0KLXVzZSBzdHJp
Y3Q7Ci11c2Ugd2FybmluZ3M7Ci11c2UgRmlsZTo6U3BlYzsKLQotc3ViIG5ldwotewotICAgIG15
ICgkY2xhc3MsICRjb2RlR2VuZXJhdG9yLCAkd3JpdGVEZXBlbmRlbmNpZXMsICR2ZXJib3NlLCAk
aWRsRmlsZVBhdGgpID0gQF87Ci0KLSAgICBteSAkcmVmZXJlbmNlID0gewotICAgICAgICBjb2Rl
R2VuZXJhdG9yID0+ICRjb2RlR2VuZXJhdG9yLAotICAgICAgICBpZGxGaWxlUGF0aCA9PiAkaWRs
RmlsZVBhdGgsCi0gICAgfTsKLQotICAgIGJsZXNzKCRyZWZlcmVuY2UsICRjbGFzcyk7Ci0gICAg
cmV0dXJuICRyZWZlcmVuY2U7Ci19Ci0KLXN1YiBHZW5lcmF0ZUludGVyZmFjZQotewotfQotCi1z
dWIgV3JpdGVEYXRhCi17Ci0gICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNlLCAkb3V0cHV0RGlyKSA9
IEBfOwotCi0gICAgZm9yZWFjaCBteSAkZmlsZSAoJHNlbGYtPl9nZW5lcmF0ZUhlYWRlckZpbGUo
JGludGVyZmFjZSksICRzZWxmLT5fZ2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZpbGUoJGludGVyZmFj
ZSkpIHsKLSAgICAgICAgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5VcGRhdGVGaWxlKEZpbGU6OlNw
ZWMtPmNhdGZpbGUoJG91dHB1dERpciwgJCRmaWxle25hbWV9KSwgam9pbigiIiwgQHskJGZpbGV7
Y29udGVudHN9fSkpOwotICAgIH0KLX0KLQotc3ViIF9jbGFzc05hbWUKLXsKLSAgICBteSAoJGlk
bFR5cGUpID0gQF87Ci0KLSAgICByZXR1cm4gIkpTIiAuIF9pbXBsZW1lbnRhdGlvbkNsYXNzTmFt
ZSgkaWRsVHlwZSk7Ci19Ci0KLXN1YiBfY2xhc3NSZWZHZXR0ZXIKLXsKLSAgICBteSAoJHNlbGYs
ICRpZGxUeXBlLCAkc3VmZml4KSA9IEBfOwotCi0gICAgJHN1ZmZpeCA9ICJDbGFzcyIgdW5sZXNz
IGRlZmluZWQgJHN1ZmZpeDsKLQotICAgIG15ICRpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZSA9IF9p
bXBsZW1lbnRhdGlvbkNsYXNzTmFtZSgkaWRsVHlwZSk7Ci0gICAgJGltcGxlbWVudGF0aW9uQ2xh
c3NOYW1lID1+IHMvXldlYkV4dGVuc2lvbkFQSS8vOwotCi0gICAgcmV0dXJuICQkc2VsZntjb2Rl
R2VuZXJhdG9yfS0+V0tfbGNmaXJzdCgkaW1wbGVtZW50YXRpb25DbGFzc05hbWUpIC4gJHN1ZmZp
eDsKLX0KLQotc3ViIF9wYXJzZUxpY2Vuc2VCbG9jawotewotICAgIG15ICgkZmlsZUhhbmRsZSkg
PSBAXzsKLQotICAgIG15ICgkY29weXJpZ2h0LCAkcmVhZENvdW50LCAkYnVmZmVyLCAkY3VycmVu
dENoYXJhY3RlciwgJHByZXZpb3VzQ2hhcmFjdGVyKTsKLSAgICBteSAkc3RhcnRTZW50aW5lbCA9
ICIvKiI7Ci0gICAgbXkgJGxlbmd0aE9mU3RhcnRTZW50aW5lbCA9IGxlbmd0aCgkc3RhcnRTZW50
aW5lbCk7Ci0gICAgJHJlYWRDb3VudCA9IHJlYWQoJGZpbGVIYW5kbGUsICRidWZmZXIsICRsZW5n
dGhPZlN0YXJ0U2VudGluZWwpOwotICAgIHJldHVybiAiIiBpZiAoJHJlYWRDb3VudCA8ICRsZW5n
dGhPZlN0YXJ0U2VudGluZWwgfHwgJGJ1ZmZlciBuZSAkc3RhcnRTZW50aW5lbCk7Ci0gICAgJGNv
cHlyaWdodCA9ICRidWZmZXI7Ci0KLSAgICB3aGlsZSAoJHJlYWRDb3VudCA9IHJlYWQoJGZpbGVI
YW5kbGUsICRjdXJyZW50Q2hhcmFjdGVyLCAxKSkgewotICAgICAgICAkY29weXJpZ2h0IC49ICRj
dXJyZW50Q2hhcmFjdGVyOwotICAgICAgICByZXR1cm4gJGNvcHlyaWdodCBpZiAkY3VycmVudENo
YXJhY3RlciBlcSAiLyIgJiYgJHByZXZpb3VzQ2hhcmFjdGVyIGVxICIqIjsKLSAgICAgICAgJHBy
ZXZpb3VzQ2hhcmFjdGVyID0gJGN1cnJlbnRDaGFyYWN0ZXI7Ci0gICAgfQotCi0gICAgcmV0dXJu
ICIiOwotfQotCi1zdWIgX3BhcnNlTGljZW5zZUJsb2NrRnJvbUZpbGUKLXsKLSAgICBteSAoJHBh
dGgpID0gQF87Ci0gICAgb3BlbiBteSAkZmlsZUhhbmRsZSwgIjwiLCAkcGF0aCBvciBkaWUgIkZh
aWxlZCB0byBvcGVuICRwYXRoIGZvciByZWFkaW5nOiAkISI7Ci0gICAgbXkgJGxpY2Vuc2VCbG9j
ayA9IF9wYXJzZUxpY2Vuc2VCbG9jaygkZmlsZUhhbmRsZSk7Ci0gICAgY2xvc2UoJGZpbGVIYW5k
bGUpOwotICAgIHJldHVybiAkbGljZW5zZUJsb2NrOwotfQotCi1zdWIgX2RlZmF1bHRMaWNlbnNl
QmxvY2sKLXsKLSAgICByZXR1cm4gPDxFT0Y7Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwLUB7
W195ZWFyU3RyaW5nKCldfSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci1FT0YKLX0KLQotc3ViIF9saWNlbnNlQmxvY2sKLXsKLSAgICBteSAoJHNlbGYpID0gQF87Ci0g
ICAgcmV0dXJuICRzZWxmLT57bGljZW5zZUJsb2NrfSBpZiAkc2VsZi0+e2xpY2Vuc2VCbG9ja307
Ci0KLSAgICBteSAkbGljZW5zZUJsb2NrID0gX3BhcnNlTGljZW5zZUJsb2NrRnJvbUZpbGUoJHNl
bGYtPntpZGxGaWxlUGF0aH0pIHx8IF9kZWZhdWx0TGljZW5zZUJsb2NrKCk7Ci0gICAgJHNlbGYt
PntsaWNlbnNlQmxvY2t9ID0gJGxpY2Vuc2VCbG9jazsKLSAgICByZXR1cm4gJGxpY2Vuc2VCbG9j
azsKLX0KLQotc3ViIGNvbmRpdGlvbmFsU3RyaW5nCi17Ci0gICAgbXkgKCRub2RlKSA9IEBfOwot
ICAgIG15ICRjb25kaXRpb25hbCA9ICRub2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0
aW9uYWwifTsKLSAgICByZXR1cm4gIiIgdW5sZXNzICRjb25kaXRpb25hbDsKLSAgICAjIFdlIHJl
YWxseSBzaG91bGQgYmUgY2FsbGluZyB0aGlzIGFzICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+R2Vu
ZXJhdGUuLi4sIGJ1dCB0aGF0IG1ha2VzIGl0IGhhcmQKLSAgICAjIHRvIGNhbGwgdGhpcyBmdW5j
dGlvbiBmcm9tIEV4dGVuc2lvbnNHbG9iYWxPYmplY3RzQ29sbGVjdG9yLnBsLiBTaW5jZQotICAg
ICMgR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSBkb2Vzbid0IGFj
dHVhbGx5IHVzZSB0aGUgb2JqZWN0IHJlZmVyZW5jZSwgdGhpcwotICAgICMgd2F5IHdvcmtzIGp1
c3QgZmluZS4KLSAgICByZXR1cm4gQ29kZUdlbmVyYXRvcjo6R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgwLCAkY29uZGl0aW9uYWwpOwotfQotCi1zdWIgX2dlbmVy
YXRlSGVhZGVyRmlsZQotewotICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSkgPSBAXzsKLQotICAg
IG15IEBjb250ZW50cyA9ICgpOwotCi0gICAgcHVzaChAY29udGVudHMsICRzZWxmLT5fbGljZW5z
ZUJsb2NrKCkpOwotICAgIHB1c2goQGNvbnRlbnRzLCAiXG5cbiIpOwotCi0gICAgbXkgJGlkbFR5
cGUgPSAkaW50ZXJmYWNlLT50eXBlOwotICAgIG15ICRjbGFzc05hbWUgPSBfY2xhc3NOYW1lKCRp
ZGxUeXBlKTsKLSAgICBteSAkaW1wbGVtZW50YXRpb25DbGFzc05hbWUgPSBfaW1wbGVtZW50YXRp
b25DbGFzc05hbWUoJGlkbFR5cGUpOwotICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSAkc2VsZi0+
X3BhcmVudENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKLSAgICBteSAkZmlsZW5hbWUgPSAkY2xhc3NO
YW1lIC4gIi5oIjsKLQotICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3Ry
aW5nKCRpbnRlcmZhY2UpOwotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwotI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9Ci0KLUVPRgotCi0gICAgcHVzaChA
Y29udGVudHMsIDw8RU9GKTsKLSNpbXBvcnQgIiR7cGFyZW50Q2xhc3NOYW1lfS5oIgotRU9GCi0K
LSAgICBwdXNoKEBjb250ZW50cywgIiNpbXBvcnQgXCIke2NsYXNzTmFtZX1DdXN0b20uaFwiXG4i
KSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSGVhZGVyIn07Ci0g
ICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
ICR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9OwotCi1jbGFzcyAke2NsYXNzTmFtZX0gOiBwdWJs
aWMgJHtwYXJlbnRDbGFzc05hbWV9IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgSlNDbGFzc1JlZiBA
e1skc2VsZi0+X2NsYXNzUmVmR2V0dGVyKCRpZGxUeXBlKV19KCk7Ci0gICAgc3RhdGljIEpTQ2xh
c3NSZWYgQHtbJHNlbGYtPl9jbGFzc1JlZkdldHRlcigkaWRsVHlwZSwgIkdsb2JhbE9iamVjdENs
YXNzIildfSgpOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY0Z1bmN0aW9u
KiBzdGF0aWNGdW5jdGlvbnMoKTsKLSAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWNWYWx1ZSogc3Rh
dGljVmFsdWVzKCk7Ci0gICAgc3RhdGljIGNvbnN0IEpTU3RhdGljVmFsdWUqIHN0YXRpY0NvbnN0
YW50cygpOwotICAgIHN0YXRpYyBib29sIGhhc0luc3RhbmNlKEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYgY29uc3RydWN0b3IsIEpTVmFsdWVSZWYgcG9zc2libGVJbnN0YW5jZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKLUVPRgotCi0gICAgbXkgJGhhc0R5bmFtaWNQcm9wZXJ0aWVzID0gMDsK
LSAgICBteSAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMgPSAwOwotCi0gICAgaWYgKG15IEBm
dW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7Ci0gICAgICAgIHB1c2goQGNv
bnRlbnRzLCAiXG4gICAgLy8gRnVuY3Rpb25zXG5cbiIpOwotICAgICAgICBwdXNoKEBjb250ZW50
cywgIiAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYsIEpTUHJvcGVydHlOYW1lQWNjdW11bGF0b3JSZWYpO1xuIikgaWYgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldFByb3BlcnR5TmFtZXMifTsKLSAgICAgICAg
cHVzaChAY29udGVudHMsICIgICAgc3RhdGljIGJvb2wgaGFzUHJvcGVydHkoSlNDb250ZXh0UmVm
LCBKU09iamVjdFJlZiwgSlNTdHJpbmdSZWYpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUhhc1Byb3BlcnR5In07Ci0KLSAgICAgICAgZm9yZWFjaCBteSAk
ZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKLSAgICAgICAgICAgICRoYXNEeW5hbWljUHJvcGVydGll
cyA9IDEgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRHluYW1pYyJ9OwotICAg
ICAgICAgICAgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzID0gMSBpZiAkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJNYWluV29ybGRPbmx5In07Ci0KLSAgICAgICAgICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7Ci0KLSAgICAg
ICAgICAgIHB1c2goQGNvbnRlbnRzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0
aWMgSlNWYWx1ZVJlZiBAe1skZnVuY3Rpb24tPm5hbWVdfShKU0NvbnRleHRSZWYsIEpTT2JqZWN0
UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYq
KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIGJvb2wgc2V0
UHJvcGVydHkoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNTdHJpbmdSZWYsIEpTVmFsdWVS
ZWYsIEpTVmFsdWVSZWYqKTtcbiIpIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IlNldFByb3BlcnR5In07Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0aWMg
SlNWYWx1ZVJlZiBnZXRQcm9wZXJ0eShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmlu
Z1JlZiwgSlNWYWx1ZVJlZiopO1xuIikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiR2V0UHJvcGVydHkifTsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5n
UmVmLCBKU1ZhbHVlUmVmKik7XG4iKSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJEZWxldGVQcm9wZXJ0eSJ9OwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIjZW5kaWYg
Ly8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChteSBAY29uc3RhbnRzID0gQHskaW50ZXJmYWNlLT5jb25z
dGFudHN9KSB7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4gICAgLy8gQ29uc3RhbnRzXG5c
biIpOwotICAgICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQGNvbnN0YW50cykgewotICAgICAg
ICAgICAgbXkgJGdldHRlck5hbWUgPSAkY29uc3RhbnQtPm5hbWU7Ci0gICAgICAgICAgICBwdXNo
KEBjb250ZW50cywgIiAgICBzdGF0aWMgSlNWYWx1ZVJlZiAke2dldHRlck5hbWV9KEpTQ29udGV4
dFJlZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKik7XG4iKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChteSBAYXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30pIHsKLSAgICAgICAgcHVzaChAY29udGVudHMsICJcbiAgICAvLyBBdHRyaWJ1dGVz
XG5cbiIpOwotICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEBhdHRyaWJ1dGVzKSB7Ci0g
ICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0lt
cGxlbWVudGF0aW9uIn07Ci0KLSAgICAgICAgICAgICRoYXNEeW5hbWljUHJvcGVydGllcyA9IDEg
aWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5bmFtaWMifTsKLSAgICAgICAg
ICAgICRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsKLQotICAgICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gY29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7Ci0KLSAgICAgICAg
ICAgIHB1c2goQGNvbnRlbnRzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0aWMg
SlNWYWx1ZVJlZiBAe1skc2VsZi0+X2dldHRlck5hbWUoJGF0dHJpYnV0ZSldfShKU0NvbnRleHRS
ZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0aWMgYm9vbCBAe1skc2VsZi0+X3NldHRlck5h
bWUoJGF0dHJpYnV0ZSldfShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwg
SlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiopO1xuIikgdW5sZXNzICRhdHRyaWJ1dGUtPmlzUmVhZE9u
bHk7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKCRoYXNEeW5hbWljUHJvcGVydGllcyBvciAkaGFzTWFpbldvcmxkT25seVByb3BlcnRp
ZXMpIHsKLSAgICAgICAgcHVzaChAY29udGVudHMsICJcbiAgICAvLyBEeW5hbWljIEF0dHJpYnV0
ZXNcblxuIik7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRpYyB2b2lkIGdldFBy
b3BlcnR5TmFtZXMoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNQcm9wZXJ0eU5hbWVBY2N1
bXVsYXRvclJlZik7XG4iKTsKLSAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIGJv
b2wgaGFzUHJvcGVydHkoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNTdHJpbmdSZWYpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFBy
b3BlcnR5KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVm
Kik7XG4iKTsKLSAgICB9Ci0KLSAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotfTsKLQotJHtp
bXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0qIHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0oSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLUVPRgot
Ci0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0jZW5k
aWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ30KLQotRU9GCi0KLSAgICBwdXNoKEBjb250ZW50cywg
PDxFT0YpOwotRU9GCi0KLSAgICByZXR1cm4geyBuYW1lID0+ICRmaWxlbmFtZSwgY29udGVudHMg
PT4gXEBjb250ZW50cyB9OwotfQotCi1zdWIgX2dlbmVyYXRlSW1wbGVtZW50YXRpb25GaWxlCi17
Ci0gICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNlKSA9IEBfOwotCi0gICAgbXkgQGNvbnRlbnRzUHJl
Zml4ID0gKCk7Ci0gICAgbXkgJWNvbnRlbnRzSW5jbHVkZXMgPSAoKTsKLSAgICBteSBAY29udGVu
dHMgPSAoKTsKLQotICAgIG15ICRpZGxUeXBlID0gJGludGVyZmFjZS0+dHlwZTsKLSAgICBteSAk
Y2xhc3NOYW1lID0gX2NsYXNzTmFtZSgkaWRsVHlwZSk7Ci0gICAgbXkgJGltcGxlbWVudGF0aW9u
Q2xhc3NOYW1lID0gX2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lKCRpZGxUeXBlKTsKLSAgICBteSAk
ZmlsZW5hbWUgPSAkY2xhc3NOYW1lIC4gIi5tbSI7Ci0KLSAgICBwdXNoKEBjb250ZW50c1ByZWZp
eCwgJHNlbGYtPl9saWNlbnNlQmxvY2soKSk7Ci0gICAgcHVzaChAY29udGVudHNQcmVmaXgsICJc
blxuIik7Ci0KLSAgICBwdXNoKEBjb250ZW50c1ByZWZpeCwgPDxFT0YpOwotI2lmICFfX2hhc19m
ZWF0dXJlKG9iamNfYXJjKQotI2Vycm9yIFRoaXMgZmlsZSByZXF1aXJlcyBBUkMuIEFkZCB0aGUg
Ii1mb2JqYy1hcmMiIGNvbXBpbGVyIGZsYWcgZm9yIHRoaXMgZmlsZS4KLSNlbmRpZgotCi1FT0YK
LQotICAgIHB1c2goQGNvbnRlbnRzUHJlZml4LCAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG5cbiIp
OwotCi0gICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gY29uZGl0aW9uYWxTdHJpbmcoJGludGVy
ZmFjZSk7Ci0gICAgcHVzaChAY29udGVudHNQcmVmaXgsIDw8RU9GKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7Ci0jaWYgJHtjb25kaXRpb25hbFN0cmluZ30KLQotRU9GCi0KLSAgICBteSAkY2xhc3NS
ZWZHZXR0ZXIgPSAkc2VsZi0+X2NsYXNzUmVmR2V0dGVyKCRpZGxUeXBlKTsKLSAgICBteSAkZ2xv
YmFsQ2xhc3NSZWZHZXR0ZXIgPSAkc2VsZi0+X2NsYXNzUmVmR2V0dGVyKCRpZGxUeXBlLCAiR2xv
YmFsT2JqZWN0Q2xhc3MiKTsKLSAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gJHNlbGYtPl9wYXJl
bnRDbGFzc05hbWUoJGludGVyZmFjZSk7Ci0KLSAgICAkY29udGVudHNJbmNsdWRlc3siXCIke2Ns
YXNzTmFtZX0uaFwiIn0gPSAxOwotICAgICRjb250ZW50c0luY2x1ZGVzeyJcIiR7aW1wbGVtZW50
YXRpb25DbGFzc05hbWV9LmhcIiJ9ID0gMTsKLQotICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7
Ci0jaW1wb3J0IDx3dGYvR2V0UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0ke2ltcGxl
bWVudGF0aW9uQ2xhc3NOYW1lfSogdG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICBpZiAoIWNvbnRleHQgfHwg
IXZhbHVlIHx8ICEke2NsYXNzTmFtZX06OiR7Y2xhc3NSZWZHZXR0ZXJ9KCkgfHwgIUpTVmFsdWVJ
c09iamVjdE9mQ2xhc3MoY29udGV4dCwgdmFsdWUsICR7Y2xhc3NOYW1lfTo6JHtjbGFzc1JlZkdl
dHRlcn0oKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDwke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfSo+KEpTV2ViRXh0ZW5zaW9uV3JhcHBlcjo6dW53
cmFwKGNvbnRleHQsIHZhbHVlKSk7Ci19Ci0KLUpTQ2xhc3NSZWYgJHtjbGFzc05hbWV9Ojoke2Ns
YXNzUmVmR2V0dGVyfSgpCi17Ci0gICAgc3RhdGljIEpTQ2xhc3NSZWYganNDbGFzczsKLSAgICBp
ZiAoIWpzQ2xhc3MpIHsKLSAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbiA9IGtK
U0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJA
e1tfcHVibGljQ2xhc3NOYW1lKCRpZGxUeXBlKV19IjsKLSAgICAgICAgZGVmaW5pdGlvbi5wYXJl
bnRDbGFzcyA9IEB7WyRzZWxmLT5fcGFyZW50Q2xhc3NSZWZHZXR0ZXJFeHByZXNzaW9uKCRpbnRl
cmZhY2UpXX07Ci0gICAgICAgIGRlZmluaXRpb24uc3RhdGljVmFsdWVzID0gc3RhdGljVmFsdWVz
KCk7Ci0gICAgICAgIGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zID0gc3RhdGljRnVuY3Rpb25z
KCk7Ci1FT0YKLQotICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICBkZWZpbml0aW9uLmluaXRp
YWxpemUgPSBpbml0aWFsaXplO1xuIikgdW5sZXNzIF9wYXJlbnRJbnRlcmZhY2UoJGludGVyZmFj
ZSk7Ci0gICAgcHVzaChAY29udGVudHMsICIgICAgICAgIGRlZmluaXRpb24uZmluYWxpemUgPSBm
aW5hbGl6ZTtcbiIpIHVubGVzcyBfcGFyZW50SW50ZXJmYWNlKCRpbnRlcmZhY2UpOwotICAgIHB1
c2goQGNvbnRlbnRzLCAiICAgICAgICBkZWZpbml0aW9uLmdldFByb3BlcnR5TmFtZXMgPSBnZXRQ
cm9wZXJ0eU5hbWVzO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUdldFByb3BlcnR5TmFtZXMifTsKLSAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgZGVm
aW5pdGlvbi5oYXNQcm9wZXJ0eSA9IGhhc1Byb3BlcnR5O1xuIikgaWYgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUhhc1Byb3BlcnR5In07Ci0KLSAgICBteSAkaGFzRHlu
YW1pY1Byb3BlcnRpZXMgPSAwOwotICAgIG15ICRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllcyA9
IDA7Ci0KLSAgICBpZiAobXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30p
IHsKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKLSAgICAgICAg
ICAgICRoYXNEeW5hbWljUHJvcGVydGllcyA9IDEgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiRHluYW1pYyJ9OwotICAgICAgICAgICAgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0
aWVzID0gMSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJNYWluV29ybGRPbmx5
In07Ci0KLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICBkZWZpbml0aW9uLnNl
dFByb3BlcnR5ID0gc2V0UHJvcGVydHk7XG4iKSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJTZXRQcm9wZXJ0eSJ9OwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAg
ICAgIGRlZmluaXRpb24uZ2V0UHJvcGVydHkgPSBnZXRQcm9wZXJ0eTtcbiIpIGlmICRmdW5jdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldFByb3BlcnR5In07Ci0gICAgICAgICAgICBwdXNo
KEBjb250ZW50cywgIiAgICAgICAgZGVmaW5pdGlvbi5kZWxldGVQcm9wZXJ0eSA9IGRlbGV0ZVBy
b3BlcnR5O1xuIikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZXRlUHJv
cGVydHkifTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChteSBAYXR0cmlidXRlcyA9IEB7
JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRl
IChAYXR0cmlidXRlcykgewotICAgICAgICAgICAgJGhhc0R5bmFtaWNQcm9wZXJ0aWVzID0gMSBp
ZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRHluYW1pYyJ9OwotICAgICAgICAg
ICAgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzID0gMSBpZiAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25seSJ9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKCRoYXNEeW5hbWljUHJvcGVydGllcyBvciAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMp
IHsKLSAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgIGRlZmluaXRpb24uZ2V0UHJvcGVy
dHlOYW1lcyA9IGdldFByb3BlcnR5TmFtZXM7XG4iKTsKLSAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgICAgIGRlZmluaXRpb24uaGFzUHJvcGVydHkgPSBoYXNQcm9wZXJ0eTtcbiIpOwotICAg
ICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgZGVmaW5pdGlvbi5nZXRQcm9wZXJ0eSA9IGdl
dFByb3BlcnR5O1xuIik7Ci0gICAgfQotCi0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLSAg
ICAgICAganNDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmRlZmluaXRpb24pOwotICAgIH0KLQotICAg
IHJldHVybiBqc0NsYXNzOwotfQotCi1FT0YKLSAgICBwdXNoIChAY29udGVudHMsIDw8RU9GKTsK
LUpTQ2xhc3NSZWYgJHtjbGFzc05hbWV9Ojoke2dsb2JhbENsYXNzUmVmR2V0dGVyfSgpCi17Ci0g
ICAgc3RhdGljIEpTQ2xhc3NSZWYganNDbGFzczsKLSAgICBpZiAoIWpzQ2xhc3MpIHsKLSAgICAg
ICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5
OwotICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJAe1tfcHVibGljQ2xhc3NOYW1lKCRp
ZGxUeXBlKV19IjsKLSAgICAgICAgZGVmaW5pdGlvbi5zdGF0aWNWYWx1ZXMgPSBzdGF0aWNDb25z
dGFudHMoKTsKLSAgICAgICAgZGVmaW5pdGlvbi5oYXNJbnN0YW5jZSA9IGhhc0luc3RhbmNlOwot
ICAgICAgICBqc0NsYXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGpzQ2xhc3M7Ci19Ci0KLUVPRgotCi0gICAgcHVzaChAY29udGVudHMsICRzZWxm
LT5fc3RhdGljRnVuY3Rpb25zR2V0dGVySW1wbGVtZW50YXRpb24oJGludGVyZmFjZSksICJcbiIp
OwotICAgIHB1c2goQGNvbnRlbnRzLCAkc2VsZi0+X3N0YXRpY1ZhbHVlc0dldHRlckltcGxlbWVu
dGF0aW9uKCRpbnRlcmZhY2UpLCAiXG4iKTsKLSAgICBwdXNoKEBjb250ZW50cywgJHNlbGYtPl9z
dGF0aWNDb25zdGFudHNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlKSwgIlxuIik7Ci0g
ICAgcHVzaChAY29udGVudHMsICRzZWxmLT5faGFzSW5zdGFuY2VJbXBsZW1lbnRhdGlvbigkaW50
ZXJmYWNlKSk7Ci0gICAgcHVzaChAY29udGVudHMsICRzZWxmLT5fZHluYW1pY0F0dHJpYnV0ZXNJ
bXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAkaGFzRHluYW1pY1Byb3BlcnRpZXMsICRoYXNNYWlu
V29ybGRPbmx5UHJvcGVydGllcykpOwotCi0gICAgbXkgJGVhcmx5UmV0dXJuQ29uZGl0aW9uID0g
IiFpbXBsIjsKLSAgICAkZWFybHlSZXR1cm5Db25kaXRpb24gLj0gIiB8fCAhaW1wbC0+aXNGb3JN
YWluV29ybGQoKSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3Js
ZE9ubHkifTsKLQotICAgIGlmIChteSBAZnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5vcGVyYXRp
b25zfSkgewotICAgICAgICBwdXNoKEBjb250ZW50cywgIlxuLy8gRnVuY3Rpb25zXG4iKTsKLQot
ICAgICAgICBpZiAobXkgJGN1c3RvbUdldFByb3BlcnR5TmFtZXNGdW5jdGlvbiA9ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRQcm9wZXJ0eU5hbWVzIn0pIHsKLSAg
ICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0KLXZvaWQgJHtjbGFzc05hbWV9Ojpn
ZXRQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yUmVmIHByb3BlcnR5TmFtZXMpCi17Ci0gICAg
JHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFz
c05hbWV9KGNvbnRleHQsIHRoaXNPYmplY3QpOwotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgTlNBcnJheSAqcHJvcGVydHlOYW1lU3RyaW5ncyA9IGltcGwtPiR7Y3VzdG9t
R2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9ufSgpOwotCi0gICAgZm9yIChOU1N0cmluZyAqcHJvcGVy
dHlOYW1lIGluIHByb3BlcnR5TmFtZVN0cmluZ3MpCi0gICAgICAgIEpTUHJvcGVydHlOYW1lQWNj
dW11bGF0b3JBZGROYW1lKHByb3BlcnR5TmFtZXMsIHRvSlNTdHJpbmcocHJvcGVydHlOYW1lKS5n
ZXQoKSk7Ci19Ci1FT0YKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChteSAkY3VzdG9tSGFzUHJv
cGVydHlGdW5jdGlvbiA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21I
YXNQcm9wZXJ0eSJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotCi1i
b29sICR7Y2xhc3NOYW1lfTo6aGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSkKLXsKLSAgICAke2lt
cGxlbWVudGF0aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFt
ZX0oY29udGV4dCwgdGhpc09iamVjdCk7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gaW1wbC0+JHtjdXN0b21IYXNQcm9wZXJ0eUZ1bmN0aW9ufSh0
b05TU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotfQotRU9GCi0gICAgICAgIH0KLQotICAgICAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgbmV4dCBpZiAk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifTsKLQotICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uRWFybHlSZXR1cm5Db25kaXRpb24gPSAkZWFybHlSZXR1cm5Db25kaXRpb247
Ci0KLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4iKTsKLQotICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uU2lnbmF0dXJlID0gIkpTVmFsdWVSZWYgJHtjbGFzc05hbWV9OjpAe1skZnVuY3Rp
b24tPm5hbWVdfShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIjsKLQotICAgICAgICAgICAgbXkgJGRlZmF1
bHRFYXJseVJldHVyblZhbHVlID0gIkpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpIjsKLSAg
ICAgICAgICAgIG15ICRkZWZhdWx0UmV0dXJuVmFsdWUgPSAkZGVmYXVsdEVhcmx5UmV0dXJuVmFs
dWU7Ci0KLSAgICAgICAgICAgIG15ICRpc1NldFByb3BlcnR5RnVuY3Rpb24gPSBkZWZpbmVkICRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlNldFByb3BlcnR5In07Ci0gICAgICAgICAg
ICBteSAkaXNHZXRQcm9wZXJ0eUZ1bmN0aW9uID0gZGVmaW5lZCAkZnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJHZXRQcm9wZXJ0eSJ9OwotICAgICAgICAgICAgbXkgJGlzRGVsZXRlUHJv
cGVydHlGdW5jdGlvbiA9IGRlZmluZWQgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
RGVsZXRlUHJvcGVydHkifTsKLSAgICAgICAgICAgIG15ICRpc1Byb3BlcnR5RnVuY3Rpb24gPSAk
aXNTZXRQcm9wZXJ0eUZ1bmN0aW9uIHx8ICRpc0dldFByb3BlcnR5RnVuY3Rpb24gfHwgJGlzRGVs
ZXRlUHJvcGVydHlGdW5jdGlvbjsKLQotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gY29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKLSAgICAgICAgICAgIHB1c2goQGNvbnRl
bnRzLCA8PEVPRikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotI2lmICR7Y29uZGl0aW9uYWxTdHJp
bmd9Ci1FT0YKLQotICAgICAgICAgICAgaWYgKCRpc1NldFByb3BlcnR5RnVuY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICAkZGVmYXVsdEVhcmx5UmV0dXJuVmFsdWUgPSAiZmFsc2UiOwotICAgICAg
ICAgICAgICAgICRkZWZhdWx0UmV0dXJuVmFsdWUgPSAidHJ1ZSI7Ci0gICAgICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICJib29sICR7Y2xhc3NOYW1lfTo6c2V0UHJvcGVydHkoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZiBuZXdWYWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSIpOwotICAg
ICAgICAgICAgfSBlbHNpZiAoJGlzR2V0UHJvcGVydHlGdW5jdGlvbikgewotICAgICAgICAgICAg
ICAgIHB1c2goQGNvbnRlbnRzLCAiSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OmdldFByb3BlcnR5
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikiKTsKLSAgICAgICAgICAgIH0g
ZWxzaWYgKCRpc0RlbGV0ZVByb3BlcnR5RnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAkZGVm
YXVsdEVhcmx5UmV0dXJuVmFsdWUgPSAiZmFsc2UiOwotICAgICAgICAgICAgICAgICRkZWZhdWx0
UmV0dXJuVmFsdWUgPSAidHJ1ZSI7Ci0gICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICJi
b29sICR7Y2xhc3NOYW1lfTo6ZGVsZXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKSIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBjb250ZW50cywgJGZ1bmN0aW9uU2lnbmF0dXJlKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQotewotICAgICR7aW1wbGVtZW50YXRp
b25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfShjb250ZXh0
LCB0aGlzT2JqZWN0KTsKLSAgICBpZiAoJHtmdW5jdGlvbkVhcmx5UmV0dXJuQ29uZGl0aW9ufSkK
LSAgICAgICAgcmV0dXJuICR7ZGVmYXVsdEVhcmx5UmV0dXJuVmFsdWV9OwotRU9GCi0KLSAgICAg
ICAgICAgIG15IEBwYXJhbWV0ZXJzID0gKCk7Ci0gICAgICAgICAgICBteSBAc3BlY2lmaWVkUGFy
YW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9OwotICAgICAgICAgICAgbXkgJG5lZWRz
RXhjZXB0aW9uU3RyaW5nID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmFpc2Vz
RXhjZXB0aW9uIn07Ci0KLSAgICAgICAgICAgIG15ICRsYXN0UGFyYW1ldGVyID0gJHNwZWNpZmll
ZFBhcmFtZXRlcnNbJCNzcGVjaWZpZWRQYXJhbWV0ZXJzXTsKLQotICAgICAgICAgICAgcHVzaChA
Y29udGVudHMsICJcbiIpIGlmIHNjYWxhciBAc3BlY2lmaWVkUGFyYW1ldGVyczsKLSAgICAgICAg
ICAgIG15ICRuZWVkc1NjcmlwdENvbnRleHQgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOZWVkc1NjcmlwdENvbnRleHQifTsKLQotICAgICAgICAgICAgbXkgJG5lZWRzRnJhbWUg
PSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc0ZyYW1lIn07Ci0gICAgICAg
ICAgICBteSAkbmVlZHNQYWdlID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmVl
ZHNQYWdlIn07Ci0gICAgICAgICAgICBteSAkcmV0dXJuc1Byb21pc2VJZk5vQ2FsbGJhY2sgPSAk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXR1cm5zUHJvbWlzZVdoZW5DYWxsYmFj
a0lzT21pdHRlZCJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXR1cm5z
UHJvbWlzZVdoZW5DYWxsYmFja0lzT21pdHRlZCJ9OwotICAgICAgICAgICAgbXkgJGNhbGxiYWNr
SGFuZGxlckFyZ3VtZW50OwotCi0gICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwl
Y29udGVudHNJbmNsdWRlcywgJGZ1bmN0aW9uLT50eXBlLCAkZnVuY3Rpb24pOwotCi0gICAgICAg
ICAgICBteSAkb3B0aW9uYWxBcmd1bWVudENvdW50ID0gMDsKLQotICAgICAgICAgICAgZm9yZWFj
aCBteSAkcGFyYW1ldGVyIChAc3BlY2lmaWVkUGFyYW1ldGVycykgewotICAgICAgICAgICAgICAg
ICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkcGFyYW1ldGVyLT50
eXBlLCAkcGFyYW1ldGVyKTsKLSAgICAgICAgICAgICAgICAkb3B0aW9uYWxBcmd1bWVudENvdW50
KysgaWYgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07Ci0gICAg
ICAgICAgICAgICAgJG5lZWRzU2NyaXB0Q29udGV4dCA9IDEgaWYgJHBhcmFtZXRlci0+dHlwZS0+
bmFtZSBlcSAiZnVuY3Rpb24iICYmICEkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2FsbGJhY2tIYW5kbGVyIn07Ci0gICAgICAgICAgICAgICAgJG5lZWRzUGFnZSA9IDEgaWYgJHBh
cmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrSGFuZGxlciJ9ICYmICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1BhZ2VXaXRoQ2FsbGJhY2tIYW5kbGVy
In07Ci0gICAgICAgICAgICAgICAgJG5lZWRzRnJhbWUgPSAxIGlmICRwYXJhbWV0ZXItPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFja0hhbmRsZXIifSAmJiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiTmVlZHNGcmFtZVdpdGhDYWxsYmFja0hhbmRsZXIifTsKLSAgICAgICAg
ICAgICAgICAkY2FsbGJhY2tIYW5kbGVyQXJndW1lbnQgPSAkcGFyYW1ldGVyLT5uYW1lIGlmICRw
YXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFja0hhbmRsZXIifSAmJiAkcGFy
YW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgbXkgJHJlcXVpcmVkQXJndW1lbnRDb3VudCA9IHNjYWxhciBAc3BlY2lm
aWVkUGFyYW1ldGVycyAtICRvcHRpb25hbEFyZ3VtZW50Q291bnQ7Ci0KLSAgICAgICAgICAgIGlm
ICgkcmVxdWlyZWRBcmd1bWVudENvdW50KSB7Ci0gICAgICAgICAgICAgICAgbXkgJGNhbGwgPSBf
Y2FsbFN0cmluZygkaWRsVHlwZSwgJGZ1bmN0aW9uLCAxKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEBjb250ZW50cywgPDxFT0YpOwotICAgIGNvbnN0IHNpemVfdCByZXF1aXJlZEFyZ3VtZW50Q291
bnQgPSAke3JlcXVpcmVkQXJndW1lbnRDb3VudH07Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCBy
ZXF1aXJlZEFyZ3VtZW50Q291bnQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnJlcXVpcmVkQXJndW1l
bnRzTWlzc2luZ0V4Y2VwdGlvblN0cmluZyA9IEAiSW52YWxpZCBjYWxsIHRvICR7Y2FsbH0uIEEg
cmVxdWlyZWQgYXJndW1lbnQgaXMgbWlzc2luZy4iOwotICAgICAgICAqZXhjZXB0aW9uID0gdG9K
U0Vycm9yKGNvbnRleHQsIHJlcXVpcmVkQXJndW1lbnRzTWlzc2luZ0V4Y2VwdGlvblN0cmluZyk7
Ci0gICAgICAgIHJldHVybiAke2RlZmF1bHRFYXJseVJldHVyblZhbHVlfTsKLSAgICB9Ci0KLUVP
RgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJG9wdGlvbmFsQXJndW1lbnRDb3Vu
dCkgewotICAgICAgICAgICAgICAgIGRpZSAiUHJvcGVydHkgZnVuY3Rpb25zIGNhbid0IHRha2Ug
b3B0aW9uYWwgYXJndW1lbnRzIiBpZiAkaXNQcm9wZXJ0eUZ1bmN0aW9uOwotCi0gICAgICAgICAg
ICAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAc3BlY2lmaWVkUGFyYW1ldGVycykgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAiIC4gJHNlbGYtPl9wbGF0Zm9y
bVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uKCRwYXJhbWV0ZXIsICRwYXJhbWV0ZXItPm5hbWUpIC4g
IlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlcnMsICRwYXJhbWV0ZXIt
Pm5hbWUgLiAiLnJlbGVhc2VOb25OdWxsKCkiKSBpZiAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FsbGJhY2tIYW5kbGVyIn0gJiYgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik9wdGlvbmFsIn07Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlcnMs
ICRwYXJhbWV0ZXItPm5hbWUpIHVubGVzcyAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FsbGJhY2tIYW5kbGVyIn0gJiYgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik9wdGlvbmFsIn07Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcHVzaChA
Y29udGVudHMsICJcbiIpOwotCi0gICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAg
aWYgKGFyZ3VtZW50Q291bnQgPT0gIiAuIHNjYWxhciBAc3BlY2lmaWVkUGFyYW1ldGVycyAuICIp
IHtcbiIpOwotCi0gICAgICAgICAgICAgICAgbXkgJGhhc09wdGlvbmFsQ2FsbGJhY2tIYW5kbGVy
QXNMYXN0QXJndW1lbnQgPSAxIGlmICRsYXN0UGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FsbGJhY2tIYW5kbGVyIn0gJiYgJGxhc3RQYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJPcHRpb25hbCJ9OwotCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoMC4uJCNz
cGVjaWZpZWRQYXJhbWV0ZXJzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbWV0ZXIg
PSAkc3BlY2lmaWVkUGFyYW1ldGVyc1skaV07Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGNv
bnRlbnRzLCAiICAgICAgICAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0
aW9uKCRwYXJhbWV0ZXIsICRwYXJhbWV0ZXItPm5hbWUsICJhcmd1bWVudHNbJHtpfV0iLCB1bmRl
ZiwgMSkgLiAiXG4iKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBwdXNo
KEBjb250ZW50cywgIiAgICB9IGVsc2Uge1xuIik7Ci0KLSAgICAgICAgICAgICAgICBteSAkcHJv
Y2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiUHJvY2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0In07Ci0KLSAgICAgICAgICAgICAgICBwdXNo
KEBjb250ZW50cywgIiAgICAgICAgc3NpemVfdCBhcmd1bWVudEluZGV4ID0gYXJndW1lbnRDb3Vu
dCAtIDE7XG4iKSB1bmxlc3MgJHByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodDsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXggPSAw
O1xuIikgaWYgJHByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodDsKLSAgICAgICAgICAgICAgICBw
dXNoKEBjb250ZW50cywgIiAgICAgICAgSlNWYWx1ZVJlZiBjdXJyZW50QXJndW1lbnQgPSBudWxs
cHRyO1xuXG4iKTsKLQotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICBz
aXplX3QgYWxsb3dlZE9wdGlvbmFsQXJndW1lbnRDb3VudCA9IGFyZ3VtZW50Q291bnQgLSByZXF1
aXJlZEFyZ3VtZW50Q291bnQ7XG4iKSBpZiAkcmVxdWlyZWRBcmd1bWVudENvdW50OwotICAgICAg
ICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICBzaXplX3QgcHJvY2Vzc2VkT3B0aW9u
YWxBcmd1bWVudENvdW50ID0gMDtcblxuIikgaWYgJHJlcXVpcmVkQXJndW1lbnRDb3VudDsKLQot
ICAgICAgICAgICAgICAgIGlmICgkaGFzT3B0aW9uYWxDYWxsYmFja0hhbmRsZXJBc0xhc3RBcmd1
bWVudCAmJiAkcHJvY2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG15ICRwYXJhbWV0ZXIgPSAkc3BlY2lmaWVkUGFyYW1ldGVyc1skI3NwZWNpZmllZFBhcmFt
ZXRlcnNdOwotICAgICAgICAgICAgICAgICAgICBteSAkb3B0aW9uYWxDb25kaXRpb24gPSAkcmVx
dWlyZWRBcmd1bWVudENvdW50ID8gImFsbG93ZWRPcHRpb25hbEFyZ3VtZW50Q291bnQgJiYgIiA6
ICIiOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgaWYgKCRv
cHRpb25hbENvbmRpdGlvbihjdXJyZW50QXJndW1lbnQgPSBhcmd1bWVudHNbYXJndW1lbnRDb3Vu
dCAtIDFdKSAmJiAoIiAuICRzZWxmLT5famF2YVNjcmlwdFR5cGVDb25kaXRpb24oJHBhcmFtZXRl
ciwgImN1cnJlbnRBcmd1bWVudCIpIC4gIikpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBjb250ZW50cywgIiAgICAgICAgICAgICIgLiAkc2VsZi0+X3BsYXRmb3JtVHlwZVZhcmlh
YmxlRGVjbGFyYXRpb24oJHBhcmFtZXRlciwgJHBhcmFtZXRlci0+bmFtZSwgImN1cnJlbnRBcmd1
bWVudCIsIHVuZGVmLCAxKSAuICJcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250
ZW50cywgIiAgICAgICAgICAgIC0tYWxsb3dlZE9wdGlvbmFsQXJndW1lbnRDb3VudDtcbiIpIGlm
ICRyZXF1aXJlZEFyZ3VtZW50Q291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRl
bnRzLCAiICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQpXG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgICAgICAgICAgLS1hcmd1bWVudENvdW50O1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICB9XG5cbiIp
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudEluZGV4
Q29uZGl0b24gPSAkcHJvY2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0ID8gImFyZ3VtZW50SW5kZXgg
PCBhcmd1bWVudENvdW50IiA6ICJhcmd1bWVudEluZGV4ID49IDAiOwotICAgICAgICAgICAgICAg
IG15ICRuZXh0QXJndW1lbnRJbmRleCA9ICRwcm9jZXNzQXJndW1lbnRzTGVmdFRvUmlnaHQgPyAi
Kythcmd1bWVudEluZGV4IiA6ICItLWFyZ3VtZW50SW5kZXgiOwotCi0gICAgICAgICAgICAgICAg
Zm9yIChteSAkaiA9ICRwcm9jZXNzQXJndW1lbnRzTGVmdFRvUmlnaHQgPyAwIDogJCNzcGVjaWZp
ZWRQYXJhbWV0ZXJzOyAkcHJvY2Vzc0FyZ3VtZW50c0xlZnRUb1JpZ2h0ID8gJGogPD0gJCNzcGVj
aWZpZWRQYXJhbWV0ZXJzIDogJGogPj0gMDsgJHByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodCA/
ICRqKysgOiAkai0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbWV0ZXIgPSAkc3Bl
Y2lmaWVkUGFyYW1ldGVyc1skal07Ci0gICAgICAgICAgICAgICAgICAgIG15ICRsYXN0QXJndW1l
bnQgPSAkaiBlcSAoJHByb2Nlc3NBcmd1bWVudHNMZWZ0VG9SaWdodCA/ICQjc3BlY2lmaWVkUGFy
YW1ldGVycyA6IDApOwotCi0gICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJGxhc3RBcmd1bWVu
dCAmJiAkaGFzT3B0aW9uYWxDYWxsYmFja0hhbmRsZXJBc0xhc3RBcmd1bWVudCAmJiAkcHJvY2Vz
c0FyZ3VtZW50c0xlZnRUb1JpZ2h0OwotCi0gICAgICAgICAgICAgICAgICAgIG15ICRvcHRpb25h
bENvbmRpdGlvbiA9ICRyZXF1aXJlZEFyZ3VtZW50Q291bnQgJiYgJHBhcmFtZXRlci0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0gPyAiICYmIHByb2Nlc3NlZE9wdGlvbmFsQXJndW1l
bnRDb3VudCA8IGFsbG93ZWRPcHRpb25hbEFyZ3VtZW50Q291bnQiIDogIiI7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICBpZiAoJGFyZ3VtZW50SW5kZXhDb25k
aXRvbiRvcHRpb25hbENvbmRpdGlvbiAmJiAoY3VycmVudEFyZ3VtZW50ID0gYXJndW1lbnRzW2Fy
Z3VtZW50SW5kZXhdKSkge1xuIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCRwYXJhbWV0
ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgICAgIGlmICgiIC4gJHNlbGYtPl9qYXZh
U2NyaXB0VHlwZUNvbmRpdGlvbigkcGFyYW1ldGVyLCAiY3VycmVudEFyZ3VtZW50IikgLiAiKSB7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICAgICAg
ICAgICAgICIgLiAkc2VsZi0+X3BsYXRmb3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRpb24oJHBhcmFt
ZXRlciwgJHBhcmFtZXRlci0+bmFtZSwgImN1cnJlbnRBcmd1bWVudCIsIHVuZGVmLCAxKSAuICJc
biIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgICAgICAg
ICAgICAgKytwcm9jZXNzZWRPcHRpb25hbEFyZ3VtZW50Q291bnQ7XG4iKSBpZiAkcmVxdWlyZWRB
cmd1bWVudENvdW50OwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIg
ICAgICAgICAgICAgICAgJG5leHRBcmd1bWVudEluZGV4O1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgICAgIH1cbiIpOwotICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgICAgICAgICAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9u
KCRwYXJhbWV0ZXIsICRwYXJhbWV0ZXItPm5hbWUsICJjdXJyZW50QXJndW1lbnQiLCB1bmRlZiwg
MSkgLiAiXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAg
ICAgICAgICAgJG5leHRBcmd1bWVudEluZGV4O1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAgICAgfVxuIik7Ci0K
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICJcbiIpIHVubGVzcyAkbGFzdEFy
Z3VtZW50IHx8ICgkaiBlcSAkI3NwZWNpZmllZFBhcmFtZXRlcnMgLSAxICYmICRoYXNPcHRpb25h
bENhbGxiYWNrSGFuZGxlckFzTGFzdEFyZ3VtZW50ICYmICRwcm9jZXNzQXJndW1lbnRzTGVmdFRv
UmlnaHQpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRl
bnRzLCAiICAgIH1cbiIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBm
b3JlYWNoIG15ICRpICgwLi4kI3NwZWNpZmllZFBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbXkgJHBhcmFtZXRlciA9ICRzcGVjaWZpZWRQYXJhbWV0ZXJzWyRpXTsKLQotICAgICAg
ICAgICAgICAgICAgICBpZiAoJGlzUHJvcGVydHlGdW5jdGlvbiAmJiAkaSA9PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBOU1N0cmluZyAqIiAuICRw
YXJhbWV0ZXItPm5hbWUgLiAiID0gdG9OU1N0cmluZyhwcm9wZXJ0eU5hbWUpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAkYXJn
dW1lbnQgPSAkaXNTZXRQcm9wZXJ0eUZ1bmN0aW9uID8gIm5ld1ZhbHVlIiA6ICJhcmd1bWVudHNb
JGldIjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgZGllICJHZXRQcm9wZXJ0eSBhbmQgRGVs
ZXRlUHJvcGVydHkgZnVuY3Rpb25zIG9ubHkgdGFrZSBvbmUgYXJndW1lbnQiIGlmICRpc0dldFBy
b3BlcnR5RnVuY3Rpb24gfHwgJGlzRGVsZXRlUHJvcGVydHlGdW5jdGlvbjsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgIiAuICRzZWxmLT5fcGxhdGZvcm1U
eXBlVmFyaWFibGVEZWNsYXJhdGlvbigkcGFyYW1ldGVyLCAkcGFyYW1ldGVyLT5uYW1lLCAkYXJn
dW1lbnQpIC4gIlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAkcGFyYW1ldGVyLT5uYW1lIC4gIi5yZWxlYXNlTm9uTnVs
bCgpIikgaWYgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrSGFuZGxl
ciJ9ICYmICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAkcGFyYW1ldGVyLT5uYW1lKSB1bmxl
c3MgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrSGFuZGxlciJ9ICYm
ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgJG1hcEZ1bmN0aW9uID0g
c3ViIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJ
bXBsZW1lbnRlZEFzIn0gaWYgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFz
In07Ci0gICAgICAgICAgICAgICAgcmV0dXJuICRfLT5uYW1lOwotICAgICAgICAgICAgfTsKLQot
ICAgICAgICAgICAgbXkgQG1ldGhvZFNpZ25hdHVyZU5hbWVzID0gbWFwKCYkbWFwRnVuY3Rpb24s
IEBzcGVjaWZpZWRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW1l
dGVyIChAc3BlY2lmaWVkUGFyYW1ldGVycykgewotICAgICAgICAgICAgICAgICRzZWxmLT5faW5z
dGFsbEF1dG9tYXRpY0V4Y2VwdGlvbnMoXEBjb250ZW50cywgJHBhcmFtZXRlciwgJGlkbFR5cGUs
ICRwYXJhbWV0ZXItPm5hbWUsICRwYXJhbWV0ZXItPm5hbWUsICRkZWZhdWx0UmV0dXJuVmFsdWUs
IFwlY29udGVudHNJbmNsdWRlcywgJGZ1bmN0aW9uLCAxKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgdW5zaGlmdChAbWV0aG9kU2lnbmF0dXJlTmFtZXMsICJjb250ZXh0IikgaWYgJG5l
ZWRzU2NyaXB0Q29udGV4dDsKLSAgICAgICAgICAgIHVuc2hpZnQoQHBhcmFtZXRlcnMsICJjb250
ZXh0IikgaWYgJG5lZWRzU2NyaXB0Q29udGV4dDsKLQotICAgICAgICAgICAgdW5zaGlmdChAbWV0
aG9kU2lnbmF0dXJlTmFtZXMsICJwYWdlIikgaWYgJG5lZWRzUGFnZTsKLSAgICAgICAgICAgIHVu
c2hpZnQoQHBhcmFtZXRlcnMsICJ0b1dlYlBhZ2UoY29udGV4dCkiKSBpZiAkbmVlZHNQYWdlOwot
Ci0gICAgICAgICAgICB1bnNoaWZ0KEBtZXRob2RTaWduYXR1cmVOYW1lcywgImZyYW1lIikgaWYg
JG5lZWRzRnJhbWU7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBwYXJhbWV0ZXJzLCAidG9XZWJGcmFt
ZShjb250ZXh0KSIpIGlmICRuZWVkc0ZyYW1lOwotCi0gICAgICAgICAgICBwdXNoKEBtZXRob2RT
aWduYXR1cmVOYW1lcywgIm91dEV4Y2VwdGlvblN0cmluZyIpIGlmICRuZWVkc0V4Y2VwdGlvblN0
cmluZzsKLSAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlcnMsICImZXhjZXB0aW9uU3RyaW5nIikg
aWYgJG5lZWRzRXhjZXB0aW9uU3RyaW5nOwotCi0gICAgICAgICAgICBteSAkaXNWb2lkUmV0dXJu
ID0gJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKLSAgICAgICAgICAgIG15ICRmdW5j
dGlvbkNhbGwgPSAkc2VsZi0+X2Z1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sIFxAbWV0aG9kU2lnbmF0
dXJlTmFtZXMsIFxAcGFyYW1ldGVycywgJGludGVyZmFjZSk7Ci0gICAgICAgICAgICBteSAkcmV0
dXJuRXhwcmVzc2lvbiA9ICRzZWxmLT5fcmV0dXJuRXhwcmVzc2lvbigkZnVuY3Rpb24sICRmdW5j
dGlvbkNhbGwsICRpbnRlcmZhY2UpOwotCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIlxu
Iik7Ci0KLSAgICAgICAgICAgIGlmICgkY2FsbGJhY2tIYW5kbGVyQXJndW1lbnQgJiYgJHJldHVy
bnNQcm9taXNlSWZOb0NhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgZGllICJSZXR1cm5pbmcg
YSBQcm9taXNlIGlzIG9ubHkgYWxsb3dlZCBmb3Igdm9pZCBmdW5jdGlvbnMiIHVubGVzcyAkaXNW
b2lkUmV0dXJuOwotCi0gICAgICAgICAgICAgICAgJGRlZmF1bHRSZXR1cm5WYWx1ZSA9ICJwcm9t
aXNlUmVzdWx0ID86ICRkZWZhdWx0UmV0dXJuVmFsdWUiOwotCi0gICAgICAgICAgICAgICAgcHVz
aChAY29udGVudHMsIDw8RU9GKTsKLSAgICBKU09iamVjdFJlZiBwcm9taXNlUmVzdWx0ID0gbnVs
bHB0cjsKLSAgICBpZiAoISR7Y2FsbGJhY2tIYW5kbGVyQXJndW1lbnR9KSB7Ci0gICAgICAgIEpT
T2JqZWN0UmVmIHJlc29sdmVGdW5jdGlvbiwgcmVqZWN0RnVuY3Rpb24gPSBudWxscHRyOwotICAg
ICAgICBwcm9taXNlUmVzdWx0ID0gSlNPYmplY3RNYWtlRGVmZXJyZWRQcm9taXNlKGNvbnRleHQs
ICZyZXNvbHZlRnVuY3Rpb24sICZyZWplY3RGdW5jdGlvbiwgbnVsbHB0cik7Ci0gICAgICAgICR7
Y2FsbGJhY2tIYW5kbGVyQXJndW1lbnR9ID0gdG9KU1Byb21pc2VDYWxsYmFja0hhbmRsZXIoY29u
dGV4dCwgcmVzb2x2ZUZ1bmN0aW9uLCByZWplY3RGdW5jdGlvbik7Ci0gICAgfQotCi1FT0YKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCRjYWxsYmFja0hhbmRsZXJBcmd1bWVudCkg
ewotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0gICAgaWYgKCEke2Nh
bGxiYWNrSGFuZGxlckFyZ3VtZW50fSkKLSAgICAgICAgJHtjYWxsYmFja0hhbmRsZXJBcmd1bWVu
dH0gPSB0b0pTRXJyb3JDYWxsYmFja0hhbmRsZXIoY29udGV4dCwgaW1wbC0+cnVudGltZSgpKTsK
LQotRU9GCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgkbmVlZHNFeGNlcHRpb25T
dHJpbmcgJiYgISRpc1ZvaWRSZXR1cm4pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50
cywgPDxFT0YpOwotICAgIE5TU3RyaW5nICpleGNlcHRpb25TdHJpbmcgPSBuaWw7Ci0gICAgSlNW
YWx1ZVJlZiByZXN1bHQgPSAke3JldHVybkV4cHJlc3Npb259OwotCi0gICAgaWYgKGV4Y2VwdGlv
blN0cmluZykgewotICAgICAgICAqZXhjZXB0aW9uID0gdG9KU0Vycm9yKGNvbnRleHQsIGV4Y2Vw
dGlvblN0cmluZyk7Ci0gICAgICAgIHJldHVybiAke2RlZmF1bHRSZXR1cm5WYWx1ZX07Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLUVPRgotICAgICAgICAgICAgfSBlbHNpZiAoJG5l
ZWRzRXhjZXB0aW9uU3RyaW5nICYmICRpc1ZvaWRSZXR1cm4pIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBjb250ZW50cywgPDxFT0YpOwotICAgIE5TU3RyaW5nICpleGNlcHRpb25TdHJpbmcgPSBu
aWw7Ci0gICAgJHtmdW5jdGlvbkNhbGx9OwotCi0gICAgaWYgKGV4Y2VwdGlvblN0cmluZykKLSAg
ICAgICAgKmV4Y2VwdGlvbiA9IHRvSlNFcnJvcihjb250ZXh0LCBleGNlcHRpb25TdHJpbmcpOwot
Ci0gICAgcmV0dXJuICR7ZGVmYXVsdFJldHVyblZhbHVlfTsKLX0KLUVPRgotICAgICAgICAgICAg
fSBlbHNpZiAoJGlzVm9pZFJldHVybikgewotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgICR7ZnVuY3Rpb25DYWxsfTtcblxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAY29u
dGVudHMsICIgICAgcmV0dXJuICR7ZGVmYXVsdFJldHVyblZhbHVlfTtcbn1cbiIpOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICByZXR1
cm4gIiAuICRyZXR1cm5FeHByZXNzaW9uIC4gIjtcbn1cbiIpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoJGlzUHJvcGVydHlGdW5jdGlvbikgewotICAgICAgICAgICAgICAgIHB1
c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0KLSR7ZnVuY3Rpb25TaWduYXR1cmV9Ci17Ci0gICAgJHtp
bXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFzc05h
bWV9KGNvbnRleHQsIHRoaXNPYmplY3QpOwotICAgIGlmICgke2Z1bmN0aW9uRWFybHlSZXR1cm5D
b25kaXRpb259KQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Ci0KLUVPRgotCi0gICAgICAgICAgICAgICAgbXkgJGtleUFyZ3VtZW50TmFtZSA9ICRzcGVjaWZp
ZWRQYXJhbWV0ZXJzWzBdLT5uYW1lOwotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAi
ICAgIGF1dG8gJHtrZXlBcmd1bWVudE5hbWV9ID0gdG9KU1N0cmluZyhhcmd1bWVudENvdW50ID4g
MCA/ICIgLiAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCRzcGVjaWZpZWRQYXJhbWV0
ZXJzWzBdLCAiYXJndW1lbnRzWzBdIikgLiAiIDogbmlsKTtcbiIpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKCRpc0dldFByb3BlcnR5RnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAY29udGVudHMsICJcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywg
IiAgICByZXR1cm4gZ2V0UHJvcGVydHkoY29udGV4dCwgdGhpc09iamVjdCwgJHtrZXlBcmd1bWVu
dE5hbWV9LmdldCgpLCBleGNlcHRpb24pO1xuIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAo
JGlzU2V0UHJvcGVydHlGdW5jdGlvbikgewotICAgICAgICAgICAgICAgICAgICBteSAkdmFsdWVB
cmd1bWVudE5hbWUgPSAkc3BlY2lmaWVkUGFyYW1ldGVyc1sxXS0+bmFtZTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgSlNWYWx1ZVJlZiAke3ZhbHVlQXJndW1lbnRO
YW1lfSA9IGFyZ3VtZW50Q291bnQgPiAxID8gYXJndW1lbnRzWzFdIDogSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7XG5cbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50
cywgIiAgICBzZXRQcm9wZXJ0eShjb250ZXh0LCB0aGlzT2JqZWN0LCAke2tleUFyZ3VtZW50TmFt
ZX0uZ2V0KCksICR7dmFsdWVBcmd1bWVudE5hbWV9LCBleGNlcHRpb24pO1xuXG4iKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkaXNEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICIgICAgZGVsZXRlUHJvcGVydHkoY29udGV4dCwgdGhpc09iamVjdCwg
JHtrZXlBcmd1bWVudE5hbWV9LmdldCgpLCBleGNlcHRpb24pO1xuXG4iKTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkaWUgIlVua25vd24gcHJvcGVydHkg
ZnVuY3Rpb24iOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHB1c2goQGNv
bnRlbnRzLCAiICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTtcbiIpIGlm
ICRpc1NldFByb3BlcnR5RnVuY3Rpb24gfHwgJGlzRGVsZXRlUHJvcGVydHlGdW5jdGlvbjsKLQot
ICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAifVxuIik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwotI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9Ci1FT0YKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmIChteSBAY29uc3RhbnRzID0gQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7Ci0g
ICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4vLyBDb25zdGFudHNcbiIpOwotICAgICAgICBmb3Jl
YWNoIG15ICRjb25zdGFudCAoQGNvbnN0YW50cykgewotICAgICAgICAgICAgbXkgJGdldHRlck5h
bWUgPSAkY29uc3RhbnQtPm5hbWU7Ci0gICAgICAgICAgICBteSAkY29uc3RhbnRWYWx1ZSA9ICRj
b25zdGFudC0+dmFsdWU7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotCi1K
U1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6JHtnZXR0ZXJOYW1lfShKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQotewotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCAkY29uc3RhbnRWYWx1
ZSk7Ci19Ci1FT0YKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChteSBAYXR0cmlidXRlcyA9
IEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgcHVzaChAY29udGVudHMsICJc
bi8vIEF0dHJpYnV0ZXNcbiIpOwotICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEBhdHRy
aWJ1dGVzKSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOb0ltcGxlbWVudGF0aW9uIn0gb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbSJ9OwotCi0gICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwl
Y29udGVudHNJbmNsdWRlcywgJGF0dHJpYnV0ZS0+dHlwZSwgJGF0dHJpYnV0ZSk7Ci0KLSAgICAg
ICAgICAgIG15ICRnZXR0ZXJOYW1lID0gJHNlbGYtPl9nZXR0ZXJOYW1lKCRhdHRyaWJ1dGUpOwot
Ci0gICAgICAgICAgICBteSBAbWV0aG9kU2lnbmF0dXJlTmFtZXMgPSAoKTsKLSAgICAgICAgICAg
IG15IEBwYXJhbWV0ZXJzID0gKCk7Ci0KLSAgICAgICAgICAgIHB1c2goQG1ldGhvZFNpZ25hdHVy
ZU5hbWVzLCAiY29udGV4dCIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJO
ZWVkc1NjcmlwdENvbnRleHQifTsKLSAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlcnMsICJjb250
ZXh0IikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzU2NyaXB0Q29u
dGV4dCJ9OwotCi0gICAgICAgICAgICBwdXNoKEBtZXRob2RTaWduYXR1cmVOYW1lcywgInBhZ2Ui
KSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmVlZHNQYWdlIn07Ci0gICAg
ICAgICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAidG9XZWJQYWdlKGNvbnRleHQpIikgaWYgJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzUGFnZSJ9OwotCi0gICAgICAgICAgICBw
dXNoKEBtZXRob2RTaWduYXR1cmVOYW1lcywgImZyYW1lIikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5lZWRzRnJhbWUifTsKLSAgICAgICAgICAgIHB1c2goQHBhcmFtZXRl
cnMsICJ0b1dlYkZyYW1lKGNvbnRleHQpIikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik5lZWRzRnJhbWUifTsKLQotICAgICAgICAgICAgbXkgJGdldHRlckV4cHJlc3Npb24g
PSAkc2VsZi0+X2Z1bmN0aW9uQ2FsbCgkYXR0cmlidXRlLCBcQG1ldGhvZFNpZ25hdHVyZU5hbWVz
LCBcQHBhcmFtZXRlcnMsICRpbnRlcmZhY2UsICRnZXR0ZXJOYW1lKTsKLQotICAgICAgICAgICAg
bXkgJGdldHRlckVhcmx5UmV0dXJuQ29uZGl0aW9uID0gJGVhcmx5UmV0dXJuQ29uZGl0aW9uOwot
Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotCi1FT0YKLQotICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gY29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7
Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKLSNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfQotRU9GCi0KLSAgICAgICAgICAgIHB1c2goQGNv
bnRlbnRzLCA8PEVPRik7Ci1KU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6JHtnZXR0ZXJOYW1lfShK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLUVPRgotCi0gICAgICAgICAgICBw
dXNoKEBjb250ZW50cywgIiAgICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTtcblxuIik7Ci0K
LSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7Ci0gICAgJHtpbXBsZW1lbnRhdGlv
bkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KGNvbnRleHQs
IG9iamVjdCk7Ci0gICAgaWYgKCR7Z2V0dGVyRWFybHlSZXR1cm5Db25kaXRpb259KQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci1FT0YKLQotICAgICAgICAg
ICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQotICAgIHJldHVybiBAe1skc2VsZi0+X3JldHVy
bkV4cHJlc3Npb24oJGF0dHJpYnV0ZSwgJGdldHRlckV4cHJlc3Npb24sICRpbnRlcmZhY2UpXX07
Ci19Ci1FT0YKLQotICAgICAgICAgICAgdW5sZXNzICgkYXR0cmlidXRlLT5pc1JlYWRPbmx5KSB7
Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlckVhcmx5UmV0dXJuQ29uZGl0aW9uID0gJGVhcmx5
UmV0dXJuQ29uZGl0aW9uOwotCi0gICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9G
KTsKLQotYm9vbCAke2NsYXNzTmFtZX06OkB7WyRzZWxmLT5fc2V0dGVyTmFtZSgkYXR0cmlidXRl
KV19KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQot
ewotRU9GCi0KLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBVTlVTRURfUEFS
QU0ocHJvcGVydHlOYW1lKTtcblxuIik7Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50
cywgPDxFT0YpOwotICAgICR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2lt
cGxlbWVudGF0aW9uQ2xhc3NOYW1lfShjb250ZXh0LCBvYmplY3QpOwotICAgIGlmICgke3NldHRl
ckVhcmx5UmV0dXJuQ29uZGl0aW9ufSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi1FT0YKLQot
ICAgICAgICAgICAgICAgIG15ICRwbGF0Zm9ybVZhbHVlOwotICAgICAgICAgICAgICAgIGlmICgk
c2VsZi0+X2hhc0F1dG9tYXRpY0V4Y2VwdGlvbnMoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgJHBsYXRmb3JtVmFsdWUgPSAicGxhdGZvcm1WYWx1ZSI7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICIgLiAkc2VsZi0+X3BsYXRmb3JtVHlwZVZhcmlh
YmxlRGVjbGFyYXRpb24oJGF0dHJpYnV0ZSwgInBsYXRmb3JtVmFsdWUiLCAidmFsdWUiKSAuICJc
biIpOwotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+X2luc3RhbGxBdXRvbWF0aWNFeGNlcHRp
b25zKFxAY29udGVudHMsICRhdHRyaWJ1dGUsICRpZGxUeXBlLCAicGxhdGZvcm1WYWx1ZSIsICRh
dHRyaWJ1dGUtPm5hbWUsICJmYWxzZSIsIFwlY29udGVudHNJbmNsdWRlcywgJGF0dHJpYnV0ZSk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgJHBsYXRmb3Jt
VmFsdWUgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCRhdHRyaWJ1dGUsICJ2YWx1
ZSIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCA8PEVPRik7Ci0gICAgaW1wbC0+QHtbJHNlbGYtPl9zZXR0ZXJOYW1lKCRhdHRyaWJ1dGUpXX0o
JHtwbGF0Zm9ybVZhbHVlfSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLUVPRgotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKLSNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfQotRU9GCi0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBwdXNoKEBjb250ZW50cywgPDxFT0YpOwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLUVPRgotCi0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7Ci0KLSNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfQotRU9GCi0KLSAgICB1bnNo
aWZ0KEBjb250ZW50cywgbWFwIHsgIiNpbXBvcnQgJF9cbiIgfSBzb3J0IGtleXMoJWNvbnRlbnRz
SW5jbHVkZXMpKTsKLSAgICB1bnNoaWZ0KEBjb250ZW50cywgQGNvbnRlbnRzUHJlZml4KTsKLQot
ICAgIHJldHVybiB7IG5hbWUgPT4gJGZpbGVuYW1lLCBjb250ZW50cyA9PiBcQGNvbnRlbnRzIH07
Ci19Ci0KLXN1YiBfZ2V0dGVyTmFtZQotewotICAgIG15ICgkc2VsZiwgJGF0dHJpYnV0ZSkgPSBA
XzsKLQotICAgIG15ICRzaWduYXR1cmUgPSAkYXR0cmlidXRlOwotICAgIG15ICRuYW1lID0gJHNp
Z25hdHVyZS0+bmFtZTsKLQotICAgIG15ICVzcGVjaWFsQ2FzZXMgPSAoCi0gICAgICAgIGJ1YmJs
ZXMgPT4gImJ1YmJsZXMiLAotICAgICk7Ci0KLSAgICByZXR1cm4gJHNwZWNpYWxDYXNlc3skbmFt
ZX0gaWYgZGVmaW5lZCAkc3BlY2lhbENhc2VzeyRuYW1lfTsKLSAgICByZXR1cm4gImlzIiAuICQk
c2VsZntjb2RlR2VuZXJhdG9yfS0+V0tfdWNmaXJzdCgkbmFtZSkgaWYgJHNpZ25hdHVyZS0+dHlw
ZS0+bmFtZSBlcSAiYm9vbGVhbiI7Ci0gICAgcmV0dXJuICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltcGxlbWVudGVkQXMifTsKLSAgICByZXR1cm4gJG5hbWU7Ci19Ci0KLXN1YiBfaGFz
QXV0b21hdGljRXhjZXB0aW9ucwotewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSkgPSBAXzsK
LQotICAgIHJldHVybiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fubm90QmVF
bXB0eSJ9IHx8ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTZXJpYWxpemF0aW9u
In0gZXEgIkpTT04iIHx8ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU0FycmF5
In0KLSAgICAgICAgfHwgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TRGljdGlv
bmFyeSJ9IHx8ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU09iamVjdCJ9IHx8
ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVUkwifQotICAgICAgICB8fCAkc2ln
bmF0dXJlLT50eXBlLT5uYW1lIGVxICJmdW5jdGlvbiIgfHwgJCRzZWxme2NvZGVHZW5lcmF0b3J9
LT5Jc1ByaW1pdGl2ZVR5cGUoJHNpZ25hdHVyZS0+dHlwZSkgfHwgJCRzZWxme2NvZGVHZW5lcmF0
b3J9LT5Jc1N0cmluZ1R5cGUoJHNpZ25hdHVyZS0+dHlwZSk7Ci19Ci0KLXN1YiBfaW5jbHVkZUhl
YWRlcnMKLXsKLSAgICBteSAoJHNlbGYsICRoZWFkZXJzLCAkaWRsVHlwZSwgJHNpZ25hdHVyZSkg
PSBAXzsKLQotICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCAkaWRsVHlwZTsKLQotICAgIG15ICRp
ZGxUeXBlTmFtZSA9ICRpZGxUeXBlLT5uYW1lOwotICAgIHJldHVybiBpZiAkaWRsVHlwZU5hbWUg
ZXEgIkRPTVN0cmluZyIgb3IgJGlkbFR5cGVOYW1lIGVxICJET01XaW5kb3ciIG9yICRpZGxUeXBl
TmFtZSBlcSAiYW55IiBvciAkaWRsVHlwZU5hbWUgZXEgInZvaWQiIG9yICRpZGxUeXBlTmFtZSBl
cSAiYm9vbGVhbiIgb3IgJGlkbFR5cGVOYW1lIGVxICJmdW5jdGlvbiIgb3IgJGlkbFR5cGVOYW1l
IGVxICJhcnJheSIgb3IgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc1ByaW1pdGl2ZVR5cGUoJGlk
bFR5cGUpOwotCi0gICAgJCRoZWFkZXJzeyciJyAuIF9jbGFzc05hbWUoJGlkbFR5cGUpIC4gJy5o
Iid9ID0gMTsKLSAgICAkJGhlYWRlcnN7JyInIC4gX2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lKCRp
ZGxUeXBlKSAuICcuaCInfSA9IDE7Ci19Ci0KLXN1YiBfaW1wbGVtZW50YXRpb25DbGFzc05hbWUK
LXsKLSAgICBteSAoJGlkbFR5cGUpID0gQF87Ci0gICAgcmV0dXJuICRpZGxUeXBlLT5uYW1lOwot
fQotCi1zdWIgX2NhbGxTdHJpbmcKLXsKLSAgICBteSAoJGNsYXNzSURMVHlwZSwgJGZ1bmN0aW9u
T3JBdHRyaWJ1dGUsICRpc0Z1bmN0aW9uKSA9IEBfOwotCi0gICAgbXkgJGNsYXNzTmFtZSA9IENv
ZGVHZW5lcmF0b3I6OldLX2xjZmlyc3QodW5kZWYsIF9wdWJsaWNDbGFzc05hbWUoJGNsYXNzSURM
VHlwZSkpOwotICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPm5hbWU7Ci0KLSAg
ICAjIFNvbWUgY2FzZXMgbWFrZSBtb3JlIHNlbnNlIHRvIG5vdCBpbmNsdWRlIHRoZSBwYXJlbnQg
bmFtZSwKLSAgICAjIHRob3NlIGFyZSByZXByZXNlbnRlZCB3aXRoIGVtcHR5IHN0cmluZ3MsIGFu
ZCBpdCBleGNsdWRlcwotICAgICMgdGhlIGNhbGwgcGF0aCBpbiB0aGUgb3V0cHV0LgotICAgIG15
ICVzcGVjaWFsQ2FzZXMgPSAoCi0gICAgICAgIGFjdGlvbiA9PiAiYnJvd3NlckFjdGlvbiIsCi0g
ICAgICAgIGV2ZW50ID0+ICIiLAotICAgICAgICBsb2NhbGl6YXRpb24gPT4gImkxOG4iLAotICAg
ICAgICBuYW1lc3BhY2UgPT4gIiIsCi0gICAgICAgIHdlYk5hdmlnYXRpb25FdmVudCA9PiAiIiwK
LSAgICAgICAgd2ViUmVxdWVzdEV2ZW50ID0+ICIiLAotICAgICAgICB3aW5kb3dFdmVudCA9PiAi
IiwKLSAgICApOwotCi0gICAgJGNsYXNzTmFtZSA9ICRzcGVjaWFsQ2FzZXN7JGNsYXNzTmFtZX0g
aWYgZGVmaW5lZCAkc3BlY2lhbENhc2VzeyRjbGFzc05hbWV9OwotCi0gICAgbXkgJGNhbGwgPSAi
JHtjbGFzc05hbWV9LiR7bmFtZX0iOwotICAgICRjYWxsID0gJG5hbWUgdW5sZXNzICRjbGFzc05h
bWU7Ci0gICAgJGNhbGwgLj0gIigpIiBpZiAkaXNGdW5jdGlvbjsKLQotICAgIHJldHVybiAkY2Fs
bDsKLX0KLQotc3ViIF9pbnN0YWxsQXV0b21hdGljRXhjZXB0aW9ucwotewotICAgIG15ICgkc2Vs
ZiwgJGNvbnRlbnRzLCAkc2lnbmF0dXJlLCAkY2xhc3NJRExUeXBlLCAkdmFyaWFibGUsICR2YXJp
YWJsZUxhYmVsLCAkcmVzdWx0LCAkY29udGVudHNJbmNsdWRlcywgJGZ1bmN0aW9uT3JBdHRyaWJ1
dGUsICRpc0Z1bmN0aW9uKSA9IEBfOwotCi0gICAgbXkgJGNhbGwgPSBfY2FsbFN0cmluZygkY2xh
c3NJRExUeXBlLCAkZnVuY3Rpb25PckF0dHJpYnV0ZSwgJGlzRnVuY3Rpb24pOwotCi0gICAgbXkg
JGhhc0V4Y2VwdGlvbnMgPSAwOwotCi0gICAgaWYgKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJTZXJpYWxpemF0aW9uIn0gJiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlNlcmlhbGl6YXRpb24ifSBlcSAiSlNPTiIpIHsKLSAgICAgICAgJGhhc0V4Y2VwdGlvbnMg
PSAxOwotCi0gICAgICAgIHB1c2goQCRjb250ZW50cywgPDxFT0YpOwotCi0gICAgaWYgKCpleGNl
cHRpb24pCi0gICAgICAgIHJldHVybiAke3Jlc3VsdH07Ci1FT0YKLSAgICB9Ci0KLSAgICBpZiAo
JCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc1N0cmluZ1R5cGUoJHNpZ25hdHVyZS0+dHlwZSkgJiYg
ISRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAg
ICRoYXNFeGNlcHRpb25zID0gMTsKLQotICAgICAgICBwdXNoKEAkY29udGVudHMsIDw8RU9GKTsK
LQotICAgIGlmICghJHZhcmlhYmxlKSB7Ci0gICAgICAgIE5TU3RyaW5nICptdXN0QmVBU3RyaW5n
U3RyaW5nID0gQCJJbnZhbGlkICcke3ZhcmlhYmxlTGFiZWx9JyB2YWx1ZSBwYXNzZWQgdG8gJHtj
YWxsfS4gRXhwZWN0ZWQgYSBzdHJpbmcuIjsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvSlNFcnJv
cihjb250ZXh0LCBtdXN0QmVBU3RyaW5nU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuICR7cmVzdWx0
fTsKLSAgICB9Ci1FT0YKLSAgICB9Ci0KLSAgICBpZiAoJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5J
c1ByaW1pdGl2ZVR5cGUoJHNpZ25hdHVyZS0+dHlwZSkgJiYgISRzaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICRoYXNFeGNlcHRpb25zID0gMTsK
LQotICAgICAgICBwdXNoKEAkY29udGVudHMsIDw8RU9GKTsKLQotICAgIGlmIChpc25hbigkdmFy
aWFibGUpKSB7Ci0gICAgICAgIE5TU3RyaW5nICptdXN0QmVBTnVtYmVyU3RyaW5nID0gQCJJbnZh
bGlkICcke3ZhcmlhYmxlTGFiZWx9JyB2YWx1ZSBwYXNzZWQgdG8gJHtjYWxsfS4gRXhwZWN0ZWQg
YSBudW1iZXIuIjsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvSlNFcnJvcihjb250ZXh0LCBtdXN0
QmVBTnVtYmVyU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuICR7cmVzdWx0fTsKLSAgICB9Ci1FT0YK
LSAgICB9Ci0KLSAgICBpZiAoJHNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiYW55IiAmJiAoJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TRGljdGlvbmFyeSJ9IHx8ICRzaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU09iamVjdCJ9IHx8ICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJTZXJpYWxpemF0aW9uIn0pICYmICEkc2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAkaGFzRXhjZXB0aW9ucyA9IDE7
Ci0KLSAgICAgICAgcHVzaChAJGNvbnRlbnRzLCA8PEVPRik7Ci0KLSAgICBpZiAoISR2YXJpYWJs
ZSkgewotICAgICAgICBOU1N0cmluZyAqbXVzdEJlQW5PYmplY3RTdHJpbmcgPSBAIkludmFsaWQg
JyR7dmFyaWFibGVMYWJlbH0nIHZhbHVlIHBhc3NlZCB0byAke2NhbGx9LiBFeHBlY3RlZCBhbiBv
YmplY3QuIjsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvSlNFcnJvcihjb250ZXh0LCBtdXN0QmVB
bk9iamVjdFN0cmluZyk7Ci0gICAgICAgIHJldHVybiAke3Jlc3VsdH07Ci0gICAgfQotRU9GCi0g
ICAgfQotCi0gICAgaWYgKCRzaWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgImFueSIgJiYgISgkc2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNEaWN0aW9uYXJ5In0gfHwgJHNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TT2JqZWN0In0gfHwgJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlNlcmlhbGl6YXRpb24ifSkgJiYgISRzaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICRoYXNFeGNlcHRpb25zID0gMTsK
LQotICAgICAgICBwdXNoKEAkY29udGVudHMsIDw8RU9GKTsKLQotICAgIGlmICgkdmFyaWFibGUg
JiYgIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCAkdmFyaWFibGUpKSB7Ci0gICAgICAgIE5TU3Ry
aW5nICptdXN0QmVBbk9iamVjdFN0cmluZyA9IEAiSW52YWxpZCAnJHt2YXJpYWJsZUxhYmVsfScg
dmFsdWUgcGFzc2VkIHRvICR7Y2FsbH0uIEV4cGVjdGVkIGFuIG9iamVjdC4iOwotICAgICAgICAq
ZXhjZXB0aW9uID0gdG9KU0Vycm9yKGNvbnRleHQsIG11c3RCZUFuT2JqZWN0U3RyaW5nKTsKLSAg
ICAgICAgcmV0dXJuICR7cmVzdWx0fTsKLSAgICB9Ci1FT0YKLSAgICB9Ci0KLSAgICBpZiAoJHNp
Z25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiYW55IiAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTlNBcnJheSJ9ICYmICEkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
T3B0aW9uYWwifSkgewotICAgICAgICAkaGFzRXhjZXB0aW9ucyA9IDE7Ci0KLSAgICAgICAgcHVz
aChAJGNvbnRlbnRzLCA8PEVPRik7Ci0KLSAgICBpZiAoISR2YXJpYWJsZSkgewotICAgICAgICBO
U1N0cmluZyAqbXVzdEJlQW5BcnJheVN0cmluZyA9IEAiSW52YWxpZCAnJHt2YXJpYWJsZUxhYmVs
fScgdmFsdWUgcGFzc2VkIHRvICR7Y2FsbH0uIEV4cGVjdGVkIGFuIGFycmF5LiI7Ci0gICAgICAg
ICpleGNlcHRpb24gPSB0b0pTRXJyb3IoY29udGV4dCwgbXVzdEJlQW5BcnJheVN0cmluZyk7Ci0g
ICAgICAgIHJldHVybiAke3Jlc3VsdH07Ci0gICAgfQotRU9GCi0gICAgfQotCi0gICAgaWYgKCRz
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5ub3RCZUVtcHR5In0pIHsKLSAgICAg
ICAgJGhhc0V4Y2VwdGlvbnMgPSAxOwotCi0gICAgICAgIG15ICRpc0VtcHR5Q2hlY2s7Ci0gICAg
ICAgIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVVJMIn0pIHsKLSAgICAg
ICAgICAgICRpc0VtcHR5Q2hlY2sgPSAiISR7dmFyaWFibGV9LnJlbGF0aXZlU3RyaW5nLmxlbmd0
aCI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkaXNFbXB0eUNoZWNrID0gIiEke3Zh
cmlhYmxlfS5sZW5ndGgiOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVzaChAJGNvbnRlbnRzLCA8
PEVPRik7Ci0KLSAgICBpZiAoJHtpc0VtcHR5Q2hlY2t9KSB7Ci0gICAgICAgIE5TU3RyaW5nICpj
YW5ub3RCZUVtcHR5RXhjZXB0aW9uU3RyaW5nID0gQCJJbnZhbGlkICcke3ZhcmlhYmxlTGFiZWx9
JyB2YWx1ZSBwYXNzZWQgdG8gJHtjYWxsfS4gQ2Fubm90IGJlIGVtcHR5LiI7Ci0gICAgICAgICpl
eGNlcHRpb24gPSB0b0pTRXJyb3IoY29udGV4dCwgY2Fubm90QmVFbXB0eUV4Y2VwdGlvblN0cmlu
Zyk7Ci0gICAgICAgIHJldHVybiAke3Jlc3VsdH07Ci0gICAgfQotRU9GCi0gICAgfQotCi0gICAg
aWYgKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVUkwifSkgewotICAgICAgICAk
aGFzRXhjZXB0aW9ucyA9IDE7Ci0KLSAgICAgICAgIyBGSVhNRTogcmRhcjovL3Byb2JsZW0vNTg0
MjgxMzUgQ29uc2lkZXIgYWxsb3dpbmcgbG9jYWwgZmlsZSBhY2Nlc3MgaWYgdGhlIGV4dGVuc2lv
biBjbGFpbWVkIGl0IGluCi0gICAgICAgICMgaXRzIG1hbmlmZXN0IGFuZCB0aGUgdXNlciBvcHRl
ZCBpbiBleHBsaWNpdHkgaW4gc29tZSB3YXkuCi0KLSAgICAgICAgcHVzaChAJGNvbnRlbnRzLCA8
PEVPRik7Ci0KLSAgICBpZiAoJHt2YXJpYWJsZX0uaXNGaWxlVVJMKSB7Ci0gICAgICAgIE5TU3Ry
aW5nICpjYW5ub3RCZUFjY2Vzc2VkRXhjZXB0aW9uU3RyaW5nID0gQCJJbnZhbGlkICcke3Zhcmlh
YmxlTGFiZWx9JyB2YWx1ZSBwYXNzZWQgdG8gJHtjYWxsfS4gQ2Fubm90IGJlIGEgbG9jYWwgZmls
ZSBVUkwuIjsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvSlNFcnJvcihjb250ZXh0LCBjYW5ub3RC
ZUFjY2Vzc2VkRXhjZXB0aW9uU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuICR7cmVzdWx0fTsKLSAg
ICB9Ci1FT0YKLSAgICB9Ci0KLSAgICBpZiAoJHNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiZnVu
Y3Rpb24iICYmICEkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2tIYW5k
bGVyIn0gJiYgISRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7
Ci0gICAgICAgICRoYXNFeGNlcHRpb25zID0gMTsKLQotICAgICAgICBwdXNoKEAkY29udGVudHMs
IDw8RU9GKTsKLQotICAgIGlmICgkdmFyaWFibGUgJiYgIUpTT2JqZWN0SXNGdW5jdGlvbihjb250
ZXh0LCAkdmFyaWFibGUpKSB7Ci0gICAgICAgIE5TU3RyaW5nICptdXN0QmVBRnVuY3Rpb25TdHJp
bmcgPSBAIkludmFsaWQgJyR7dmFyaWFibGVMYWJlbH0nIHZhbHVlIHBhc3NlZCB0byAke2NhbGx9
LiBFeHBlY3RlZCBhIGZ1bmN0aW9uLiI7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b0pTRXJyb3Io
Y29udGV4dCwgbXVzdEJlQUZ1bmN0aW9uU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuICR7cmVzdWx0
fTsKLSAgICB9Ci1FT0YKLSAgICB9Ci0KLSAgICBpZiAoJHNpZ25hdHVyZS0+dHlwZS0+bmFtZSBl
cSAiZnVuY3Rpb24iICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFj
a0hhbmRsZXIifSAmJiAhJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFs
In0pIHsKLSAgICAgICAgJGhhc0V4Y2VwdGlvbnMgPSAxOwotCi0gICAgICAgIHB1c2goQCRjb250
ZW50cywgPDxFT0YpOwotCi0gICAgaWYgKCEkdmFyaWFibGUpIHsKLSAgICAgICAgTlNTdHJpbmcg
Km11c3RCZUFGdW5jdGlvblN0cmluZyA9IEAiSW52YWxpZCAnJHt2YXJpYWJsZUxhYmVsfScgdmFs
dWUgcGFzc2VkIHRvICR7Y2FsbH0uIEV4cGVjdGVkIGEgZnVuY3Rpb24uIjsKLSAgICAgICAgKmV4
Y2VwdGlvbiA9IHRvSlNFcnJvcihjb250ZXh0LCBtdXN0QmVBRnVuY3Rpb25TdHJpbmcpOwotICAg
ICAgICByZXR1cm4gJHtyZXN1bHR9OwotICAgIH0KLUVPRgotICAgIH0KLQotICAgIHJldHVybiAk
aGFzRXhjZXB0aW9uczsKLX0KLQotc3ViIF95ZWFyU3RyaW5nCi17Ci0gICAgbXkgKHVuZGVmLCB1
bmRlZiwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJHllYXIpID0gbG9jYWx0aW1lKHRpbWUpOwotCi0g
ICAgcmV0dXJuICR5ZWFyOwotfQotCi1zdWIgX251bGxTdHJpbmdQb2xpY3kKLXsKLSAgICBteSAo
JHNpZ25hdHVyZSkgPSBAXzsKLQotICAgIGRpZSAiQm90aCBOdWxsQXNOdWxsU3RyaW5nIGFuZCBD
b252ZXJ0TnVsbEFuZFVuZGVmaW5lZFRvU3RyaW5nIHdlcmUgc3BlY2lmaWVkIiBpZiAkc2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydE51bGxUb051bGxTdHJpbmcifSAmJiAk
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydE51bGxBbmRVbmRlZmluZWRU
b1N0cmluZyJ9OwotCi0gICAgcmV0dXJuICJOdWxsU3RyaW5nUG9saWN5OjpOdWxsQXNOdWxsU3Ry
aW5nIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydE51bGxUb051
bGxTdHJpbmcifTsKLSAgICByZXR1cm4gIk51bGxTdHJpbmdQb2xpY3k6Ok5vTnVsbFN0cmluZyIg
aWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnROdWxsQW5kVW5kZWZp
bmVkVG9TdHJpbmcifTsKLSAgICByZXR1cm4gIk51bGxTdHJpbmdQb2xpY3k6Ok51bGxBbmRVbmRl
ZmluZWRBc051bGxTdHJpbmciOwotfQotCi1zdWIgX3B1YmxpY0NsYXNzTmFtZQotewotICAgIG15
ICgkaWRsVHlwZSkgPSBAXzsKLSAgICBteSAkaWRsVHlwZU5hbWUgPSAkaWRsVHlwZS0+bmFtZTsK
LSAgICAkaWRsVHlwZU5hbWUgPX4gcy9eV2ViRXh0ZW5zaW9uQVBJLy87Ci0gICAgcmV0dXJuICRp
ZGxUeXBlTmFtZTsKLX0KLQotc3ViIF9wYXJlbnRDbGFzc05hbWUKLXsKLSAgICBteSAoJHNlbGYs
ICRpbnRlcmZhY2UpID0gQF87Ci0KLSAgICBteSAkcGFyZW50SW50ZXJmYWNlID0gX3BhcmVudElu
dGVyZmFjZSgkaW50ZXJmYWNlKTsKLSAgICByZXR1cm4gJHBhcmVudEludGVyZmFjZSA/IF9jbGFz
c05hbWUoJHBhcmVudEludGVyZmFjZSkgOiAiSlNXZWJFeHRlbnNpb25XcmFwcGVyIjsKLX0KLQot
c3ViIF9wYXJlbnRDbGFzc1JlZkdldHRlckV4cHJlc3Npb24KLXsKLSAgICBteSAoJHNlbGYsICRp
bnRlcmZhY2UpID0gQF87Ci0KLSAgICBteSAkcGFyZW50SW50ZXJmYWNlID0gX3BhcmVudEludGVy
ZmFjZSgkaW50ZXJmYWNlKTsKLSAgICByZXR1cm4gJHBhcmVudEludGVyZmFjZSA/ICRzZWxmLT5f
Y2xhc3NSZWZHZXR0ZXIoJHBhcmVudEludGVyZmFjZSkgLiAiKCkiIDogIm51bGxwdHIiOwotfQot
Ci1zdWIgX3BhcmVudEludGVyZmFjZQotewotICAgIG15ICgkaW50ZXJmYWNlKSA9IEBfOwotICAg
IHJldHVybiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlOwotfQotCi1zdWIgX2phdmFTY3JpcHRUeXBl
Q29uZGl0aW9uCi17Ci0gICAgbXkgKCRzZWxmLCAkc2lnbmF0dXJlLCAkYXJndW1lbnQpID0gQF87
Ci0KLSAgICBteSAkaWRsVHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7Ci0KLSAgICByZXR1cm4gdW5k
ZWYgdW5sZXNzIGRlZmluZWQgJGlkbFR5cGU7Ci0KLSAgICBteSAkaWRsVHlwZU5hbWUgPSAkaWRs
VHlwZS0+bmFtZTsKLSAgICBteSAkbnVsbE9yVW5kZWZpbmVkID0gIkpTVmFsdWVJc051bGwoY29u
dGV4dCwgJHthcmd1bWVudH0pIHx8IEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCAke2FyZ3Vt
ZW50fSkiOwotCi0gICAgcmV0dXJuICIoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsICR7YXJndW1l
bnR9KSAmJiAhSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIEpTVmFsdWVUb09iamVjdChjb250
ZXh0LCAke2FyZ3VtZW50fSwgbnVsbHB0cikpKSB8fCBKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwg
JHthcmd1bWVudH0pIHx8ICR7bnVsbE9yVW5kZWZpbmVkfSIgaWYgJGlkbFR5cGVOYW1lIGVxICJh
bnkiICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU09iamVjdCJ9ICYmICRz
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01TdHJpbmcifTsKLSAgICByZXR1cm4g
IihKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgJHthcmd1bWVudH0pICYmICFKU09iamVjdElzRnVu
Y3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsICR7YXJndW1lbnR9LCBudWxs
cHRyKSkpIHx8ICR7bnVsbE9yVW5kZWZpbmVkfSIgaWYgJGlkbFR5cGVOYW1lIGVxICJhbnkiICYm
ICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNPYmplY3QifSB8fCAkc2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTlNBcnJheSJ9IHx8ICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJOU0RpY3Rpb25hcnkifSB8fCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiU2VyaWFsaXphdGlvbiJ9KTsKLSAgICByZXR1cm4gIkpTVmFsdWVJc09iamVj
dChjb250ZXh0LCAke2FyZ3VtZW50fSkgfHwgJHtudWxsT3JVbmRlZmluZWR9IiBpZiAkaWRsVHlw
ZU5hbWUgZXEgImFueSI7Ci0gICAgcmV0dXJuICIoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsICR7
YXJndW1lbnR9KSAmJiBKU09iamVjdElzRnVuY3Rpb24oY29udGV4dCwgSlNWYWx1ZVRvT2JqZWN0
KGNvbnRleHQsICR7YXJndW1lbnR9LCBudWxscHRyKSkpIHx8ICR7bnVsbE9yVW5kZWZpbmVkfSIg
aWYgJGlkbFR5cGVOYW1lIGVxICJmdW5jdGlvbiI7Ci0gICAgcmV0dXJuICJKU1ZhbHVlSXNCb29s
ZWFuKGNvbnRleHQsICR7YXJndW1lbnR9KSB8fCAke251bGxPclVuZGVmaW5lZH0iIGlmICRpZGxU
eXBlTmFtZSBlcSAiYm9vbGVhbiI7Ci0gICAgcmV0dXJuICJKU1ZhbHVlSXNBcnJheShjb250ZXh0
LCAke2FyZ3VtZW50fSkgfHwgJHtudWxsT3JVbmRlZmluZWR9IiBpZiAkaWRsVHlwZU5hbWUgZXEg
ImFycmF5IjsKLSAgICByZXR1cm4gIkpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCAke2FyZ3VtZW50
fSkgfHwgJHtudWxsT3JVbmRlZmluZWR9IiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzU3Ry
aW5nVHlwZSgkaWRsVHlwZSk7Ci0gICAgcmV0dXJuICJKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwg
JHthcmd1bWVudH0pIHx8ICR7bnVsbE9yVW5kZWZpbmVkfSIgIGlmICQkc2VsZntjb2RlR2VuZXJh
dG9yfS0+SXNQcmltaXRpdmVUeXBlKCRpZGxUeXBlKTsKLSAgICByZXR1cm4gJGFyZ3VtZW50Owot
fQotCi1zdWIgX3BsYXRmb3JtVHlwZQotewotICAgIG15ICgkc2VsZiwgJGlkbFR5cGUsICRzaWdu
YXR1cmUpID0gQF87Ci0KLSAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJGlkbFR5cGU7
Ci0KLSAgICBteSAkaWRsVHlwZU5hbWUgPSAkaWRsVHlwZTsKLSAgICAkaWRsVHlwZU5hbWUgPSAk
aWRsVHlwZS0+bmFtZSBpZiByZWYoJGlkbFR5cGUpIGVxICJJRExUeXBlIjsKLQotICAgIHJldHVy
biAiUmVmUHRyPFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcj4iIGlmICRpZGxUeXBlTmFtZSBl
cSAiZnVuY3Rpb24iICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFj
a0hhbmRsZXIifTsKLSAgICByZXR1cm4gIk5TQXJyYXkiIGlmICRpZGxUeXBlTmFtZSBlcSAiYXJy
YXkiICYmICRzaWduYXR1cmUgJiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5T
QXJyYXkifTsKLSAgICByZXR1cm4gIk5TU3RyaW5nIiBpZiAkaWRsVHlwZU5hbWUgZXEgImFueSIg
JiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlNlcmlhbGl6YXRpb24ifTsKLSAg
ICByZXR1cm4gIk5TRGljdGlvbmFyeSIgaWYgJGlkbFR5cGVOYW1lIGVxICJhbnkiICYmICRzaWdu
YXR1cmUgJiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TRGljdGlvbmFyeSJ9
OwotICAgIHJldHVybiAiTlNPYmplY3QiIGlmICRpZGxUeXBlTmFtZSBlcSAiYW55IiAmJiAkc2ln
bmF0dXJlICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU09iamVjdCJ9Owot
ICAgIHJldHVybiAiSlNWYWx1ZVJlZiIgaWYgJGlkbFR5cGVOYW1lIGVxICJET01XaW5kb3ciIHx8
ICRpZGxUeXBlTmFtZSBlcSAiYW55IjsKLSAgICByZXR1cm4gIkpTT2JqZWN0UmVmIiBpZiAkaWRs
VHlwZU5hbWUgZXEgImZ1bmN0aW9uIjsKLSAgICByZXR1cm4gImJvb2wiIGlmICRpZGxUeXBlTmFt
ZSBlcSAiYm9vbGVhbiI7Ci0KLSAgICByZXR1cm4gdW5sZXNzIHJlZigkaWRsVHlwZSkgZXEgIklE
TFR5cGUiOwotCi0gICAgcmV0dXJuICJOU1VSTCIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5J
c1N0cmluZ1R5cGUoJGlkbFR5cGUpICYmICRzaWduYXR1cmUgJiYgJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlVSTCJ9OwotICAgIHJldHVybiAiTlNTdHJpbmciIGlmICQkc2VsZntj
b2RlR2VuZXJhdG9yfS0+SXNTdHJpbmdUeXBlKCRpZGxUeXBlKTsKLSAgICByZXR1cm4gImRvdWJs
ZSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc1ByaW1pdGl2ZVR5cGUoJGlkbFR5cGUpOwot
Ci0gICAgcmV0dXJuIF9pbXBsZW1lbnRhdGlvbkNsYXNzTmFtZSgkaWRsVHlwZSk7Ci19Ci0KLXN1
YiBfcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IKLXsKLSAgICBteSAoJHNlbGYsICRzaWduYXR1cmUs
ICRhcmd1bWVudE5hbWUpID0gQF87Ci0KLSAgICBteSAkaWRsVHlwZSA9ICRzaWduYXR1cmUtPnR5
cGU7Ci0KLSAgICBteSAkaWRsVHlwZU5hbWUgPSAkaWRsVHlwZTsKLSAgICAkaWRsVHlwZU5hbWUg
PSAkaWRsVHlwZS0+bmFtZSBpZiByZWYoJGlkbFR5cGUpIGVxICJJRExUeXBlIjsKLQotICAgIG15
ICRudWxsU3RyaW5nUG9saWN5ID0gX251bGxTdHJpbmdQb2xpY3koJHNpZ25hdHVyZSk7Ci0gICAg
bXkgJGFycmF5VHlwZSA9ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU0FycmF5
In07Ci0KLSAgICBpZiAoJGlkbFR5cGVOYW1lIGVxICJhbnkiKSB7Ci0gICAgICAgIHJldHVybiAi
c2VyaWFsaXplSlNPYmplY3QoY29udGV4dCwgJGFyZ3VtZW50TmFtZSwgZXhjZXB0aW9uKSIgaWYg
JHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlNlcmlhbGl6YXRpb24ifSAmJiAkc2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU2VyaWFsaXphdGlvbiJ9IGVxICJKU09OIjsK
LSAgICAgICAgcmV0dXJuICJ0b05TRGljdGlvbmFyeShjb250ZXh0LCAkYXJndW1lbnROYW1lKSIg
aWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5TRGljdGlvbmFyeSJ9OwotICAg
ICAgICByZXR1cm4gImR5bmFtaWNfb2JqY19jYXN0PE5TQXJyYXk+KHRvTlNPYmplY3QoY29udGV4
dCwgJGFyZ3VtZW50TmFtZSkpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TlNBcnJheSJ9OwotICAgICAgICByZXR1cm4gInRvTlNPYmplY3QoY29udGV4dCwgJGFyZ3VtZW50
TmFtZSkiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOU09iamVjdCJ9Owot
ICAgICAgICByZXR1cm4gJGFyZ3VtZW50TmFtZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gInRvSlND
YWxsYmFja0hhbmRsZXIoY29udGV4dCwgJGFyZ3VtZW50TmFtZSwgaW1wbC0+cnVudGltZSgpKSIg
aWYgJGlkbFR5cGVOYW1lIGVxICJmdW5jdGlvbiIgJiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbGxiYWNrSGFuZGxlciJ9OwotICAgIHJldHVybiAiZHluYW1pY19vYmpjX2Nh
c3Q8TlNBcnJheT4odG9OU09iamVjdChjb250ZXh0LCAkYXJndW1lbnROYW1lLCAkYXJyYXlUeXBl
LmNsYXNzKSkiIGlmICRpZGxUeXBlTmFtZSBlcSAiYXJyYXkiICYmICRhcnJheVR5cGU7Ci0gICAg
cmV0dXJuICJKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkaWRs
VHlwZU5hbWUgZXEgImJvb2xlYW4iOwotICAgIHJldHVybiAiSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHQsICRhcmd1bWVudE5hbWUsIGV4Y2VwdGlvbikiIGlmICRpZGxUeXBlTmFtZSBlcSAiZnVuY3Rp
b24iOwotCi0gICAgcmV0dXJuIHVubGVzcyByZWYoJGlkbFR5cGUpIGVxICJJRExUeXBlIjsKLQot
ICAgIHJldHVybiAiW05TVVJMIFVSTFdpdGhTdHJpbmc6dG9OU1N0cmluZyhjb250ZXh0LCAkYXJn
dW1lbnROYW1lLCAkbnVsbFN0cmluZ1BvbGljeSldIiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0t
PklzU3RyaW5nVHlwZSgkaWRsVHlwZSkgJiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlVSTCJ9OwotICAgIHJldHVybiAidG9OU1N0cmluZyhjb250ZXh0LCAkYXJndW1lbnROYW1l
LCAkbnVsbFN0cmluZ1BvbGljeSkiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNTdHJpbmdU
eXBlKCRpZGxUeXBlKTsKLSAgICByZXR1cm4gIkpTVmFsdWVUb051bWJlcihjb250ZXh0LCAkYXJn
dW1lbnROYW1lLCBudWxscHRyKSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc1ByaW1pdGl2
ZVR5cGUoJGlkbFR5cGUpOwotICAgIHJldHVybiAidG8iIC4gX2ltcGxlbWVudGF0aW9uQ2xhc3NO
YW1lKCRpZGxUeXBlKSAuICIoY29udGV4dCwgJGFyZ3VtZW50TmFtZSkiOwotfQotCi1zdWIgX3Bs
YXRmb3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRpb24KLXsKLSAgICBteSAoJHNlbGYsICRzaWduYXR1
cmUsICR2YXJpYWJsZU5hbWUsICRhcmd1bWVudE5hbWUsICRjb25kaXRpb24sICRoaWRlVHlwZSkg
PSBAXzsKLQotICAgIG15ICRpZGxUeXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKLSAgICBteSAkaWRs
VHlwZU5hbWUgPSAkaWRsVHlwZS0+bmFtZTsKLSAgICBteSAkcGxhdGZvcm1UeXBlID0gJHNlbGYt
Pl9wbGF0Zm9ybVR5cGUoJGlkbFR5cGUsICRzaWduYXR1cmUpOwotICAgIG15ICRjb25zdHJ1Y3Rv
ciA9ICRzZWxmLT5fcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IoJHNpZ25hdHVyZSwgJGFyZ3VtZW50
TmFtZSkgaWYgJGFyZ3VtZW50TmFtZTsKLQotICAgIG15ICVvYmpDVHlwZXMgPSAoCi0gICAgICAg
ICJOU0FycmF5IiAgICAgICA9PiAxLAotICAgICAgICAiTlNEaWN0aW9uYXJ5IiAgPT4gMSwKLSAg
ICAgICAgIk5TVVJMIiAgICAgICAgID0+IDEsCi0gICAgICAgICJOU1N0cmluZyIgICAgICA9PiAx
LAotICAgICAgICAiTlNPYmplY3QiICAgICAgPT4gMSwKLSAgICApOwotCi0gICAgbXkgJG51bGxW
YWx1ZSA9ICJudWxscHRyIjsKLSAgICAkbnVsbFZhbHVlID0gInN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6cXVpZXRfTmFOKCkiIGlmICRwbGF0Zm9ybVR5cGUgZXEgImRvdWJsZSI7Ci0gICAg
JG51bGxWYWx1ZSA9ICJuaWwiIGlmICRvYmpDVHlwZXN7JHBsYXRmb3JtVHlwZX07Ci0gICAgJG51
bGxWYWx1ZSA9ICJKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSIgaWYgJHBsYXRmb3JtVHlw
ZSBlcSAiSlNWYWx1ZVJlZiI7Ci0KLSAgICBteSAkZGVmYXVsdFZhbHVlID0gJHNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRlZmF1bHRWYWx1ZSJ9OwotICAgIGlmIChkZWZpbmVkICRk
ZWZhdWx0VmFsdWUgJiYgJHBsYXRmb3JtVHlwZSBlcSAiZG91YmxlIikgewotICAgICAgICAkbnVs
bFZhbHVlID0gJGRlZmF1bHRWYWx1ZSBlcSAiTWF4IiA/ICJzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Om1heCgpIiA6ICRkZWZhdWx0VmFsdWU7Ci0gICAgfSBlbHNpZiAoZGVmaW5lZCAkZGVm
YXVsdFZhbHVlKSB7Ci0gICAgICAgIGRpZSAiRGVmYXVsdFZhbHVlIGV4dGVuZGVkIGF0dHJpYnV0
ZSBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgZm9yIG51bWVyaWMgdHlwZXMiOwotICAgIH0K
LQotICAgICRjb25kaXRpb24gPSAiSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsICRhcmd1bWVudE5h
bWUpIiBpZiAkcGxhdGZvcm1UeXBlIGVxICJkb3VibGUiIGFuZCAkYXJndW1lbnROYW1lIGFuZCAh
JGNvbmRpdGlvbjsKLQotICAgIGlmICgkcGxhdGZvcm1UeXBlIGVxICJKU1ZhbHVlUmVmIiBvciAk
cGxhdGZvcm1UeXBlIGVxICJKU09iamVjdFJlZiIgb3IgJHBsYXRmb3JtVHlwZSBlcSAiUmVmUHRy
PFdlYkV4dGVuc2lvbkNhbGxiYWNrSGFuZGxlcj4iIG9yICRwbGF0Zm9ybVR5cGUgZXEgImRvdWJs
ZSIgb3IgJHBsYXRmb3JtVHlwZSBlcSAiYm9vbCIpIHsKLSAgICAgICAgJHBsYXRmb3JtVHlwZSAu
PSAiICI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgJHBsYXRmb3JtVHlwZSAuPSAkb2JqQ1R5cGVz
eyRwbGF0Zm9ybVR5cGV9ID8gIiAqIiA6ICIqICI7Ci0gICAgfQotCi0gICAgJHBsYXRmb3JtVHlw
ZSA9ICIiIGlmICRoaWRlVHlwZTsKLQotICAgIHJldHVybiAiJHBsYXRmb3JtVHlwZSR2YXJpYWJs
ZU5hbWUgPSAkY29uZGl0aW9uICYmICRjb25zdHJ1Y3RvcjsiIGlmICRjb25kaXRpb24gJiYgJHBs
YXRmb3JtVHlwZSBlcSAiYm9vbCAiOwotICAgIHJldHVybiAiJHBsYXRmb3JtVHlwZSR2YXJpYWJs
ZU5hbWUgPSAkY29uZGl0aW9uID8gJGNvbnN0cnVjdG9yIDogJG51bGxWYWx1ZTsiIGlmICRjb25k
aXRpb247Ci0gICAgcmV0dXJuICIkcGxhdGZvcm1UeXBlJHZhcmlhYmxlTmFtZTsiIGlmICRwbGF0
Zm9ybVR5cGUgPX4gL15SZWZQdHI8LzsKLSAgICByZXR1cm4gIiRwbGF0Zm9ybVR5cGUkdmFyaWFi
bGVOYW1lID0gJGNvbnN0cnVjdG9yOyIgaWYgJGNvbnN0cnVjdG9yOwotICAgIHJldHVybiAiJHBs
YXRmb3JtVHlwZSR2YXJpYWJsZU5hbWUgPSAkbnVsbFZhbHVlOyI7Ci19Ci0KLXN1YiBfZnVuY3Rp
b25DYWxsCi17Ci0gICAgbXkgKCRzZWxmLCAkc2lnbmF0dXJlLCAkbWV0aG9kU2lnbmF0dXJlTmFt
ZXNSZWYsICRwYXJhbWV0ZXJzUmVmLCAkaW50ZXJmYWNlLCAkZ2V0dGVyTmFtZSkgPSBAXzsKLQot
ICAgIG15IEBtZXRob2RTaWduYXR1cmVOYW1lcyA9IEAkbWV0aG9kU2lnbmF0dXJlTmFtZXNSZWY7
Ci0gICAgbXkgQHBhcmFtZXRlcnMgPSBAJHBhcmFtZXRlcnNSZWY7Ci0KLSAgICBteSAkZnVuY3Rp
b25OYW1lID0gImltcGwtPiIgLiAkc2lnbmF0dXJlLT5uYW1lOwotICAgICRmdW5jdGlvbk5hbWUg
PSAiaW1wbC0+IiAuICRnZXR0ZXJOYW1lIGlmICRnZXR0ZXJOYW1lOwotICAgICRmdW5jdGlvbk5h
bWUgPSAiaW1wbC0+IiAuICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1l
bnRlZEFzIn0gaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QXMifTsKLSAgICByZXR1cm4gJGZ1bmN0aW9uTmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQHBhcmFt
ZXRlcnMpIC4gIikiOwotfQotCi1zdWIgX3JldHVybkV4cHJlc3Npb24KLXsKLSAgICBteSAoJHNl
bGYsICRzaWduYXR1cmUsICRleHByZXNzaW9uLCAkaW50ZXJmYWNlKSA9IEBfOwotCi0gICAgbXkg
JGNvbnZlcnROdWxsU3RyaW5nQXR0cmlidXRlID0gJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnZlcnROdWxsU3RyaW5nVG8ifTsKLSAgICBteSAkbnVsbE9yRW1wdHlTdHJpbmcg
PSAiTnVsbE9yRW1wdHlTdHJpbmc6Ok51bGxTdHJpbmdBc0VtcHR5U3RyaW5nIjsKLSAgICAkbnVs
bE9yRW1wdHlTdHJpbmcgPSAiTnVsbE9yRW1wdHlTdHJpbmc6Ok51bGxTdHJpbmdBc051bGwiIGlm
IGRlZmluZWQgJGNvbnZlcnROdWxsU3RyaW5nQXR0cmlidXRlICYmICRjb252ZXJ0TnVsbFN0cmlu
Z0F0dHJpYnV0ZSBlcSAiTnVsbCI7Ci0KLSAgICBteSAkcmV0dXJuSURMVHlwZSA9ICRzaWduYXR1
cmUtPnR5cGU7Ci0gICAgbXkgJHJldHVybklETFR5cGVOYW1lID0gJHJldHVybklETFR5cGUtPm5h
bWU7Ci0KLSAgICByZXR1cm4gImRlc2VyaWFsaXplSlNPTlN0cmluZyhjb250ZXh0LCAkZXhwcmVz
c2lvbikiIGlmICRyZXR1cm5JRExUeXBlTmFtZSBlcSAiYW55IiAmJiAkc2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiU2VyaWFsaXphdGlvbiJ9ICYmICRzaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJTZXJpYWxpemF0aW9uIn0gZXEgIkpTT04iOwotICAgIHJldHVybiAidG9K
U051bGxJZk51bGwoY29udGV4dCwgJGV4cHJlc3Npb24pIiBpZiAkcmV0dXJuSURMVHlwZU5hbWUg
ZXEgImFueSIgfHwgJHJldHVybklETFR5cGVOYW1lIGVxICJET01XaW5kb3ciOwotICAgIHJldHVy
biAidG9KU1ZhbHVlKGNvbnRleHQsICR7ZXhwcmVzc2lvbn0sICRudWxsT3JFbXB0eVN0cmluZyki
IGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNTdHJpbmdUeXBlKCRyZXR1cm5JRExUeXBlKTsK
LSAgICByZXR1cm4gIkpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpIiBpZiAkcmV0dXJuSURM
VHlwZU5hbWUgZXEgInZvaWQiOwotICAgIHJldHVybiAiSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRl
eHQsICR7ZXhwcmVzc2lvbn0pIiBpZiAkcmV0dXJuSURMVHlwZU5hbWUgZXEgImJvb2xlYW4iOwot
ICAgIHJldHVybiAiSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgJHtleHByZXNzaW9ufSkiIGlm
ICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNQcmltaXRpdmVUeXBlKCRyZXR1cm5JRExUeXBlKTsK
LSAgICByZXR1cm4gInRvSlMoY29udGV4dCwgV1RGOjpnZXRQdHIoJHtleHByZXNzaW9ufSkpIjsK
LX0KLQotc3ViIF9zZXR0ZXJOYW1lCi17Ci0gICAgbXkgKCRzZWxmLCAkYXR0cmlidXRlKSA9IEBf
OwotCi0gICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwotCi0gICAgbXkgJXNwZWNpYWxD
YXNlcyA9ICgKLSAgICAgICAgdXJsID0+ICJVUkwiCi0gICAgKTsKLQotICAgIHJldHVybiAic2V0
IiAuICRzcGVjaWFsQ2FzZXN7JG5hbWV9IGlmIGRlZmluZWQgJHNwZWNpYWxDYXNlc3skbmFtZX07
Ci0gICAgcmV0dXJuICJzZXQiIC4gJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5XS191Y2ZpcnN0KCRu
YW1lKTsKLX0KLQotc3ViIF9zdGF0aWNGdW5jdGlvbnNHZXR0ZXJJbXBsZW1lbnRhdGlvbgotewot
ICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSkgPSBAXzsKLQotICAgIG15ICRtYXBGdW5jdGlvbiA9
IHN1YiB7Ci0gICAgICAgIHJldHVybiBpZiAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5bmFt
aWMifSBvciAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsKLQotICAg
ICAgICBteSAkbmFtZSA9ICRfLT5uYW1lOwotICAgICAgICBteSBAYXR0cmlidXRlcyA9ICgpOwot
ICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAia0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIp
IGlmICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKLSAgICAgICAgbXkgJGpz
cHJvcGVydGllcyA9IHNjYWxhciBAYXR0cmlidXRlcyA9PSAwID8gImtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSIgOiBqb2luKCIgfCAiLCBAYXR0cmlidXRlcyk7Ci0gICAgICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRfKTsKLQotICAgICAgICByZXR1cm4gIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuICAgICAgICB7IFwiJG5hbWVcIiwgJG5hbWUsICRqc3By
b3BlcnRpZXMgfSxcbiAgICAgICAgI2VuZGlmIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAg
ICAgIHJldHVybiAieyBcIiRuYW1lXCIsICRuYW1lLCAkanNwcm9wZXJ0aWVzIH0sIjsKLSAgICB9
OwotCi0gICAgbXkgQGluaXRpYWxpemVycyA9IG1hcCgmJG1hcEZ1bmN0aW9uLCBAeyRpbnRlcmZh
Y2UtPm9wZXJhdGlvbnN9KTsKLSAgICByZXR1cm4gJHNlbGYtPl9zdGF0aWNGdW5jdGlvbnNPclZh
bHVlc09yQ29uc3RhbnRzR2V0dGVySW1wbGVtZW50YXRpb24oJGludGVyZmFjZSwgImZ1bmN0aW9u
IiwgInsgbnVsbHB0ciwgbnVsbHB0ciwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sIiwgQGlu
aXRpYWxpemVycyk7Ci19Ci0KLXN1YiBfc3RhdGljRnVuY3Rpb25zT3JWYWx1ZXNPckNvbnN0YW50
c0dldHRlckltcGxlbWVudGF0aW9uCi17Ci0gICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNlLCAkZnVu
Y3Rpb25PclZhbHVlT3JDb25zdGFudCwgJGFycmF5VGVybWluYXRvciwgQGluaXRpYWxpemVycykg
PSBAXzsKLQotICAgIG15ICRjbGFzc05hbWUgPSBfY2xhc3NOYW1lKCRpbnRlcmZhY2UtPnR5cGUp
OwotICAgIG15ICR1cHBlcmNhc2VGdW5jdGlvbk9yVmFsdWVPckNvbnN0YW50ID0gJCRzZWxme2Nv
ZGVHZW5lcmF0b3J9LT5XS191Y2ZpcnN0KCRmdW5jdGlvbk9yVmFsdWVPckNvbnN0YW50KTsKLSAg
ICBteSAkZnVuY3Rpb25PclZhbHVlVHlwZSA9ICR1cHBlcmNhc2VGdW5jdGlvbk9yVmFsdWVPckNv
bnN0YW50OwotICAgICRmdW5jdGlvbk9yVmFsdWVUeXBlID0gIlZhbHVlIiBpZiAkZnVuY3Rpb25P
clZhbHVlVHlwZSBlcSAiQ29uc3RhbnQiOwotCi0gICAgbXkgJHJlc3VsdCA9IDw8RU9GOwotY29u
c3QgSlNTdGF0aWMke2Z1bmN0aW9uT3JWYWx1ZVR5cGV9KiAke2NsYXNzTmFtZX06OnN0YXRpYyR7
dXBwZXJjYXNlRnVuY3Rpb25PclZhbHVlT3JDb25zdGFudH1zKCkKLXsKLUVPRgotCi0gICAgcmV0
dXJuICRyZXN1bHQgLiAiICAgIHJldHVybiBudWxscHRyO1xufVxuIiB1bmxlc3MgQGluaXRpYWxp
emVyczsKLQotICAgICRyZXN1bHQgLj0gPDxFT0YKLSAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWMk
e2Z1bmN0aW9uT3JWYWx1ZVR5cGV9ICR7ZnVuY3Rpb25PclZhbHVlT3JDb25zdGFudH1zW10gPSB7
Ci0gICAgICAgIEB7W2pvaW4oIlxuICAgICAgICAiLCBAaW5pdGlhbGl6ZXJzKV19Ci0gICAgICAg
ICR7YXJyYXlUZXJtaW5hdG9yfQotICAgIH07Ci0KLSAgICByZXR1cm4gJHtmdW5jdGlvbk9yVmFs
dWVPckNvbnN0YW50fXM7Ci19Ci1FT0YKLX0KLQotc3ViIF9zdGF0aWNWYWx1ZXNHZXR0ZXJJbXBs
ZW1lbnRhdGlvbgotewotICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSkgPSBAXzsKLQotICAgIG15
ICRtYXBGdW5jdGlvbiA9IHN1YiB7Ci0gICAgICAgIHJldHVybiBpZiAkXy0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik5vSW1wbGVtZW50YXRpb24ifSBvciAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkR5bmFtaWMifSBvciAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik1haW5Xb3JsZE9ubHkifTsK
LQotICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRfLT5uYW1lOwotICAgICAgICBteSAkYXR0
cmlidXRlSXNSZWFkb25seSA9ICRfLT5pc1JlYWRPbmx5OwotICAgICAgICBteSAkZ2V0dGVyTmFt
ZSA9ICRzZWxmLT5fZ2V0dGVyTmFtZSgkXyk7Ci0gICAgICAgIG15ICRzZXR0ZXJOYW1lID0gJGF0
dHJpYnV0ZUlzUmVhZG9ubHkgPyAibnVsbHB0ciIgOiAkc2VsZi0+X3NldHRlck5hbWUoJF8pOwot
ICAgICAgICBteSBAYXR0cmlidXRlcyA9ICgpOwotICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAi
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRG9udEVudW0ifTsKLSAgICAgICAgbXkgJGpzcHJvcGVydGllcyA9IHNjYWxhciBAYXR0cmli
dXRlcyA9PSAwID8gImtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSIgOiBqb2luKCIgfCAiLCBAYXR0
cmlidXRlcyk7Ci0gICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3Ry
aW5nKCRfKTsKLQotICAgICAgICByZXR1cm4gIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuICAg
ICAgICB7IFwiJGF0dHJpYnV0ZU5hbWVcIiwgJGdldHRlck5hbWUsICRzZXR0ZXJOYW1lLCAkanNw
cm9wZXJ0aWVzIH0sXG4gICAgICAgICNlbmRpZiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAg
ICAgICByZXR1cm4gInsgXCIkYXR0cmlidXRlTmFtZVwiLCAkZ2V0dGVyTmFtZSwgJHNldHRlck5h
bWUsICRqc3Byb3BlcnRpZXMgfSwiOwotICAgIH07Ci0KLSAgICBteSBAaW5pdGlhbGl6ZXJzV2l0
aENvbnN0YW50cyA9IChtYXAoJiRtYXBGdW5jdGlvbiwgQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVz
fSksICRzZWxmLT5fc3RhdGljQ29uc3RhbnRzKCRpbnRlcmZhY2UpKTsKLQotICAgIHJldHVybiAk
c2VsZi0+X3N0YXRpY0Z1bmN0aW9uc09yVmFsdWVzT3JDb25zdGFudHNHZXR0ZXJJbXBsZW1lbnRh
dGlvbigkaW50ZXJmYWNlLCAidmFsdWUiLCAieyBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwiLCBAaW5pdGlhbGl6ZXJzV2l0aENvbnN0YW50cyk7
Ci19Ci0KLXN1YiBfc3RhdGljQ29uc3RhbnRzCi17Ci0gICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNl
KSA9IEBfOwotICAgIG15IEBpbml0aWFsaXplcnMgPSAoKTsKLSAgICBmb3JlYWNoIG15ICRjb25z
dGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7Ci0gICAgICAgIG15ICRjb25zdGFudE5h
bWUgPSAkY29uc3RhbnQtPm5hbWU7Ci0gICAgICAgIHB1c2goQGluaXRpYWxpemVycywgInsgXCIk
Y29uc3RhbnROYW1lXCIsICRjb25zdGFudE5hbWUsIG51bGxwdHIsIGtKU1Byb3BlcnR5QXR0cmli
dXRlTm9uZSB9Iik7Ci0gICAgfQotICAgIHJldHVybiBAaW5pdGlhbGl6ZXJzOwotfQotCi1zdWIg
X3N0YXRpY0NvbnN0YW50c0dldHRlckltcGxlbWVudGF0aW9uCi17Ci0gICAgbXkgKCRzZWxmLCAk
aW50ZXJmYWNlKSA9IEBfOwotICAgIHJldHVybiAkc2VsZi0+X3N0YXRpY0Z1bmN0aW9uc09yVmFs
dWVzT3JDb25zdGFudHNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAiY29uc3RhbnQi
LCAieyBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUg
fSwiLCAkc2VsZi0+X3N0YXRpY0NvbnN0YW50cygkaW50ZXJmYWNlKSk7Ci19Ci0KLXN1YiBfaGFz
SW5zdGFuY2VJbXBsZW1lbnRhdGlvbgotewotICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSkgPSBA
XzsKLQotICAgIG15ICRjbGFzc05hbWUgPSBfY2xhc3NOYW1lKCRpbnRlcmZhY2UtPnR5cGUpOwot
ICAgIG15ICRjbGFzc1JlZkdldHRlciA9ICRzZWxmLT5fY2xhc3NSZWZHZXR0ZXIoJGludGVyZmFj
ZS0+dHlwZSk7Ci0KLSAgICBteSAkcmVzdWx0ID0gPDxFT0Y7Ci1ib29sICR7Y2xhc3NOYW1lfTo6
aGFzSW5zdGFuY2UoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgY29uc3RydWN0b3IsIEpT
VmFsdWVSZWYgcG9zc2libGVJbnN0YW5jZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAg
IHJldHVybiBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgcG9zc2libGVJbnN0YW5jZSwgJHtj
bGFzc1JlZkdldHRlcn0oKSk7Ci19Ci1FT0YKLX0KLQotc3ViIF9keW5hbWljQXR0cmlidXRlc0lt
cGxlbWVudGF0aW9uCi17Ci0gICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNlLCAkaGFzRHluYW1pY1By
b3BlcnRpZXMsICRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllcykgPSBAXzsKLQotICAgIHJldHVy
biB1bmxlc3MgJGhhc0R5bmFtaWNQcm9wZXJ0aWVzIG9yICRoYXNNYWluV29ybGRPbmx5UHJvcGVy
dGllczsKLQotICAgIG15ICRpZGxUeXBlID0gJGludGVyZmFjZS0+dHlwZTsKLSAgICBteSAkaWRs
VHlwZU5hbWUgPSAkaWRsVHlwZS0+bmFtZTsKLSAgICBteSAkY2xhc3NOYW1lID0gX2NsYXNzTmFt
ZSgkaWRsVHlwZSk7Ci0gICAgbXkgJGltcGxlbWVudGF0aW9uQ2xhc3NOYW1lID0gX2ltcGxlbWVu
dGF0aW9uQ2xhc3NOYW1lKCRpZGxUeXBlKTsKLQotICAgIG15IEBjb250ZW50cyA9ICgpOwotCi0g
ICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLQotdm9pZCAke2NsYXNzTmFtZX06OmdldFByb3Bl
cnR5TmFtZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpT
UHJvcGVydHlOYW1lQWNjdW11bGF0b3JSZWYgcHJvcGVydHlOYW1lcykKLXsKLSAgICAke2ltcGxl
bWVudGF0aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0o
Y29udGV4dCwgdGhpc09iamVjdCk7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm47Ci0K
LUVPRgotICAgIG15ICRnZW5lcmF0ZUNvbmRpdGlvbiA9IHN1YiB7Ci0gICAgICAgIG15ICgkaW50
ZXJmYWNlLCAkbWlkZGxlQ29uZGl0aW9uKSA9IEBfOwotICAgICAgICBteSAkbmFtZSA9ICRpbnRl
cmZhY2UtPm5hbWU7Ci0gICAgICAgIG15IEBjb25kaXRpb25zID0gKCk7Ci0gICAgICAgIHB1c2go
QGNvbmRpdGlvbnMsICJpc0Zvck1haW5Xb3JsZCIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJNYWluV29ybGRPbmx5In07Ci0gICAgICAgIHB1c2goQGNvbmRpdGlvbnMsICRt
aWRkbGVDb25kaXRpb24pIGlmICRtaWRkbGVDb25kaXRpb247Ci0gICAgICAgIHB1c2goQGNvbmRp
dGlvbnMsICJpbXBsLT5pc1Byb3BlcnR5QWxsb3dlZChcIiR7bmFtZX1cIl9zLCB0b1dlYlBhZ2Uo
Y29udGV4dCkpIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5bmFtaWMi
fTsKLSAgICAgICAgcmV0dXJuIGpvaW4oIiAmJiAiLCBAY29uZGl0aW9ucyk7Ci0gICAgfTsKLQot
ICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIGJvb2wgaXNGb3JNYWluV29ybGQgPSBpbXBsLT5pc0Zv
ck1haW5Xb3JsZCgpO1xuIikgaWYgJGhhc01haW5Xb3JsZE9ubHlQcm9wZXJ0aWVzOwotICAgIHB1
c2goQGNvbnRlbnRzLCAiXG4iKSBpZiAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMgYW5kICRo
YXNEeW5hbWljUHJvcGVydGllczsKLQotICAgIGlmICgkaGFzTWFpbldvcmxkT25seVByb3BlcnRp
ZXMgYW5kICEkaGFzRHluYW1pY1Byb3BlcnRpZXMpIHsKLSAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgaWYgKCFpc0Zvck1haW5Xb3JsZClcbiIpOwotICAgICAgICBwdXNoKEBjb250ZW50cywg
IiAgICAgICAgcmV0dXJuO1xuXG4iKTsKLSAgICB9Ci0KLSAgICBteSAkbWFwRnVuY3Rpb24gPSBz
dWIgewotICAgICAgICByZXR1cm4gdW5sZXNzICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRHlu
YW1pYyJ9IG9yICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25seSJ9OwotCi0g
ICAgICAgIG15ICRuYW1lID0gJF8tPm5hbWU7Ci0gICAgICAgIHJldHVybiAiICAgIEpTUHJvcGVy
dHlOYW1lQWNjdW11bGF0b3JBZGROYW1lKHByb3BlcnR5TmFtZXMsIHRvSlNTdHJpbmcoXCIke25h
bWV9XCIpLmdldCgpKTtcbiIgdW5sZXNzICRoYXNEeW5hbWljUHJvcGVydGllczsKLQotICAgICAg
ICBteSAkY29uZGl0aW9uID0gJiRnZW5lcmF0ZUNvbmRpdGlvbigkXyk7Ci0gICAgICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9IGNvbmRpdGlvbmFsU3RyaW5nKCRfKTsKLQotICAgICAgICBteSAk
Y29udGVudCA9ICIiOwotICAgICAgICAkY29udGVudCAuPSAiI2lmICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgJGNvbnRlbnQgLj0gIiAgICBp
ZiAoJHtjb25kaXRpb259KVxuIjsKLSAgICAgICAgJGNvbnRlbnQgLj0gIiAgICAgICAgSlNQcm9w
ZXJ0eU5hbWVBY2N1bXVsYXRvckFkZE5hbWUocHJvcGVydHlOYW1lcywgdG9KU1N0cmluZyhcIiR7
bmFtZX1cIikuZ2V0KCkpO1xuIjsKLSAgICAgICAgJGNvbnRlbnQgLj0gIiNlbmRpZiAvLyAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIiBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICRjb250
ZW50IC49ICJcbiI7Ci0gICAgICAgIHJldHVybiAkY29udGVudDsKLSAgICB9OwotCi0gICAgcHVz
aChAY29udGVudHMsIG1hcCgmJG1hcEZ1bmN0aW9uLCBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9
KSkgaWYgQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfTsKLSAgICBwdXNoKEBjb250ZW50cywgbWFw
KCYkbWFwRnVuY3Rpb24sIEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pKSBpZiBAeyRpbnRlcmZh
Y2UtPmF0dHJpYnV0ZXN9OwotCi0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLX0KLQotYm9v
bCAke2NsYXNzTmFtZX06Omhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgJHtpbXBs
ZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9
KGNvbnRleHQsIHRoaXNPYmplY3QpOwotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi1FT0YKLQotICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIGJvb2wgaXNGb3JNYWluV29y
bGQgPSBpbXBsLT5pc0Zvck1haW5Xb3JsZCgpO1xuXG4iKSBpZiAkaGFzTWFpbldvcmxkT25seVBy
b3BlcnRpZXM7Ci0KLSAgICAkbWFwRnVuY3Rpb24gPSBzdWIgewotICAgICAgICByZXR1cm4gdW5s
ZXNzICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRHluYW1pYyJ9IG9yICRfLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25seSJ9OwotCi0gICAgICAgIG15ICRuYW1lID0gJF8tPm5h
bWU7Ci0gICAgICAgIG15ICRjb25kaXRpb24gPSAmJGdlbmVyYXRlQ29uZGl0aW9uKCRfKTsKLSAg
ICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gY29uZGl0aW9uYWxTdHJpbmcoJF8pOwotCi0g
ICAgICAgIG15ICRjb250ZW50ID0gIiI7Ci0gICAgICAgICRjb250ZW50IC49ICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAkY29udGVu
dCAuPSAiICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHByb3BlcnR5TmFtZSwg
XCIke25hbWV9XCIpKVxuIjsKLSAgICAgICAgJGNvbnRlbnQgLj0gIiAgICAgICAgcmV0dXJuICR7
Y29uZGl0aW9ufTtcbiI7Ci0gICAgICAgICRjb250ZW50IC49ICIjZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAkY29udGVudCAu
PSAiXG4iOwotICAgICAgICByZXR1cm4gJGNvbnRlbnQ7Ci0gICAgfTsKLQotICAgIHB1c2goQGNv
bnRlbnRzLCBtYXAoJiRtYXBGdW5jdGlvbiwgQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkpIGlm
IEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc307Ci0gICAgcHVzaChAY29udGVudHMsIG1hcCgmJG1h
cEZ1bmN0aW9uLCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSkgaWYgQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfTsKLQotICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVybiBmYWxzZTtcbiIp
OwotCi0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLX0KLQotSlNWYWx1ZVJlZiAke2NsYXNz
TmFtZX06OmdldFByb3BlcnR5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
LXsKLSAgICAke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRh
dGlvbkNsYXNzTmFtZX0oY29udGV4dCwgdGhpc09iamVjdCk7Ci0gICAgaWYgKCFpbXBsKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLUVPRgotCi0gICAg
cHVzaChAY29udGVudHMsICIgICAgYm9vbCBpc0Zvck1haW5Xb3JsZCA9IGltcGwtPmlzRm9yTWFp
bldvcmxkKCk7XG4iKSBpZiAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXM7Ci0gICAgcHVzaChA
Y29udGVudHMsICJcbiIpIGlmICRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllcyBhbmQgJGhhc0R5
bmFtaWNQcm9wZXJ0aWVzOwotCi0gICAgaWYgKCRoYXNNYWluV29ybGRPbmx5UHJvcGVydGllcyBh
bmQgISRoYXNEeW5hbWljUHJvcGVydGllcykgewotICAgICAgICBwdXNoKEBjb250ZW50cywgIiAg
ICBpZiAoIWlzRm9yTWFpbldvcmxkKVxuIik7Ci0gICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7XG5cbiIpOwotICAgIH0K
LQotICAgIGlmIChteSBAYXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsK
LSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0cmlidXRlcykgewotICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkR5bmFtaWMi
fSBvciAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25seSJ9Owot
Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7Ci0gICAgICAgICAgICBt
eSAkZ2V0dGVyTmFtZSA9ICRzZWxmLT5fZ2V0dGVyTmFtZSgkYXR0cmlidXRlKTsKLQotICAgICAg
ICAgICAgbXkgJGNvbmRpdGlvbiA9ICJKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHByb3Bl
cnR5TmFtZSwgXCIke25hbWV9XCIpIiBpZiAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMgYW5k
ICEkaGFzRHluYW1pY1Byb3BlcnRpZXM7Ci0gICAgICAgICAgICAkY29uZGl0aW9uID0gJiRnZW5l
cmF0ZUNvbmRpdGlvbigkYXR0cmlidXRlLCAiSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhw
cm9wZXJ0eU5hbWUsIFwiJHtuYW1lfVwiKSIpIGlmICRoYXNEeW5hbWljUHJvcGVydGllczsKLQot
ICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gY29uZGl0aW9uYWxTdHJpbmcoJGF0
dHJpYnV0ZSk7Ci0KLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBwdXNoKEBj
b250ZW50cywgIiAgICBpZiAoJHtjb25kaXRpb259KVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBj
b250ZW50cywgIiAgICAgICAgcmV0dXJuICR7Z2V0dGVyTmFtZX0oY29udGV4dCwgdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBleGNlcHRpb24pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBjb250
ZW50cywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICJcbiIpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKG15IEBmdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9
KSB7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7Ci0gICAgICAg
ICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEeW5hbWlj
In0gb3IgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTWFpbldvcmxkT25seSJ9Owot
Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKLQotICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbiA9ICJKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHByb3BlcnR5TmFt
ZSwgXCIke25hbWV9XCIpIiBpZiAkaGFzTWFpbldvcmxkT25seVByb3BlcnRpZXMgYW5kICEkaGFz
RHluYW1pY1Byb3BlcnRpZXM7Ci0gICAgICAgICAgICAkY29uZGl0aW9uID0gJiRnZW5lcmF0ZUNv
bmRpdGlvbigkZnVuY3Rpb24sICJKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHByb3BlcnR5
TmFtZSwgXCIke25hbWV9XCIpIikgaWYgJGhhc0R5bmFtaWNQcm9wZXJ0aWVzOwotCi0gICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBjb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24p
OwotCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgaWYgKCR7Y29uZGl0aW9ufSlcbiIpOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgICAgIHJldHVybiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0
LCBwcm9wZXJ0eU5hbWUsICR7bmFtZX0pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50
cywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICJcbiIpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Ci19Ci1FT0YKLQotICAgIHJldHVybiBAY29udGVudHM7Ci19Ci0K
LTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5k
aW5ncy9TY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9FeHRlbnNpb25zL0JpbmRpbmdzL1NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGQ4YmFmOTAxOWEuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9TY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi17Ci0gICAgImNv
bnRleHRzIjogWwotICAgICAgICAidHlwZSIsCi0gICAgICAgICJpbnRlcmZhY2UiLAotICAgICAg
ICAibmFtZXNwYWNlIiwKLSAgICAgICAgImF0dHJpYnV0ZSIsCi0gICAgICAgICJvcGVyYXRpb24i
LAotICAgICAgICAiYXJndW1lbnQiLAotICAgICAgICAiY2FsbGJhY2stZnVuY3Rpb24iLAotICAg
ICAgICAiZGljdGlvbmFyeSIsCi0gICAgICAgICJkaWN0aW9uYXJ5LW1lbWJlciIsCi0gICAgICAg
ICJlbnVtIiwKLSAgICAgICAgImNvbnN0YW50IiwKLSAgICAgICAgInVuaW9uLW1lbWJlciIsCi0g
ICAgICAgICJpdGVyYWJsZSIsCi0gICAgICAgICJtYXAtbGlrZSIsCi0gICAgICAgICJzZXQtbGlr
ZSIsCi0gICAgICAgICJpbmNsdWRlcyIKLSAgICBdLAotICAgICJhdHRyaWJ1dGVzIjogewotICAg
ICAgICAiQ29uZGl0aW9uYWwiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJp
bnRlcmZhY2UiLCAibmFtZXNwYWNlIiwgImRpY3Rpb25hcnkiLCAiZGljdGlvbmFyeS1tZW1iZXIi
LCAiZW51bSIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIiwgImNvbnN0YW50IiwgImNhbGxiYWNr
LWZ1bmN0aW9uIiwgImluY2x1ZGVzIl0sCi0gICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCi0g
ICAgICAgICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAg
ICAgIkNhbGxiYWNrSGFuZGxlciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImFyZ3VtZW50Il0KLSAgICAgICAgfSwKLSAgICAgICAgIkNhbm5vdEJlRW1wdHkiOiB7Ci0gICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhcmd1bWVudCJdCi0gICAgICAgIH0sCi0gICAg
ICAgICJDb252ZXJ0TnVsbFN0cmluZ1RvIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXJndW1lbnQiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdLAotICAgICAgICAgICAg
InZhbHVlcyI6IFsiTnVsbCIsICJFbXB0eVN0cmluZyJdCi0gICAgICAgIH0sCi0gICAgICAgICJD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZyI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImFyZ3VtZW50IiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAotICAg
ICAgICAiQ29udmVydE51bGxBbmRVbmRlZmluZWRUb1N0cmluZyI6IHsKLSAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImFyZ3VtZW50IiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQot
ICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCi0gICAgICAgIH0sCi0gICAgICAgICJD
dXN0b21IZWFkZXIiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZh
Y2UiXQotICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tR2V0UHJvcGVydHlOYW1lcyI6IHsKLSAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCi0g
ICAgICAgICJDdXN0b21IYXNQcm9wZXJ0eSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCi0gICAgICAgICJEZWxldGVQcm9wZXJ0eSI6
IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiJdCi0gICAgICAg
IH0sCi0gICAgICAgICJET01TdHJpbmciOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJhcmd1bWVudCJdCi0gICAgICAgIH0sCi0gICAgICAgICJEb250RW51bSI6IHsKLSAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAg
ICAgICB9LAotICAgICAgICAiRHluYW1pYyI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAotICAgICAgICAiR2V0
UHJvcGVydHkiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24i
XQotICAgICAgICB9LAotICAgICAgICAiSW1wbGVtZW50ZWRBcyI6IHsKLSAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJjb25zdGFudCIsICJkaWN0aW9uYXJ5Iiwg
ImRpY3Rpb25hcnktbWVtYmVyIiwgImVudW0iLCAiaW50ZXJmYWNlIiwgIm9wZXJhdGlvbiJdLAot
ICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCi0gICAgICAgIH0sCi0gICAgICAgICJNYWluV29y
bGRPbmx5IjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwg
ImludGVyZmFjZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAotICAgICAgICAiTmVlZHNGcmFt
ZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVy
YXRpb24iXQotICAgICAgICB9LAotICAgICAgICAiTmVlZHNGcmFtZVdpdGhDYWxsYmFja0hhbmRs
ZXIiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQotICAg
ICAgICB9LAotICAgICAgICAiTmVlZHNQYWdlIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCi0gICAgICAgIH0sCi0gICAgICAgICJO
ZWVkc1BhZ2VXaXRoQ2FsbGJhY2tIYW5kbGVyIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKLSAgICAgICAgIk5lZWRzU2NyaXB0Q29u
dGV4dCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJv
cGVyYXRpb24iXQotICAgICAgICB9LAotICAgICAgICAiTm9JbXBsZW1lbnRhdGlvbiI6IHsKLSAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQot
ICAgICAgICB9LAotICAgICAgICAiTlNBcnJheSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImFyZ3VtZW50IiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9
LAotICAgICAgICAiTlNEaWN0aW9uYXJ5IjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXJndW1lbnQiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCi0gICAgICAgIH0sCi0g
ICAgICAgICJOU09iamVjdCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImFy
Z3VtZW50IiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9LAotICAgICAgICAi
T3B0aW9uYWwiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhcmd1bWVudCJd
Ci0gICAgICAgIH0sCi0gICAgICAgICJQcm9jZXNzQXJndW1lbnRzTGVmdFRvUmlnaHQiOiB7Ci0g
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iXQotICAgICAgICB9LAot
ICAgICAgICAiUmFpc2VzRXhjZXB0aW9uIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsib3BlcmF0aW9uIl0KLSAgICAgICAgfSwKLSAgICAgICAgIlJldHVybnNQcm9taXNlV2hl
bkNhbGxiYWNrSXNPbWl0dGVkIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIiwgIm9wZXJhdGlvbiJdCi0gICAgICAgIH0sCi0gICAgICAgICJTZXJpYWxpemF0
aW9uIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXJndW1lbnQiXSwKLSAg
ICAgICAgICAgICJ2YWx1ZXMiOiBbIkpTT04iLCAiV2ViIl0KLSAgICAgICAgfSwKLSAgICAgICAg
IlNldFByb3BlcnR5IjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsib3BlcmF0
aW9uIl0KLSAgICAgICAgfSwKLSAgICAgICAgIlVSTCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImFyZ3VtZW50IiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAg
ICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVu
c2lvbnMvSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElFeHRlbnNpb24uaWRsIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElFeHRl
bnNpb24uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTBkYjliZTNhMDYuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9JbnRl
cmZhY2VzL1dlYkV4dGVuc2lvbkFQSUV4dGVuc2lvbi5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodGlkbAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdLX1dFQl9FWFRF
TlNJT05TLAotICAgIFJldHVybnNQcm9taXNlV2hlbkNhbGxiYWNrSXNPbWl0dGVkLAotXSBpbnRl
cmZhY2UgV2ViRXh0ZW5zaW9uQVBJRXh0ZW5zaW9uIHsKLQotICAgIFtVUkwsIENvbnZlcnROdWxs
U3RyaW5nVG89TnVsbCwgUmFpc2VzRXhjZXB0aW9uLCBEeW5hbWljXSBET01TdHJpbmcgZ2V0VVJM
KERPTVN0cmluZyByZXNvdXJjZVBhdGgpOwotCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9XZWJFeHRlbnNpb25BUElOYW1lc3Bh
Y2UuaWRsIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0V4dGVuc2lvbnMvSW50ZXJmYWNlcy9X
ZWJFeHRlbnNpb25BUElOYW1lc3BhY2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhZDMyMWZiMmE1YmEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRXh0ZW5zaW9ucy9JbnRlcmZhY2VzL1dlYkV4dGVuc2lvbkFQSU5hbWVzcGFjZS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dGlkbAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRp
dGlvbmFsPVdLX1dFQl9FWFRFTlNJT05TLAotICAgIFJldHVybnNQcm9taXNlV2hlbkNhbGxiYWNr
SXNPbWl0dGVkLAotXSBpbnRlcmZhY2UgV2ViRXh0ZW5zaW9uQVBJTmFtZXNwYWNlIHsKLQotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJFeHRlbnNpb25BUElFeHRlbnNpb24gZXh0ZW5zaW9uOwot
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkV4dGVuc2lvbkFQSVJ1bnRpbWUgcnVudGltZTsK
LQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25zL0lu
dGVyZmFjZXMvV2ViRXh0ZW5zaW9uQVBJUnVudGltZS5pZGwgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRXh0ZW5zaW9ucy9JbnRlcmZhY2VzL1dlYkV4dGVuc2lvbkFQSVJ1bnRpbWUuaWRsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzdiMjlkZGUzNzguLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9JbnRlcmZhY2VzL1dlYkV4
dGVuc2lvbkFQSVJ1bnRpbWUuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRpZGwKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1XS19XRUJfRVhURU5TSU9OUywKLSAgICBS
ZXR1cm5zUHJvbWlzZVdoZW5DYWxsYmFja0lzT21pdHRlZCwKLV0gaW50ZXJmYWNlIFdlYkV4dGVu
c2lvbkFQSVJ1bnRpbWUgewotCi0gICAgW1VSTCwgQ29udmVydE51bGxTdHJpbmdUbz1OdWxsLCBS
YWlzZXNFeGNlcHRpb25dIERPTVN0cmluZyBnZXRVUkwoRE9NU3RyaW5nIHJlc291cmNlUGF0aCk7
Ci0KLSAgICBbTlNEaWN0aW9uYXJ5XSBhbnkgZ2V0TWFuaWZlc3QoKTsKLQotICAgIFtJbXBsZW1l
bnRlZEFzPXJ1bnRpbWVJZGVudGlmaWVyXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlk
OwotCi0gICAgW01haW5Xb3JsZE9ubHldIHZvaWQgZ2V0UGxhdGZvcm1JbmZvKFtPcHRpb25hbCwg
Q2FsbGJhY2tIYW5kbGVyXSBmdW5jdGlvbiBjYWxsYmFjayk7Ci0KLSAgICBbTWFpbldvcmxkT25s
eV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBsYXN0RXJyb3I7Ci0KLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFu
YWdlci5jcHAKaW5kZXggYjM5NGMyZjE1OTdhLi5jMWJjMzM2MTU5MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5jcHAKQEAgLTUyLDcgKzUyLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB1c2luZyBXZWJDb3JlOjpGbG9hdFNpemU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggNmM1
NWU4MmFjNDhiLi5mMGMxYTkwOTM0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VD
b250cm9sbGVyLmNwcAppbmRleCA2MDkzYWFkZDg4OGEuLjg3N2E5ODZhOThmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGb3Vu
ZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8d3Rm
L1Njb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6V2ViRm91bmRUZXh0UmFuZ2VDb250cm9s
bGVyKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>