<?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>161028</bug_id>
          
          <creation_ts>2016-08-19 22:25:50 -0700</creation_ts>
          <short_desc>Rename CustomElementsRegistry to CustomElementRegistry</short_desc>
          <delta_ts>2016-09-01 16:17:25 -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>DOM</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>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1221619</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-19 22:25:50 -0700</bug_when>
    <thetext>We don&apos;t use plurals for NodeList, StyleSheetList, CSSRuleList, etc...
We should rename CustomElement*s*Registry to CustomElementsRegistry.

Filed https://github.com/w3c/webcomponents/issues/548 to change the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221624</commentid>
    <comment_count>1</comment_count>
      <attachid>286529</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-19 22:35:41 -0700</bug_when>
    <thetext>Created attachment 286529
Does the rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221721</commentid>
    <comment_count>2</comment_count>
      <attachid>286529</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-21 03:02:09 -0700</bug_when>
    <thetext>Comment on attachment 286529
Does the rename

Rejecting attachment 286529 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 286529, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
atform/mac-wk1/js/dom/global-constructors-attributes-expected.txt
patching file LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt
patching file LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt
patching file LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Darin Adler&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/1914777</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221939</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-08-22 12:46:43 -0700</bug_when>
    <thetext>Committed r204732: &lt;http://trac.webkit.org/changeset/204732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225600</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-01 16:17:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/28090378&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286529</attachid>
            <date>2016-08-19 22:35:41 -0700</date>
            <delta_ts>2016-08-21 03:02:09 -0700</delta_ts>
            <desc>Does the rename</desc>
            <filename>bug-161028-20160819223348.patch</filename>
            <type>text/plain</type>
            <size>107936</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NGIyNTNhYWM5MjA4ZTdkNzU4NjM1OWZmMWNmNjM4OTA4Y2RmODYzLi4xY2ZlNDMxMjljM2IzODI0
OGYzNzEzMjkxNmY2MjRhNDJkNGQyNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0wOC0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZW5hbWUgQ3VzdG9tRWxlbWVudHNSZWdpc3RyeSB0byBDdXN0b21FbGVtZW50
UmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MTAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIGN1c3RvbUVsZW1lbnRzIGFuZCBDdXN0b21FbGVtZW50UmVnaXN0cnkgdG8gdGhlIGNv
bW1vbiBpZGVudGlmaWVycyBsaXN0IGFzIHRoZXkncmUgdXNlZCBvbiBKU0RPTVdpbmRvdworICAg
ICAgICB0byBoaWRlIHdpbmRvdy5jdXN0b21FbGVtZW50cyBhbmQgQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5IGludGVyZmFjZSBiZWhpbmQgYSBydW50aW1lIGZsYWcuCisKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmg6CisKIDIwMTYtMDgtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQXJpdGhTcXJ0IHNob3VsZCB3b3Jr
IHdpdGggYW55IGFyZ3VtZW50IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NmZhYjg3MTRjNWM0NDBjYWZj
MDZhMDEyYmI1N2NjM2ZkNGM4NGZhLi40M2FiZmZhM2E2YzE3YjBhYThmYjM0M2M0YjQ4MDZlZmY1
ZDIzOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTYtMDgtMTkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVuYW1lIEN1c3RvbUVsZW1lbnRz
UmVnaXN0cnkgdG8gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnkg
dG8gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IHBlciBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYmNv
bXBvbmVudHMvaXNzdWVzLzU0OC4KKworICAgICAgICBBbHNvIGhpZGUgd2luZG93LmN1c3RvbUVs
ZW1lbnRzIGFuZCBDdXN0b21FbGVtZW50UmVnaXN0cnkgaW50ZXJmYWNlIGJlaGluZCBhIHJ1bnRp
bWUgZW5hYmxlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHA6IFJlbmFtZWQgZnJvbSBKU0N1c3Rv
bUVsZW1lbnRzUmVnaXN0cnlDdXN0b20uY3BwLgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q3VzdG9t
RWxlbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpkZWZpbmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNIVE1MRWxlbWVudCk6CisgICAgICAg
ICogZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRJbnRlcmZhY2VGb3JDdXN0b21FbGVtZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5LmNwcDogUmVuYW1lZCBmcm9tIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnkuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpDdXN0b21FbGVtZW50UmVnaXN0
cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojp+Q3VzdG9tRWxl
bWVudFJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
YWRkRWxlbWVudERlZmluaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjphZGRVcGdyYWRlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZmluZEludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmNvbnRhaW5zQ29uc3RydWN0b3IpOgorICAgICAgICAqIGRvbS9DdXN0
b21FbGVtZW50UmVnaXN0cnkuaDogUmVuYW1lZCBmcm9tIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnku
aC4KKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbDogUmVuYW1lZCBmcm9t
IEN1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaWRsLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0hUTUxFbGVtZW50KToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxF
bGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjplbnN1cmVDdXN0b21FbGVt
ZW50UmVnaXN0cnkpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaWRsOgorCiAyMDE2LTA4LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFyayBDYW52YXNQYXRoIG9wZXJhdGlvbnMnIHBhcmFtZXRlcnMg
YXMgbWFuZGF0b3J5IHdoZW4gdGhleSBzaG91bGQgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGFiOTc3ZDQ4OWRlY2FlNDZk
YWFmMzllZTY5YWE0MGJiM2VmMDg4YTAuLjQwNTEyNjJkYTUxYmNiZGFiNzc1Y2Y2MWIwYzBjYmMw
ZmY1NzExZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMzcsNiArMzcsNyBAQAogICAgIG1hY3JvKEJZVEVTX1BFUl9FTEVN
RU5UKSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAogICAgIG1hY3JvKENvbGxhdG9yKSBcCisgICAg
bWFjcm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRGF0ZSkgXAogICAgIG1h
Y3JvKERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oRG9jdW1lbnRUaW1lbGluZSkgXApAQCAt
MTM1LDYgKzEzNiw3IEBACiAgICAgbWFjcm8oY29uc3RydWN0b3IpIFwKICAgICBtYWNybyhjb3Vu
dCkgXAogICAgIG1hY3JvKGNvdW50ZXJzKSBcCisgICAgbWFjcm8oY3VzdG9tRWxlbWVudHMpIFwK
ICAgICBtYWNybyhkYXkpIFwKICAgICBtYWNybyhkZWZpbmVQcm9wZXJ0eSkgXAogICAgIG1hY3Jv
KGRlc2NyaXB0aW9uKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE2YTVjNWI0MTYyOTRkZDYw
ZTFmNWJiMTkxNWQzYjcwMjU1MzVkYzguLmU4NGUzNWQ5YTFkOGY4M2Y1ZTA1ZjhlODkyZmU0NGMz
ZjhjMTgxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNzUsNyArMzc1LDcgQEAgc2V0KFdl
YkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vQ2xpZW50UmVjdExpc3QuaWRsCiAgICAg
ZG9tL0NvbW1lbnQuaWRsCiAgICAgZG9tL0NvbXBvc2l0aW9uRXZlbnQuaWRsCi0gICAgZG9tL0N1
c3RvbUVsZW1lbnRzUmVnaXN0cnkuaWRsCisgICAgZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5p
ZGwKICAgICBkb20vQ3VzdG9tRXZlbnQuaWRsCiAgICAgZG9tL0RPTUNvcmVFeGNlcHRpb24uaWRs
CiAgICAgZG9tL0RPTUVycm9yLmlkbApAQCAtMTEzNyw3ICsxMTM3LDcgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9t
RWxlbWVudHNSZWdpc3RyeUN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRSZWdpc3RyeUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbUV2ZW50Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTE0NDAs
NyArMTQ0MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuY3BwCiAgICAgZG9tL0NvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmNwcAogICAg
IGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKLSAgICBkb20vQ3VzdG9tRWxlbWVu
dHNSZWdpc3RyeS5jcHAKKyAgICBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAogICAgIGRv
bS9DdXN0b21FdmVudC5jcHAKICAgICBkb20vRE9NQ29yZUV4Y2VwdGlvbi5jcHAKICAgICBkb20v
RE9NRXJyb3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNDVlOThiMjM3MmQ5
NzMzMWI1N2FkMWE1NDdjNjUyNjliOTg0OGE3Yy4uNWQwMTdhMjQ4MzU0OTM1MjlkMzQyMDFlOWZi
OGNjMWFhODM0ZTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBACiAjaW5jbHVkZSAiSlNDU1NWYWx1ZS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NWYWx1ZUxp
c3QuY3BwIgogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0jaW5jbHVkZSAiSlNDdXN0b21F
bGVtZW50c1JlZ2lzdHJ5LmNwcCIKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5j
cHAiCiAjZW5kaWYKICNpbmNsdWRlICJKU0N1c3RvbUV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0Rh
dGFiYXNlLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDk5MjdkMGJmMGUz
NjkyMDRmYjQ0ZjBkOTU1MzZlMWNhNjdkYjBlOWUuLjc3YzEzYjQwZjAxMGFlOGNlMTU1OTI2OWI2
MTcyOTg2YTBlYzRjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjg2LDcg
KzI4Niw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9DbGllbnRS
ZWN0TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0NvbW1lbnQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2RvbS9Db21wb3NpdGlvbkV2ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9kb20vQ3Vz
dG9tRWxlbWVudHNSZWdpc3RyeS5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0N1c3RvbUV2ZW50LmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9kb20vRE9NQ29yZUV4Y2VwdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZG9tL0RPTUVycm9yLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjliMjEyZjc1NWUyMDVlYzFiN2U1YmU4MTMzMTFjNGQ5
MDliZDczOS4uNjNkZDdlZTIyOTAzMzI4YWEzN2MxY2UyMjE1MWI4ZDMyM2EyYWIyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Mzk0NSwyMCArMzk0NSwyMCBAQAogCQk5QkFCNkM2RDEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGlu
Z1N0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCQUI2QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwICovOyB9OwogCQk5
QkFGM0IyNDEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJBRjNCMjMxMkMxQTM5ODAwMDE0
QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5QkI3Mzc2NTFCNDFDMDM1MDBBRTEzRUIgLyogTlNBdHRyaWJ1
dGVkU3RyaW5nU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QkI3Mzc2NDFCNDFDMDM1MDBBRTEzRUIgLyogTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmgg
Ki87IH07Ci0JCTlCQzVGOUUwMUQ1QUFGNkIwMDJCNzQ5RCAvKiBKU0N1c3RvbUVsZW1lbnRzUmVn
aXN0cnlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUJDNUY5REYxRDVBQUY2QTAwMkI3NDlEIC8qIEpTQ3VzdG9tRWxlbWVudHNSZWdpc3Ry
eUN1c3RvbS5jcHAgKi87IH07CisJCTlCQzVGOUUwMUQ1QUFGNkIwMDJCNzQ5RCAvKiBKU0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QkM1RjlERjFENUFBRjZBMDAyQjc0OUQgLyogSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnlDdXN0b20uY3BwICovOyB9OwogCQk5QkM2QzIxQjEzQ0NDOTdCMDA4RTAzMzcg
LyogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzZDMjE5MTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTlCQzZDMjFDMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QkM2QzIxQTEzQ0NDOTdCMDA4RTAzMzcgLyogSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwICovOyB9OwogCQk5QkQwQkY5MzEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZl
bnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLzsgfTsKIAkJ
OUJEMEJGOTQxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJEMEJGOTIxMkE0MkJGNTAw
NzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwICovOyB9OwogCQk5QkQ0RTkxNjFDNDYyODcy
MDA1MDY1QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDRFOTE0MUM0NjI4NzIwMDUwNjVCQyAv
KiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwICovOyB9OwogCQk5QkQ0RTkxNzFDNDYyODcy
MDA1MDY1QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ0RTkxNTFDNDYyODcyMDA1MDY1QkMgLyog
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi87IH07Ci0JCTlCRDRFOTFBMUM0NjJDRkMwMDUw
NjVCQyAvKiBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDRFOTE4MUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0
b21FbGVtZW50c1JlZ2lzdHJ5LmNwcCAqLzsgfTsKLQkJOUJENEU5MUIxQzQ2MkNGQzAwNTA2NUJD
IC8qIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDRFOTE5MUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0b21FbGVt
ZW50c1JlZ2lzdHJ5LmggKi87IH07CisJCTlCRDRFOTFBMUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0
b21FbGVtZW50UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUJENEU5MTgxQzQ2MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRSZWdp
c3RyeS5jcHAgKi87IH07CisJCTlCRDRFOTFCMUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0b21FbGVt
ZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCRDRFOTE5MUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0b21FbGVtZW50UmVnaXN0cnkuaCAq
LzsgfTsKIAkJOUJEOEE5NUExOEJFRkM3NjAwOTg3RTlBIC8qIENvbGxlY3Rpb25JbmRleENhY2hl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDhB
OTU5MThCRUZDNzYwMDk4N0U5QSAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5jcHAgKi87IH07CiAJ
CTlCREE2NEQ3MUI5NzVDRTUwMDlDNDM4NyAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2QkM5NjAxQjk3NTk2NjAwNUFF
MUYwIC8qIEpTU2hhZG93Um9vdC5jcHAgKi87IH07CiAJCTlCREE2NEQ4MUI5NzVDRjIwMDlDNDM4
NyAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCNkJDOTYxMUI5NzU5NjYwMDVBRTFGMCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsg
fTsKLQkJOUJFNjcxMEIxRDVBRUIyMTAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudHNSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkU2
NzEwOTFENUFFQjA0MDAzNDU1MTQgLyogSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmNwcCAqLzsg
fTsKLQkJOUJFNjcxMEMxRDVBRUIyNTAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudHNSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJFNjcx
MEExRDVBRUIwNDAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5oICovOyB9Owor
CQk5QkU2NzEwQjFENUFFQjIxMDAzNDU1MTQgLyogSlNDdXN0b21FbGVtZW50UmVnaXN0cnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJFNjcxMDkx
RDVBRUIwNDAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCAqLzsgfTsKKwkJ
OUJFNjcxMEMxRDVBRUIyNTAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkU2NzEwQTFENUFF
QjA0MDAzNDU1MTQgLyogSlNDdXN0b21FbGVtZW50UmVnaXN0cnkuaCAqLzsgfTsKIAkJOUJGOUE4
ODAxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJGOUE4N0UxNjQ4
REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovOyB9Owog
CQk5QkY5QTg4MTE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJGOUE4
N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCAqLzsg
fTsKIAkJOUQ2MzgwMTAxQUYxNzMyMjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlENjM4MDBG
MUFGMTZFMTYwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1lbnREYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTMzLDE5ICsxMTUzMywx
OSBAQAogCQk5QkFCNkM2QjEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0
aW5nRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRpbmdE
aXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJCNzM3NjQxQjQxQzAz
NTAwQUUxM0VCIC8qIE5TQXR0cmlidXRlZFN0cmluZ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOUJDNUY5REUxRDVBQUQ1RDAwMkI3NDlEIC8qIEN1c3RvbUVsZW1lbnRzUmVn
aXN0cnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEN1c3RvbUVsZW1lbnRzUmVnaXN0cnku
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QkM1RjlERjFENUFBRjZBMDAyQjc0
OUQgLyogSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeUN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzVGOURFMUQ1QUFENUQwMDJCNzQ5RCAv
KiBDdXN0b21FbGVtZW50UmVnaXN0cnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzVG
OURGMUQ1QUFGNkEwMDJCNzQ5RCAvKiBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUVsZW1lbnRSZWdp
c3RyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzZDMjE5MTND
Q0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM2QzIxQTEzQ0NDOTdCMDA4RTAzMzcgLyogSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QkQwQkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRFdmVudFF1ZXVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDBCRjkyMTJBNDJCRjUwMDcyRkQ0MyAv
KiBTY29wZWRFdmVudFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjb3BlZEV2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QkQ0RTkxNDFDNDYyODcyMDA1MDY1QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDRFOTE1MUM0NjI4NzIw
MDUwNjVCQyAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTlCRDRFOTE4MUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0b21FbGVtZW50
c1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3Rv
bUVsZW1lbnRzUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QkQ0
RTkxOTFDNDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRDRFOTE4MUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0
b21FbGVtZW50UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUJENEU5MTkxQzQ2MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21FbGVtZW50UmVnaXN0cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJEOEE5NTkxOEJFRkM3NjAwOTg3RTlBIC8q
IENvbGxlY3Rpb25JbmRleENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbGxlY3Rpb25JbmRleENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOUJFNjcxMDkxRDVBRUIwNDAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudHNSZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUVsZW1l
bnRzUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QkU2NzEwQTFE
NUFFQjA0MDAzNDU1MTQgLyogSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QkU2NzEwOTFENUFFQjA0MDAzNDU1MTQgLyogSlNDdXN0
b21FbGVtZW50UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QkU2NzEwQTFENUFFQjA0MDAzNDU1MTQgLyogSlNDdXN0b21FbGVtZW50UmVnaXN0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21FbGVtZW50UmVnaXN0
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJGOUE4N0UxNjQ4REQyRjAwMUM2
QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBK
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUQ2MzgwMEYxQUYxNkUxNjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVu
dERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVTZWxmQWxpZ25t
ZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDQsOCArMjA1NDQs
OCBAQAogCQkJCTkzRjlCNkRGMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCAqLywKIAkJ
CQlGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJ
RkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLywKLQkJCQk5QkU2
NzEwOTFENUFFQjA0MDAzNDU1MTQgLyogSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmNwcCAqLywK
LQkJCQk5QkU2NzEwQTFENUFFQjA0MDAzNDU1MTQgLyogSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5
LmggKi8sCisJCQkJOUJFNjcxMDkxRDVBRUIwNDAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmNwcCAqLywKKwkJCQk5QkU2NzEwQTFENUFFQjA0MDAzNDU1MTQgLyogSlNDdXN0b21F
bGVtZW50UmVnaXN0cnkuaCAqLywKIAkJCQlCQ0E4M0U0RDBEN0NFMUU5MDAzNDIxQTggLyogSlNE
YXRhVHJhbnNmZXIuY3BwICovLAogCQkJCUJDQTgzRTRFMEQ3Q0UxRTkwMDM0MjFBOCAvKiBKU0Rh
dGFUcmFuc2Zlci5oICovLAogCQkJCTMxRkIxQTYzMTIwQTVEM0YwMERDMDJBMCAvKiBKU0Rldmlj
ZU1vdGlvbkV2ZW50LmNwcCAqLywKQEAgLTIyMTUyLDcgKzIyMTUyLDcgQEAKIAkJCQlCQzU4MjVG
MjBDMEI4OTM4MDA1M0YxQjUgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCAqLywK
IAkJCQlBRDcyNkZFQTE2RDlGNDBCMDAzQTRFNkQgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmggKi8sCiAJCQkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0NDdGIC8qIEpTQ1NTVmFsdWVDdXN0
b20uY3BwICovLAotCQkJCTlCQzVGOURGMUQ1QUFGNkEwMDJCNzQ5RCAvKiBKU0N1c3RvbUVsZW1l
bnRzUmVnaXN0cnlDdXN0b20uY3BwICovLAorCQkJCTlCQzVGOURGMUQ1QUFGNkEwMDJCNzQ5RCAv
KiBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgKi8sCiAJCQkJREVDMjk3NUQxQjRE
RUIyQTAwNUY1OTQ1IC8qIEpTQ3VzdG9tRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTA3RkJERTJC
MThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICovLAogCQkJCUJDQTgzRTUx
MEQ3Q0UyMDUwMDM0MjFBOCAvKiBKU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAgKi8sCkBAIC0yMzk5
Miw5ICsyMzk5Miw5IEBACiAJCQkJRTFBMTQ3MDcxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmggKi8sCiAJCQkJOTc2MjdCOEIxNEZCM0NFRTAwMkNEQ0ExIC8qIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAqLywKIAkJCQk5NzYyN0I4QzE0RkIzQ0VFMDAy
Q0RDQTEgLyogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCAqLywKLQkJCQk5QkQ0RTkxODFD
NDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5jcHAgKi8sCi0JCQkJOUJE
NEU5MTkxQzQ2MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaCAqLywKLQkJ
CQk5QkM1RjlERTFENUFBRDVEMDAyQjc0OUQgLyogQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5pZGwg
Ki8sCisJCQkJOUJENEU5MTgxQzQ2MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eS5jcHAgKi8sCisJCQkJOUJENEU5MTkxQzQ2MkNGQzAwNTA2NUJDIC8qIEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5oICovLAorCQkJCTlCQzVGOURFMUQ1QUFENUQwMDJCNzQ5RCAvKiBDdXN0b21FbGVt
ZW50UmVnaXN0cnkuaWRsICovLAogCQkJCTlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgKi8sCiAJCQkJOUI1NkM5QTgxQzg5MzEyODAwQzQ1
NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi8sCiAJCQkJNjJDRDMyNTYxMTU3
RTU3QzAwNjNCMEE3IC8qIEN1c3RvbUV2ZW50LmNwcCAqLywKQEAgLTI1MjQwLDcgKzI1MjQwLDcg
QEAKIAkJCQk5M0YxOTkyRjA4MjQ1RTU5MDAxRTlBQkMgLyogQ3Vyc29yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMyMjcyQUQwRTgyRThGMzAwRTdGOTc1IC8qIEN1cnNvckxpc3QuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTlCRDRFOTFCMUM0NjJDRkMwMDUwNjVCQyAvKiBDdXN0b21FbGVtZW50
c1JlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5QkQ0RTkxQjFDNDYyQ0ZDMDA1MDY1QkMg
LyogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkNEMzI1QTEx
NTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0I0
MTNFMEU4NjMzRkQwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2RDBCMEExOTg5Q0EwMDdGQjhDNSAvKiBEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjY4NzAsNyArMjY4NzAsNyBAQAogCQkJCTFCMTI0RDhEMUQzODBCNzAwMEVDREZCMCAv
KiBNZWRpYVNhbXBsZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQkVBRUFEMTlEOTJC
NkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJOUJFNjcxMEMxRDVBRUIyNTAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudHNS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJFNjcxMEMxRDVBRUIyNTAwMzQ1NTE0IC8q
IEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUY4N0NGRTFC
MjhGNDBFMDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDOTZGNUVDODFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBN
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
OTA4MSw3ICsyOTA4MSw3IEBACiAJCQkJRTExQUYxNTExMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjU1NDE1MjE0ODlCMjMzMDAwREZDNUQgLyogQ3Vy
c29ySU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTI2MDgyNDVFNTkwMDFFOUFCQyAv
KiBDdXJzb3JNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk5QkQ0RTkxQTFDNDYyQ0ZDMDA1MDY1
QkMgLyogQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QkQ0
RTkxQTFDNDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTYyQ0QzMjU5MTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEyMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBMjMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQXV0aG9yaXplci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTk2LDcgKzMwNTk2LDcgQEAK
IAkJCQkxQTQ4MzJCMzFBOTUzQkE2MDA4QjRERkUgLyogTG9jYWxpemVkU3RyaW5nc0NvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMUM0MUMwRDk4Mjk4MTAwM0IwMkYyIC8qIExvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MjM5RTAwMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dn
aW5nLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTlCRTY3MTBCMUQ1QUVCMjEwMDM0NTUxNCAvKiBK
U0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUJFNjcxMEIx
RDVBRUIyMTAwMzQ1NTE0IC8qIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MDI2NDVFMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEwNDA5RjMxQTQzNjc1QzAwOUU0N0YzIC8qIE1hY2hTZW5kUmlnaHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMyQUQ3MDUxN0VGQTJDMzAwMzhGOEZGIC8qIE1haW5G
cmFtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMTE3LDcgKzMxMTE3LDcgQEAKIAkJCQkwNzhF
MDkwQzE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3M0JFMzRFMTdEMTgwQjIwMDJCRDQzMSAvKiBSVENTZXNzaW9uRGVzY3Jp
cHRpb25EZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTBFMTdEMTRDRUUw
MDQyMEFBMSAvKiBSVENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5QkM1RjlF
MDFENUFBRjZCMDAyQjc0OUQgLyogSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTlCQzVGOUUwMUQ1QUFGNkIwMDJCNzQ5RCAvKiBKU0N1c3RvbUVs
ZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkxMDE3RDE0
Q0VFMDA0MjBBQTEgLyogUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
RTJDNDM2NzFCQ0VFMzc3MDAwMUUyQkMgLyogUlRDVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1ODI0QUJBMjFBRTgxMTE2MDA5MDc0QjcgLyogUnVieUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQxYjYyN2FkMGFh
NDRlY2Y4OTRjZjJhMTcwNTRlOTRlNmZhNGI4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcApAQCAt
MCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJKU0RPTUNvbnZlcnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKworc3RhdGljIEpTT2JqZWN0
KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmplY3QmIHBy
b3RvdHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWQpCit7CisgICAgSlNWYWx1ZSBjYWxsYmFjayA9
IHByb3RvdHlwZS5nZXQoJnN0YXRlLCBpZCk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoY2FsbGJhY2suaXNVbmRlZmluZWQo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFjYWxsYmFjay5pc0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkEgY3Vz
dG9tIGVsZW1lbnQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxiYWNrLmdldE9iamVjdCgpOworfQor
CisvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNkb20tY3VzdG9tZWxlbWVudHJlZ2lz
dHJ5LWRlZmluZQorSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKEV4ZWNT
dGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDIpKQorICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworCisgICAgQXRvbWljU3RyaW5n
IGxvY2FsTmFtZShzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50
b0F0b21pY1N0cmluZygmc3RhdGUpKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEpTVmFsdWUgY29u
c3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgIGlmICghY29u
c3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEg
Y29uc3RydWN0b3IiKSk7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JW
YWx1ZS5nZXRPYmplY3QoKTsKKworICAgIC8vIEZJWE1FOiBUaHJvdyBhIFR5cGVFcnJvciBpZiBj
b25zdHJ1Y3RvciBkb2Vzbid0IGluaGVyaXQgZnJvbSBIVE1MRWxlbWVudC4KKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vdzNjL3dlYmNvbXBvbmVudHMvaXNzdWVzLzU0MQorCisgICAgc3dpdGNo
IChEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShsb2NhbE5hbWUpKSB7CisgICAg
Y2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OlZhbGlkOgorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Q29uZmxp
Y3RzV2l0aEJ1aWx0aW5OYW1lczoKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMg
b25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOworICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5h
bWVWYWxpZGF0aW9uU3RhdHVzOjpOb0h5cGhlbjoKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250
YWluIGEgaHlwaGVuIikpOworICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3Rh
dHVzOjpDb250YWluc1VwcGVyQ2FzZToKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4g
YW4gdXBwZXIgY2FzZSBsZXR0ZXIiKSk7CisgICAgfQorCisgICAgLy8gRklYTUU6IENoZWNrIHJl
LWVudHJhbmN5IGhlcmUuCisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25l
bnRzL2lzc3Vlcy81NDUKKworICAgIEN1c3RvbUVsZW1lbnRSZWdpc3RyeSYgcmVnaXN0cnkgPSB3
cmFwcGVkKCk7CisgICAgaWYgKHJlZ2lzdHJ5LmZpbmRJbnRlcmZhY2UobG9jYWxOYW1lKSkgewor
ICAgICAgICB0aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkNhbm5v
dCBkZWZpbmUgbXVsdGlwbGUgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgdGFnIG5hbWUi
KSk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGlmIChyZWdp
c3RyeS5jb250YWluc0NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSkgeworICAgICAgICB0aHJvd05v
dFN1cHBvcnRlZEVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBkZWZpbmUgbXVsdGlw
bGUgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgY2xhc3MiKSk7CisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0KCkt
PnZtKCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9yLT5nZXQoJnN0
YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFwcm90b3R5
cGVWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJvdG90eXBlIG11
c3QgYmUgYW4gb2JqZWN0IikpOworICAgIEpTT2JqZWN0JiBwcm90b3R5cGVPYmplY3QgPSAqYXNP
YmplY3QocHJvdG90eXBlVmFsdWUpOworCisgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9t
LCBsb2NhbE5hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOworICAgIGF1dG8gZWxl
bWVudEludGVyZmFjZSA9IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y3JlYXRlKG5hbWUsIGNv
bnN0cnVjdG9yLCBnbG9iYWxPYmplY3QoKSk7CisKKyAgICBhdXRvKiBjb25uZWN0ZWRDYWxsYmFj
ayA9IGdldEN1c3RvbUVsZW1lbnRDYWxsYmFjayhzdGF0ZSwgcHJvdG90eXBlT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbm5lY3RlZENhbGxiYWNrIikpOworICAgIGlmIChz
dGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
aWYgKGNvbm5lY3RlZENhbGxiYWNrKQorICAgICAgICBlbGVtZW50SW50ZXJmYWNlLT5zZXRDb25u
ZWN0ZWRDYWxsYmFjayhjb25uZWN0ZWRDYWxsYmFjayk7CisKKyAgICBhdXRvKiBkaXNjb25uZWN0
ZWRDYWxsYmFjayA9IGdldEN1c3RvbUVsZW1lbnRDYWxsYmFjayhzdGF0ZSwgcHJvdG90eXBlT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImRpc2Nvbm5lY3RlZENhbGxiYWNrIikp
OworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgaWYgKGRpc2Nvbm5lY3RlZENhbGxiYWNrKQorICAgICAgICBlbGVtZW50SW50
ZXJmYWNlLT5zZXREaXNjb25uZWN0ZWRDYWxsYmFjayhkaXNjb25uZWN0ZWRDYWxsYmFjayk7CisK
KyAgICAvLyBGSVhNRTogQWRkIHRoZSBzdXBwb3J0IGZvciBhZG9wdGVkQ2FsbGJhY2suCisgICAg
Z2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKHN0YXRlLCBwcm90b3R5cGVPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiYWRvcHRlZENhbGxiYWNrIikpOworICAgIGlmIChzdGF0ZS5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBhdXRv
KiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgPSBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soc3Rh
dGUsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJhdHRyaWJ1
dGVDaGFuZ2VkQ2FsbGJhY2siKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoYXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0T3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+KHN0YXRlLCBjb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmc3RhdGUsICJvYnNlcnZlZEF0dHJpYnV0ZXMiKSkpOworICAgICAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
aWYgKHZhbHVlKQorICAgICAgICAgICAgZWxlbWVudEludGVyZmFjZS0+c2V0QXR0cmlidXRlQ2hh
bmdlZENhbGxiYWNrKGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaywgKnZhbHVlKTsKKyAgICB9CisK
KyAgICBQcml2YXRlTmFtZSB1bmlxdWVQcml2YXRlTmFtZTsKKyAgICBnbG9iYWxPYmplY3QoKS0+
cHV0RGlyZWN0KHZtLCB1bmlxdWVQcml2YXRlTmFtZSwgY29uc3RydWN0b3IpOworCisgICAgcmVn
aXN0cnkuYWRkRWxlbWVudERlZmluaXRpb24oV1RGTW92ZShlbGVtZW50SW50ZXJmYWNlKSk7CisK
KyAgICAvLyBGSVhNRTogMTcuIExldCBtYXAgYmUgcmVnaXN0cnkncyB1cGdyYWRlIGNhbmRpZGF0
ZXMgbWFwLgorICAgIC8vIEZJWE1FOiAxOC4gVXBncmFkZSBhIG5ld2x5LWRlZmluZWQgZWxlbWVu
dCBnaXZlbiBtYXAgYW5kIGRlZmluaXRpb24uCisgICAgLy8gRklYTUU6IDE5LiBSZXNvbHZlIHdo
ZW5EZWZpbmVkIHByb21pc2UuCisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKyNlbmRp
ZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRzUmVnaXN0cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50c1JlZ2lzdHJ5Q3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTNmZTk1NDhjYjMxYmNkZDFmMjBjZWNmMmU4OTFmOTBjOGY5MDU4MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRzUmVnaXN0cnlDdXN0b20uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21FbGVt
ZW50c1JlZ2lzdHJ5LmgiCi0KLSNpbmNsdWRlICJDdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmgiCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNp
bmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0jaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLQotc3RhdGljIEpT
T2JqZWN0KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmpl
Y3QmIHByb3RvdHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWQpCi17Ci0gICAgSlNWYWx1ZSBjYWxs
YmFjayA9IHByb3RvdHlwZS5nZXQoJnN0YXRlLCBpZCk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoY2FsbGJhY2suaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjYWxsYmFjay5pc0Z1
bmN0aW9uKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IkEgY3VzdG9tIGVsZW1lbnQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGNhbGxiYWNrLmdldE9iamVjdCgp
OwotfQotCi0vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNkb20tY3VzdG9tZWxlbWVu
dHNyZWdpc3RyeS1kZWZpbmUKLUpTVmFsdWUgSlNDdXN0b21FbGVtZW50c1JlZ2lzdHJ5OjpkZWZp
bmUoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRD
b3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBBdG9t
aWNTdHJpbmcgbG9jYWxOYW1lKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKCZz
dGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSlNW
YWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAg
aWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJUaGUgc2Vjb25kIGFyZ3VtZW50IG11
c3QgYmUgYSBjb25zdHJ1Y3RvciIpKTsKLSAgICBKU09iamVjdCogY29uc3RydWN0b3IgPSBjb25z
dHJ1Y3RvclZhbHVlLmdldE9iamVjdCgpOwotCi0gICAgLy8gRklYTUU6IFRocm93IGEgVHlwZUVy
cm9yIGlmIGNvbnN0cnVjdG9yIGRvZXNuJ3QgaW5oZXJpdCBmcm9tIEhUTUxFbGVtZW50LgotICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViY29tcG9uZW50cy9pc3N1ZXMvNTQxCi0KLSAg
ICBzd2l0Y2ggKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkp
IHsKLSAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6VmFsaWQ6Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVz
OjpDb25mbGljdHNXaXRoQnVpbHRpbk5hbWVzOgotICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3QgYmUg
c2FtZSBhcyBvbmUgb2YgdGhlIGJ1aWx0aW4gZWxlbWVudHMiKSk7Ci0gICAgY2FzZSBDdXN0b21F
bGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6Ok5vSHlwaGVuOgotICAgICAgICByZXR1cm4gdGhy
b3dTeW50YXhFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFtZSBt
dXN0IGNvbnRhaW4gYSBoeXBoZW4iKSk7Ci0gICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlk
YXRpb25TdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOgotICAgICAgICByZXR1cm4gdGhyb3dTeW50
YXhFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3Qg
Y29udGFpbiBhbiB1cHBlciBjYXNlIGxldHRlciIpKTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTog
Q2hlY2sgcmUtZW50cmFuY3kgaGVyZS4KLSAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dl
YmNvbXBvbmVudHMvaXNzdWVzLzU0NQotCi0gICAgQ3VzdG9tRWxlbWVudHNSZWdpc3RyeSYgcmVn
aXN0cnkgPSB3cmFwcGVkKCk7Ci0gICAgaWYgKHJlZ2lzdHJ5LmZpbmRJbnRlcmZhY2UobG9jYWxO
YW1lKSkgewotICAgICAgICB0aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBBU0NJSUxpdGVy
YWwoIkNhbm5vdCBkZWZpbmUgbXVsdGlwbGUgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUg
dGFnIG5hbWUiKSk7Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLQotICAg
IGlmIChyZWdpc3RyeS5jb250YWluc0NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSkgewotICAgICAg
ICB0aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBkZWZp
bmUgbXVsdGlwbGUgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgY2xhc3MiKSk7Ci0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLQotICAgIGF1dG8mIHZtID0gZ2xvYmFs
T2JqZWN0KCktPnZtKCk7Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9y
LT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaWYg
KCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJv
dG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IikpOwotICAgIEpTT2JqZWN0JiBwcm90b3R5cGVPYmpl
Y3QgPSAqYXNPYmplY3QocHJvdG90eXBlVmFsdWUpOwotCi0gICAgUXVhbGlmaWVkTmFtZSBuYW1l
KG51bGxBdG9tLCBsb2NhbE5hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOwotICAg
IGF1dG8gZWxlbWVudEludGVyZmFjZSA9IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y3JlYXRl
KG5hbWUsIGNvbnN0cnVjdG9yLCBnbG9iYWxPYmplY3QoKSk7Ci0KLSAgICBhdXRvKiBjb25uZWN0
ZWRDYWxsYmFjayA9IGdldEN1c3RvbUVsZW1lbnRDYWxsYmFjayhzdGF0ZSwgcHJvdG90eXBlT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNvbm5lY3RlZENhbGxiYWNrIikpOwot
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgaWYgKGNvbm5lY3RlZENhbGxiYWNrKQotICAgICAgICBlbGVtZW50SW50ZXJmYWNl
LT5zZXRDb25uZWN0ZWRDYWxsYmFjayhjb25uZWN0ZWRDYWxsYmFjayk7Ci0KLSAgICBhdXRvKiBk
aXNjb25uZWN0ZWRDYWxsYmFjayA9IGdldEN1c3RvbUVsZW1lbnRDYWxsYmFjayhzdGF0ZSwgcHJv
dG90eXBlT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImRpc2Nvbm5lY3RlZENh
bGxiYWNrIikpOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0gICAgaWYgKGRpc2Nvbm5lY3RlZENhbGxiYWNrKQotICAgICAgICBl
bGVtZW50SW50ZXJmYWNlLT5zZXREaXNjb25uZWN0ZWRDYWxsYmFjayhkaXNjb25uZWN0ZWRDYWxs
YmFjayk7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHRoZSBzdXBwb3J0IGZvciBhZG9wdGVkQ2FsbGJh
Y2suCi0gICAgZ2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKHN0YXRlLCBwcm90b3R5cGVPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiYWRvcHRlZENhbGxiYWNrIikpOwotICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0K
LSAgICBhdXRvKiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgPSBnZXRDdXN0b21FbGVtZW50Q2Fs
bGJhY2soc3RhdGUsIHByb3RvdHlwZU9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siKSk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpZiAoYXR0cmlidXRlQ2hh
bmdlZENhbGxiYWNrKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBjb252ZXJ0T3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+KHN0YXRlLCBjb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmc3RhdGUsICJvYnNlcnZlZEF0dHJpYnV0ZXMiKSkpOwotICAgICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LSAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgZWxlbWVudEludGVyZmFjZS0+c2V0QXR0
cmlidXRlQ2hhbmdlZENhbGxiYWNrKGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaywgKnZhbHVlKTsK
LSAgICB9Ci0KLSAgICBQcml2YXRlTmFtZSB1bmlxdWVQcml2YXRlTmFtZTsKLSAgICBnbG9iYWxP
YmplY3QoKS0+cHV0RGlyZWN0KHZtLCB1bmlxdWVQcml2YXRlTmFtZSwgY29uc3RydWN0b3IpOwot
Ci0gICAgcmVnaXN0cnkuYWRkRWxlbWVudERlZmluaXRpb24oV1RGTW92ZShlbGVtZW50SW50ZXJm
YWNlKSk7Ci0KLSAgICAvLyBGSVhNRTogMTcuIExldCBtYXAgYmUgcmVnaXN0cnkncyB1cGdyYWRl
IGNhbmRpZGF0ZXMgbWFwLgotICAgIC8vIEZJWE1FOiAxOC4gVXBncmFkZSBhIG5ld2x5LWRlZmlu
ZWQgZWxlbWVudCBnaXZlbiBtYXAgYW5kIGRlZmluaXRpb24uCi0gICAgLy8gRklYTUU6IDE5LiBS
ZXNvbHZlIHdoZW5EZWZpbmVkIHByb21pc2UuCi0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LX0KLSNlbmRpZgotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDcyYjBiODgyZjE1YjJhMmZlZTExZmI1MTY4MDg0YTYx
M2ViZTg1NWMuLmM0ODg0YjQ5ZjU3NjE1ODI4NjE3MDMxNmQ3MWNmYzY3NjgzOWQ2YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1M
RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5oIgorI2luY2x1
ZGUgIkN1c3RvbUVsZW1lbnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCkBAIC01Myw3
ICs1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxl
bWVudChFeGVjU3RhdGUmIGV4ZWMpCiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEg
dmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CiAKLSAgICBhdXRvKiByZWdpc3Ry
eSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudHNSZWdpc3RyeSgpOworICAgIGF1dG8qIHJlZ2lzdHJ5
ID0gd2luZG93LT5jdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKICAgICBpZiAoIXJlZ2lzdHJ5KQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcu
dGFyZ2V0IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIikpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcApp
bmRleCA1NWE4NTBlNjFlNGY2NjE0MWQwYjMwYmYzZTE1OTE5NGZlODVlNDM2Li5jMmY1ZDRkODVj
YWM1MGYzYjA1NTkwOTFlODgxMWU3N2JkY2JjMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKLSNpbmNsdWRlICJDdXN0b21FbGVtZW50c1Jl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZmlu
ZEludGVyZmFjZUZvckN1c3RvbUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIXdp
bmRvdykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvKiByZWdpc3RyeSA9IHdp
bmRvdy0+Y3VzdG9tRWxlbWVudHNSZWdpc3RyeSgpOworICAgIGF1dG8qIHJlZ2lzdHJ5ID0gd2lu
ZG93LT5jdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKICAgICBpZiAoIXJlZ2lzdHJ5KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmQ0MjYxNDVjYjRmN2ZjNmNjYjMyZTliMDYxMDkwMWY1
NzM1NjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCisKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeT4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpKTsKK30KKworQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpDdXN0b21FbGVtZW50UmVnaXN0cnkoKQoreyB9CisKK0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6fkN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpCit7IH0KKwordm9pZCBDdXN0b21FbGVt
ZW50UmVnaXN0cnk6OmFkZEVsZW1lbnREZWZpbml0aW9uKFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U+JiYgZWxlbWVudEludGVyZmFjZSkKK3sKKyAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1l
ID0gZWxlbWVudEludGVyZmFjZS0+bmFtZSgpLmxvY2FsTmFtZSgpOworICAgIEFTU0VSVCghbV9u
YW1lTWFwLmNvbnRhaW5zKGxvY2FsTmFtZSkpOworICAgIG1fY29uc3RydWN0b3JNYXAuYWRkKGVs
ZW1lbnRJbnRlcmZhY2UtPmNvbnN0cnVjdG9yKCksIGVsZW1lbnRJbnRlcmZhY2UucHRyKCkpOwor
ICAgIG1fbmFtZU1hcC5hZGQobG9jYWxOYW1lLCBlbGVtZW50SW50ZXJmYWNlLmNvcHlSZWYoKSk7
CisKKyAgICBhdXRvIGNhbmRpZGF0ZUxpc3QgPSBtX3VwZ3JhZGVDYW5kaWRhdGVzTWFwLmZpbmQo
bG9jYWxOYW1lKTsKKyAgICBpZiAoY2FuZGlkYXRlTGlzdCA9PSBtX3VwZ3JhZGVDYW5kaWRhdGVz
TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+
PiBsaXN0KFdURk1vdmUoY2FuZGlkYXRlTGlzdC0+dmFsdWUpKTsKKworICAgIG1fdXBncmFkZUNh
bmRpZGF0ZXNNYXAucmVtb3ZlKGxvY2FsTmFtZSk7CisKKyAgICBmb3IgKGF1dG8mIGNhbmRpZGF0
ZSA6IGxpc3QpIHsKKyAgICAgICAgQVNTRVJUKGNhbmRpZGF0ZSk7CisgICAgICAgIGVsZW1lbnRJ
bnRlcmZhY2UtPnVwZ3JhZGVFbGVtZW50KCpjYW5kaWRhdGUpOworICAgIH0KKworICAgIC8vIFdl
IHNob3VsZCBub3QgYmUgYWRkaW5nIG1vcmUgdXBncmFkZSBjYW5kaWRhdGUgZm9yIHRoaXMgbG9j
YWwgbmFtZS4KKyAgICBBU1NFUlQoIW1fdXBncmFkZUNhbmRpZGF0ZXNNYXAuY29udGFpbnMobG9j
YWxOYW1lKSk7Cit9CisKK3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjphZGRVcGdyYWRlQ2Fu
ZGlkYXRlKEVsZW1lbnQmIGNhbmRpZGF0ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fdXBncmFk
ZUNhbmRpZGF0ZXNNYXAuZW5zdXJlKGNhbmRpZGF0ZS5sb2NhbE5hbWUoKSwgW10geworICAgICAg
ICByZXR1cm4gVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4oKTsKKyAgICB9KTsKKyAgICBhdXRvJiBu
b2RlVmVjdG9yID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBU1NFUlQoIW5vZGVWZWN0
b3IuY29udGFpbnMoJmNhbmRpZGF0ZSkpOworICAgIG5vZGVWZWN0b3IuYXBwZW5kKCZjYW5kaWRh
dGUpOworfQorCitKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6ZmluZEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAoreworICAg
IGF1dG8gaXQgPSBtX25hbWVNYXAuZmluZChuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICByZXR1cm4g
aXQgPT0gbV9uYW1lTWFwLmVuZCgpIHx8IGl0LT52YWx1ZS0+bmFtZSgpICE9IG5hbWUgPyBudWxs
cHRyIDogY29uc3RfY2FzdDxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqPihpdC0+dmFsdWUucHRy
KCkpOworfQorCitKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6ZmluZEludGVyZmFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbmFtZU1hcC5nZXQobmFtZSk7Cit9CisKK0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IEpTQzo6SlNPYmpl
Y3QqIGNvbnN0cnVjdG9yKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnN0cnVjdG9yTWFwLmdl
dChjb25zdHJ1Y3Rvcik7Cit9CisKK2Jvb2wgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpjb250YWlu
c0NvbnN0cnVjdG9yKGNvbnN0IEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NvbnN0cnVjdG9yTWFwLmNvbnRhaW5zKGNvbnN0cnVjdG9yKTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNjI4Njc2NzJkZTgxODc3MmQzNDg0ZjkzN2YxYjA5ZGY4ZWJiZjNlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMp
CisKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU09iamVjdDsK
KyAgICAKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50OworY2xhc3Mg
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOworY2xhc3MgUXVhbGlmaWVkTmFtZTsKKworY2xhc3Mg
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRWxlbWVudFJl
Z2lzdHJ5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDdXN0b21FbGVtZW50UmVnaXN0cnk+
IGNyZWF0ZSgpOworICAgIH5DdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKKworICAgIHZvaWQgYWRk
RWxlbWVudERlZmluaXRpb24oUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4mJik7CisgICAg
dm9pZCBhZGRVcGdyYWRlQ2FuZGlkYXRlKEVsZW1lbnQmKTsKKworICAgIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSogZmluZEludGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Cisg
ICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kSW50ZXJmYWNlKGNvbnN0IEF0b21pY1N0
cmluZyYpIGNvbnN0OworICAgIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZmluZEludGVyZmFj
ZShjb25zdCBKU0M6OkpTT2JqZWN0KikgY29uc3Q7CisgICAgYm9vbCBjb250YWluc0NvbnN0cnVj
dG9yKGNvbnN0IEpTQzo6SlNPYmplY3QqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDdXN0b21F
bGVtZW50UmVnaXN0cnkoKTsKKworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBWZWN0b3I8UmVm
UHRyPEVsZW1lbnQ+Pj4gbV91cGdyYWRlQ2FuZGlkYXRlc01hcDsKKyAgICBIYXNoTWFwPEF0b21p
Y1N0cmluZywgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4+IG1fbmFtZU1hcDsKKyAgICBI
YXNoTWFwPGNvbnN0IEpTQzo6SlNPYmplY3QqLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqPiBt
X2NvbnN0cnVjdG9yTWFwOworfTsKKyAgICAKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOTYzNzFjNjMyZDBh
ZjdiYjZlYWNmNTQwZWYwZjRmYzhjOTY0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbApAQCAtMCwwICsxLDM1IEBACisvKgor
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgor
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgor
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyovCisKK1sKKyAgICBDb25kaXRpb25hbD1DVVNUT01fRUxFTUVOVFMsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1DdXN0b21FbGVtZW50cywKKyAgICBKU0dlbmVyYXRlVG9OYXRp
dmVPYmplY3QsCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRlcmZhY2UgQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5IHsKKworICAgIFtDRVJlYWN0aW9ucywgQ3VzdG9tXSB2b2lkIGRl
ZmluZShET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gY29uc3RydWN0b3IpOworCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiMjhiOTI2NWJiMmU5Njc4MzJmYTA4ZDY5ZGRkYmNhNWFkZjQ4ZDNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDExMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRzUmVn
aXN0cnkuaCIKLQotI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0KLSNpbmNsdWRlICJEb2N1
bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgotI2luY2x1ZGUgIlF1YWxpZmll
ZE5hbWUuaCIKLSNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8Q3VzdG9tRWxlbWVudHNSZWdpc3RyeT4gQ3VzdG9tRWxl
bWVudHNSZWdpc3RyeTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0
b21FbGVtZW50c1JlZ2lzdHJ5KCkpOwotfQotCi1DdXN0b21FbGVtZW50c1JlZ2lzdHJ5OjpDdXN0
b21FbGVtZW50c1JlZ2lzdHJ5KCkKLXsgfQotCi1DdXN0b21FbGVtZW50c1JlZ2lzdHJ5Ojp+Q3Vz
dG9tRWxlbWVudHNSZWdpc3RyeSgpCi17IH0KLQotdm9pZCBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5
OjphZGRFbGVtZW50RGVmaW5pdGlvbihSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYmIGVs
ZW1lbnRJbnRlcmZhY2UpCi17Ci0gICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZSA9IGVsZW1lbnRJ
bnRlcmZhY2UtPm5hbWUoKS5sb2NhbE5hbWUoKTsKLSAgICBBU1NFUlQoIW1fbmFtZU1hcC5jb250
YWlucyhsb2NhbE5hbWUpKTsKLSAgICBtX2NvbnN0cnVjdG9yTWFwLmFkZChlbGVtZW50SW50ZXJm
YWNlLT5jb25zdHJ1Y3RvcigpLCBlbGVtZW50SW50ZXJmYWNlLnB0cigpKTsKLSAgICBtX25hbWVN
YXAuYWRkKGxvY2FsTmFtZSwgZWxlbWVudEludGVyZmFjZS5jb3B5UmVmKCkpOwotCi0gICAgYXV0
byBjYW5kaWRhdGVMaXN0ID0gbV91cGdyYWRlQ2FuZGlkYXRlc01hcC5maW5kKGxvY2FsTmFtZSk7
Ci0gICAgaWYgKGNhbmRpZGF0ZUxpc3QgPT0gbV91cGdyYWRlQ2FuZGlkYXRlc01hcC5lbmQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gbGlzdChXVEZN
b3ZlKGNhbmRpZGF0ZUxpc3QtPnZhbHVlKSk7Ci0KLSAgICBtX3VwZ3JhZGVDYW5kaWRhdGVzTWFw
LnJlbW92ZShsb2NhbE5hbWUpOwotCi0gICAgZm9yIChhdXRvJiBjYW5kaWRhdGUgOiBsaXN0KSB7
Ci0gICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwotICAgICAgICBlbGVtZW50SW50ZXJmYWNlLT51
cGdyYWRlRWxlbWVudCgqY2FuZGlkYXRlKTsKLSAgICB9Ci0KLSAgICAvLyBXZSBzaG91bGQgbm90
IGJlIGFkZGluZyBtb3JlIHVwZ3JhZGUgY2FuZGlkYXRlIGZvciB0aGlzIGxvY2FsIG5hbWUuCi0g
ICAgQVNTRVJUKCFtX3VwZ3JhZGVDYW5kaWRhdGVzTWFwLmNvbnRhaW5zKGxvY2FsTmFtZSkpOwot
fQotCi12b2lkIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnk6OmFkZFVwZ3JhZGVDYW5kaWRhdGUoRWxl
bWVudCYgY2FuZGlkYXRlKQotewotICAgIGF1dG8gcmVzdWx0ID0gbV91cGdyYWRlQ2FuZGlkYXRl
c01hcC5lbnN1cmUoY2FuZGlkYXRlLmxvY2FsTmFtZSgpLCBbXSB7Ci0gICAgICAgIHJldHVybiBW
ZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PigpOwotICAgIH0pOwotICAgIGF1dG8mIG5vZGVWZWN0b3Ig
PSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIEFTU0VSVCghbm9kZVZlY3Rvci5jb250YWlu
cygmY2FuZGlkYXRlKSk7Ci0gICAgbm9kZVZlY3Rvci5hcHBlbmQoJmNhbmRpZGF0ZSk7Ci19Ci0K
LUpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudHNSZWdpc3RyeTo6ZmluZElu
dGVyZmFjZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAotewotICAgIGF1dG8gaXQg
PSBtX25hbWVNYXAuZmluZChuYW1lLmxvY2FsTmFtZSgpKTsKLSAgICByZXR1cm4gaXQgPT0gbV9u
YW1lTWFwLmVuZCgpIHx8IGl0LT52YWx1ZS0+bmFtZSgpICE9IG5hbWUgPyBudWxscHRyIDogY29u
c3RfY2FzdDxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqPihpdC0+dmFsdWUucHRyKCkpOwotfQot
Ci1KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnk6OmZpbmRJ
bnRlcmZhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIHJldHVybiBt
X25hbWVNYXAuZ2V0KG5hbWUpOwotfQotCi1KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3Rv
bUVsZW1lbnRzUmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UoY29uc3QgSlNDOjpKU09iamVjdCogY29u
c3RydWN0b3IpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29uc3RydWN0b3JNYXAuZ2V0KGNvbnN0
cnVjdG9yKTsKLX0KLQotYm9vbCBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Ojpjb250YWluc0NvbnN0
cnVjdG9yKGNvbnN0IEpTQzo6SlNPYmplY3QqIGNvbnN0cnVjdG9yKSBjb25zdAotewotICAgIHJl
dHVybiBtX2NvbnN0cnVjdG9yTWFwLmNvbnRhaW5zKGNvbnN0cnVjdG9yKTsKLX0KLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50c1JlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjdlM2VhNWQzMTM5M2E5Y2Q3MGU1MzE3NWUxZTMx
ZWVlOWU0ODg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQotCi0jaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNPYmplY3Q7
Ci0gICAgCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudDsKLWNsYXNz
IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTsKLWNsYXNzIFF1YWxpZmllZE5hbWU7Ci0KLWNsYXNz
IEN1c3RvbUVsZW1lbnRzUmVnaXN0cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21FbGVtZW50
c1JlZ2lzdHJ5PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDdXN0b21FbGVtZW50c1JlZ2lz
dHJ5PiBjcmVhdGUoKTsKLSAgICB+Q3VzdG9tRWxlbWVudHNSZWdpc3RyeSgpOwotCi0gICAgdm9p
ZCBhZGRFbGVtZW50RGVmaW5pdGlvbihSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYmKTsK
LSAgICB2b2lkIGFkZFVwZ3JhZGVDYW5kaWRhdGUoRWxlbWVudCYpOwotCi0gICAgSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlKiBmaW5kSW50ZXJmYWNlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKLSAgICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGZpbmRJbnRlcmZhY2UoY29uc3QgQXRv
bWljU3RyaW5nJikgY29uc3Q7Ci0gICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kSW50
ZXJmYWNlKGNvbnN0IEpTQzo6SlNPYmplY3QqKSBjb25zdDsKLSAgICBib29sIGNvbnRhaW5zQ29u
c3RydWN0b3IoY29uc3QgSlNDOjpKU09iamVjdCopIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEN1
c3RvbUVsZW1lbnRzUmVnaXN0cnkoKTsKLQotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBWZWN0
b3I8UmVmUHRyPEVsZW1lbnQ+Pj4gbV91cGdyYWRlQ2FuZGlkYXRlc01hcDsKLSAgICBIYXNoTWFw
PEF0b21pY1N0cmluZywgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4+IG1fbmFtZU1hcDsK
LSAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SlNPYmplY3QqLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UqPiBtX2NvbnN0cnVjdG9yTWFwOwotfTsKLSAgICAKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNjZGMxNDVjOWJlMzkwMjY0Y2U5YzExOGY2M2Q1ZGM4YmYwMzY1NmEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQg
KzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9Q1VTVE9N
X0VMRU1FTlRTLAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5IHsKLQot
ICAgIFtDRVJlYWN0aW9ucywgQ3VzdG9tXSB2b2lkIGRlZmluZShET01TdHJpbmcgbmFtZSwgRnVu
Y3Rpb24gY29uc3RydWN0b3IpOwotCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMjlk
M2ZkN2UwZDQyOTU5NTVlOWEwMmMzYTJhOTQ4NjEyZWUyZDRlMy4uYTRmMzY4ZDcwZGVkYzc1ZDEy
MmVkMDcwZmY3OTIxOTAyZjMyYWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NSw3
ICs0NSw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAi
Q29va2llSmFyLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKLSNp
bmNsdWRlICJDdXN0b21FbGVtZW50c1JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRXZlbnQuaCIKICNpbmNsdWRlICJET01JbXBs
ZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKQEAgLTg5
MSw3ICs4OTEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNy
ZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JgogCiAgICAgYXV0byBlbGVtZW50
ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiAgICAgZWxlbWVudC0+c2V0
SXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudCgpOwotICAgIHdpbmRvdy0+ZW5zdXJlQ3VzdG9tRWxl
bWVudHNSZWdpc3RyeSgpLmFkZFVwZ3JhZGVDYW5kaWRhdGUoZWxlbWVudC5nZXQoKSk7CisgICAg
d2luZG93LT5lbnN1cmVDdXN0b21FbGVtZW50UmVnaXN0cnkoKS5hZGRVcGdyYWRlQ2FuZGlkYXRl
KGVsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBXVEZNb3ZlKGVsZW1lbnQpOwogfQogI2VuZGlm
CkBAIC05MDUsNyArOTA1LDcgQEAgc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVIVE1MRWxl
bWVudFdpdGhOYW1lVmFsaWRhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGMKICNpZiBFTkFCTEUo
Q1VTVE9NX0VMRU1FTlRTKQogICAgIGF1dG8qIHdpbmRvdyA9IGRvY3VtZW50LmRvbVdpbmRvdygp
OwogICAgIGlmICh3aW5kb3cpIHsKLSAgICAgICAgYXV0byogcmVnaXN0cnkgPSB3aW5kb3ctPmN1
c3RvbUVsZW1lbnRzUmVnaXN0cnkoKTsKKyAgICAgICAgYXV0byogcmVnaXN0cnkgPSB3aW5kb3ct
PmN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkocmVnaXN0cnkp
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5m
aW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRJ
bnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1lbnQobG9jYWxOYW1lLCBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2U6OlNob3VsZENsZWFyRXhjZXB0aW9uOjpEb05vdENsZWFyKTsKQEAgLTEwODgsNyArMTA4
OCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUZhbGxiYWNrSFRNTEVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5U
UykKICAgICBhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC5kb21XaW5kb3coKTsKICAgICBpZiAod2lu
ZG93KSB7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdHJ5ID0gd2luZG93LT5jdXN0b21FbGVtZW50c1Jl
Z2lzdHJ5KCk7CisgICAgICAgIGF1dG8qIHJlZ2lzdHJ5ID0gd2luZG93LT5jdXN0b21FbGVtZW50
UmVnaXN0cnkoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHJlZ2lzdHJ5KSkgewogICAgICAgICAg
ICAgaWYgKGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSByZWdpc3RyeS0+ZmluZEludGVyZmFjZShu
YW1lKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVh
dGUobmFtZSwgZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDc4ZDY0Y2NjZWVh
NjM4MWIwOGU4ODU2NGQ2ZjA0MzI4NDFhY2YwN2YuLmRjYmY4NmQxNWU3YjljN2UyNGI3NmQ1NmQ3
Nzk4YjdlOWIxMjJjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZS5oIgotI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJD
dXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNs
dWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRBbmltYXRpb24uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCBiZWJhYzdjMThjZDk0NjcwNWNhNTFkMWJiZjgwZmIzM2VjMTBlNmQ3Li40ZmY4OGFkMGIx
YjhjYWM0YmIyZmRkNGY4M2FkMGYxODRiYjVhM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC0yOCw3ICsyOCw3IEBA
CiAjaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVyLmgiCiAKICNpbmNsdWRlICJDb21tZW50LmgiCi0j
aW5jbHVkZSAiQ3VzdG9tRWxlbWVudHNSZWdpc3RyeS5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1l
bnRSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKQEAgLTY2MSw3ICs2NjEsNyBA
QCBSZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50
T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZgogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAg
ICAgICAgIGF1dG8qIHdpbmRvdyA9IG93bmVyRG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAgICAg
IGlmIChjdXN0b21FbGVtZW50SW50ZXJmYWNlICYmIHdpbmRvdykgewotICAgICAgICAgICAgYXV0
byogcmVnaXN0cnkgPSB3aW5kb3ctPmN1c3RvbUVsZW1lbnRzUmVnaXN0cnkoKTsKKyAgICAgICAg
ICAgIGF1dG8qIHJlZ2lzdHJ5ID0gd2luZG93LT5jdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShyZWdpc3RyeSkpIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKGxvY2FsTmFt
ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgKmN1c3RvbUVsZW1lbnRJbnRlcmZhY2UgPSBlbGVt
ZW50SW50ZXJmYWNlOwpAQCAtNjc4LDcgKzY3OCw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJm
CiAgICAgICAgIGlmICh3aW5kb3cgJiYgRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5h
bWUobG9jYWxOYW1lKSA9PSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OlZhbGlk
KSB7CiAgICAgICAgICAgICBlbGVtZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShxdWFsaWZpZWRO
YW1lLCBvd25lckRvY3VtZW50KTsKICAgICAgICAgICAgIGVsZW1lbnQtPnNldElzVW5yZXNvbHZl
ZEN1c3RvbUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHdpbmRvdy0+ZW5zdXJlQ3VzdG9tRWxlbWVu
dHNSZWdpc3RyeSgpLmFkZFVwZ3JhZGVDYW5kaWRhdGUoKmVsZW1lbnQpOworICAgICAgICAgICAg
d2luZG93LT5lbnN1cmVDdXN0b21FbGVtZW50UmVnaXN0cnkoKS5hZGRVcGdyYWRlQ2FuZGlkYXRl
KCplbGVtZW50KTsKICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIGVsZW1lbnQg
PSBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShxdWFsaWZpZWROYW1lLCBvd25lckRvY3VtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBlZTBjYWUyMzQ3MDgwNjU0OTZhMDFi
MzY0MDg3NmQ0ZDgwY2U0OTM2Li44NGM4MTA1OGI5OWQ3N2FkM2JkNzgwOGMwNGMwODUwYTdhNjA1
Mzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5j
bHVkZSAiQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uUnVsZS5oIgogI2luY2x1ZGUgIkNyeXB0by5oIgotI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRz
UmVnaXN0cnkuaCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiRE9NU3RyaW5nTGlzdC5oIgpAQCAtNjIxLDExICs2MjEsMTEgQEAgYm9vbCBET01XaW5k
b3c6OmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUo
Q1VTVE9NX0VMRU1FTlRTKQotQ3VzdG9tRWxlbWVudHNSZWdpc3RyeSYgRE9NV2luZG93OjplbnN1
cmVDdXN0b21FbGVtZW50c1JlZ2lzdHJ5KCkKK0N1c3RvbUVsZW1lbnRSZWdpc3RyeSYgRE9NV2lu
ZG93OjplbnN1cmVDdXN0b21FbGVtZW50UmVnaXN0cnkoKQogewotICAgIGlmICghbV9jdXN0b21F
bGVtZW50c1JlZ2lzdHJ5KQotICAgICAgICBtX2N1c3RvbUVsZW1lbnRzUmVnaXN0cnkgPSBDdXN0
b21FbGVtZW50c1JlZ2lzdHJ5OjpjcmVhdGUoKTsKLSAgICByZXR1cm4gKm1fY3VzdG9tRWxlbWVu
dHNSZWdpc3RyeTsKKyAgICBpZiAoIW1fY3VzdG9tRWxlbWVudFJlZ2lzdHJ5KQorICAgICAgICBt
X2N1c3RvbUVsZW1lbnRSZWdpc3RyeSA9IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6Y3JlYXRlKCk7
CisgICAgcmV0dXJuICptX2N1c3RvbUVsZW1lbnRSZWdpc3RyeTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAppbmRleCA4MzViMWNlODg5YmE5MTZlYjRkM2JiYzY5ZjhlOTJiZmQ2
M2I3MDAxLi43ODdmMzdiNzA1MTE4MTJlZGI5ZjcxMTdlODVjYzEzYTRlMmI5MTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIENTU1J1bGVMaXN0OwogICAgIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiAg
ICAgY2xhc3MgQ3J5cHRvOwotICAgIGNsYXNzIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnk7CisgICAg
Y2xhc3MgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2Fj
aGU7CiAgICAgY2xhc3MgRE9NU2VsZWN0aW9uOwogICAgIGNsYXNzIERPTVVSTDsKQEAgLTMwNiw4
ICszMDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERPTUFwcGxpY2F0aW9uQ2Fj
aGUqIG9wdGlvbmFsQXBwbGljYXRpb25DYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRp
b25DYWNoZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICAgICAg
Q3VzdG9tRWxlbWVudHNSZWdpc3RyeSogY3VzdG9tRWxlbWVudHNSZWdpc3RyeSgpIHsgcmV0dXJu
IG1fY3VzdG9tRWxlbWVudHNSZWdpc3RyeS5nZXQoKTsgfQotICAgICAgICBDdXN0b21FbGVtZW50
c1JlZ2lzdHJ5JiBlbnN1cmVDdXN0b21FbGVtZW50c1JlZ2lzdHJ5KCk7CisgICAgICAgIEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeSogY3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9jdXN0
b21FbGVtZW50UmVnaXN0cnkuZ2V0KCk7IH0KKyAgICAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
JiBlbnN1cmVDdXN0b21FbGVtZW50UmVnaXN0cnkoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9S
SUVOVEFUSU9OX0VWRU5UUykKQEAgLTQyMyw3ICs0MjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIG11dGFibGUgUmVmUHRyPERPTUFwcGxpY2F0aW9uQ2FjaGU+IG1fYXBwbGljYXRp
b25DYWNoZTsKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0gICAgICAgIFJlZlB0cjxD
dXN0b21FbGVtZW50c1JlZ2lzdHJ5PiBtX2N1c3RvbUVsZW1lbnRzUmVnaXN0cnk7CisgICAgICAg
IFJlZlB0cjxDdXN0b21FbGVtZW50UmVnaXN0cnk+IG1fY3VzdG9tRWxlbWVudFJlZ2lzdHJ5Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAppbmRleCA4M2M4ZDY5OGQ4YjAwMjlmYmQwNjUyN2I1MzNjM2JjMWRkZjk5MjhhLi5kY2Y0YWJk
YmJkZGU0Zjk2YWM0MWYwZjA0MDkyMjQ1NmI3ZDMwMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCkBAIC0yMDEsNyArMjAxLDcgQEAKICNlbmRpZiAvLyBkZWZpbmVkKExBTkdVQUdFX0pB
VkFTQ1JJUFQpCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdF
X0pBVkFTQ1JJUFQKLSAgICBbQ29uZGl0aW9uYWw9Q1VTVE9NX0VMRU1FTlRTLCBJbXBsZW1lbnRl
ZEFzPWVuc3VyZUN1c3RvbUVsZW1lbnRzUmVnaXN0cnldIHJlYWRvbmx5IGF0dHJpYnV0ZSBDdXN0
b21FbGVtZW50c1JlZ2lzdHJ5IGN1c3RvbUVsZW1lbnRzOworICAgIFtDb25kaXRpb25hbD1DVVNU
T01fRUxFTUVOVFMsIEVuYWJsZWRBdFJ1bnRpbWU9Q3VzdG9tRWxlbWVudHMsIEltcGxlbWVudGVk
QXM9ZW5zdXJlQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5XSByZWFkb25seSBhdHRyaWJ1dGUgQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5IGN1c3RvbUVsZW1lbnRzOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM4YmEz
MzVkNThhNWFhNTJlZWYwNGUwOTRiYjkwYWYxYjEzYzcwNGQuLjYzNjAzOTM3MTU4MTJjMTNmZDJh
ZTRmYTc1Njk1NWFkYzA1MTQ2NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0wOC0xOSAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgQ3VzdG9t
RWxlbWVudHNSZWdpc3RyeSB0byBDdXN0b21FbGVtZW50UmVnaXN0cnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTAyOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3RzIGFuZCBl
eHBlY3RlZCByZXN1bHRzIGFmdGVyIHRoZSByZW5hbWUuCisKKyAgICAgICAgKiBmYXN0L2N1c3Rv
bS1lbGVtZW50cy9DdXN0b21FbGVtZW50UmVnaXN0cnktZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZy
b20gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvQ3VzdG9tRWxlbWVudHNSZWdpc3Ry
eS1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9DdXN0b21FbGVtZW50c1JlZ2lzdHJ5Lmh0bWwuCisgICAgICAgICogcGxhdGZvcm0v
ZWZsL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL2pzL2RvbS9nbG9i
YWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL21hYy15b3NlbWl0ZS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1
Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL2pz
L2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgorCiAyMDE2
LTA4LTE5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSBmb3IgV2ViR0wKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9DdXN0b21FbGVt
ZW50UmVnaXN0cnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5ZjhhZTgyNDBlNWRkYjkwMDhl
Zjg5ZjAyMzBlNjM5Y2Y1Mjc1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2N1c3RvbS1lbGVtZW50cy9DdXN0b21FbGVtZW50UmVnaXN0cnktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjAgQEAKKworUEFTUyBDdXN0b21FbGVtZW50UmVnaXN0cnkgaW50ZXJmYWNlIG11c3Qg
aGF2ZSBkZWZpbmUgYXMgYSBtZXRob2QgCitQQVNTIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0
IHRocm93IHdpdGggYW4gaW52YWxpZCBuYW1lIAorUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUg
bXVzdCB0aHJvdyB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjdXN0b20gZWxlbWVudCBvZiB0aGUg
c2FtZSBuYW1lIAorUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuIHRo
ZXJlIGlzIGFscmVhZHkgYSBjdXN0b20gZWxlbWVudCB3aXRoIHRoZSBzYW1lIGNsYXNzIAorUEFT
UyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuIHRoZSBlbGVtZW50IGludGVy
ZmFjZSBpcyBub3QgYSBjb25zdHJ1Y3RvciAKK1BBU1MgY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11
c3QgZ2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAKK1BBU1MgY3Vz
dG9tRWxlbWVudHMuZGVmaW5lIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxl
IGdldHRpbmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIAorUEFTUyBj
dXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5
IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3QgYW4gb2JqZWN0IAorUEFTUyBjdXN0b21FbGVtZW50
cy5kZWZpbmUgbXVzdCBnZXQgY2FsbGJhY2tzIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUg
CitQQVNTIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRo
cm93biB3aGlsZSBnZXR0aW5nIGNhbGxiYWNrcyBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBl
IAorUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0
aHJvd24gd2hpbGUgY29udmVydGluZyBhIGNhbGxiYWNrIHZhbHVlIHRvIEZ1bmN0aW9uIGNhbGxi
YWNrIHR5cGUgCitQQVNTIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IGdldCAib2JzZXJ2ZWRB
dHRyaWJ1dGVzIiBwcm9wZXJ0eSBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIHdoZW4gImF0
dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIgaXMgcHJlc2VudCAKK1BBU1MgY3VzdG9tRWxlbWVudHMu
ZGVmaW5lIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdldHRpbmcgb2Jz
ZXJ2ZWRBdHRyaWJ1dGVzIG9uIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgCitQQVNTIGN1c3Rv
bUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBj
b252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBvYnNlcnZlZEF0dHJpYnV0ZXMgdG8gc2VxdWVuY2U8RE9N
U3RyaW5nPiAKK1BBU1MgY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgcmV0aHJvdyBhbiBleGNl
cHRpb24gdGhyb3duIHdoaWxlIGl0ZXJhdGluZyBvdmVyIG9ic2VydmVkQXR0cmlidXRlcyB0byBz
ZXF1ZW5jZTxET01TdHJpbmc+IAorUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCByZXRo
cm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wuaXRlcmF0b3Ig
b24gb2JzZXJ2ZWRBdHRyaWJ1dGVzIAorUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCBu
b3QgdGhyb3cgZXZlbiBpZiAib2JzZXJ2ZWRBdHRyaWJ1dGVzIiBmYWlscyB0byBjb252ZXJ0IGlm
ICJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siIGlzIG5vdCBkZWZpbmVkIAorUEFTUyBjdXN0b21F
bGVtZW50cy5kZWZpbmUgbXVzdCBkZWZpbmUgYW4gaW5zdGFudGlhdGFibGUgY3VzdG9tIGVsZW1l
bnQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMyMzdjNzQyNzM1NTBkYzFm
ODc2ZjEwYjE4OGViNTc2M2EwZGU4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3VzdG9tLWVsZW1lbnRzL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5odG1sCkBAIC0wLDAgKzEs
MjcyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q3VzdG9tIEVs
ZW1lbnRzOiBDdXN0b21FbGVtZW50UmVnaXN0cnkgaW50ZXJmYWNlPC90aXRsZT4KKzxtZXRhIG5h
bWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtp
dC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJDdXN0b21FbGVtZW50UmVnaXN0
cnkgaW50ZXJmYWNlIG11c3QgZXhpc3QiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJl
Zj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBh
c3NlcnRfdHJ1ZSgnZGVmaW5lJyBpbiBDdXN0b21FbGVtZW50UmVnaXN0cnkucHJvdG90eXBlLCAn
ImRlZmluZSIgZXhpc3RzIG9uIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS5wcm90b3R5cGUnKTsKKyAg
ICBhc3NlcnRfdHJ1ZSgnZGVmaW5lJyBpbiBjdXN0b21FbGVtZW50cywgJyJkZWZpbmUiIGV4aXN0
cyBvbiB3aW5kb3cuY3VzdG9tRWxlbWVudHMnKTsKK30sICdDdXN0b21FbGVtZW50UmVnaXN0cnkg
aW50ZXJmYWNlIG11c3QgaGF2ZSBkZWZpbmUgYXMgYSBtZXRob2QnKTsKKwordGVzdChmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge307
CisKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAo
KSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZShudWxsLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAorICAg
ICAgICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cgYSBTeW50YXhFcnJvciBpZiB0
aGUgdGFnIG5hbWUgaXMgbnVsbCcpOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1N5bnRh
eEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCcnLCBNeUN1c3Rv
bUVsZW1lbnQpOyB9LAorICAgICAgICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cg
YSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgaXMgZW1wdHknKTsKKyAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGN1c3RvbUVsZW1lbnRz
LmRlZmluZSgnYWJjJywgTXlDdXN0b21FbGVtZW50KTsgfSwKKyAgICAgICAgJ2N1c3RvbUVsZW1l
bnRzLmRlZmluZSBtdXN0IHRocm93IGEgU3ludGF4RXJyb3IgaWYgdGhlIHRhZyBuYW1lIGRvZXMg
bm90IGNvbnRhaW4gIi0iJyk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnU3ludGF4RXJy
b3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2EtQmMnLCBNeUN1c3Rv
bUVsZW1lbnQpOyB9LAorICAgICAgICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cg
YSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgY29udGFpbnMgYW4gdXBwZXIgY2FzZSBsZXR0
ZXInKTsKKworICAgIHZhciBidWlsdGluVGFnTmFtZXMgPSBbCisgICAgICAgICdhbm5vdGF0aW9u
LXhtbCcsCisgICAgICAgICdjb2xvci1wcm9maWxlJywKKyAgICAgICAgJ2ZvbnQtZmFjZScsCisg
ICAgICAgICdmb250LWZhY2Utc3JjJywKKyAgICAgICAgJ2ZvbnQtZmFjZS11cmknLAorICAgICAg
ICAnZm9udC1mYWNlLWZvcm1hdCcsCisgICAgICAgICdmb250LWZhY2UtbmFtZScsCisgICAgICAg
ICdtaXNzaW5nLWdseXBoJworICAgIF07CisKKyAgICBmb3IgKHZhciB0YWdOYW1lIG9mIGJ1aWx0
aW5UYWdOYW1lcykgeworICAgICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50YXhFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBNeUN1c3Rv
bUVsZW1lbnQpOyB9LAorICAgICAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHRo
cm93IGEgU3ludGF4RXJyb3IgaWYgdGhlIHRhZyBuYW1lIGlzICInICsgdGFnTmFtZSArICciJyk7
CisgICAgfQorCit9LCAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cgd2l0aCBhbiBp
bnZhbGlkIG5hbWUnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgU29tZUN1c3Rv
bUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKKyAgICBjbGFzcyBPdGhlckN1c3RvbUVs
ZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKKworICAgIGN1c3RvbUVsZW1lbnRzLmRlZmlu
ZSgnc29tZS1jdXN0b20tZWxlbWVudCcsIFNvbWVDdXN0b21FbGVtZW50KTsKKyAgICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGN1c3Rv
bUVsZW1lbnRzLmRlZmluZSgnc29tZS1jdXN0b20tZWxlbWVudCcsIE90aGVyQ3VzdG9tRWxlbWVu
dCk7IH0sCisgICAgICAgICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyBhIE5vdFN1
cHBvcnRlZEVycm9yIGlmIHRoZSBzcGVjaWZpZWQgdGFnIG5hbWUgaXMgYWxyZWFkeSB1c2VkJyk7
CisKK30sICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuIHRoZXJlIGlzIGFs
cmVhZHkgYSBjdXN0b20gZWxlbWVudCBvZiB0aGUgc2FtZSBuYW1lJyk7CisKK3Rlc3QoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIEFub3RoZXJDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1l
bnQge307CisKKyAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2Fub3RoZXItY3VzdG9tLWVsZW1l
bnQnLCBBbm90aGVyQ3VzdG9tRWxlbWVudCk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
Tm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUo
J3NvbWUtb3RoZXItZWxlbWVudCcsIEFub3RoZXJDdXN0b21FbGVtZW50KTsgfSwKKyAgICAgICAg
J2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3IgaWYg
dGhlIHNwZWNpZmllZCBjbGFzcyBhbHJlYWR5IGRlZmluZXMgYW4gZWxlbWVudCcpOworCit9LCAn
Y3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEg
Y3VzdG9tIGVsZW1lbnQgd2l0aCB0aGUgc2FtZSBjbGFzcycpOworCit0ZXN0KGZ1bmN0aW9uICgp
IHsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkg
eyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2ludmFsaWQtZWxlbWVudCcsIDEpOyB9LAorICAgICAg
ICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cgYSBUeXBlRXJyb3Igd2hlbiB0aGUg
ZWxlbWVudCBpbnRlcmZhY2UgaXMgYSBudW1iZXInKTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2lu
dmFsaWQtZWxlbWVudCcsICcxMjMnKTsgfSwKKyAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmlu
ZSBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIGEg
c3RyaW5nJyk7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0
aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdpbnZhbGlkLWVsZW1lbnQnLCB7fSk7IH0s
CisgICAgICAgICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3
aGVuIHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBhbiBvYmplY3QnKTsKKyAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5k
ZWZpbmUoJ2ludmFsaWQtZWxlbWVudCcsIFtdKTsgfSwKKyAgICAgICAgJ2N1c3RvbUVsZW1lbnRz
LmRlZmluZSBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaW50ZXJmYWNl
IGlzIGFuIGFycmF5Jyk7Cit9LCAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cgd2hl
biB0aGUgZWxlbWVudCBpbnRlcmZhY2UgaXMgbm90IGEgY29uc3RydWN0b3InKTsKKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgdmFyIGNhbGxzID0gW107CisgICAgdmFyIHByb3h5ID0gbmV3IFBy
b3h5KGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQgeyB9LCB7CisgICAgICAgIGdldDogZnVuY3Rp
b24gKHRhcmdldCwgbmFtZSkgeworICAgICAgICAgICAgY2FsbHMucHVzaChuYW1lKTsKKyAgICAg
ICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBjdXN0
b21FbGVtZW50cy5kZWZpbmUoJ3Byb3h5LWVsZW1lbnQnLCBwcm94eSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhjYWxscywgWydwcm90b3R5cGUnXSk7Cit9LCAnY3VzdG9tRWxlbWVudHMuZGVm
aW5lIG11c3QgZ2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvcicpOwor
Cit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgcHJveHkgPSBuZXcgUHJveHkoY2xhc3MgZXh0
ZW5kcyBIVE1MRWxlbWVudCB7IH0sIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBu
YW1lKSB7CisgICAgICAgICAgICB0aHJvdyB7bmFtZTogJ2V4cGVjdGVkRXJyb3InfTsKKyAgICAg
ICAgfQorICAgIH0pOworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ2V4cGVjdGVkRXJyb3In
fSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1zdHJp
bmctcHJvdG90eXBlJywgcHJveHkpOyB9KTsKK30sICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVz
dCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgZ2V0dGluZyAicHJvdG90eXBlIiBw
cm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAg
dmFyIHJldHVybmVkVmFsdWU7CisgICAgdmFyIHByb3h5ID0gbmV3IFByb3h5KGNsYXNzIGV4dGVu
ZHMgSFRNTEVsZW1lbnQgeyB9LCB7CisgICAgICAgIGdldDogZnVuY3Rpb24gKHRhcmdldCwgbmFt
ZSkgeyByZXR1cm4gcmV0dXJuZWRWYWx1ZTsgfQorICAgIH0pOworCisgICAgcmV0dXJuZWRWYWx1
ZSA9IG51bGw7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0
aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgtc3RyaW5nLXByb3Rv
dHlwZScsIHByb3h5KTsgfSwKKyAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHRo
cm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG51bGwn
KTsKKyAgICByZXR1cm5lZFZhbHVlID0gdW5kZWZpbmVkOworICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZSgn
ZWxlbWVudC13aXRoLXN0cmluZy1wcm90b3R5cGUnLCBwcm94eSk7IH0sCisgICAgICAgICdjdXN0
b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUiIHByb3BlcnR5IG9m
IHRoZSBjb25zdHJ1Y3RvciBpcyB1bmRlZmluZWQnKTsKKyAgICByZXR1cm5lZFZhbHVlID0gJ2hl
bGxvJzsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1zdHJpbmctcHJvdG90eXBl
JywgcHJveHkpOyB9LAorICAgICAgICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cg
d2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBzdHJpbmcn
KTsKKyAgICByZXR1cm5lZFZhbHVlID0gMTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdU
eXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQt
d2l0aC1zdHJpbmctcHJvdG90eXBlJywgcHJveHkpOyB9LAorICAgICAgICAnY3VzdG9tRWxlbWVu
dHMuZGVmaW5lIG11c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29u
c3RydWN0b3IgaXMgYSBudW1iZXInKTsKKworfSwgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0
IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5v
dCBhbiBvYmplY3QnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGNvbnN0cnVjdG9y
ID0gZnVuY3Rpb24gKCkge30KKyAgICB2YXIgY2FsbHMgPSBbXTsKKyAgICBjb25zdHJ1Y3Rvci5w
cm90b3R5cGUgPSBuZXcgUHJveHkoY29uc3RydWN0b3IucHJvdG90eXBlLCB7CisgICAgICAgIGdl
dDogZnVuY3Rpb24gKHRhcmdldCwgbmFtZSkgeworICAgICAgICAgICAgY2FsbHMucHVzaChuYW1l
KTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CisgICAgICAgIH0KKyAgICB9KTsK
KyAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1wcm94eS1wcm90b3R5cGUn
LCBjb25zdHJ1Y3Rvcik7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydjb25uZWN0
ZWRDYWxsYmFjaycsICdkaXNjb25uZWN0ZWRDYWxsYmFjaycsICdhZG9wdGVkQ2FsbGJhY2snLCAn
YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJ10pOworfSwgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBt
dXN0IGdldCBjYWxsYmFja3Mgb2YgdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZScpOworCit0ZXN0
KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgY29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7fQorICAg
IHZhciBjYWxscyA9IFtdOworICAgIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBQcm94eShj
b25zdHJ1Y3Rvci5wcm90b3R5cGUsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBu
YW1lKSB7CisgICAgICAgICAgICBjYWxscy5wdXNoKG5hbWUpOworICAgICAgICAgICAgaWYgKG5h
bWUgPT0gJ2Rpc2Nvbm5lY3RlZENhbGxiYWNrJykKKyAgICAgICAgICAgICAgICB0aHJvdyB7bmFt
ZTogJ2V4cGVjdGVkRXJyb3InfTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07Cisg
ICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVy
cm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgt
dGhyb3dpbmctY2FsbGJhY2snLCBjb25zdHJ1Y3Rvcik7IH0pOworICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoY2FsbHMsIFsnY29ubmVjdGVkQ2FsbGJhY2snLCAnZGlzY29ubmVjdGVkQ2FsbGJhY2sn
XSwKKyAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IG5vdCBnZXQgY2FsbGJhY2tz
IGFmdGVyIG9uZSBvZiB0aGUgZ2V0IHRocm93cycpOworfSwgJ2N1c3RvbUVsZW1lbnRzLmRlZmlu
ZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nIGNhbGxiYWNr
cyBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgewor
ICAgIHZhciBjb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHt9CisgICAgdmFyIGNhbGxzID0gW107
CisgICAgY29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFByb3h5KGNvbnN0cnVjdG9yLnByb3Rv
dHlwZSwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUpIHsKKyAgICAgICAg
ICAgIGNhbGxzLnB1c2gobmFtZSk7CisgICAgICAgICAgICBpZiAobmFtZSA9PSAnYWRvcHRlZENh
bGxiYWNrJykKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIHJldHVybiB0
YXJnZXRbbmFtZV07CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2Vs
ZW1lbnQtd2l0aC10aHJvd2luZy1jYWxsYmFjaycsIGNvbnN0cnVjdG9yKTsgfSk7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydjb25uZWN0ZWRDYWxsYmFjaycsICdkaXNjb25uZWN0
ZWRDYWxsYmFjaycsICdhZG9wdGVkQ2FsbGJhY2snXSwKKyAgICAgICAgJ2N1c3RvbUVsZW1lbnRz
LmRlZmluZSBtdXN0IG5vdCBnZXQgY2FsbGJhY2tzIGFmdGVyIG9uZSBvZiB0aGUgY29udmVyc2lv
biB0aHJvd3MnKTsKK30sICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCByZXRocm93IGFuIGV4
Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyBhIGNhbGxiYWNrIHZhbHVlIHRvIEZ1bmN0
aW9uIGNhbGxiYWNrIHR5cGUnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGNvbnN0
cnVjdG9yID0gZnVuY3Rpb24gKCkge30KKyAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuYXR0cmli
dXRlQ2hhbmdlZENhbGxiYWNrID0gZnVuY3Rpb24gKCkgeyB9OworICAgIHZhciBwcm90b3R5cGVD
YWxscyA9IFtdOworICAgIHZhciBjYWxsT3JkZXIgPSAwOworICAgIGNvbnN0cnVjdG9yLnByb3Rv
dHlwZSA9IG5ldyBQcm94eShjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHsKKyAgICAgICAgZ2V0OiBm
dW5jdGlvbiAodGFyZ2V0LCBuYW1lKSB7CisgICAgICAgICAgICBpZiAobmFtZSA9PSAncHJvdG90
eXBlJyB8fCBuYW1lID09ICdvYnNlcnZlZEF0dHJpYnV0ZXMnKQorICAgICAgICAgICAgICAgIHRo
cm93ICdVbmV4cGVjdGVkIGFjY2VzcyB0byBvYnNlcnZlZEF0dHJpYnV0ZXMnOworICAgICAgICAg
ICAgcHJvdG90eXBlQ2FsbHMucHVzaChjYWxsT3JkZXIrKyk7ICAgIAorICAgICAgICAgICAgcHJv
dG90eXBlQ2FsbHMucHVzaChuYW1lKTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07
CisgICAgICAgIH0KKyAgICB9KTsKKyAgICB2YXIgY29uc3RydWN0b3JDYWxscyA9IFtdOworICAg
IHZhciBwcm94eSA9IG5ldyBQcm94eShjb25zdHJ1Y3RvciwgeworICAgICAgICBnZXQ6IGZ1bmN0
aW9uICh0YXJnZXQsIG5hbWUpIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yQ2FsbHMucHVzaChj
YWxsT3JkZXIrKyk7ICAgIAorICAgICAgICAgICAgY29uc3RydWN0b3JDYWxscy5wdXNoKG5hbWUp
OworICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKKyAgICAgICAgfQorICAgIH0pOwor
ICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRoLWF0dHJpYnV0ZS1jaGFuZ2Vk
LWNhbGxiYWNrJywgcHJveHkpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMocHJvdG90eXBlQ2Fs
bHMsIFsxLCAnY29ubmVjdGVkQ2FsbGJhY2snLCAyLCAnZGlzY29ubmVjdGVkQ2FsbGJhY2snLCAz
LCAnYWRvcHRlZENhbGxiYWNrJywgNCwgJ2F0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayddKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNvbnN0cnVjdG9yQ2FsbHMsIFswLCAncHJvdG90eXBlJywg
NSwgJ29ic2VydmVkQXR0cmlidXRlcyddKTsKK30sICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVz
dCBnZXQgIm9ic2VydmVkQXR0cmlidXRlcyIgcHJvcGVydHkgb24gdGhlIGNvbnN0cnVjdG9yIHBy
b3RvdHlwZSB3aGVuICJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siIGlzIHByZXNlbnQnKTsKKwor
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge30K
KyAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrID0gZnVu
Y3Rpb24gKCkgeyB9OworICAgIHZhciBjYWxscyA9IFtdOworICAgIHZhciBwcm94eSA9IG5ldyBQ
cm94eShjb25zdHJ1Y3RvciwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUp
IHsKKyAgICAgICAgICAgIGNhbGxzLnB1c2gobmFtZSk7CisgICAgICAgICAgICBpZiAobmFtZSA9
PSAnb2JzZXJ2ZWRBdHRyaWJ1dGVzJykKKyAgICAgICAgICAgICAgICB0aHJvdyB7bmFtZTogJ2V4
cGVjdGVkRXJyb3InfTsKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CisgICAgICAg
IH0KKyAgICB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgtdGhyb3dp
bmctb2JzZXJ2ZWQtYXR0cmlidXRlcycsIHByb3h5KTsgfSk7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhjYWxscywgWydwcm90b3R5cGUnLCAnb2JzZXJ2ZWRBdHRyaWJ1dGVzJ10sCisgICAgICAg
ICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCBnZXQgInByb3RvdHlwZSIgYW5kICJvYnNlcnZl
ZEF0dHJpYnV0ZXMiIG9uIHRoZSBjb25zdHJ1Y3RvcicpOworfSwgJ2N1c3RvbUVsZW1lbnRzLmRl
ZmluZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nIG9ic2Vy
dmVkQXR0cmlidXRlcyBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7CisKK3Rlc3QoZnVu
Y3Rpb24gKCkgeworICAgIHZhciBjb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHt9CisgICAgY29u
c3RydWN0b3IucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayA9IGZ1bmN0aW9uICgp
IHsgfTsKKyAgICB2YXIgY2FsbHMgPSBbXTsKKyAgICB2YXIgcHJveHkgPSBuZXcgUHJveHkoY29u
c3RydWN0b3IsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lKSB7CisgICAg
ICAgICAgICBjYWxscy5wdXNoKG5hbWUpOworICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ29ic2Vy
dmVkQXR0cmlidXRlcycpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICBy
ZXR1cm4gdGFyZ2V0W25hbWVdOworICAgICAgICB9CisgICAgfSk7CisgICAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVm
aW5lKCdlbGVtZW50LXdpdGgtaW52YWxpZC1vYnNlcnZlZC1hdHRyaWJ1dGVzJywgcHJveHkpOyB9
KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBbJ3Byb3RvdHlwZScsICdvYnNlcnZl
ZEF0dHJpYnV0ZXMnXSwKKyAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IGdldCAi
cHJvdG90eXBlIiBhbmQgIm9ic2VydmVkQXR0cmlidXRlcyIgb24gdGhlIGNvbnN0cnVjdG9yJyk7
Cit9LCAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhy
b3duIHdoaWxlIGNvbnZlcnRpbmcgdGhlIHZhbHVlIG9mIG9ic2VydmVkQXR0cmlidXRlcyB0byBz
ZXF1ZW5jZTxET01TdHJpbmc+Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBjb25z
dHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHt9CisgICAgY29uc3RydWN0b3IucHJvdG90eXBlLmF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHsgfTsKKyAgICBjb25zdHJ1Y3Rvci5v
YnNlcnZlZEF0dHJpYnV0ZXMgPSB7W1N5bWJvbC5pdGVyYXRvcl06IGZ1bmN0aW9uICooKSB7Cisg
ICAgICAgIHlpZWxkICdmb28nOworICAgICAgICB0aHJvdyB7bmFtZTogJ1NvbWVFcnJvcid9Owor
ICAgIH19OworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1NvbWVFcnJvcid9LCBmdW5jdGlv
biAoKSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRoLWdlbmVyYXRvci1vYnNl
cnZlZC1hdHRyaWJ1dGVzJywgY29uc3RydWN0b3IpOyB9KTsKK30sICdjdXN0b21FbGVtZW50cy5k
ZWZpbmUgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgaXRlcmF0aW5nIG92
ZXIgb2JzZXJ2ZWRBdHRyaWJ1dGVzIHRvIHNlcXVlbmNlPERPTVN0cmluZz4nKTsKKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgdmFyIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge30KKyAgICBj
b25zdHJ1Y3Rvci5wcm90b3R5cGUuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrID0gZnVuY3Rpb24g
KCkgeyB9OworICAgIGNvbnN0cnVjdG9yLm9ic2VydmVkQXR0cmlidXRlcyA9IHtbU3ltYm9sLml0
ZXJhdG9yXTogMX07CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1
bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgtb2JzZXJ2ZWQt
YXR0cmlidXRlcy13aXRoLXVuY2FsbGFibGUtaXRlcmF0b3InLCBjb25zdHJ1Y3Rvcik7IH0pOwor
fSwgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93
biB3aGlsZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVyYXRvciBvbiBvYnNlcnZlZEF0dHJpYnV0ZXMn
KTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24g
KCkge30KKyAgICBjb25zdHJ1Y3Rvci5vYnNlcnZlZEF0dHJpYnV0ZXMgPSAxOworICAgIGN1c3Rv
bUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRob3V0LWNhbGxiYWNrLXdpdGgtaW52YWxpZC1v
YnNlcnZlZC1hdHRyaWJ1dGVzJywgY29uc3RydWN0b3IpOworfSwgJ2N1c3RvbUVsZW1lbnRzLmRl
ZmluZSBtdXN0IG5vdCB0aHJvdyBldmVuIGlmICJvYnNlcnZlZEF0dHJpYnV0ZXMiIGZhaWxzIHRv
IGNvbnZlcnQgaWYgImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIgaXMgbm90IGRlZmluZWQnKTsK
KwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMg
SFRNTEVsZW1lbnQge307CisgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxl
bWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICB2YXIgaW5zdGFuY2UgPSBuZXcgTXlDdXN0
b21FbGVtZW50OworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21F
bGVtZW50LAorICAgICAgICAnQW4gaW5zdGFuY2Ugb2YgYSBjdXN0b20gSFRNTCBlbGVtZW50IGJl
IGFuIGluc3RhbmNlIG9mIHRoZSBhc3NvY2lhdGVkIGludGVyZmFjZScpOworCisgICAgYXNzZXJ0
X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwKKyAgICAgICAgJ0FuIGluc3Rh
bmNlIG9mIGEgY3VzdG9tIEhUTUwgZWxlbWVudCBtdXN0IGluaGVyaXQgZnJvbSBIVE1MRWxlbWVu
dCcpOworCisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdteS1jdXN0b20t
ZWxlbWVudCcsCisgICAgICAgICdBbiBpbnN0YW5jZSBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3Qg
dXNlIHRoZSBhc3NvY2lhdGVkIHRhZyBuYW1lJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGluc3Rh
bmNlLm5hbWVzcGFjZVVSSSwgJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLAorICAgICAg
ICAnQSBjdXN0b20gZWxlbWVudCBIVE1MIG11c3QgdXNlIEhUTUwgbmFtZXNwYWNlJyk7CisKK30s
ICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCBkZWZpbmUgYW4gaW5zdGFudGlhdGFibGUgY3Vz
dG9tIGVsZW1lbnQnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9DdXN0b21FbGVtZW50c1JlZ2lzdHJ5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0N1c3RvbUVs
ZW1lbnRzUmVnaXN0cnktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMzFjNTU5NWJkN2FiNmU2NzI2NjIxMjllMDQ2MDgzMWRiMDlhZGNlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMjAgKzAsMCBAQAotCi1QQVNTIEN1c3RvbUVsZW1lbnRzUmVnaXN0cnkgaW50ZXJm
YWNlIG11c3QgaGF2ZSBkZWZpbmUgYXMgYSBtZXRob2QgCi1QQVNTIGN1c3RvbUVsZW1lbnRzLmRl
ZmluZSBtdXN0IHRocm93IHdpdGggYW4gaW52YWxpZCBuYW1lIAotUEFTUyBjdXN0b21FbGVtZW50
cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjdXN0b20gZWxlbWVu
dCBvZiB0aGUgc2FtZSBuYW1lIAotUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJv
dyB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjdXN0b20gZWxlbWVudCB3aXRoIHRoZSBzYW1lIGNs
YXNzIAotUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuIHRoZSBlbGVt
ZW50IGludGVyZmFjZSBpcyBub3QgYSBjb25zdHJ1Y3RvciAKLVBBU1MgY3VzdG9tRWxlbWVudHMu
ZGVmaW5lIG11c3QgZ2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciAK
LVBBU1MgY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhy
b3duIHdoaWxlIGdldHRpbmcgInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhlIGNvbnN0cnVjdG9y
IAotUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuICJwcm90b3R5cGUi
IHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3QgYW4gb2JqZWN0IAotUEFTUyBjdXN0
b21FbGVtZW50cy5kZWZpbmUgbXVzdCBnZXQgY2FsbGJhY2tzIG9mIHRoZSBjb25zdHJ1Y3RvciBw
cm90b3R5cGUgCi1QQVNTIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhyb3cgYW4gZXhj
ZXB0aW9uIHRocm93biB3aGlsZSBnZXR0aW5nIGNhbGxiYWNrcyBvbiB0aGUgY29uc3RydWN0b3Ig
cHJvdG90eXBlIAotUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCByZXRocm93IGFuIGV4
Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyBhIGNhbGxiYWNrIHZhbHVlIHRvIEZ1bmN0
aW9uIGNhbGxiYWNrIHR5cGUgCi1QQVNTIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IGdldCAi
b2JzZXJ2ZWRBdHRyaWJ1dGVzIiBwcm9wZXJ0eSBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBl
IHdoZW4gImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIgaXMgcHJlc2VudCAKLVBBU1MgY3VzdG9t
RWxlbWVudHMuZGVmaW5lIG11c3QgcmV0aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGdl
dHRpbmcgb2JzZXJ2ZWRBdHRyaWJ1dGVzIG9uIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgCi1Q
QVNTIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93
biB3aGlsZSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSBvZiBvYnNlcnZlZEF0dHJpYnV0ZXMgdG8gc2Vx
dWVuY2U8RE9NU3RyaW5nPiAKLVBBU1MgY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgcmV0aHJv
dyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGl0ZXJhdGluZyBvdmVyIG9ic2VydmVkQXR0cmli
dXRlcyB0byBzZXF1ZW5jZTxET01TdHJpbmc+IAotUEFTUyBjdXN0b21FbGVtZW50cy5kZWZpbmUg
bXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgcmV0cmlldmluZyBTeW1ib2wu
aXRlcmF0b3Igb24gb2JzZXJ2ZWRBdHRyaWJ1dGVzIAotUEFTUyBjdXN0b21FbGVtZW50cy5kZWZp
bmUgbXVzdCBub3QgdGhyb3cgZXZlbiBpZiAib2JzZXJ2ZWRBdHRyaWJ1dGVzIiBmYWlscyB0byBj
b252ZXJ0IGlmICJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siIGlzIG5vdCBkZWZpbmVkIAotUEFT
UyBjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCBkZWZpbmUgYW4gaW5zdGFudGlhdGFibGUgY3Vz
dG9tIGVsZW1lbnQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL0N1c3RvbUVsZW1lbnRzUmVnaXN0cnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDBmNzNkZDM4N2YxYjMxNGI3YzcwYTA0ZDdjZTdiYWQ1NmQ1ZWQ3NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9DdXN0b21FbGVtZW50c1JlZ2lzdHJ5Lmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwyNzIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
PHRpdGxlPkN1c3RvbSBFbGVtZW50czogQ3VzdG9tRWxlbWVudHNSZWdpc3RyeSBpbnRlcmZhY2U8
L3RpdGxlPgotPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJt
YWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkN1
c3RvbUVsZW1lbnRzUmVnaXN0cnkgaW50ZXJmYWNlIG11c3QgZXhpc3QiPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5rIHJl
bD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImxvZyI+PC9kaXY+Ci08c2NyaXB0PgotCi10ZXN0KGZ1
bmN0aW9uICgpIHsKLSAgICBhc3NlcnRfdHJ1ZSgnZGVmaW5lJyBpbiBDdXN0b21FbGVtZW50c1Jl
Z2lzdHJ5LnByb3RvdHlwZSwgJyJkZWZpbmUiIGV4aXN0cyBvbiBDdXN0b21FbGVtZW50c1JlZ2lz
dHJ5LnByb3RvdHlwZScpOwotICAgIGFzc2VydF90cnVlKCdkZWZpbmUnIGluIGN1c3RvbUVsZW1l
bnRzLCAnImRlZmluZSIgZXhpc3RzIG9uIHdpbmRvdy5jdXN0b21FbGVtZW50cycpOwotfSwgJ0N1
c3RvbUVsZW1lbnRzUmVnaXN0cnkgaW50ZXJmYWNlIG11c3QgaGF2ZSBkZWZpbmUgYXMgYSBtZXRo
b2QnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4
dGVuZHMgSFRNTEVsZW1lbnQge307Ci0KLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50
YXhFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZShudWxsLCBNeUN1
c3RvbUVsZW1lbnQpOyB9LAotICAgICAgICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhy
b3cgYSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgaXMgbnVsbCcpOwotICAgIGFzc2VydF90
aHJvd3MoeyduYW1lJzogJ1N5bnRheEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVu
dHMuZGVmaW5lKCcnLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAotICAgICAgICAnY3VzdG9tRWxlbWVu
dHMuZGVmaW5lIG11c3QgdGhyb3cgYSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgaXMgZW1w
dHknKTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlv
biAoKSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnYWJjJywgTXlDdXN0b21FbGVtZW50KTsgfSwK
LSAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IGEgU3ludGF4RXJyb3Ig
aWYgdGhlIHRhZyBuYW1lIGRvZXMgbm90IGNvbnRhaW4gIi0iJyk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnU3ludGF4RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5k
ZWZpbmUoJ2EtQmMnLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAotICAgICAgICAnY3VzdG9tRWxlbWVu
dHMuZGVmaW5lIG11c3QgdGhyb3cgYSBTeW50YXhFcnJvciBpZiB0aGUgdGFnIG5hbWUgY29udGFp
bnMgYW4gdXBwZXIgY2FzZSBsZXR0ZXInKTsKLQotICAgIHZhciBidWlsdGluVGFnTmFtZXMgPSBb
Ci0gICAgICAgICdhbm5vdGF0aW9uLXhtbCcsCi0gICAgICAgICdjb2xvci1wcm9maWxlJywKLSAg
ICAgICAgJ2ZvbnQtZmFjZScsCi0gICAgICAgICdmb250LWZhY2Utc3JjJywKLSAgICAgICAgJ2Zv
bnQtZmFjZS11cmknLAotICAgICAgICAnZm9udC1mYWNlLWZvcm1hdCcsCi0gICAgICAgICdmb250
LWZhY2UtbmFtZScsCi0gICAgICAgICdtaXNzaW5nLWdseXBoJwotICAgIF07Ci0KLSAgICBmb3Ig
KHZhciB0YWdOYW1lIG9mIGJ1aWx0aW5UYWdOYW1lcykgewotICAgICAgICBhc3NlcnRfdGhyb3dz
KHsnbmFtZSc6ICdTeW50YXhFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGN1c3RvbUVsZW1lbnRzLmRl
ZmluZSh0YWdOYW1lLCBNeUN1c3RvbUVsZW1lbnQpOyB9LAotICAgICAgICAgICAgJ2N1c3RvbUVs
ZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IGEgU3ludGF4RXJyb3IgaWYgdGhlIHRhZyBuYW1lIGlz
ICInICsgdGFnTmFtZSArICciJyk7Ci0gICAgfQotCi19LCAnY3VzdG9tRWxlbWVudHMuZGVmaW5l
IG11c3QgdGhyb3cgd2l0aCBhbiBpbnZhbGlkIG5hbWUnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7
Ci0gICAgY2xhc3MgU29tZUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKLSAg
ICBjbGFzcyBPdGhlckN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKLQotICAg
IGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnc29tZS1jdXN0b20tZWxlbWVudCcsIFNvbWVDdXN0b21F
bGVtZW50KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9
LCBmdW5jdGlvbiAoKSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnc29tZS1jdXN0b20tZWxlbWVu
dCcsIE90aGVyQ3VzdG9tRWxlbWVudCk7IH0sCi0gICAgICAgICdjdXN0b21FbGVtZW50cy5kZWZp
bmUgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIGlmIHRoZSBzcGVjaWZpZWQgdGFnIG5h
bWUgaXMgYWxyZWFkeSB1c2VkJyk7Ci0KLX0sICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0
aHJvdyB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYSBjdXN0b20gZWxlbWVudCBvZiB0aGUgc2FtZSBu
YW1lJyk7Ci0KLXRlc3QoZnVuY3Rpb24gKCkgewotICAgIGNsYXNzIEFub3RoZXJDdXN0b21FbGVt
ZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge307Ci0KLSAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUo
J2Fub3RoZXItY3VzdG9tLWVsZW1lbnQnLCBBbm90aGVyQ3VzdG9tRWxlbWVudCk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBj
dXN0b21FbGVtZW50cy5kZWZpbmUoJ3NvbWUtb3RoZXItZWxlbWVudCcsIEFub3RoZXJDdXN0b21F
bGVtZW50KTsgfSwKLSAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IGEg
Tm90U3VwcG9ydGVkRXJyb3IgaWYgdGhlIHNwZWNpZmllZCBjbGFzcyBhbHJlYWR5IGRlZmluZXMg
YW4gZWxlbWVudCcpOwotCi19LCAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cgd2hl
biB0aGVyZSBpcyBhbHJlYWR5IGEgY3VzdG9tIGVsZW1lbnQgd2l0aCB0aGUgc2FtZSBjbGFzcycp
OwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBl
RXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2ludmFsaWQtZWxl
bWVudCcsIDEpOyB9LAotICAgICAgICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cg
YSBUeXBlRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpbnRlcmZhY2UgaXMgYSBudW1iZXInKTsKLSAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0
b21FbGVtZW50cy5kZWZpbmUoJ2ludmFsaWQtZWxlbWVudCcsICcxMjMnKTsgfSwKLSAgICAgICAg
J2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIGVs
ZW1lbnQgaW50ZXJmYWNlIGlzIGEgc3RyaW5nJyk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUn
OiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdpbnZh
bGlkLWVsZW1lbnQnLCB7fSk7IH0sCi0gICAgICAgICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVz
dCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSBlbGVtZW50IGludGVyZmFjZSBpcyBhbiBvYmpl
Y3QnKTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2ludmFsaWQtZWxlbWVudCcsIFtdKTsgfSwKLSAg
ICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4g
dGhlIGVsZW1lbnQgaW50ZXJmYWNlIGlzIGFuIGFycmF5Jyk7Ci19LCAnY3VzdG9tRWxlbWVudHMu
ZGVmaW5lIG11c3QgdGhyb3cgd2hlbiB0aGUgZWxlbWVudCBpbnRlcmZhY2UgaXMgbm90IGEgY29u
c3RydWN0b3InKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGNhbGxzID0gW107Ci0g
ICAgdmFyIHByb3h5ID0gbmV3IFByb3h5KGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQgeyB9LCB7
Ci0gICAgICAgIGdldDogZnVuY3Rpb24gKHRhcmdldCwgbmFtZSkgewotICAgICAgICAgICAgY2Fs
bHMucHVzaChuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07Ci0gICAgICAg
IH0KLSAgICB9KTsKLSAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ3Byb3h5LWVsZW1lbnQnLCBw
cm94eSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydwcm90b3R5cGUnXSk7Ci19
LCAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgZ2V0ICJwcm90b3R5cGUiIHByb3BlcnR5IG9m
IHRoZSBjb25zdHJ1Y3RvcicpOwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgcHJveHkg
PSBuZXcgUHJveHkoY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH0sIHsKLSAgICAgICAgZ2V0
OiBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lKSB7Ci0gICAgICAgICAgICB0aHJvdyB7bmFtZTogJ2V4
cGVjdGVkRXJyb3InfTsKLSAgICAgICAgfQotICAgIH0pOwotICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ2V4cGVjdGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZp
bmUoJ2VsZW1lbnQtd2l0aC1zdHJpbmctcHJvdG90eXBlJywgcHJveHkpOyB9KTsKLX0sICdjdXN0
b21FbGVtZW50cy5kZWZpbmUgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUg
Z2V0dGluZyAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3InKTsKLQotdGVz
dChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHJldHVybmVkVmFsdWU7Ci0gICAgdmFyIHByb3h5ID0g
bmV3IFByb3h5KGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQgeyB9LCB7Ci0gICAgICAgIGdldDog
ZnVuY3Rpb24gKHRhcmdldCwgbmFtZSkgeyByZXR1cm4gcmV0dXJuZWRWYWx1ZTsgfQotICAgIH0p
OwotCi0gICAgcmV0dXJuZWRWYWx1ZSA9IG51bGw7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUn
OiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVt
ZW50LXdpdGgtc3RyaW5nLXByb3RvdHlwZScsIHByb3h5KTsgfSwKLSAgICAgICAgJ2N1c3RvbUVs
ZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2YgdGhl
IGNvbnN0cnVjdG9yIGlzIG51bGwnKTsKLSAgICByZXR1cm5lZFZhbHVlID0gdW5kZWZpbmVkOwot
ICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGN1
c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRoLXN0cmluZy1wcm90b3R5cGUnLCBwcm94
eSk7IH0sCi0gICAgICAgICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCB0aHJvdyB3aGVuICJw
cm90b3R5cGUiIHByb3BlcnR5IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyB1bmRlZmluZWQnKTsKLSAg
ICByZXR1cm5lZFZhbHVlID0gJ2hlbGxvJzsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdU
eXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQt
d2l0aC1zdHJpbmctcHJvdG90eXBlJywgcHJveHkpOyB9LAotICAgICAgICAnY3VzdG9tRWxlbWVu
dHMuZGVmaW5lIG11c3QgdGhyb3cgd2hlbiAicHJvdG90eXBlIiBwcm9wZXJ0eSBvZiB0aGUgY29u
c3RydWN0b3IgaXMgYSBzdHJpbmcnKTsKLSAgICByZXR1cm5lZFZhbHVlID0gMTsKLSAgICBhc3Nl
cnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0b21FbGVt
ZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1zdHJpbmctcHJvdG90eXBlJywgcHJveHkpOyB9LAot
ICAgICAgICAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgdGhyb3cgd2hlbiAicHJvdG90eXBl
IiBwcm9wZXJ0eSBvZiB0aGUgY29uc3RydWN0b3IgaXMgYSBudW1iZXInKTsKLQotfSwgJ2N1c3Rv
bUVsZW1lbnRzLmRlZmluZSBtdXN0IHRocm93IHdoZW4gInByb3RvdHlwZSIgcHJvcGVydHkgb2Yg
dGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBhbiBvYmplY3QnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7
Ci0gICAgdmFyIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge30KLSAgICB2YXIgY2FsbHMgPSBb
XTsKLSAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUHJveHkoY29uc3RydWN0b3IucHJv
dG90eXBlLCB7Ci0gICAgICAgIGdldDogZnVuY3Rpb24gKHRhcmdldCwgbmFtZSkgewotICAgICAg
ICAgICAgY2FsbHMucHVzaChuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07
Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQt
d2l0aC1wcm94eS1wcm90b3R5cGUnLCBjb25zdHJ1Y3Rvcik7Ci0gICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhjYWxscywgWydjb25uZWN0ZWRDYWxsYmFjaycsICdkaXNjb25uZWN0ZWRDYWxsYmFjaycs
ICdhZG9wdGVkQ2FsbGJhY2snLCAnYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJ10pOwotfSwgJ2N1
c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IGdldCBjYWxsYmFja3Mgb2YgdGhlIGNvbnN0cnVjdG9y
IHByb3RvdHlwZScpOwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgY29uc3RydWN0b3Ig
PSBmdW5jdGlvbiAoKSB7fQotICAgIHZhciBjYWxscyA9IFtdOwotICAgIGNvbnN0cnVjdG9yLnBy
b3RvdHlwZSA9IG5ldyBQcm94eShjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHsKLSAgICAgICAgZ2V0
OiBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lKSB7Ci0gICAgICAgICAgICBjYWxscy5wdXNoKG5hbWUp
OwotICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ2Rpc2Nvbm5lY3RlZENhbGxiYWNrJykKLSAgICAg
ICAgICAgICAgICB0aHJvdyB7bmFtZTogJ2V4cGVjdGVkRXJyb3InfTsKLSAgICAgICAgICAgIHJl
dHVybiB0YXJnZXRbbmFtZV07Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dz
KHsnbmFtZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMu
ZGVmaW5lKCdlbGVtZW50LXdpdGgtdGhyb3dpbmctY2FsbGJhY2snLCBjb25zdHJ1Y3Rvcik7IH0p
OwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFsnY29ubmVjdGVkQ2FsbGJhY2snLCAn
ZGlzY29ubmVjdGVkQ2FsbGJhY2snXSwKLSAgICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBt
dXN0IG5vdCBnZXQgY2FsbGJhY2tzIGFmdGVyIG9uZSBvZiB0aGUgZ2V0IHRocm93cycpOwotfSwg
J2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93biB3
aGlsZSBnZXR0aW5nIGNhbGxiYWNrcyBvbiB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlJyk7Ci0K
LXRlc3QoZnVuY3Rpb24gKCkgewotICAgIHZhciBjb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHt9
Ci0gICAgdmFyIGNhbGxzID0gW107Ci0gICAgY29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFBy
b3h5KGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgewotICAgICAgICBnZXQ6IGZ1bmN0aW9uICh0YXJn
ZXQsIG5hbWUpIHsKLSAgICAgICAgICAgIGNhbGxzLnB1c2gobmFtZSk7Ci0gICAgICAgICAgICBp
ZiAobmFtZSA9PSAnYWRvcHRlZENhbGxiYWNrJykKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07Ci0gICAgICAgIH0KLSAgICB9KTsKLSAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBjdXN0
b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC10aHJvd2luZy1jYWxsYmFjaycsIGNvbnN0
cnVjdG9yKTsgfSk7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydjb25uZWN0ZWRD
YWxsYmFjaycsICdkaXNjb25uZWN0ZWRDYWxsYmFjaycsICdhZG9wdGVkQ2FsbGJhY2snXSwKLSAg
ICAgICAgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IG5vdCBnZXQgY2FsbGJhY2tzIGFmdGVy
IG9uZSBvZiB0aGUgY29udmVyc2lvbiB0aHJvd3MnKTsKLX0sICdjdXN0b21FbGVtZW50cy5kZWZp
bmUgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gd2hpbGUgY29udmVydGluZyBhIGNh
bGxiYWNrIHZhbHVlIHRvIEZ1bmN0aW9uIGNhbGxiYWNrIHR5cGUnKTsKLQotdGVzdChmdW5jdGlv
biAoKSB7Ci0gICAgdmFyIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge30KLSAgICBjb25zdHJ1
Y3Rvci5wcm90b3R5cGUuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrID0gZnVuY3Rpb24gKCkgeyB9
OwotICAgIHZhciBwcm90b3R5cGVDYWxscyA9IFtdOwotICAgIHZhciBjYWxsT3JkZXIgPSAwOwot
ICAgIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBQcm94eShjb25zdHJ1Y3Rvci5wcm90b3R5
cGUsIHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lKSB7Ci0gICAgICAgICAg
ICBpZiAobmFtZSA9PSAncHJvdG90eXBlJyB8fCBuYW1lID09ICdvYnNlcnZlZEF0dHJpYnV0ZXMn
KQotICAgICAgICAgICAgICAgIHRocm93ICdVbmV4cGVjdGVkIGFjY2VzcyB0byBvYnNlcnZlZEF0
dHJpYnV0ZXMnOwotICAgICAgICAgICAgcHJvdG90eXBlQ2FsbHMucHVzaChjYWxsT3JkZXIrKyk7
ICAgIAotICAgICAgICAgICAgcHJvdG90eXBlQ2FsbHMucHVzaChuYW1lKTsKLSAgICAgICAgICAg
IHJldHVybiB0YXJnZXRbbmFtZV07Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgY29uc3Ry
dWN0b3JDYWxscyA9IFtdOwotICAgIHZhciBwcm94eSA9IG5ldyBQcm94eShjb25zdHJ1Y3Rvciwg
ewotICAgICAgICBnZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUpIHsKLSAgICAgICAgICAgIGNv
bnN0cnVjdG9yQ2FsbHMucHVzaChjYWxsT3JkZXIrKyk7ICAgIAotICAgICAgICAgICAgY29uc3Ry
dWN0b3JDYWxscy5wdXNoKG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsK
LSAgICAgICAgfQotICAgIH0pOwotICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13
aXRoLWF0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrJywgcHJveHkpOwotICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocHJvdG90eXBlQ2FsbHMsIFsxLCAnY29ubmVjdGVkQ2FsbGJhY2snLCAyLCAnZGlz
Y29ubmVjdGVkQ2FsbGJhY2snLCAzLCAnYWRvcHRlZENhbGxiYWNrJywgNCwgJ2F0dHJpYnV0ZUNo
YW5nZWRDYWxsYmFjayddKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNvbnN0cnVjdG9yQ2Fs
bHMsIFswLCAncHJvdG90eXBlJywgNSwgJ29ic2VydmVkQXR0cmlidXRlcyddKTsKLX0sICdjdXN0
b21FbGVtZW50cy5kZWZpbmUgbXVzdCBnZXQgIm9ic2VydmVkQXR0cmlidXRlcyIgcHJvcGVydHkg
b24gdGhlIGNvbnN0cnVjdG9yIHByb3RvdHlwZSB3aGVuICJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2siIGlzIHByZXNlbnQnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGNvbnN0cnVj
dG9yID0gZnVuY3Rpb24gKCkge30KLSAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuYXR0cmlidXRl
Q2hhbmdlZENhbGxiYWNrID0gZnVuY3Rpb24gKCkgeyB9OwotICAgIHZhciBjYWxscyA9IFtdOwot
ICAgIHZhciBwcm94eSA9IG5ldyBQcm94eShjb25zdHJ1Y3RvciwgewotICAgICAgICBnZXQ6IGZ1
bmN0aW9uICh0YXJnZXQsIG5hbWUpIHsKLSAgICAgICAgICAgIGNhbGxzLnB1c2gobmFtZSk7Ci0g
ICAgICAgICAgICBpZiAobmFtZSA9PSAnb2JzZXJ2ZWRBdHRyaWJ1dGVzJykKLSAgICAgICAgICAg
ICAgICB0aHJvdyB7bmFtZTogJ2V4cGVjdGVkRXJyb3InfTsKLSAgICAgICAgICAgIHJldHVybiB0
YXJnZXRbbmFtZV07Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKHsnbmFt
ZSc6ICdleHBlY3RlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5l
KCdlbGVtZW50LXdpdGgtdGhyb3dpbmctb2JzZXJ2ZWQtYXR0cmlidXRlcycsIHByb3h5KTsgfSk7
Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgWydwcm90b3R5cGUnLCAnb2JzZXJ2ZWRB
dHRyaWJ1dGVzJ10sCi0gICAgICAgICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCBnZXQgInBy
b3RvdHlwZSIgYW5kICJvYnNlcnZlZEF0dHJpYnV0ZXMiIG9uIHRoZSBjb25zdHJ1Y3RvcicpOwot
fSwgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhyb3cgYW4gZXhjZXB0aW9uIHRocm93
biB3aGlsZSBnZXR0aW5nIG9ic2VydmVkQXR0cmlidXRlcyBvbiB0aGUgY29uc3RydWN0b3IgcHJv
dG90eXBlJyk7Ci0KLXRlc3QoZnVuY3Rpb24gKCkgewotICAgIHZhciBjb25zdHJ1Y3RvciA9IGZ1
bmN0aW9uICgpIHt9Ci0gICAgY29uc3RydWN0b3IucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRD
YWxsYmFjayA9IGZ1bmN0aW9uICgpIHsgfTsKLSAgICB2YXIgY2FsbHMgPSBbXTsKLSAgICB2YXIg
cHJveHkgPSBuZXcgUHJveHkoY29uc3RydWN0b3IsIHsKLSAgICAgICAgZ2V0OiBmdW5jdGlvbiAo
dGFyZ2V0LCBuYW1lKSB7Ci0gICAgICAgICAgICBjYWxscy5wdXNoKG5hbWUpOwotICAgICAgICAg
ICAgaWYgKG5hbWUgPT0gJ29ic2VydmVkQXR0cmlidXRlcycpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdOwotICAgICAgICB9Ci0gICAg
fSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgp
IHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgtaW52YWxpZC1vYnNlcnZlZC1h
dHRyaWJ1dGVzJywgcHJveHkpOyB9KTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxzLCBb
J3Byb3RvdHlwZScsICdvYnNlcnZlZEF0dHJpYnV0ZXMnXSwKLSAgICAgICAgJ2N1c3RvbUVsZW1l
bnRzLmRlZmluZSBtdXN0IGdldCAicHJvdG90eXBlIiBhbmQgIm9ic2VydmVkQXR0cmlidXRlcyIg
b24gdGhlIGNvbnN0cnVjdG9yJyk7Ci19LCAnY3VzdG9tRWxlbWVudHMuZGVmaW5lIG11c3QgcmV0
aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIHdoaWxlIGNvbnZlcnRpbmcgdGhlIHZhbHVlIG9mIG9i
c2VydmVkQXR0cmlidXRlcyB0byBzZXF1ZW5jZTxET01TdHJpbmc+Jyk7Ci0KLXRlc3QoZnVuY3Rp
b24gKCkgewotICAgIHZhciBjb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHt9Ci0gICAgY29uc3Ry
dWN0b3IucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHsg
fTsKLSAgICBjb25zdHJ1Y3Rvci5vYnNlcnZlZEF0dHJpYnV0ZXMgPSB7W1N5bWJvbC5pdGVyYXRv
cl06IGZ1bmN0aW9uICooKSB7Ci0gICAgICAgIHlpZWxkICdmb28nOwotICAgICAgICB0aHJvdyB7
bmFtZTogJ1NvbWVFcnJvcid9OwotICAgIH19OwotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzog
J1NvbWVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVu
dC13aXRoLWdlbmVyYXRvci1vYnNlcnZlZC1hdHRyaWJ1dGVzJywgY29uc3RydWN0b3IpOyB9KTsK
LX0sICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCByZXRocm93IGFuIGV4Y2VwdGlvbiB0aHJv
d24gd2hpbGUgaXRlcmF0aW5nIG92ZXIgb2JzZXJ2ZWRBdHRyaWJ1dGVzIHRvIHNlcXVlbmNlPERP
TVN0cmluZz4nKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGNvbnN0cnVjdG9yID0g
ZnVuY3Rpb24gKCkge30KLSAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuYXR0cmlidXRlQ2hhbmdl
ZENhbGxiYWNrID0gZnVuY3Rpb24gKCkgeyB9OwotICAgIGNvbnN0cnVjdG9yLm9ic2VydmVkQXR0
cmlidXRlcyA9IHtbU3ltYm9sLml0ZXJhdG9yXTogMX07Ci0gICAgYXNzZXJ0X3Rocm93cyh7J25h
bWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdl
bGVtZW50LXdpdGgtb2JzZXJ2ZWQtYXR0cmlidXRlcy13aXRoLXVuY2FsbGFibGUtaXRlcmF0b3In
LCBjb25zdHJ1Y3Rvcik7IH0pOwotfSwgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IHJldGhy
b3cgYW4gZXhjZXB0aW9uIHRocm93biB3aGlsZSByZXRyaWV2aW5nIFN5bWJvbC5pdGVyYXRvciBv
biBvYnNlcnZlZEF0dHJpYnV0ZXMnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGNv
bnN0cnVjdG9yID0gZnVuY3Rpb24gKCkge30KLSAgICBjb25zdHJ1Y3Rvci5vYnNlcnZlZEF0dHJp
YnV0ZXMgPSAxOwotICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRob3V0LWNh
bGxiYWNrLXdpdGgtaW52YWxpZC1vYnNlcnZlZC1hdHRyaWJ1dGVzJywgY29uc3RydWN0b3IpOwot
fSwgJ2N1c3RvbUVsZW1lbnRzLmRlZmluZSBtdXN0IG5vdCB0aHJvdyBldmVuIGlmICJvYnNlcnZl
ZEF0dHJpYnV0ZXMiIGZhaWxzIHRvIGNvbnZlcnQgaWYgImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFj
ayIgaXMgbm90IGRlZmluZWQnKTsKLQotdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgY2xhc3MgTXlD
dXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge307Ci0gICAgY3VzdG9tRWxlbWVudHMu
ZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7Ci0KLSAgICB2YXIg
aW5zdGFuY2UgPSBuZXcgTXlDdXN0b21FbGVtZW50OwotICAgIGFzc2VydF90cnVlKGluc3RhbmNl
IGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50LAotICAgICAgICAnQW4gaW5zdGFuY2Ugb2YgYSBj
dXN0b20gSFRNTCBlbGVtZW50IGJlIGFuIGluc3RhbmNlIG9mIHRoZSBhc3NvY2lhdGVkIGludGVy
ZmFjZScpOwotCi0gICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVu
dCwKLSAgICAgICAgJ0FuIGluc3RhbmNlIG9mIGEgY3VzdG9tIEhUTUwgZWxlbWVudCBtdXN0IGlu
aGVyaXQgZnJvbSBIVE1MRWxlbWVudCcpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5s
b2NhbE5hbWUsICdteS1jdXN0b20tZWxlbWVudCcsCi0gICAgICAgICdBbiBpbnN0YW5jZSBvZiBh
IGN1c3RvbSBlbGVtZW50IG11c3QgdXNlIHRoZSBhc3NvY2lhdGVkIHRhZyBuYW1lJyk7Ci0KLSAg
ICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLm5hbWVzcGFjZVVSSSwgJ2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnLAotICAgICAgICAnQSBjdXN0b20gZWxlbWVudCBIVE1MIG11c3QgdXNlIEhU
TUwgbmFtZXNwYWNlJyk7Ci0KLX0sICdjdXN0b21FbGVtZW50cy5kZWZpbmUgbXVzdCBkZWZpbmUg
YW4gaW5zdGFudGlhdGFibGUgY3VzdG9tIGVsZW1lbnQnKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvanMvZG9tL2ds
b2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQKaW5kZXggNDhjZWNhMmZjNGE1MmIyZjk2N2UwOGYxNjMyOThmYTk3MWU5YTRkOC4uYWJj
NDY0M2UyYzgzMzUxMjI2NjdjMjUxNTM4ZDU1MDBlYjk4MjVkYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9qcy9kb20vZ2xvYmFs
LWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMjYzLDExICsyNjMsMTEg
QEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0NyeXB0bycp
Lmhhc093blByb3BlcnR5KCdnZXQnKSBpcwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0NyeXB0bycpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQog
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0NyeXB0bycpLmVu
dW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdDcnlwdG8nKS5jb25maWd1cmFibGUgaXMgdHJ1ZQotUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRzUmVnaXN0cnknKS52YWx1
ZSBpcyBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Ci1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRWxlbWVudHNSZWdpc3RyeScpLmhhc093blByb3BlcnR5
KCdnZXQnKSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ0N1c3RvbUVsZW1lbnRzUmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMg
ZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0
b21FbGVtZW50c1JlZ2lzdHJ5JykuZW51bWVyYWJsZSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRzUmVnaXN0cnknKS5j
b25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRSZWdpc3RyeScpLnZhbHVlIGlzIEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1
c3RvbUVsZW1lbnRSZWdpc3RyeScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeScpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRSZWdpc3RyeScpLmVu
dW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUV2ZW50Jyku
dmFsdWUgaXMgQ3VzdG9tRXZlbnQKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdDdXN0b21FdmVudCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQog
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUV2ZW50
JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25zdHJ1
Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggNTYxNTRkMDM0OTVkNzZjNzRlN2Mz
ZWI4M2IxNTRlMmUyMGI2NGUzMS4uMGVjMGFmZGM0NjE5Zjg3NjZiOWUwOTc1ZTMwYWNiOTVhNDFm
OGUxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2pzL2RvbS9nbG9iYWwt
Y29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dApAQCAtMjk4LDExICsyOTgsMTEgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0NyeXB0bycpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcwogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0NyeXB0bycpLmhhc093blBy
b3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0NyeXB0bycpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8nKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3Rv
bUVsZW1lbnRzUmVnaXN0cnknKS52YWx1ZSBpcyBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Ci1QQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRWxlbWVudHNS
ZWdpc3RyeScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRzUmVnaXN0cnknKS5o
YXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5JykuZW51bWVyYWJsZSBp
cyBmYWxzZQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1
c3RvbUVsZW1lbnRzUmVnaXN0cnknKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRSZWdpc3RyeScp
LnZhbHVlIGlzIEN1c3RvbUVsZW1lbnRSZWdpc3RyeQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRSZWdpc3RyeScpLmhhc093blByb3Bl
cnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRSZWdpc3RyeScpLmhhc093blByb3BlcnR5KCdzZXQnKSBp
cyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1
c3RvbUVsZW1lbnRSZWdpc3RyeScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5j
b25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0N1c3RvbUV2ZW50JykudmFsdWUgaXMgQ3VzdG9tRXZlbnQKIFBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FdmVudCcpLmhhc093blBy
b3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0N1c3RvbUV2ZW50JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2pzL2RvbS9nbG9iYWwt
Y29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dAppbmRleCA2YTcwYjgzZTUyNDcyMjUzZTFiMTg2MjlhYWRlODkyOWRkNDUzY2I0Li5lM2Yx
YzI0ODNiNzliYzUwNDUzOTJhNTAyNDJiMDJjZjBjZjczMjdmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvanMvZG9t
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTI5OCwxMSAr
Mjk4LDExIEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdD
cnlwdG8nKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMg
ZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlw
dG8nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnQ3J5cHRvJykuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5
JykudmFsdWUgaXMgQ3VzdG9tRWxlbWVudHNSZWdpc3RyeQotUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRzUmVnaXN0cnknKS5oYXNPd25Q
cm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5JykuaGFzT3duUHJvcGVydHkoJ3Nl
dCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFs
LCAnQ3VzdG9tRWxlbWVudHNSZWdpc3RyeScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lz
dHJ5JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS52YWx1ZSBpcyBDdXN0b21F
bGVtZW50UmVnaXN0cnkKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFs
c2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21F
bGVtZW50UmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0
cnknKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5JykuY29uZmlndXJhYmxlIGlzIHRy
dWUKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21F
dmVudCcpLnZhbHVlIGlzIEN1c3RvbUV2ZW50CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRXZlbnQnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMg
ZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0
b21FdmVudCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXlvc2VtaXRlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3Jz
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXlvc2Vt
aXRlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDczNzY0Mzk2ZTk1MzE5MTIyMjI3NDUyOTM3NDRkYjE0YWQzNmYwNTcuLmU2YWUyMzQyOTIw
MGFjNDcyYjNmNDRkYzJjZmM3YmZmOWQ0MGY4NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy15b3NlbWl0ZS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMteW9zZW1pdGUvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTI5OCwx
MSArMjk4LDExIEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdDcnlwdG8nKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMKIFBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0Jykg
aXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdD
cnlwdG8nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnQ3J5cHRvJykuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lz
dHJ5JykudmFsdWUgaXMgQ3VzdG9tRWxlbWVudHNSZWdpc3RyeQotUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRzUmVnaXN0cnknKS5oYXNP
d25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5JykuaGFzT3duUHJvcGVydHko
J3NldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnQ3VzdG9tRWxlbWVudHNSZWdpc3RyeScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1Jl
Z2lzdHJ5JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS52YWx1ZSBpcyBDdXN0
b21FbGVtZW50UmVnaXN0cnkKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0
b21FbGVtZW50UmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVn
aXN0cnknKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5JykuY29uZmlndXJhYmxlIGlz
IHRydWUKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0
b21FdmVudCcpLnZhbHVlIGlzIEN1c3RvbUV2ZW50CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRXZlbnQnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0Jykg
aXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdD
dXN0b21FdmVudCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9nbG9i
YWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IGYxNDFiYTBmYTcz
NDJkZDM1OTQ3OThlODY3ZTViZDU1ZWMxNzk2MjAuLjg0NjZjNmRhYzRlYzY1MmZhODFmNWE0ZWIy
YzQ5YzExZjExNDEwYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9k
b20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQKQEAgLTI5OCwxMSArMjk4LDExIEBAIFBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8nKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0Jykg
aXMKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8n
KS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8nKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnQ3J5cHRvJykuY29uZmln
dXJhYmxlIGlzIHRydWUKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5JykudmFsdWUgaXMgQ3VzdG9tRWxlbWVudHNSZWdp
c3RyeQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3Rv
bUVsZW1lbnRzUmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1Jl
Z2lzdHJ5JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCi1QQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRWxlbWVudHNSZWdpc3RyeScpLmVu
dW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50
UmVnaXN0cnknKS52YWx1ZSBpcyBDdXN0b21FbGVtZW50UmVnaXN0cnkKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5o
YXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0
eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5JykuY29uZmlndXJhYmxlIGlzIHRydWUKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FdmVudCcpLnZhbHVlIGlzIEN1c3RvbUV2ZW50CiBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnQ3VzdG9tRXZlbnQn
KS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FdmVudCcpLmhhc093blByb3BlcnR5KCdzZXQn
KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2pzL2RvbS9n
bG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0
ZWQudHh0CmluZGV4IGI3YjVlY2FjNGU4OTU5NGY3MzM2YzgxNDRmNDdkYzhiMjI3MWFhNDEuLjdl
Zjk1OGQ5MjM1MjRmMjljMWM5OTdmMTllNzdhZTMzNDEzNThkODggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2dsb2Jh
bC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTE5OCwxMSArMTk4LDEx
IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8n
KS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdDcnlwdG8nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UK
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDcnlwdG8nKS5l
bnVtZXJhYmxlIGlzIGZhbHNlCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnQ3J5cHRvJykuY29uZmlndXJhYmxlIGlzIHRydWUKLVBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5JykudmFs
dWUgaXMgQ3VzdG9tRWxlbWVudHNSZWdpc3RyeQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0N1c3RvbUVsZW1lbnRzUmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0
eSgnZ2V0JykgaXMgZmFsc2UKLVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlz
IGZhbHNlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnQ3Vz
dG9tRWxlbWVudHNSZWdpc3RyeScpLmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50c1JlZ2lzdHJ5Jyku
Y29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS52YWx1ZSBpcyBDdXN0b21FbGVtZW50
UmVnaXN0cnkKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdD
dXN0b21FbGVtZW50UmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50
UmVnaXN0cnknKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FbGVtZW50UmVnaXN0cnknKS5l
bnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5JykuY29uZmlndXJhYmxlIGlzIHRydWUKIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FdmVudCcp
LnZhbHVlIGlzIEN1c3RvbUV2ZW50CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnQ3VzdG9tRXZlbnQnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UK
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdDdXN0b21FdmVu
dCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQo=
</data>
<flag name="review"
          id="310062"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="310089"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>