<?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>161470</bug_id>
          
          <creation_ts>2016-08-31 19:23:47 -0700</creation_ts>
          <short_desc>[JSC] Add initiator parameter to module pipeline</short_desc>
          <delta_ts>2016-08-31 20:53:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148897</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1225213</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-31 19:23:47 -0700</bug_when>
    <thetext>[JSC] Add initiator parameter to module pipeline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225218</commentid>
    <comment_count>1</comment_count>
      <attachid>287585</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-31 19:35:20 -0700</bug_when>
    <thetext>Created attachment 287585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225219</commentid>
    <comment_count>2</comment_count>
      <attachid>287585</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-31 19:49:54 -0700</bug_when>
    <thetext>Comment on attachment 287585
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        For example, &quot;nonce&quot;, &quot;crossorigin&quot; etc. attributes are shared in the fetching issued

typo, &quot;in the fetching&quot; =&gt; &quot;in the fetching requests&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225220</commentid>
    <comment_count>3</comment_count>
      <attachid>287585</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-31 20:00:26 -0700</bug_when>
    <thetext>Comment on attachment 287585
Patch

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

r=me

&gt; Source/WebCore/bindings/js/JSMainThreadExecState.h:95
&gt; +    static JSC::JSInternalPromise* loadModule(JSC::ExecState* exec, const String&amp; moduleName, JSC::JSValue initiator)

Please update this file&apos;s copyright before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225233</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-31 20:47:32 -0700</bug_when>
    <thetext>Oops, accidentally cleared r+. Land that manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225234</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-31 20:50:31 -0700</bug_when>
    <thetext>Committed r205278: &lt;http://trac.webkit.org/changeset/205278&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287585</attachid>
            <date>2016-08-31 19:35:20 -0700</date>
            <delta_ts>2016-08-31 20:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161470-20160831193307.patch</filename>
            <type>text/plain</type>
            <size>90571</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTZjYzlkYjQyODg1ZjU2NzJkNDgyY2Q5NjVhOTNiMzhhY2I0Yjk4Li4yZDAzM2ViNWI0NDlhMzVl
OTI1Nzk3ODFhOWRlMGZiNjVjMTIzMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2OSBAQAogMjAxNi0wOC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbSlNDXSBBZGQgaW5pdGlhdG9yIHBhcmFtZXRlciB0byBtb2R1bGUg
cGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MTQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBmZXRjaGluZyBzZW1hbnRpY3Mgb2YgdGhlIDxzY3JpcHQgdHlwZT0ibW9kdWxlIj4gdGFn
IGhhcyBwZXIgbW9kdWxlLXRhZyBjb250ZXh0LgorICAgICAgICBGb3IgZXhhbXBsZSwgIm5vbmNl
IiwgImNyb3Nzb3JpZ2luIiBldGMuIGF0dHJpYnV0ZXMgYXJlIHNoYXJlZCBpbiB0aGUgZmV0Y2hp
bmcgaXNzdWVkCisgICAgICAgIGZyb20gdGhlIG1vZHVsZS10YWcuIFRvIHRyYW5zZmVyIHRoaXMg
aW5mb3JtYXRpb24sIHdlIGFkZCBhIG5ldyBwYXJhbWV0ZXIgImluaXRpYXRvciIKKyAgICAgICAg
dG8gdGhlIG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuIFdlIGFyZSBwbGFubmluZyB0byB0cmFuc2Zl
ciBpbmZvcm1hdGlvbiBieSB0aGlzIHBhcmFtZXRlci4KKworICAgICAgICBBdCB0aGUgc2FtZSB0
aW1lLCB3ZSBhbHNvIHBlcmZvcm0gc29tZSBjbGVhbiB1cC4KKworICAgICAgICAtIFVzZSBhcnJv
dyBmdW5jdGlvbiBpbiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuanMuCisgICAgICAgIC0gUmVuYW1l
ICJSZXNvbHZlRGVwZW5kZW5jaWVzIiB0byAiU2F0aXNmeSIgdG8gYWxpZ24gdG8gdGhlIGxvYWRl
ciBzcGVjLgorCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzOgor
ICAgICAgICAobmV3UmVnaXN0cnlFbnRyeSk6CisgICAgICAgIChjb21taXRJbnN0YW50aWF0ZWQp
OgorICAgICAgICAocmVxdWVzdEZldGNoKToKKyAgICAgICAgKHJlcXVlc3RUcmFuc2xhdGUpOgor
ICAgICAgICAocmVxdWVzdEluc3RhbnRpYXRlKToKKyAgICAgICAgKHJlcXVlc3RTYXRpc2Z5KToK
KyAgICAgICAgKHJlcXVlc3RJbnN0YW50aWF0ZUFsbCk6CisgICAgICAgIChyZXF1ZXN0TGluayk6
CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKToKKyAgICAgICAgKHByb3ZpZGUpOgorICAgICAg
ICAobG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKHJlcXVlc3RSZXNvbHZlRGVwZW5k
ZW5jaWVzLik6IERlbGV0ZWQuCisgICAgICAgIChyZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyk6
IERlbGV0ZWQuCisgICAgICAgIChyZXF1ZXN0UmVhZHkpOiBEZWxldGVkLgorICAgICAgICAobGlu
ayk6IERlbGV0ZWQuCisgICAgICAgIChsb2FkTW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKGxp
bmtBbmRFdmFsdWF0ZU1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAg
ICAoR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKEdsb2JhbE9i
amVjdDo6bW9kdWxlTG9hZGVyRmV0Y2gpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5j
cHA6CisgICAgICAgIChKU0M6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6
OmxvYWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVM
b2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9h
ZGVyOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmZldGNoKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTG9hZGVyOjppbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVy
OjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9k
dWxlTG9hZGVyUHJvdG90eXBlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRlclBy
b3RvdHlwZUZldGNoKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlVHJhbnNs
YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlSW5zdGFudGlhdGUpOgor
ICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVFdmFsdWF0ZSk6CisKKzIwMTYtMDgt
MzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0pT
Q10gbGlua2luZyBhbmQgZXZhbHVhdGluZyB0aGUgbW9kdWxlcyBhcmUgZG9uZSBpbiBhIHN5bmMg
bWFubmVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjE0NjcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUwNzc3MjhmNjQwYjhhMWM0ZDJkYmIzN2RjYTBjZTE0NTll
YWRjNGEuLmEyYTQ4Yjc2NDY1YTljYWM1ODU5NDMyZjc1MjNiN2UyOGU3NjdkMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0wOC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgaW5pdGlhdG9yIHBhcmFtZXRlciB0
byBtb2R1bGUgcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIHVzZXItb2JzZXJ2YWJsZSBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
V2UgcmVuYW1lIEpTTW9kdWxlTG9hZGVyIHRvIFNjcmlwdE1vZHVsZUxvYWRlci4KKyAgICAgICAg
VGhlIG5hbWUgIkpTTW9kdWxlTG9hZGVyIiBpcyBtaXNsZWFkaW5nIHNpbmNlIGl0IHNlZW1zIGxp
a2UgdGhpcyBpcyBhIEpTIG9iamVjdC4KKyAgICAgICAgIk1vZHVsZUxvYWRlciIgaXMgbm90IGdv
b2Qgc2luY2UgdGhlcmUgaXMgQ1NTIG1vZHVsZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjptb2R1bGVMb2FkZXJSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjptb2R1bGVMb2FkZXJFdmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVh
dGVNb2R1bGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTW9kdWxlTG9hZGVyOjpKU01vZHVsZUxvYWRlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU01vZHVsZUxvYWRlcjo6ZmV0Y2gpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2R1
bGVMb2FkZXI6OmRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRNb2R1bGVMb2FkZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNb2R1bGVMb2FkZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9h
ZGVyOjpTY3JpcHRNb2R1bGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxl
TG9hZGVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6
ZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5oLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bW9kdWxl
TG9hZGVyKToKKwogMjAxNi0wOC0zMSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViS2l0IHNob3VsZCBzZXQgYSBzdWJzeXN0ZW0gZm9yIG9zX2xvZyBzbyBp
dCdzIGVhc2llciB0byBmaWx0ZXIgZm9yIFdlYktpdCBsb2cgbWVzc2FnZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpz
CmluZGV4IDY4NjFlNjQyYzdjY2QyOGE0OWUzMDhiMzJmMGRiNmZkZjE0YWM5NTUuLjI0ZDdmYWY0
ZWQ1MjE2MDllZjI3OWMzZGQzNDVlMmIxZmI2M2Y0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjksMTEg
KzY5LDExIEBAIGZ1bmN0aW9uIG5ld1JlZ2lzdHJ5RW50cnkoa2V5KQogICAgIC8vICAgICBiLiBJ
ZiB0aGUgc3RhdHVzIGlzIEluc3RhbnRpYXRlIGFuZCB0aGVyZSBpcyB0aGUgZW50cnkudHJhbnNs
YXRlIHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IGluc3RhbnRpYXRpbmcKICAgICAvLyAgICAg
ICAgdGhlIG1vZHVsZSByZWNvcmQuCiAgICAgLy8KLSAgICAvLyA0LiBSZXNvbHZlRGVwZW5kZW5j
aWVzIChub3QgaW4gdGhlIGRyYWZ0KSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2xvYWRlci9p
c3N1ZXMvNjgKKyAgICAvLyA0LiBTYXRpc2Z5IChub3QgaW4gdGhlIGRyYWZ0KSBodHRwczovL2dp
dGh1Yi5jb20vd2hhdHdnL2xvYWRlci9pc3N1ZXMvNjgKICAgICAvLyAgICAgUmVhZHkgdG8gcmVx
dWVzdCB0aGUgZGVwZW5kZW50IG1vZHVsZXMgKG9yIG5vdyByZXF1ZXN0aW5nICYgcmVzb2x2aW5n
KS4KICAgICAvLyAgICAgV2l0aG91dCB0aGlzIHN0YXRlLCB0aGUgY3VycmVudCBkcmFmdCBjYXVz
ZXMgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gdGhlcmUgaXMgY2lyY3VsYXIgZGVwZW5kZW5jeS4K
LSAgICAvLyAgICAgYS4gSWYgdGhlIHN0YXR1cyBpcyBSZXNvbHZlRGVwZW5kZW5jaWVzIGFuZCB0
aGVyZSBpcyBubyBlbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzIHByb21pc2UsIHRoZSBlbnRyeSBp
cyByZWFkeSB0byByZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMuCi0gICAgLy8gICAgIGIuIElmIHRo
ZSBzdGF0dXMgaXMgUmVzb2x2ZURlcGVuZGVuY2llcyBhbmQgdGhlcmUgaXMgdGhlIGVudHJ5LnJl
c29sdmVEZXBlbmRlbmNpZXMgcHJvbWlzZSwgdGhlIGVudHJ5IGlzIGp1c3QgcmVzb2x2aW5nCisg
ICAgLy8gICAgIGEuIElmIHRoZSBzdGF0dXMgaXMgU2F0aXNmeSBhbmQgdGhlcmUgaXMgbm8gZW50
cnkuc2F0aXNmeSBwcm9taXNlLCB0aGUgZW50cnkgaXMgcmVhZHkgdG8gcmVzb2x2ZSB0aGUgZGVw
ZW5kZW5jaWVzLgorICAgIC8vICAgICBiLiBJZiB0aGUgc3RhdHVzIGlzIFNhdGlzZnkgYW5kIHRo
ZXJlIGlzIHRoZSBlbnRyeS5zYXRpc2Z5IHByb21pc2UsIHRoZSBlbnRyeSBpcyBqdXN0IHJlc29s
dmluZwogICAgIC8vICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgogICAgIC8vCiAgICAgLy8gNS4g
TGluawpAQCAtODMsNyArODMsNyBAQCBmdW5jdGlvbiBuZXdSZWdpc3RyeUVudHJ5KGtleSkKICAg
ICAvLyA2LiBSZWFkeQogICAgIC8vICAgICBUaGUgbW9kdWxlIGlzIGxpbmtlZCwgc28gdGhlIG1v
ZHVsZSBpcyByZWFkeSB0byBiZSBleGVjdXRlZC4KICAgICAvLwotICAgIC8vIEVhY2ggcmVnaXN0
cnkgZW50cnkgaGFzIHRoZSA0IHByb21pc2VzOyAiZmV0Y2giLCAidHJhbnNsYXRlIiwgImluc3Rh
bnRpYXRlIiBhbmQgInJlc29sdmVEZXBlbmRlbmNpZXMiLgorICAgIC8vIEVhY2ggcmVnaXN0cnkg
ZW50cnkgaGFzIHRoZSA0IHByb21pc2VzOyAiZmV0Y2giLCAidHJhbnNsYXRlIiwgImluc3RhbnRp
YXRlIiBhbmQgInNhdGlzZnkiLgogICAgIC8vIFRoZXkgYXJlIGFzc2lnbmVkIHdoZW4gc3RhcnRp
bmcgdGhlIGVhY2ggcGhhc2UuIEFuZCB0aGV5IGFyZSBmdWxmaWxsZWQgd2hlbiB0aGUgZWFjaCBw
aGFzZSBpcyBjb21wbGV0ZWQuCiAgICAgLy8KICAgICAvLyBJbiB0aGUgY3VycmVudCBtb2R1bGUg
ZHJhZnQsIGxpbmtpbmcgd2lsbCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhlIHdob2xlIG1vZHVsZXMg
YXJlIGluc3RhbnRpYXRlZCBhbmQgdGhlIGRlcGVuZGVuY2llcyBhcmUgcmVzb2x2ZWQuCkBAIC0x
MDIsNyArMTAyLDcgQEAgZnVuY3Rpb24gbmV3UmVnaXN0cnlFbnRyeShrZXkpCiAgICAgICAgIGZl
dGNoOiBAdW5kZWZpbmVkLAogICAgICAgICB0cmFuc2xhdGU6IEB1bmRlZmluZWQsCiAgICAgICAg
IGluc3RhbnRpYXRlOiBAdW5kZWZpbmVkLAotICAgICAgICByZXNvbHZlRGVwZW5kZW5jaWVzOiBA
dW5kZWZpbmVkLAorICAgICAgICBzYXRpc2Z5OiBAdW5kZWZpbmVkLAogICAgICAgICBkZXBlbmRl
bmNpZXM6IFtdLCAvLyBUbyBrZWVwIHRoZSBtb2R1bGUgb3JkZXIsIHdlIHN0b3JlIHRoZSBtb2R1
bGUga2V5cyBpbiB0aGUgYXJyYXkuCiAgICAgICAgIGRlcGVuZGVuY2llc01hcDogQHVuZGVmaW5l
ZCwKICAgICAgICAgbW9kdWxlOiBAdW5kZWZpbmVkLCAvLyBKU01vZHVsZVJlY29yZApAQCAtMjAx
LDEzICsyMDEsMTMgQEAgZnVuY3Rpb24gY29tbWl0SW5zdGFudGlhdGVkKGVudHJ5LCBvcHRpb25h
bEluc3RhbmNlLCBzb3VyY2UpCiAgICAgICAgICAgICBrZXk6IGRlcEtleSwKICAgICAgICAgICAg
IHZhbHVlOiBAdW5kZWZpbmVkCiAgICAgICAgIH07Ci0gICAgICAgIEBwdXRCeVZhbERpcmVjdChk
ZXBlbmRlbmNpZXMsIGksIHBhaXIpOworICAgICAgICBkZXBlbmRlbmNpZXMuQHB1c2gocGFpcik7
CiAgICAgICAgIGRlcGVuZGVuY2llc01hcC5Ac2V0KGRlcEtleSwgcGFpcik7CiAgICAgfQogICAg
IGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llczsKICAgICBlbnRyeS5kZXBlbmRlbmNp
ZXNNYXAgPSBkZXBlbmRlbmNpZXNNYXA7CiAgICAgZW50cnkubW9kdWxlID0gbW9kdWxlUmVjb3Jk
OwotICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgQE1vZHVsZVJlc29sdmVEZXBlbmRlbmNp
ZXMpOworICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgQE1vZHVsZVNhdGlzZnkpOwogfQog
CiBmdW5jdGlvbiBpbnN0YW50aWF0aW9uKHJlc3VsdCwgc291cmNlLCBlbnRyeSkKQEAgLTIyMyw3
ICsyMjMsNyBAQCBmdW5jdGlvbiBpbnN0YW50aWF0aW9uKHJlc3VsdCwgc291cmNlLCBlbnRyeSkK
IAogLy8gTG9hZGVyLgogCi1mdW5jdGlvbiByZXF1ZXN0RmV0Y2goa2V5KQorZnVuY3Rpb24gcmVx
dWVzdEZldGNoKGtleSwgaW5pdGlhdG9yKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1
Yi5pby9sb2FkZXIvI3JlcXVlc3QtZmV0Y2gKIApAQCAtMjM5LDIzICsyMzksMjEgQEAgZnVuY3Rp
b24gcmVxdWVzdEZldGNoKGtleSkKICAgICBpZiAoZW50cnkuZmV0Y2gpCiAgICAgICAgIHJldHVy
biBlbnRyeS5mZXRjaDsKIAotICAgIHZhciBsb2FkZXIgPSB0aGlzOwotCiAgICAgLy8gSG9vayBw
b2ludC4KICAgICAvLyAyLiBMb2FkZXIuZmV0Y2gKICAgICAvLyAgICAgaHR0cHM6Ly93aGF0d2cu
Z2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1mZXRjaAogICAgIC8vICAgICBUYWtlIHRoZSBrZXkg
YW5kIGZldGNoIHRoZSByZXNvdXJjZSBhY3R1YWxseS4KICAgICAvLyAgICAgRm9yIGV4YW1wbGUs
IEphdmFTY3JpcHRDb3JlIHNoZWxsIGNhbiBwcm92aWRlIHRoZSBob29rIGZldGNoaW5nIHRoZSBy
ZXNvdXJjZQogICAgIC8vICAgICBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KLSAgICB2YXIg
ZmV0Y2hQcm9taXNlID0gdGhpcy5mZXRjaChrZXkpLnRoZW4oZnVuY3Rpb24gKHBheWxvYWQpIHsK
LSAgICAgICAgbG9hZGVyLnNldFN0YXRlVG9NYXgoZW50cnksIEBNb2R1bGVUcmFuc2xhdGUpOwor
ICAgIHZhciBmZXRjaFByb21pc2UgPSB0aGlzLmZldGNoKGtleSwgaW5pdGlhdG9yKS50aGVuKChw
YXlsb2FkKSA9PiB7CisgICAgICAgIHRoaXMuc2V0U3RhdGVUb01heChlbnRyeSwgQE1vZHVsZVRy
YW5zbGF0ZSk7CiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogICAgIH0pOwogICAgIGVudHJ5LmZl
dGNoID0gZmV0Y2hQcm9taXNlOwogICAgIHJldHVybiBmZXRjaFByb21pc2U7CiB9CiAKLWZ1bmN0
aW9uIHJlcXVlc3RUcmFuc2xhdGUoa2V5KQorZnVuY3Rpb24gcmVxdWVzdFRyYW5zbGF0ZShrZXks
IGluaXRpYXRvcikKIHsKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNy
ZXF1ZXN0LXRyYW5zbGF0ZQogCkBAIC0yNzEsMTUgKzI2OSwxNCBAQCBmdW5jdGlvbiByZXF1ZXN0
VHJhbnNsYXRlKGtleSkKICAgICBpZiAoZW50cnkudHJhbnNsYXRlKQogICAgICAgICByZXR1cm4g
ZW50cnkudHJhbnNsYXRlOwogCi0gICAgdmFyIGxvYWRlciA9IHRoaXM7Ci0gICAgdmFyIHRyYW5z
bGF0ZVByb21pc2UgPSB0aGlzLnJlcXVlc3RGZXRjaChrZXkpLnRoZW4oZnVuY3Rpb24gKHBheWxv
YWQpIHsKKyAgICB2YXIgdHJhbnNsYXRlUHJvbWlzZSA9IHRoaXMucmVxdWVzdEZldGNoKGtleSwg
aW5pdGlhdG9yKS50aGVuKChwYXlsb2FkKSA9PiB7CiAgICAgICAgIC8vIEhvb2sgcG9pbnQuCiAg
ICAgICAgIC8vIDMuIExvYWRlci50cmFuc2xhdGUKICAgICAgICAgLy8gICAgIGh0dHBzOi8vd2hh
dHdnLmdpdGh1Yi5pby9sb2FkZXIvI2Jyb3dzZXItdHJhbnNsYXRlCiAgICAgICAgIC8vICAgICBU
YWtlIHRoZSBrZXkgYW5kIHRoZSBmZXRjaGVkIHNvdXJjZSBjb2RlIGFuZCB0cmFuc2xhdGUgaXQg
dG8gdGhlIEVTNiBzb3VyY2UgY29kZS4KICAgICAgICAgLy8gICAgIFR5cGljYWxseSBpdCBpcyB1
c2VkIGJ5IHRoZSB0cmFuc3BpbGVycy4KLSAgICAgICAgcmV0dXJuIGxvYWRlci50cmFuc2xhdGUo
a2V5LCBwYXlsb2FkKS50aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsKLSAgICAgICAgICAgIGxvYWRl
ci5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBATW9kdWxlSW5zdGFudGlhdGUpOworICAgICAgICByZXR1
cm4gdGhpcy50cmFuc2xhdGUoa2V5LCBwYXlsb2FkLCBpbml0aWF0b3IpLnRoZW4oKHNvdXJjZSkg
PT4geworICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZVRvTWF4KGVudHJ5LCBATW9kdWxlSW5zdGFu
dGlhdGUpOwogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKICAgICAgICAgfSk7CiAgICAgfSk7
CkBAIC0yODcsNyArMjg0LDcgQEAgZnVuY3Rpb24gcmVxdWVzdFRyYW5zbGF0ZShrZXkpCiAgICAg
cmV0dXJuIHRyYW5zbGF0ZVByb21pc2U7CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0
ZShrZXkpCitmdW5jdGlvbiByZXF1ZXN0SW5zdGFudGlhdGUoa2V5LCBpbml0aWF0b3IpCiB7CiAg
ICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1pbnN0YW50aWF0
ZQogCkBAIC0zMDMsOCArMzAwLDcgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSkK
ICAgICBpZiAoZW50cnkuaW5zdGFudGlhdGUpCiAgICAgICAgIHJldHVybiBlbnRyeS5pbnN0YW50
aWF0ZTsKIAotICAgIHZhciBsb2FkZXIgPSB0aGlzOwotICAgIHZhciBpbnN0YW50aWF0ZVByb21p
c2UgPSB0aGlzLnJlcXVlc3RUcmFuc2xhdGUoa2V5KS50aGVuKGZ1bmN0aW9uIChzb3VyY2UpIHsK
KyAgICB2YXIgaW5zdGFudGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0VHJhbnNsYXRlKGtleSwg
aW5pdGlhdG9yKS50aGVuKChzb3VyY2UpID0+IHsKICAgICAgICAgLy8gSG9vayBwb2ludC4KICAg
ICAgICAgLy8gNC4gTG9hZGVyLmluc3RhbnRpYXRlCiAgICAgICAgIC8vICAgICBodHRwczovL3do
YXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93c2VyLWluc3RhbnRpYXRlCkBAIC0zMTIsOCArMzA4
LDggQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlKGtleSkKICAgICAgICAgLy8gICAgIGJ5
IHBhcnNpbmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4KICAgICAgICAgLy8gICAgIEl0IGhhcyB0
aGUgY2hhbmNlIHRvIHByb3ZpZGUgdGhlIG9wdGlvbmFsIG1vZHVsZSBpbnN0YW5jZSB0aGF0IGlz
IGRpZmZlcmVudCBmcm9tCiAgICAgICAgIC8vICAgICB0aGUgb3JkaW5hcnkgb25lLgotICAgICAg
ICByZXR1cm4gbG9hZGVyLmluc3RhbnRpYXRlKGtleSwgc291cmNlKS50aGVuKGZ1bmN0aW9uIChv
cHRpb25hbEluc3RhbmNlKSB7Ci0gICAgICAgICAgICBsb2FkZXIuY29tbWl0SW5zdGFudGlhdGVk
KGVudHJ5LCBvcHRpb25hbEluc3RhbmNlLCBzb3VyY2UpOworICAgICAgICByZXR1cm4gdGhpcy5p
bnN0YW50aWF0ZShrZXksIHNvdXJjZSwgaW5pdGlhdG9yKS50aGVuKChvcHRpb25hbEluc3RhbmNl
KSA9PiB7CisgICAgICAgICAgICB0aGlzLmNvbW1pdEluc3RhbnRpYXRlZChlbnRyeSwgb3B0aW9u
YWxJbnN0YW5jZSwgc291cmNlKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAg
fSk7CiAgICAgfSk7CkBAIC0zMjEsMTQgKzMxNywxNCBAQCBmdW5jdGlvbiByZXF1ZXN0SW5zdGFu
dGlhdGUoa2V5KQogICAgIHJldHVybiBpbnN0YW50aWF0ZVByb21pc2U7CiB9CiAKLWZ1bmN0aW9u
IHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKK2Z1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5
KGtleSwgaW5pdGlhdG9yKQogewogICAgIC8vIEZJWE1FOiBJbiB0aGUgc3BlYywgYWZ0ZXIgcmVx
dWVzdGluZyBpbnN0YW50aWF0aW9uLCB3ZSB3aWxsIHJlc29sdmUKICAgICAvLyB0aGUgZGVwZW5k
ZW5jaWVzIHdpdGhvdXQgYW55IHN0YXR1cyBjaGFuZ2UuIEFzIGEgcmVzdWx0LCB3aGVuIHRoZXJl
CiAgICAgLy8gaXMgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBpbnN0YW50aWF0aW9uIGlzIGRvbmUg
b25seSBvbmNlLCBidXQKICAgICAvLyByZXBlYXRlZGx5IHJlc29sdmluZyB0aGUgZGVwZW5kZW5j
aWVzLiBUaGlzIG1lYW5zIHRoYXQgaW5maW5pdGUKICAgICAvLyByZWN1cnNpb24gb2NjdXIgd2hl
biB0aGUgZ2l2ZW4gbW9kdWxlcyBoYXZlIGNpcmN1bGFyIGRlcGVuZGVuY3kuIFRvCi0gICAgLy8g
YXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIGludHJvZHVjZSBuZXcgc3RhdGUsICJSZXNvbHZlRGVw
ZW5kZW5jaWVzIi4gVGhpcyBtZWFucworICAgIC8vIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBp
bnRyb2R1Y2UgbmV3IHN0YXRlLCAiU2F0aXNmeSIuIFRoaXMgbWVhbnMKICAgICAvLyAiTm93IHRo
ZSBtb2R1bGUgaXMgaW5zdGFudGlhdGVkLCBzbyByZWFkeSB0byByZXNvbHZlIHRoZSBkZXBlbmRl
bmNpZXMKICAgICAvLyBvciBub3cgcmVzb2x2aW5nIHRoZW0iLgogICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS93aGF0d2cvbG9hZGVyL2lzc3Vlcy82OApAQCAtMzQyLDExICszMzgsMTAgQEAgZnVu
Y3Rpb24gcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KQogICAgICAgICByZXR1cm4gZGVm
ZXJyZWQuQHByb21pc2U7CiAgICAgfQogCi0gICAgaWYgKGVudHJ5LnJlc29sdmVEZXBlbmRlbmNp
ZXMpCi0gICAgICAgIHJldHVybiBlbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVzOworICAgIGlmIChl
bnRyeS5zYXRpc2Z5KQorICAgICAgICByZXR1cm4gZW50cnkuc2F0aXNmeTsKIAotICAgIHZhciBs
b2FkZXIgPSB0aGlzOwotICAgIHZhciByZXNvbHZlRGVwZW5kZW5jaWVzUHJvbWlzZSA9IHRoaXMu
cmVxdWVzdEluc3RhbnRpYXRlKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICB2YXIg
c2F0aXNmeVByb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGluaXRpYXRvciku
dGhlbigoZW50cnkpID0+IHsKICAgICAgICAgdmFyIGRlcExvYWRzID0gW107CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbnRyeS5kZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBwYWlyID0gZW50cnkuZGVwZW5kZW5jaWVzW2ld
OwpAQCAtMzU2LDggKzM1MSw4IEBAIGZ1bmN0aW9uIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVz
KGtleSkKICAgICAgICAgICAgIC8vICAgICBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVy
LyNicm93c2VyLXJlc29sdmUKICAgICAgICAgICAgIC8vICAgICBUYWtlIHRoZSBuYW1lIGFuZCBy
ZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0
aW9uLgogICAgICAgICAgICAgLy8gICAgIEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBh
bmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJjZS4KLSAgICAgICAgICAgIHZhciBwcm9t
aXNlID0gbG9hZGVyLnJlc29sdmUocGFpci5rZXksIGtleSkudGhlbihmdW5jdGlvbiAoZGVwS2V5
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGRlcEVudHJ5ID0gbG9hZGVyLmVuc3VyZVJlZ2lzdGVy
ZWQoZGVwS2V5KTsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5yZXNvbHZlKHBhaXIu
a2V5LCBrZXksIGluaXRpYXRvcikudGhlbigoZGVwS2V5KSA9PiB7CisgICAgICAgICAgICAgICAg
dmFyIGRlcEVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CiAKICAgICAgICAg
ICAgICAgICAvLyBSZWN1cnNpdmUgcmVzb2x2aW5nLiBUaGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMg
ZW50cnkgaXMgYmVpbmcgcmVzb2x2ZWQgb3IgYWxyZWFkeSByZXNvbHZlZC4KICAgICAgICAgICAg
ICAgICAvLyBTdG9wIHRyYWNpbmcgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KQEAgLTM2NSw0
NCArMzYwLDQ0IEBAIGZ1bmN0aW9uIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGtleSkKICAg
ICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBpbnN0YW50aWF0aW9uIGZv
ciB0aGUgZGVwZW5kZW50IG1vZHVsZS4KICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwg
cmVhY2hpbmcgaGVyZSwgdGhlIG1vZHVsZSBpcyBzdGFydGluZyByZXNvbHZpbmcgdGhlIGRlcGVu
ZGVuY2llcy4KICAgICAgICAgICAgICAgICAvLyBCdXQgdGhlIG1vZHVsZSBtYXkgb3IgbWF5IG5v
dCByZWFjaCB0aGUgaW5zdGFudGlhdGlvbiBwaGFzZSBpbiB0aGUgbG9hZGVyJ3MgcGlwZWxpbmUu
Ci0gICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2FpdCBmb3IgdGhlIFJlc29sdmVEZXBlbmRlbmNp
ZXMgZm9yIHRoaXMgbW9kdWxlLCBpdCBjb25zdHJ1Y3QgdGhlIGNpcmN1bGFyIHByb21pc2UgY2hh
aW4gYW5kCisgICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2FpdCBmb3IgdGhlIFNhdGlzZnkgZm9y
IHRoaXMgbW9kdWxlLCBpdCBjb25zdHJ1Y3QgdGhlIGNpcmN1bGFyIHByb21pc2UgY2hhaW4gYW5k
CiAgICAgICAgICAgICAgICAgLy8gcmVqZWN0ZWQgYnkgdGhlIFByb21pc2VzIHJ1bnRpbWUuIFNp
bmNlIG9ubHkgd2UgbmVlZCBpcyB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSwgaW5zdGVhZCBvZiB3
YWl0aW5nCi0gICAgICAgICAgICAgICAgLy8gdGhlIFJlc29sdmVEZXBlbmRlbmNpZXMgZm9yIHRo
aXMgbW9kdWxlLCB3ZSBqdXN0IHdhaXQgSW5zdGFudGlhdGUgZm9yIHRoaXMuCi0gICAgICAgICAg
ICAgICAgaWYgKGRlcEVudHJ5LnJlc29sdmVEZXBlbmRlbmNpZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGRlcEVudHJ5Lmluc3RhbnRpYXRlLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7
CisgICAgICAgICAgICAgICAgLy8gdGhlIFNhdGlzZnkgZm9yIHRoaXMgbW9kdWxlLCB3ZSBqdXN0
IHdhaXQgSW5zdGFudGlhdGUgZm9yIHRoaXMuCisgICAgICAgICAgICAgICAgaWYgKGRlcEVudHJ5
LnNhdGlzZnkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcEVudHJ5Lmluc3RhbnRp
YXRlLnRoZW4oKGVudHJ5KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVl
ID0gZW50cnkubW9kdWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5Owog
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzKGRlcEtleSkudGhl
bihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0
U2F0aXNmeShkZXBLZXksIGluaXRpYXRvcikudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgICAg
ICAgICAgICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwTG9hZHMsIGksIHByb21pc2UpOworICAgICAgICAg
ICAgZGVwTG9hZHMuQHB1c2gocHJvbWlzZSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4g
QEludGVybmFsUHJvbWlzZS5pbnRlcm5hbEFsbChkZXBMb2FkcykudGhlbihmdW5jdGlvbiAobW9k
dWxlcykgewotICAgICAgICAgICAgbG9hZGVyLnNldFN0YXRlVG9NYXgoZW50cnksIEBNb2R1bGVM
aW5rKTsKKyAgICAgICAgcmV0dXJuIEBJbnRlcm5hbFByb21pc2UuaW50ZXJuYWxBbGwoZGVwTG9h
ZHMpLnRoZW4oKG1vZHVsZXMpID0+IHsKKyAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVUb01heChl
bnRyeSwgQE1vZHVsZUxpbmspOwogICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICB9
KTsKICAgICB9KTsKIAotICAgIGVudHJ5LnJlc29sdmVEZXBlbmRlbmNpZXMgPSByZXNvbHZlRGVw
ZW5kZW5jaWVzUHJvbWlzZTsKLSAgICByZXR1cm4gcmVzb2x2ZURlcGVuZGVuY2llc1Byb21pc2U7
CisgICAgZW50cnkuc2F0aXNmeSA9IHNhdGlzZnlQcm9taXNlOworICAgIHJldHVybiBzYXRpc2Z5
UHJvbWlzZTsKIH0KIAotZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSkKK2Z1bmN0
aW9uIHJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXksIGluaXRpYXRvcikKIHsKICAgICAvLyBodHRw
czovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWluc3RhbnRpYXRlLWFsbAogCiAg
ICAgInVzZSBzdHJpY3QiOwogCi0gICAgcmV0dXJuIHRoaXMucmVxdWVzdFJlc29sdmVEZXBlbmRl
bmNpZXMoa2V5KTsKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShrZXksIGluaXRpYXRv
cik7CiB9CiAKLWZ1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSkKK2Z1bmN0aW9uIHJlcXVlc3RMaW5r
KGtleSwgaW5pdGlhdG9yKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI3JlcXVlc3QtbGluawogCkBAIC00MTEsMzIgKzQwNiwzMCBAQCBmdW5jdGlvbiByZXF1ZXN0
TGluayhrZXkpCiAgICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7CiAg
ICAgaWYgKGVudHJ5LnN0YXRlID4gQE1vZHVsZUxpbmspIHsKICAgICAgICAgdmFyIGRlZmVycmVk
ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBJbnRlcm5hbFByb21pc2UpOwotICAgICAgICBkZWZl
cnJlZC5AcmVzb2x2ZS5AY2FsbChAdW5kZWZpbmVkLCBlbnRyeS5tb2R1bGUpOworICAgICAgICBk
ZWZlcnJlZC5AcmVzb2x2ZS5AY2FsbChAdW5kZWZpbmVkLCBlbnRyeSk7CiAgICAgICAgIHJldHVy
biBkZWZlcnJlZC5AcHJvbWlzZTsKICAgICB9CiAKLSAgICB2YXIgbG9hZGVyID0gdGhpczsKLSAg
ICByZXR1cm4gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KS50aGVuKGZ1bmN0aW9uIChl
bnRyeSkgewotICAgICAgICBsb2FkZXIubGluayhlbnRyeSk7CisgICAgcmV0dXJuIHRoaXMucmVx
dWVzdEluc3RhbnRpYXRlQWxsKGtleSwgaW5pdGlhdG9yKS50aGVuKChlbnRyeSkgPT4geworICAg
ICAgICB0aGlzLmxpbmsoZW50cnksIGluaXRpYXRvcik7CiAgICAgICAgIHJldHVybiBlbnRyeTsK
ICAgICB9KTsKIH0KIAotZnVuY3Rpb24gcmVxdWVzdFJlYWR5KGtleSkKK2Z1bmN0aW9uIHJlcXVl
c3RSZWFkeShrZXksIGluaXRpYXRvcikKIHsKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIu
aW8vbG9hZGVyLyNyZXF1ZXN0LXJlYWR5CiAKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIg
bG9hZGVyID0gdGhpczsKLSAgICByZXR1cm4gdGhpcy5yZXF1ZXN0TGluayhrZXkpLnRoZW4oZnVu
Y3Rpb24gKGVudHJ5KSB7Ci0gICAgICAgIGxvYWRlci5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1v
ZHVsZSk7CisgICAgcmV0dXJuIHRoaXMucmVxdWVzdExpbmsoa2V5LCBpbml0aWF0b3IpLnRoZW4o
KGVudHJ5KSA9PiB7CisgICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihlbnRyeS5tb2R1bGUs
IGluaXRpYXRvcik7CiAgICAgfSk7CiB9CiAKIC8vIExpbmtpbmcgc2VtYW50aWNzLgogCi1mdW5j
dGlvbiBsaW5rKGVudHJ5KQorZnVuY3Rpb24gbGluayhlbnRyeSwgaW5pdGlhdG9yKQogewogICAg
IC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI2xpbmsKIApAQCAtNDU2LDE1ICs0
NDksMTUgQEAgZnVuY3Rpb24gbGluayhlbnRyeSkKICAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50
cnkuZGVwZW5kZW5jaWVzOwogICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNp
ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRl
bmNpZXNbaV07Ci0gICAgICAgIHRoaXMubGluayhwYWlyLnZhbHVlLnJlZ2lzdHJ5RW50cnkpOwor
ICAgICAgICB0aGlzLmxpbmsocGFpci52YWx1ZS5yZWdpc3RyeUVudHJ5LCBpbml0aWF0b3IpOwog
ICAgIH0KIAotICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1v
ZHVsZSk7CisgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9k
dWxlLCBpbml0aWF0b3IpOwogfQogCiAvLyBNb2R1bGUgc2VtYW50aWNzLgogCi1mdW5jdGlvbiBt
b2R1bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29yZCkKK2Z1bmN0aW9uIG1vZHVsZUV2YWx1YXRpb24o
bW9kdWxlUmVjb3JkLCBpbml0aWF0b3IpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KIApAQCAtNDgx
LDkgKzQ3NCw5IEBAIGZ1bmN0aW9uIG1vZHVsZUV2YWx1YXRpb24obW9kdWxlUmVjb3JkKQogICAg
IGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNbaV07CiAgICAgICAgIHZh
ciByZXF1aXJlZE1vZHVsZVJlY29yZCA9IHBhaXIudmFsdWU7Ci0gICAgICAgIHRoaXMubW9kdWxl
RXZhbHVhdGlvbihyZXF1aXJlZE1vZHVsZVJlY29yZCk7CisgICAgICAgIHRoaXMubW9kdWxlRXZh
bHVhdGlvbihyZXF1aXJlZE1vZHVsZVJlY29yZCwgaW5pdGlhdG9yKTsKICAgICB9Ci0gICAgdGhp
cy5ldmFsdWF0ZShlbnRyeS5rZXksIG1vZHVsZVJlY29yZCk7CisgICAgdGhpcy5ldmFsdWF0ZShl
bnRyeS5rZXksIG1vZHVsZVJlY29yZCwgaW5pdGlhdG9yKTsKIH0KIAogLy8gQVBJcyB0byBjb250
cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgpAQCAtNDk1LDE0ICs0ODgsMTQgQEAgZnVuY3Rpb24gcHJv
dmlkZShrZXksIHN0YWdlLCB2YWx1ZSkKICAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lz
dGVyZWQoa2V5KTsKIAogICAgIGlmIChzdGFnZSA9PT0gQE1vZHVsZUZldGNoKSB7Ci0gICAgICAg
IGlmIChlbnRyeS5zdGF0dXMgPiBATW9kdWxlRmV0Y2gpCisgICAgICAgIGlmIChlbnRyeS5zdGF0
ZSA+IEBNb2R1bGVGZXRjaCkKICAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1
ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgZmV0Y2hlZC4iKTsKICAgICAgICAgdGhpcy5mdWxmaWxs
RmV0Y2goZW50cnksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChz
dGFnZSA9PT0gQE1vZHVsZVRyYW5zbGF0ZSkgewotICAgICAgICBpZiAoZW50cnkuc3RhdHVzID4g
QE1vZHVsZVRyYW5zbGF0ZSkKKyAgICAgICAgaWYgKGVudHJ5LnN0YXRlID4gQE1vZHVsZVRyYW5z
bGF0ZSkKICAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxl
IGlzIGFscmVhZHkgdHJhbnNsYXRlZC4iKTsKICAgICAgICAgdGhpcy5mdWxmaWxsRmV0Y2goZW50
cnksIEB1bmRlZmluZWQpOwogICAgICAgICB0aGlzLmZ1bGZpbGxUcmFuc2xhdGUoZW50cnksIHZh
bHVlKTsKQEAgLTUxMCwxMyArNTAzLDEyIEBAIGZ1bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwg
dmFsdWUpCiAgICAgfQogCiAgICAgaWYgKHN0YWdlID09PSBATW9kdWxlSW5zdGFudGlhdGUpIHsK
LSAgICAgICAgaWYgKGVudHJ5LnN0YXR1cyA+IEBNb2R1bGVJbnN0YW50aWF0ZSkKKyAgICAgICAg
aWYgKGVudHJ5LnN0YXRlID4gQE1vZHVsZUluc3RhbnRpYXRlKQogICAgICAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBpbnN0YW50aWF0ZWQu
Iik7CiAgICAgICAgIHRoaXMuZnVsZmlsbEZldGNoKGVudHJ5LCBAdW5kZWZpbmVkKTsKICAgICAg
ICAgdGhpcy5mdWxmaWxsVHJhbnNsYXRlKGVudHJ5LCB2YWx1ZSk7Ci0gICAgICAgIHZhciBsb2Fk
ZXIgPSB0aGlzOwotICAgICAgICBlbnRyeS50cmFuc2xhdGUudGhlbihmdW5jdGlvbiAoc291cmNl
KSB7Ci0gICAgICAgICAgICBsb2FkZXIuZnVsZmlsbEluc3RhbnRpYXRlKGVudHJ5LCB2YWx1ZSwg
c291cmNlKTsKKyAgICAgICAgZW50cnkudHJhbnNsYXRlLnRoZW4oKHNvdXJjZSkgPT4geworICAg
ICAgICAgICAgdGhpcy5mdWxmaWxsSW5zdGFudGlhdGUoZW50cnksIHZhbHVlLCBzb3VyY2UpOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUyNCwzNyArNTE2LDM1IEBA
IGZ1bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwgdmFsdWUpCiAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSByZWFkeSB0byBiZSBleGVjdXRlZC4i
KTsKIH0KIAotZnVuY3Rpb24gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVy
cmVyKQorZnVuY3Rpb24gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVy
LCBpbml0aWF0b3IpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIGxvYWRlciA9IHRo
aXM7CiAgICAgLy8gTG9hZGVyLnJlc29sdmUgaG9vayBwb2ludC4KICAgICAvLyByZXNvbHZlOiBt
b2R1bGVOYW1lID0+IFByb21pc2UobW9kdWxlS2V5KQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5k
IHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9j
YXRpb24uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4g
dGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgotICAgIHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxl
TmFtZSwgcmVmZXJyZXIpLnRoZW4oZnVuY3Rpb24gKGtleSkgewotICAgICAgICByZXR1cm4gbG9h
ZGVyLnJlcXVlc3RSZWFkeShrZXkpOworICAgIHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFt
ZSwgcmVmZXJyZXIsIGluaXRpYXRvcikudGhlbigoa2V5KSA9PiB7CisgICAgICAgIHJldHVybiB0
aGlzLnJlcXVlc3RSZWFkeShrZXksIGluaXRpYXRvcik7CiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9u
IGxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIpCitmdW5jdGlvbiBsb2FkTW9kdWxlKG1v
ZHVsZU5hbWUsIHJlZmVycmVyLCBpbml0aWF0b3IpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0g
ICAgdmFyIGxvYWRlciA9IHRoaXM7CiAgICAgLy8gTG9hZGVyLnJlc29sdmUgaG9vayBwb2ludC4K
ICAgICAvLyByZXNvbHZlOiBtb2R1bGVOYW1lID0+IFByb21pc2UobW9kdWxlS2V5KQogICAgIC8v
IFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZv
ciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdGhlICJq
cXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgotICAgIHJldHVybiB0
aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgcmVmZXJyZXIpLnRoZW4oZnVuY3Rpb24gKGtleSkgewot
ICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpOwotICAgIH0p
LnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShtb2R1bGVO
YW1lLCByZWZlcnJlciwgaW5pdGlhdG9yKS50aGVuKChrZXkpID0+IHsKKyAgICAgICAgcmV0dXJu
IHRoaXMucmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSwgaW5pdGlhdG9yKTsKKyAgICB9KS50aGVu
KChlbnRyeSkgPT4gewogICAgICAgICByZXR1cm4gZW50cnkua2V5OwogICAgIH0pOwogfQogCi1m
dW5jdGlvbiBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoa2V5KQorZnVuY3Rpb24gbGlua0FuZEV2YWx1
YXRlTW9kdWxlKGtleSwgaW5pdGlhdG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIApAQCAtNTYy
LDYgKzU1Miw2IEBAIGZ1bmN0aW9uIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShrZXkpCiAgICAgaWYg
KGVudHJ5LnN0YXRlIDwgQE1vZHVsZUxpbmspCiAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIG5vdCBpbnN0YW50aWF0ZWQgeWV0LiIpOwogCi0gICAgdGhp
cy5saW5rKGVudHJ5KTsKLSAgICByZXR1cm4gdGhpcy5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1v
ZHVsZSk7CisgICAgdGhpcy5saW5rKGVudHJ5LCBpbml0aWF0b3IpOworICAgIHJldHVybiB0aGlz
Lm1vZHVsZUV2YWx1YXRpb24oZW50cnkubW9kdWxlLCBpbml0aWF0b3IpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCmluZGV4IDg0NDEzZDJlM2NlYWU3NGUzN2M5OGQ3ZTg0N2NkN2UwNzI5NjE0
OWEuLmM0ODRhYWEwMTEzNTA3YWVmZTY5ZDYwNDY1NTQ5NWU3N2EwNjc1OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9Nb2R1bGVGZXRjaC5z
ZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTTW9kdWxlTG9hZGVyOjpT
dGF0dXM6OkZldGNoKSkpOwogICAgIG1fTW9kdWxlVHJhbnNsYXRlLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNNb2R1bGVMb2FkZXI6OlN0YXR1czo6VHJhbnNsYXRl
KSkpOwogICAgIG1fTW9kdWxlSW5zdGFudGlhdGUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU01vZHVsZUxvYWRlcjo6U3RhdHVzOjpJbnN0YW50aWF0ZSkpKTsKLSAg
ICBtX01vZHVsZVJlc29sdmVEZXBlbmRlbmNpZXMuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU01vZHVsZUxvYWRlcjo6U3RhdHVzOjpSZXNvbHZlRGVwZW5kZW5jaWVz
KSkpOworICAgIG1fTW9kdWxlU2F0aXNmeS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTTW9kdWxlTG9hZGVyOjpTdGF0dXM6OlNhdGlzZnkpKSk7CiAgICAgbV9Nb2R1
bGVMaW5rLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNNb2R1bGVM
b2FkZXI6OlN0YXR1czo6TGluaykpKTsKICAgICBtX01vZHVsZVJlYWR5LnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNNb2R1bGVMb2FkZXI6OlN0YXR1czo6UmVhZHkp
KSk7CiAgICAgbV9wcm9taXNlU3RhdGVQZW5kaW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlBlbmRpbmcpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaAppbmRleCBhOWQ0OGNlZmZiMTllZTI3ZjM0Y2RkYjI2OWMwZTQ1NTE5YzdkNDQ4Li5j
MDhmZmMwNDFjNmJjZmIzMGIxZjcyZGMzMjg3OWMzNTI4NzVlZDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBtYWNybyhNb2R1
bGVGZXRjaCkgXAogICAgIG1hY3JvKE1vZHVsZVRyYW5zbGF0ZSkgXAogICAgIG1hY3JvKE1vZHVs
ZUluc3RhbnRpYXRlKSBcCi0gICAgbWFjcm8oTW9kdWxlUmVzb2x2ZURlcGVuZGVuY2llcykgXAor
ICAgIG1hY3JvKE1vZHVsZVNhdGlzZnkpIFwKICAgICBtYWNybyhNb2R1bGVMaW5rKSBcCiAgICAg
bWFjcm8oTW9kdWxlUmVhZHkpIFwKICAgICBtYWNybyhwcm9taXNlU3RhdGVQZW5kaW5nKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGU0OTQ5OGUyYjQ0NjgwNWFlMjBmMmQyOGI4OWI4OTc0YWQ0
MDI5MDEuLjExMDE5YzUxMzU3NGIwZmJmMmQ3NTczOTEyMzczNzUzNTgwNWVmZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC04OTYsOCArODk2LDggQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmco
KSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogICAgIH0KIAotICAgIHN0YXRp
YyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCos
IEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7Ci0gICAgc3Rh
dGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCos
IEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTSW50
ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0
YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0
KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIH07CiAK
IGNvbnN0IENsYXNzSW5mbyBHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgImdsb2JhbCIsICZKU0ds
b2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdsb2JhbE9i
amVjdCkgfTsKQEAgLTEwMjgsNyArMTAyOCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVzb2x2ZVBhdGgo
Y29uc3QgRGlyZWN0b3J5TmFtZSYgZGlyZWN0b3J5TmFtZSwgY29uc3QgTW9kdWxlTmFtZSYKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogR2xv
YmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleVZhbHVlLCBK
U1ZhbHVlIHJlZmVycmVyVmFsdWUpCitKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojpt
b2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleVZhbHVlLCBKU1ZhbHVlIHJlZmVy
cmVyVmFsdWUsIEpTVmFsdWUpCiB7CiAgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVm
ZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0KTsKICAgICBjb25zdCBJZGVudGlmaWVyIGtleSA9IGtleVZhbHVlLnRvUHJvcGVydHlLZXko
ZXhlYyk7CkBAIC0xMTMzLDcgKzExMzMsNyBAQCBzdGF0aWMgYm9vbCBmZXRjaE1vZHVsZUZyb21M
b2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+JgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleSkKK0pTSW50ZXJuYWxQcm9taXNlKiBH
bG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1
ZSkKIHsKICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwogICAgIFN0cmlu
ZyBtb2R1bGVLZXkgPSBrZXkudG9XVEZTdHJpbmcoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDE2MmJjMjkzYzYxZmVjYTQ4OTgyMDM1
ZTU2ZWY2NzkyNjNkNDQxNzMuLjRhMzBkNDVjMmE3YTY5YTdkM2EyODcwZDllNjU3NmRiOWU0N2Zk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBA
IC0xNTUsMjYgKzE1NSwyNiBAQCBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIHJlamVjdFByb21p
c2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHJldHVybiBk
ZWZlcnJlZC0+cHJvbWlzZSgpOwogfQogCi1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRB
bmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBy
ZWZlcnJlcikKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxl
KGNvbnN0IEpTTG9ja0hvbGRlciYsIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVl
IGluaXRpYXRvcikKIHsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+
bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIG1vZHVsZU5hbWUsIHJlZmVycmVyKTsKKyAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+bG9hZEFuZEV2YWx1YXRlTW9kdWxl
KGV4ZWMsIG1vZHVsZU5hbWUsIHJlZmVycmVyLCBpbml0aWF0b3IpOwogfQogCi1zdGF0aWMgSlNJ
bnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXIm
IGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVOYW1lLCBKU1ZhbHVlIGluaXRpYXRvcikKIHsKLSAgICByZXR1cm4gbG9hZEFuZEV2YWx1YXRl
TW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllclRvSlNWYWx1ZShleGVj
LT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIGxvYWRBbmRF
dmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJUb0pTVmFs
dWUoZXhlYy0+dm0oKSwgbW9kdWxlTmFtZSksIGpzVW5kZWZpbmVkKCksIGluaXRpYXRvcik7CiB9
CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUpCitKU0ludGVybmFsUHJvbWlzZSogbG9hZEFu
ZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1l
LCBKU1ZhbHVlIGluaXRpYXRvcikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVj
LT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKIAotICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVN
b2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpKTsKKyAgICByZXR1cm4gbG9hZEFuZEV2YWx1
YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSwgaW5pdGlhdG9yKTsKIH0KIAotSlNJ
bnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVh
dGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFs
dWUgaW5pdGlhdG9yKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIFJFTEVB
U0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRh
KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CkBAIC0xODksMjkgKzE4OSwyOSBAQCBKU0ludGVybmFs
UHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIHJlamVjdFByb21pc2UoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIAotICAgIHJldHVybiBsb2Fk
QW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZ2xvYmFsT2JqZWN0LCBrZXksIGpzVW5kZWZp
bmVkKCkpOworICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZ2xv
YmFsT2JqZWN0LCBrZXksIGpzVW5kZWZpbmVkKCksIGluaXRpYXRvcik7CiB9CiAKLXN0YXRpYyBK
U0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImLCBFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbW9kdWxlTmFt
ZSwgSlNWYWx1ZSByZWZlcnJlcikKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVs
ZShjb25zdCBKU0xvY2tIb2xkZXImLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1
ZSBpbml0aWF0b3IpCiB7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCkt
PmxvYWRNb2R1bGUoZXhlYywgbW9kdWxlTmFtZSwgcmVmZXJyZXIpOworICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5sb2FkTW9kdWxlKGV4ZWMsIG1vZHVsZU5hbWUsIHJl
ZmVycmVyLCBpbml0aWF0b3IpOwogfQogCi1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRN
b2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiBsb2NrLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCitzdGF0
aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiBsb2Nr
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZU5hbWUsIEpTVmFsdWUgaW5pdGlhdG9yKQogewotICAgIHJldHVybiBs
b2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllclRvSlNWYWx1ZShl
eGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIGxvYWRN
b2R1bGUobG9jaywgZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMt
PnZtKCksIG1vZHVsZU5hbWUpLCBqc1VuZGVmaW5lZCgpLCBpbml0aWF0b3IpOwogfQogCi1KU0lu
dGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
bW9kdWxlTmFtZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIGluaXRpYXRvcikKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKIAot
ICAgIHJldHVybiBsb2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSk7CisgICAgcmV0
dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBpbml0aWF0b3IpOwogfQog
Ci1KU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIGluaXRpYXRvcikKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52
bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwpAQCAtMjIyLDIxICsyMjIsMjIgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAog
ICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciBy
ZWdpc3RyeSBhcyB0aGUgZmV0Y2hlZCByZWdpc3RyeSBlbnRyeS4KKyAgICAvLyBGSVhNRTogSW50
cm9kdWNlIEpTU291cmNlQ29kZSBvYmplY3QgdG8gd3JhcCBhcm91bmQgdGhpcyBzb3VyY2UuCiAg
ICAgZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVjLCBrZXksIEpTTW9k
dWxlTG9hZGVyOjpTdGF0dXM6OkZldGNoLCBzb3VyY2UudmlldygpLnRvU3RyaW5nKCkpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2Uo
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKIAotICAgIHJldHVybiBsb2FkTW9kdWxlKGxvY2ssIGV4ZWMs
IGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gbG9hZE1vZHVs
ZShsb2NrLCBleGVjLCBnbG9iYWxPYmplY3QsIGtleSwganNVbmRlZmluZWQoKSwgaW5pdGlhdG9y
KTsKIH0KIAotSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCitKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBp
bml0aWF0b3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0Nv
bGxlY3RvckJ1c3koKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVs
ZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1
ZShleGVjLT52bSgpLCBtb2R1bGVLZXkpKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1
bGVMb2FkZXIoKS0+bGlua0FuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIGlkZW50aWZpZXJUb0pTVmFs
dWUoZXhlYy0+dm0oKSwgbW9kdWxlS2V5KSwgaW5pdGlhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5kZXgg
NWQ0MDQ1Y2MzZmVhNzgwYWViZDE4NmE1NTU4ZjRjMjRmMzIwN2MwNC4uMTEyYmNiN2IzMDUxZDI5
N2ZmM2I3NzI2M2Q3M2U1YmFhNTVhOTcyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uaApAQCAtNTgsMTUgKzU4LDE1IEBAIGlubGluZSBKU1ZhbHVlIHByb2Zp
bGVkRXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxpbmdSZWFzb24gcmVhc29uLCBjb25z
dCBTCiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb24s
IE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogLy8gTG9hZCB0aGUg
bW9kdWxlIHNvdXJjZSBhbmQgZXZhbHVhdGUgaXQuCi1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVy
bmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgbW9kdWxlTmFtZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKK0pTX0VY
UE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIGluaXRpYXRvciA9IGpz
VW5kZWZpbmVkKCkpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRB
bmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSBp
bml0aWF0b3IgPSBqc1VuZGVmaW5lZCgpKTsKIAogLy8gRmV0Y2ggdGhlIG1vZHVsZSBzb3VyY2Us
IGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIHJlY29yZC4KLUpTX0VYUE9SVF9QUklWQVRFIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVs
ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU0lu
dGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIG1vZHVs
ZU5hbWUsIEpTVmFsdWUgaW5pdGlhdG9yID0ganNVbmRlZmluZWQoKSk7CitKU19FWFBPUlRfUFJJ
VkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNWYWx1ZSBpbml0aWF0b3IgPSBqc1VuZGVmaW5lZCgpKTsKIAogLy8gTGluayBh
bmQgZXZhbHVhdGUgdGhlIGFscmVhZHkgbGlua2VkIG1vZHVsZS4gVGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQgaW4gYSBzeW5jIG1hbm5lci4KLUpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbGlua0Fu
ZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSk7
CitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgaW5pdGlhdG9yID0ganNV
bmRlZmluZWQoKSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmMGMwNmYzYmI2M2JmNjY5ZjYx
YWRkY2Q5MDczNTRmYzA2OTI2MzU5Li4xZDdiNDc0N2QxYWE4NDM5YmViYTI5YzhmMTEwNjRlNGE2
Y2I2OTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTE2NiwxOSArMTY2LDE5IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSB7CiAgICAgdHlwZWRlZiBib29sICgqU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dFB0cikoY29uc3QgSlNHbG9iYWxPYmplY3QqKTsKICAgICBTaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0UHRyIHNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQ7CiAKLSAg
ICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlclJlc29sdmVQdHIpKEpT
R2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1Zh
bHVlKTsKKyAgICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlclJlc29s
dmVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1Zh
bHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBNb2R1bGVMb2FkZXJSZXNvbHZlUHRyIG1vZHVs
ZUxvYWRlclJlc29sdmU7CiAKLSAgICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKk1vZHVs
ZUxvYWRlckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9h
ZGVyKiwgSlNWYWx1ZSk7CisgICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVM
b2FkZXJGZXRjaFB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRl
ciosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIE1vZHVsZUxvYWRlckZldGNoUHRyIG1vZHVsZUxv
YWRlckZldGNoOwogCi0gICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2Fk
ZXJUcmFuc2xhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2Fk
ZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAo
Kk1vZHVsZUxvYWRlclRyYW5zbGF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBK
U01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIE1vZHVsZUxv
YWRlclRyYW5zbGF0ZVB0ciBtb2R1bGVMb2FkZXJUcmFuc2xhdGU7CiAKLSAgICB0eXBlZGVmIEpT
SW50ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlckluc3RhbnRpYXRlUHRyKShKU0dsb2JhbE9i
amVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7Cisg
ICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJJbnN0YW50aWF0ZVB0
cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUs
IEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIE1vZHVsZUxvYWRlckluc3RhbnRpYXRlUHRyIG1vZHVs
ZUxvYWRlckluc3RhbnRpYXRlOwogCi0gICAgdHlwZWRlZiBKU1ZhbHVlICgqTW9kdWxlTG9hZGVy
RXZhbHVhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIq
LCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpNb2R1bGVMb2FkZXJF
dmFsdWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlcios
IEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIE1vZHVsZUxvYWRlckV2YWx1YXRlUHRy
IG1vZHVsZUxvYWRlckV2YWx1YXRlOwogCiAgICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZhdWx0TGFu
Z3VhZ2VGdW5jdGlvblB0cikoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCAwYjRjMjQ1OTQ2NzIzN2RjMGQ2YjgzNTliNjdjZDVh
YzRjYzc3MzNmLi4xMDkwZjhjMTgzODU5ZWNmNjAzOGI1NmYzZGVhMjc5NTRlZDY1ZjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OnByb3ZpZGUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGtleSwgU3RhdHVzIHN0YXR1cywgY29uCiAgICAgcmV0dXJuIGNhbGwo
ZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKIH0K
IAotSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1
bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIp
CitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwg
SlNWYWx1ZSBpbml0aWF0b3IpCiB7CiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpT
T2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5s
b2FkQW5kRXZhbHVhdGVNb2R1bGVQdWJsaWNOYW1lKCkpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKQEAgLTk2LDExICs5NiwxMiBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6
OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKG1vZHVsZU5h
bWUpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQocmVmZXJyZXIpOworICAgIGFyZ3VtZW50cy5hcHBl
bmQoaW5pdGlhdG9yKTsKIAogICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihj
YWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykp
OwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRNb2R1bGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpCitKU0lu
dGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgaW5pdGlhdG9y
KQogewogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkubG9hZE1vZHVsZVB1YmxpY05h
bWUoKSkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtMTEwLDExICsxMTEsMTIgQEAgSlNJ
bnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBtb2R1bGVOYW0KICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CiAgICAgYXJndW1lbnRzLmFwcGVuZChtb2R1bGVOYW1lKTsKICAgICBhcmd1bWVudHMuYXBwZW5k
KHJlZmVycmVyKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGluaXRpYXRvcik7CiAKICAgICByZXR1
cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZUxv
YWRlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1
bGVLZXkpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZUtleSwgSlNWYWx1ZSBpbml0aWF0b3IpCiB7CiAg
ICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5saW5rQW5kRXZhbHVhdGVNb2R1bGVQdWJs
aWNOYW1lKCkpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTEyMywzMSArMTI1LDMyIEBA
IEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgbW9kdWxlS2V5CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZChtb2R1bGVLZXkpOworICAgIGFyZ3VtZW50cy5h
cHBlbmQoaW5pdGlhdG9yKTsKIAogICAgIHJldHVybiBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cyk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNl
KiBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwg
SlNWYWx1ZSByZWZlcnJlcikKK0pTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVz
b2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNW
YWx1ZSBpbml0aWF0b3IpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3Rh
dGUoKSkKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtyZXNvbHZlXSAiLCBwcmludGFibGVNb2R1
bGVLZXkoZXhlYywgbmFtZSksICJcbiIpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNvbHZlKQotICAgICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVM
b2FkZXJSZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgdGhpcywgbmFtZSwgcmVmZXJyZXIpOwor
ICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5t
b2R1bGVMb2FkZXJSZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgdGhpcywgbmFtZSwgcmVmZXJy
ZXIsIGluaXRpYXRvcik7CiAgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQg
PSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsK
ICAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBuYW1lKTsKICAgICByZXR1cm4gZGVmZXJyZWQt
PnByb21pc2UoKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRj
aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5KQorSlNJbnRlcm5hbFByb21pc2UqIEpTTW9k
dWxlTG9hZGVyOjpmZXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIGlu
aXRpYXRvcikKIHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQog
ICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2ZldGNoXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZXhl
Yywga2V5KSwgIlxuIik7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckZldGNoKQotICAgICAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJGZXRjaChn
bG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIGtleSk7CisgICAgICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckZldGNoKGdsb2JhbE9i
amVjdCwgZXhlYywgdGhpcywga2V5LCBpbml0aWF0b3IpOwogICAgIEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4
ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgU3RyaW5nIG1vZHVsZUtleSA9IGtleS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CkBAIC0x
NjAsNDAgKzE2Myw0MCBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmZldGNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCiAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9t
aXNlKCk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6dHJhbnNsYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCkKK0pTSW50ZXJu
YWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6dHJhbnNsYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCwgSlNWYWx1ZSBpbml0aWF0b3IpCiB7CiAgICAgaWYg
KE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxvZygiTG9h
ZGVyIFt0cmFuc2xhdGVdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsK
IAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KS0+bW9kdWxlTG9hZGVyVHJhbnNsYXRlKQotICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJUcmFuc2xhdGUoZ2xvYmFsT2Jq
ZWN0LCBleGVjLCB0aGlzLCBrZXksIHBheWxvYWQpOworICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJUcmFuc2xhdGUoZ2xv
YmFsT2JqZWN0LCBleGVjLCB0aGlzLCBrZXksIHBheWxvYWQsIGluaXRpYXRvcik7CiAgICAgSlNJ
bnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICBkZWZlcnJlZC0+cmVzb2x2ZShl
eGVjLCBwYXlsb2FkKTsKICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKIH0KIAotSlNJ
bnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjppbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNvdXJjZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBKU01v
ZHVsZUxvYWRlcjo6aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBzb3VyY2UsIEpTVmFsdWUgaW5pdGlhdG9yKQogewogICAgIGlmIChPcHRpb25zOjpkdW1w
TW9kdWxlTG9hZGluZ1N0YXRlKCkpCiAgICAgICAgIGRhdGFMb2coIkxvYWRlciBbaW5zdGFudGlh
dGVdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKIAogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAg
ICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9h
ZGVySW5zdGFudGlhdGUpCi0gICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckluc3RhbnRpYXRlKGdsb2JhbE9iamVjdCwgZXhl
YywgdGhpcywga2V5LCBzb3VyY2UpOworICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJJbnN0YW50aWF0ZShnbG9iYWxPYmpl
Y3QsIGV4ZWMsIHRoaXMsIGtleSwgc291cmNlLCBpbml0aWF0b3IpOwogICAgIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNV
bmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAKLUpTVmFs
dWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXks
IEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFs
dWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZh
bHVlLCBKU1ZhbHVlIGluaXRpYXRvcikKIHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxv
YWRpbmdTdGF0ZSgpKQogICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBwcmlu
dGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CiAKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmIChnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRl
KQotICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5tb2R1bGVMb2FkZXJFdmFsdWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIGtleSwgbW9k
dWxlUmVjb3JkVmFsdWUpOworICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJFdmFsdWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMs
IHRoaXMsIGtleSwgbW9kdWxlUmVjb3JkVmFsdWUsIGluaXRpYXRvcik7CiAKICAgICBKU01vZHVs
ZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KG1v
ZHVsZVJlY29yZFZhbHVlKTsKICAgICBpZiAoIW1vZHVsZVJlY29yZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCmluZGV4IGRlOGUyODIxYmYwMjFh
Njg2MDMwZjQwNzI5NWZhYjBjMGEyYzI3ZTMuLjRlZmNjMDQzMDY0OTRjYzBkZGFhYjBjY2JjYzA1
Y2RjMGQzMDAwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBKU01vZHVsZUxvYWRlciA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgRmV0Y2ggPSAxLAogICAgICAgICBUcmFuc2xh
dGUgPSAyLAogICAgICAgICBJbnN0YW50aWF0ZSA9IDMsCi0gICAgICAgIFJlc29sdmVEZXBlbmRl
bmNpZXMgPSA0LAorICAgICAgICBTYXRpc2Z5ID0gNCwKICAgICAgICAgTGluayA9IDUsCiAgICAg
ICAgIFJlYWR5ID0gNiwKICAgICB9OwpAQCAtNjMsMTggKzYzLDE4IEBAIGNsYXNzIEpTTW9kdWxl
TG9hZGVyIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgLy8gQVBJcyB0byBjb250
cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgogICAgIEpTVmFsdWUgcHJvdmlkZShFeGVjU3RhdGUqLCBK
U1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJpbmcmKTsKLSAgICBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwg
SlNWYWx1ZSByZWZlcnJlcik7Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyKTsKLSAgICBKU1Zh
bHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZUtleSk7
CisgICAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgaW5pdGlhdG9y
KTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVl
IG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgaW5pdGlhdG9yKTsKKyAgICBK
U1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZUtl
eSwgSlNWYWx1ZSBpbml0aWF0b3IpOwogCiAgICAgLy8gUGxhdGZvcm0gZGVwZW5kZW50IGhvb2tl
ZCBBUElzLgotICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIGZldGNo
KEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5KTsKLSAgICBKU0ludGVybmFsUHJvbWlzZSogdHJhbnNs
YXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHBheWxvYWQpOwotICAgIEpTSW50
ZXJuYWxQcm9taXNlKiBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1
ZSBzb3VyY2UpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXNvbHZlKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBpbml0aWF0b3IpOworICAgIEpT
SW50ZXJuYWxQcm9taXNlKiBmZXRjaChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBp
bml0aWF0b3IpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiB0cmFuc2xhdGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBrZXksIEpTVmFsdWUgcGF5bG9hZCwgSlNWYWx1ZSBpbml0aWF0b3IpOworICAgIEpT
SW50ZXJuYWxQcm9taXNlKiBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBzb3VyY2UsIEpTVmFsdWUgaW5pdGlhdG9yKTsKIAogICAgIC8vIEFkZGl0aW9uYWwgcGxh
dGZvcm0gZGVwZW5kZW50IGhvb2tlZCBBUElzLgotICAgIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkKTsKKyAgICBKU1ZhbHVlIGV2
YWx1YXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNW
YWx1ZSBpbml0aWF0b3IpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAppbmRleCA5YWQzYzRjZDYxNjcxNjBm
NzcyMmU4Y2U3MTgyM2I1YjY1YTFiYTI4Li5mNGQ3MmY3MTNmMDE4ZjliNDY0MzViYWY3ZDczYWJm
Mzc5ZmRhZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKQEAgLTY2LDM2ICs2NiwzNiBAQCBjb25zdCBDbGFz
c0luZm8gTW9kdWxlTG9hZGVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAm
QmFzZTo6c19pbmZvLAogCiAvKiBTb3VyY2UgZm9yIE1vZHVsZUxvYWRlclByb3RvdHlwZS5sdXQu
aAogQGJlZ2luIG1vZHVsZUxvYWRlclByb3RvdHlwZVRhYmxlCi0gICAgc2V0U3RhdGVUb01heCAg
ICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAg
ICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCi0gICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCi0gICAgZm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgICAgIEpTQnVpbHRpbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAy
Ci0gICAgZnVsZmlsbEZldGNoICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVs
ZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbEluc3Rh
bnRpYXRlICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgY29tbWl0SW5zdGFudGlhdGVkICAg
ICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAzCi0gICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAg
IEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAzCi0gICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAgIEpTQnVpbHRp
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCi0gICAgcmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAg
cmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdFJl
c29sdmVEZXBlbmRlbmNpZXMgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdEluc3RhbnRpYXRl
QWxsICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdExpbmsgICAgICAgICAgICAgICAg
ICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIEpTQnVp
bHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCi0gICAgbGluayAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
ICAgc2V0U3RhdGVUb01heCAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbmV3
UmVnaXN0cnlFbnRyeSAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZW5zdXJlUmVn
aXN0ZXJlZCAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZm9yY2VGdWxmaWxsUHJv
bWlzZSAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEZldGNoICAgICAgICAg
ICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAg
ICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgICAgIEpTQnVpbHRp
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAzCisgICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAz
CisgICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAg
cmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVz
dEluc3RhbnRpYXRlICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdFNhdGlz
ZnkgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdEluc3RhbnRpYXRl
QWxsICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdExpbmsgICAgICAgICAgICAg
ICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAgICAg
IEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCisgICAgbGluayAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQnVp
bHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAyCiAgICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIG1vZHVsZUxvYWRl
clByb3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250RW51bXxGdW5jdGlv
biAyCi0gICAgbW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAg
ZXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUV2YWx1
YXRlICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgcHJvdmlk
ZSAgICAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCi0gICAgbG9hZEFuZEV2YWx1YXRl
TW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAg
ICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAyCi0gICAgbGlua0FuZEV2YWx1YXRlTW9kdWxlICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgICAgbW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAgIEpTQnVpbHRpbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCisgICAgZXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3Rv
dHlwZUV2YWx1YXRlICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisg
ICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgbG9hZE1vZHVs
ZSAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgbGlua0FuZEV2YWx1YXRl
TW9kdWxlICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcGFyc2VNb2R1bGUgICAgICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVBhcnNlTW9kdWxlICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3RlZE1vZHVsZXMgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCi0gICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxv
YWRlclByb3RvdHlwZUZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCi0gICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclBy
b3RvdHlwZVRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAy
Ci0gICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlw
ZUluc3RhbnRpYXRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAg
cmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29s
dmUgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZmV0Y2gg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUZldGNoICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgdHJhbnNsYXRlICAg
ICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVRyYW5zbGF0ZSAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAgaW5zdGFudGlhdGUgICAgICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUluc3RhbnRpYXRlICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiBAZW5kCiAqLwogCkBAIC0xODMsNyArMTgzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVSZXNv
bHZlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5h
bWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxv
YWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1
bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGxvYWRlci0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQo
MSksIGV4ZWMtPmFyZ3VtZW50KDIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlRmV0Y2goRXhlY1N0YXRlKiBleGVjKQpAQCAtMTk2LDcg
KzE5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90
eXBlRmV0Y2goRXhlY1N0YXRlKiBleGVjKQogICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBq
c0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5mZXRjaChleGVjLCBleGVjLT5h
cmd1bWVudCgwKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5mZXRjaChl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVUcmFuc2xhdGUoRXhl
Y1N0YXRlKiBleGVjKQpAQCAtMjA4LDcgKzIwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlVHJhbnNsYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGxvYWRlci0+dHJhbnNsYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVu
dCgxKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT50cmFuc2xhdGUoZXhl
YywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpLCBleGVjLT5hcmd1bWVudCgy
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3Rv
dHlwZUluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTIyMiw3ICsyMjIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZUluc3RhbnRpYXRl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWlj
Q2FzdDxKU01vZHVsZUxvYWRlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRl
cikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+aW5zdGFudGlhdGUoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShsb2FkZXItPmluc3RhbnRpYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1
bWVudCgxKSwgZXhlYy0+YXJndW1lbnQoMikpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LSBBZGRpdGlvbmFsIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtMjM1LDcgKzIzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyUHJvdG90eXBlRXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTTW9kdWxlTG9hZGVy
KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4oZXhlYy0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5ldmFsdWF0
ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZXZhbHVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQo
MCksIGV4ZWMtPmFyZ3VtZW50KDEpLCBleGVjLT5hcmd1bWVudCgyKSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzJiOTIxN2U0NmFlNDJlMDU4MGMx
ZGM4M2UwNzYyYmUyNjUyNjJhYS4uYWI2NjZiMzhlZjZmNmRlNDFjNmU4ZjMyYjFkZWY5MjQ4OWZm
MTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEyMDgsNyArMTIwOCw2IEBAIHNldChXZWJD
b3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pz
L0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIu
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAKQEAgLTEyNTcsNiArMTI1Niw3IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRHbG9iYWxP
YmplY3QuY3BwCisgICAgYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAogICAgIGJp
bmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAogICAgIGJpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9u
ZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzI5
YWE1YjZhNWQ5N2RmNzc5MzI0Njc5YTk5ZDM5OTY4NzFiN2NlZi4uNWU2NzcwZWIyNmY2ZGFkZjRi
Zjc2Njk0Y2Q1NTBiODBlZjQ2NzI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjA5MSw4ICs2MDkxLDggQEAKIAkJRTFGRjU3
QTYwRjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjU3QTUwRjAxMjU2QjAwODkxRUJC
IC8qIFRocmVhZEdsb2JhbERhdGEuY3BwICovOyB9OwogCQlFMUZGOEY2QzE4MERCNUJFMDAxMzI2
NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJRTFGRjhGNkQxODBEQjVCRTAwMTMyNjc0
IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaCAqLzsgfTsKLQkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpT
TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi87
IH07Ci0JCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1
RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi87IH07CisJCUUzODgzODk4MUJBRDE0NUYw
MEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlw
dE1vZHVsZUxvYWRlci5jcHAgKi87IH07CisJCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBT
Y3JpcHRNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIu
aCAqLzsgfTsKIAkJRTNGQTM4NjQxRDcxODEyRDAwQUE1OTUwIC8qIFBlbmRpbmdTY3JpcHRDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkEz
ODYxMUQ3MTZFNzYwMEFBNTk1MCAvKiBQZW5kaW5nU2NyaXB0Q2xpZW50LmggKi87IH07CiAJCUU0
MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxQzI3NDE3Q0U1
M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MDFFMEE0MUMzQzBCODMwMEYz
NEQxMCAvKiBTdHlsZUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQwMUUwQTMxQzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNjYwLDgg
KzEzNjYwLDggQEAKIAkJRTFGRjhGNjYxODA3NDYwODAwMTMyNjc0IC8qIEpTV2ViS2l0U3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRjhGNkIxODBEQjVC
RTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUxvYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzODgzODk1MUJBRDE0NUYwMEQ2
MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzg4Mzg5
NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRN
b2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9k
dWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRkEzODYxMUQ3MTZF
NzYwMEFBNTk1MCAvKiBQZW5kaW5nU2NyaXB0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBlbmRpbmdTY3JpcHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2Vy
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEl0ZXJhdG9y
QXNzZXJ0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDAxRTBBMzFDM0Mw
QjgzMDBGMzREMTAgLyogU3R5bGVDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3R5bGVDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTcz
LDggKzIwOTczLDggQEAKIAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmNwcCAqLywKIAkJCQk4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmggKi8sCiAJCQkJQjU2NTc2RTQxN0RBNTk5RjAwQTU2QkRDIC8q
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oICovLAotCQkJCUUzODgzODk0
MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi8sCi0JCQkJRTM4ODM4OTUx
QkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8sCisJCQkJRTM4ODM4OTQxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8sCisJCQkJRTM4ODM4OTUx
QkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovLAogCQkJCUM2RjQyMEEw
MTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suY3BwICovLAogCQkJCUM2RjQy
MEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQk3Qzkx
QTM4RDFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2RlT3JTdHJpbmcuY3BwICovLApAQCAtMjUwOTAs
NyArMjUwOTAsNyBAQAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQ
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNN
ZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTUxQzFGODU1NTAw
NjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMzg4Mzg5
OTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4NjYyOUQxMDlEQTJCNDgwMDk2MzNBNSAvKiBKU01vdXNlRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUM2RjQyMEEzMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9u
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUZDMDlEMUNDNjAwMDBCRTMyNSAv
KiBKU011dGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU1NTYsNiArMjU1NTYsNyBA
QAogCQkJCUNFMTI1MjQxMUExNkIxQjYwMDg2NDQ4MCAvKiBNZWRpYVBsYXllclNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTJFMkNBRkMxOUZGMDIwNzAwMUVFQjRGIC8qIE1lZGlhUHJvZHVjZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTJBMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1
ZXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RTE5NTkyQzBBMzlEQUNDMDAy
MjBGRTUgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEUxOTU5
MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUQzQTk0QTM5MTIyREFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODc3MCw3ICsyODc3MSw3IEBACiAJCQkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRG
IC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURFRERC
MEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxQURFRDQ3MEU3NkI4REQwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NjYyOUQyMDlEQTJCNDgw
MDk2MzNBNSAvKiBKU01vdXNlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGNDIwQTIx
NkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NURGMzFGQjA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAKaW5kZXggYzQxYmM3ZDk0N2NhNjhmZDBjNDljZjFjYTQ5MTcxYTdhMTBhOWFj
Mi4uNTVlNjFjZGJlYzZjNTk5MmUzYTY0ZGNhNzgyYjk4N2FmOTgwMDZlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMDcs
NyArMTA3LDYgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuY3BwIgogI2luY2x1ZGUgIkpTTXV0
YXRpb25DYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAiCkBAIC0xNDcsNiArMTQ2LDcg
QEAKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIlNjcmlwdEdsb2JhbE9iamVjdC5jcHAiCisjaW5j
bHVkZSAiU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5jcHAi
CiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCIKICNpbmNsdWRlICJXZWJDb3Jl
VHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggNjkwNzRmNzIzNWNhYzJmYmUxNDY2MjNkZTFjZGFm
MDY3OTYyOTIzMS4uMDgwMWRjNTA3ZmMzYjMyNmUxMjNmMGYxYWJjZDFlNzgyYjc2MmE1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0z
MiwxMyArMzIsMTMgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgotI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAj
aW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgpAQCAtMzIzLDI5ICszMjMsMjkgQEAgdm9pZCBKU0RPTVdp
bmRvd0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cq
IHdpbmRvdykKIH0KIAogCi1KU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6
Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBK
U0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5KQor
SlNDOjpKU0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJSZXNv
bHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1ZhbHVlIG1vZHVs
ZU5hbWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIGluaXRp
YXRvcikKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxK
U0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwogICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiBkb2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBleGVj
LCBtb2R1bGVMb2FkZXIsIG1vZHVsZU5hbWUsIGltcG9ydGVyTW9kdWxlS2V5KTsKKyAgICAgICAg
cmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIGV4
ZWMsIG1vZHVsZUxvYWRlciwgbW9kdWxlTmFtZSwgaW1wb3J0ZXJNb2R1bGVLZXksIGluaXRpYXRv
cik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAg
ICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywganNVbmRlZmluZWQoKSk7CiB9CiAKLUpT
Qzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2go
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5
KQorSlNDOjpKU0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVMb2FkZXJG
ZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpTQzo6SlNWYWx1ZSBtb2R1
bGVLZXksIEpTQzo6SlNWYWx1ZSBpbml0aWF0b3IpCiB7CiAgICAgSlNET01XaW5kb3dCYXNlKiB0
aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KTsK
ICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQo
KS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLT5m
ZXRjaChnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZUxvYWRlciwgbW9kdWxlS2V5KTsKKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+ZmV0Y2goZ2xvYmFsT2JqZWN0LCBl
eGVjLCBtb2R1bGVMb2FkZXIsIG1vZHVsZUtleSwgaW5pdGlhdG9yKTsKICAgICBKU0M6OkpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gZGVmZXJyZWQt
PnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAotSlNDOjpKU1ZhbHVlIEpTRE9NV2lu
ZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciogbW9kdWxl
TG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3Jk
KQorSlNDOjpKU1ZhbHVlIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZhbHVhdGUoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBK
U0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFsdWUgaW5pdGlhdG9yKQogewogICAg
IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFz
ZSo+KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0
aGlzT2JqZWN0LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50
LT5tb2R1bGVMb2FkZXIoKS0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2Fk
ZXIsIG1vZHVsZUtleSwgbW9kdWxlUmVjb3JkKTsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5t
b2R1bGVMb2FkZXIoKS0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIs
IG1vZHVsZUtleSwgbW9kdWxlUmVjb3JkLCBpbml0aWF0b3IpOwogICAgIHJldHVybiBKU0M6Ompz
VW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKaW5kZXggODBkOTYwOGZhNjAzMDdlMTYwMGZjMjFjOWFkODZmMmQ3ZDkzMmE0Yi4u
ZjVmM2JlMDUyM2U1OTY5YWQyZTM3MTYwZmJlNDBiY2M2NzJkYzM5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTc4LDkgKzc4LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU0M6OldhdGNocG9pbnRTZXQgbV93aW5kb3dDbG9z
ZVdhdGNocG9pbnRzOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIEpTQzo6SlNJbnRl
cm5hbFByb21pc2UqIG1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpK
U1ZhbHVlKTsKLSAgICAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxv
YWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNN
b2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUpOwotICAgICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7Cisg
ICAgICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJSZXNvbHZl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKKyAgICAgICAg
c3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CisgICAgICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbW9k
dWxlTG9hZGVyRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpT
VmFsdWUpOwogCiAgICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1fd3JhcHBlZDsKICAgICAgICAg
SlNET01XaW5kb3dTaGVsbCogbV9zaGVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKaW5kZXggNTk3Yzc3ZmU4MGVhMzk4ZTBlZDZh
MjVkNmJlYWY2YjViNDcxZTVkMC4uMTIwNDIyOWViOWFmNGViZGMxODJjNWQzNzlmNGViMmQ4ZmQ2
ODhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgKQEAgLTkyLDYgKzkyLDMwIEBAIGNsYXNzIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZSB7CiAgICAgICAgIHRhc2sucnVuKGV4ZWMpOwogICAgIH0KIAorICAgIHN0YXRpYyBKU0M6OkpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBpbml0aWF0b3IpCisgICAgeworICAgICAg
ICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOworICAgICAgICByZXR1
cm4gSlNDOjpsb2FkTW9kdWxlKGV4ZWMsIG1vZHVsZU5hbWUsIGluaXRpYXRvcik7CisgICAgfQor
CisgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlQ29kZSwgSlNDOjpKU1Zh
bHVlIGluaXRpYXRvcikKKyAgICB7CisgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJy
ZW50U3RhdGUoZXhlYyk7CisgICAgICAgIHJldHVybiBKU0M6OmxvYWRNb2R1bGUoZXhlYywgc291
cmNlQ29kZSwgaW5pdGlhdG9yKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGxp
bmtBbmRFdmFsdWF0ZU1vZHVsZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBpbml0aWF0b3IsIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAgeworICAgICAgICBKU01haW5UaHJl
YWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOworICAgICAgICBKU0M6OkpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBtb2R1bGVLZXksIGlu
aXRpYXRvcik7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAg
ICAgcmV0dXJuZWRFeGNlcHRpb24gPSBleGVjLT52bSgpLmV4Y2VwdGlvbigpOworICAgICAgICAg
ICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5k
ZWZpbmVkKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH0K
KwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgaW5zdHJ1bWVudEZ1
bmN0aW9uQ2FsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpDYWxsVHlwZSwgY29uc3Qg
SlNDOjpDYWxsRGF0YSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgaW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBK
U0M6OkNvbnN0cnVjdFR5cGUsIGNvbnN0IEpTQzo6Q29uc3RydWN0RGF0YSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYxMWIyNDQ5OWYzYWI0MDEyOTEyNjIzOTgxZmUxZDc4OGRmZTA3ZDQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmg+
Ci0jaW5jbHVkZSA8cnVudGltZS9KU01vZHVsZVJlY29yZC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxydW50aW1lL1N5bWJvbC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUpTTW9kdWxlTG9hZGVyOjpKU01vZHVsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1l
bnQpCi0gICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotewotfQotCi1KU0M6OkpTSW50ZXJuYWxQ
cm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlND
OjpKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5
KQotewotICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0M6
OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwot
Ci0gICAgLy8gV2UgdXNlIGEgU3ltYm9sIGFzIGEgc3BlY2lhbCBwdXJwb3NlOyBJdCBtZWFucyB0
aGlzIG1vZHVsZSBpcyBhbiBpbmxpbmUgbW9kdWxlLgotICAgIC8vIFNvIHRoZXJlIGlzIG5vIGNv
cnJlY3QgVVJMIHRvIHJldHJpZXZlIHRoZSBtb2R1bGUgc291cmNlIGNvZGUuIElmIHRoZSBtb2R1
bGUgbmFtZQotICAgIC8vIHZhbHVlIGlzIGEgU3ltYm9sLCBpdCBpcyB1c2VkIGRpcmVjdGx5IGFz
IGEgbW9kdWxlIGtleS4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBVc2luZyBzeW1ib2xzIGZvciBh
biBpbmxpbmUgbW9kdWxlIGlzIGEgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIFdl
YktpdC4KLSAgICAvLyBPbmNlIHRoZSBzcGVjIG9mIHRoaXMgcGFydCBpcyBzcGVjaWZpZWQsIHdl
IHdpbGwgcmVjYXN0IHRoZXNlIHBhcnQuCi0gICAgaWYgKG1vZHVsZU5hbWVWYWx1ZS5pc1N5bWJv
bCgpKQotICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbW9kdWxlTmFtZVZh
bHVlKTsKLQotICAgIGlmICghbW9kdWxlTmFtZVZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJl
dHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIEpTQzo6Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJN
b2R1bGUgbmFtZSBpcyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKSk7Ci0KLSAgICBTdHJpbmcgbW9k
dWxlTmFtZSA9IGFzU3RyaW5nKG1vZHVsZU5hbWVWYWx1ZSktPnZhbHVlKGV4ZWMpOwotCi0gICAg
Ly8gTm93LCB3ZSBjb25zaWRlciB0aGUgZ2l2ZW4gbW9kdWxlTmFtZSBhcyB0aGUgc2FtZSB0byB0
aGUgYGltcG9ydCAiLi4uImAgaW4gdGhlIG1vZHVsZSBjb2RlLgotICAgIC8vIFdlIHVzZSB0aGUg
Y29tcGxldGVkIFVSTCBhcyB0aGUgdW5pcXVlIG1vZHVsZSBrZXkuCi0gICAgVVJMIGNvbXBsZXRl
ZFVybDsKLQotICAgIGlmIChpbXBvcnRlck1vZHVsZUtleS5pc1N5bWJvbCgpKQotICAgICAgICBj
b21wbGV0ZWRVcmwgPSBtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1vZHVsZU5hbWUpOwotICAgIGVs
c2UgaWYgKGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGNvbXBsZXRl
ZFVybCA9IG1fZG9jdW1lbnQuY29tcGxldGVVUkwobW9kdWxlTmFtZSk7Ci0gICAgZWxzZSBpZiAo
aW1wb3J0ZXJNb2R1bGVLZXkuaXNTdHJpbmcoKSkgewotICAgICAgICBVUkwgaW1wb3J0ZXJNb2R1
bGVVcmwoVVJMKCksIGFzU3RyaW5nKGltcG9ydGVyTW9kdWxlS2V5KS0+dmFsdWUoZXhlYykpOwot
ICAgICAgICBpZiAoIWltcG9ydGVyTW9kdWxlVXJsLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIEpTQzo6Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJ
bXBvcnRlciBtb2R1bGUga2V5IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKLSAgICAgICAgY29tcGxl
dGVkVXJsID0gbV9kb2N1bWVudC5jb21wbGV0ZVVSTChtb2R1bGVOYW1lLCBpbXBvcnRlck1vZHVs
ZVVybCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMs
IEpTQzo6Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbXBvcnRlciBtb2R1bGUga2V5IGlzIG5vdCBT
eW1ib2wgb3IgU3RyaW5nLiIpKTsKLQotICAgIGlmICghY29tcGxldGVkVXJsLmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgSlNDOjpjcmVhdGVUeXBlRXJy
b3IoZXhlYywgIk1vZHVsZSBuYW1lIGNvbnN0cnVjdHMgYW4gaW52YWxpZCBVUkwuIikpOwotCi0g
ICAgcmV0dXJuIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIGNvbXBsZXRl
ZFVybC5zdHJpbmcoKSkpOwotfQotCi1KU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxv
YWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlW
YWx1ZSkKLXsKLSAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0g
SlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0
KTsKLQotICAgIGlmIChtb2R1bGVLZXlWYWx1ZS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4g
ZGVmZXJyZWQtPnJlamVjdChleGVjLCBKU0M6OmNyZWF0ZVR5cGVFcnJvcihleGVjLCAiU3ltYm9s
IG1vZHVsZSBrZXkgc2hvdWxkIGJlIGFscmVhZHkgZnVsZmlsbGVkIHdpdGggdGhlIGlubGluZWQg
cmVzb3VyY2UuIikpOwotCi0gICAgaWYgKCFtb2R1bGVLZXlWYWx1ZS5pc1N0cmluZygpKQotICAg
ICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBKU0M6OmNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiTW9kdWxlIGtleSBpcyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKSk7Ci0KLSAgICBVUkwg
Y29tcGxldGVkVXJsKFVSTCgpLCBhc1N0cmluZyhtb2R1bGVLZXlWYWx1ZSktPnZhbHVlKGV4ZWMp
KTsKLSAgICBpZiAoIWNvbXBsZXRlZFVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBkZWZl
cnJlZC0+cmVqZWN0KGV4ZWMsIEpTQzo6Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJNb2R1bGUga2V5
IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIG1v
ZHVsZSBmZXRjaGVyLgotCi0gICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Ci19Ci0KLUpT
Qzo6SlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVl
IG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUpCi17Ci0gICAg
SlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBK
U01vZHVsZVJlY29yZC4KLSAgICAvLyBPbmNlIHRoZSByZWZsZWN0aXZlIHBhcnQgb2YgdGhlIG1v
ZHVsZSBsb2FkZXIgaXMgc3VwcG9ydGVkLCB3ZSB3aWxsIGhhbmRsZSBhcmJpdHJhcnkgdmFsdWVz
LgotICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlZ2lzdHJ5LXByb3Rv
dHlwZS1wcm92aWRlCi0gICAgSlNDOjpKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gSlND
Ojpqc0R5bmFtaWNDYXN0PEpTQzo6SlNNb2R1bGVSZWNvcmQqPihtb2R1bGVSZWNvcmRWYWx1ZSk7
Ci0gICAgaWYgKCFtb2R1bGVSZWNvcmQpCi0gICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVk
KCk7Ci0KLSAgICBVUkwgc291cmNlVXJsOwotICAgIGlmIChtb2R1bGVLZXlWYWx1ZS5pc1N5bWJv
bCgpKQotICAgICAgICBzb3VyY2VVcmwgPSBtX2RvY3VtZW50LnVybCgpOwotICAgIGVsc2UgaWYg
KG1vZHVsZUtleVZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHNvdXJjZVVybCA9IFVSTChVUkwo
KSwgYXNTdHJpbmcobW9kdWxlS2V5VmFsdWUpLT52YWx1ZShleGVjKSk7Ci0gICAgZWxzZQotICAg
ICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJNb2R1bGUga2V5IGlzIG5vdCBTeW1ib2wgb3IgU3RyaW5nLiIpKTsKLQotICAgIGlmICghc291
cmNlVXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTW9kdWxlIGtleSBpcyBhbiBpbnZhbGlkIFVSTC4iKSk7
Ci0KLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGV2YWx1YXRpbmcgbW9kdWxlIGNvZGUuCi0KLSAg
ICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjlhNTAxYTVhZTUzYTU2MjE0YzVjYzU5Y2VjYjMxOTAwNzZmZTFmZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01vZHVsZUxvYWRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBF
eGVjU3RhdGU7Ci1jbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIEpTSW50ZXJuYWxQcm9taXNl
OwotY2xhc3MgSlNNb2R1bGVMb2FkZXI7Ci0KLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBEb2N1bWVudDsKLQotY2xhc3MgSlNNb2R1bGVMb2FkZXIgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEpTTW9kdWxlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgSlNNb2R1bGVMb2FkZXIoRG9jdW1lbnQmKTsKLQotICAgIERvY3Vt
ZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KLQotICAgIEpTQzo6SlNJbnRl
cm5hbFByb21pc2UqIHJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVOYW1lLCBKU0M6OkpT
VmFsdWUgaW1wb3J0ZXJNb2R1bGVLZXkpOwotICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGZl
dGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVM
b2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5KTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxv
YWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmQp
OwotCi1wcml2YXRlOgotICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0TW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI3Y2Y4NjVmMDc3ZjYzNTQ0YmIwYTE2ODcxNTUx
MjE1YjUwNDFhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0TW9kdWxlTG9hZGVyLmgi
CisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8
cnVudGltZS9TeW1ib2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRNb2R1bGVM
b2FkZXI6OlNjcmlwdE1vZHVsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQoreworfQorCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRN
b2R1bGVMb2FkZXI6OnJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBt
b2R1bGVOYW1lVmFsdWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlNDOjpKU1Zh
bHVlKQoreworICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBK
U0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qp
OworCisgICAgLy8gV2UgdXNlIGEgU3ltYm9sIGFzIGEgc3BlY2lhbCBwdXJwb3NlOyBJdCBtZWFu
cyB0aGlzIG1vZHVsZSBpcyBhbiBpbmxpbmUgbW9kdWxlLgorICAgIC8vIFNvIHRoZXJlIGlzIG5v
IGNvcnJlY3QgVVJMIHRvIHJldHJpZXZlIHRoZSBtb2R1bGUgc291cmNlIGNvZGUuIElmIHRoZSBt
b2R1bGUgbmFtZQorICAgIC8vIHZhbHVlIGlzIGEgU3ltYm9sLCBpdCBpcyB1c2VkIGRpcmVjdGx5
IGFzIGEgbW9kdWxlIGtleS4KKyAgICAvLworICAgIC8vIEZJWE1FOiBVc2luZyBzeW1ib2xzIGZv
ciBhbiBpbmxpbmUgbW9kdWxlIGlzIGEgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9m
IFdlYktpdC4KKyAgICAvLyBPbmNlIHRoZSBzcGVjIG9mIHRoaXMgcGFydCBpcyBzcGVjaWZpZWQs
IHdlIHdpbGwgcmVjYXN0IHRoZXNlIHBhcnQuCisgICAgaWYgKG1vZHVsZU5hbWVWYWx1ZS5pc1N5
bWJvbCgpKQorICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbW9kdWxlTmFt
ZVZhbHVlKTsKKworICAgIGlmICghbW9kdWxlTmFtZVZhbHVlLmlzU3RyaW5nKCkpCisgICAgICAg
IHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIEpTQzo6Y3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJNb2R1bGUgbmFtZSBpcyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKSk7CisKKyAgICBTdHJpbmcg
bW9kdWxlTmFtZSA9IGFzU3RyaW5nKG1vZHVsZU5hbWVWYWx1ZSktPnZhbHVlKGV4ZWMpOworCisg
ICAgLy8gTm93LCB3ZSBjb25zaWRlciB0aGUgZ2l2ZW4gbW9kdWxlTmFtZSBhcyB0aGUgc2FtZSB0
byB0aGUgYGltcG9ydCAiLi4uImAgaW4gdGhlIG1vZHVsZSBjb2RlLgorICAgIC8vIFdlIHVzZSB0
aGUgY29tcGxldGVkIFVSTCBhcyB0aGUgdW5pcXVlIG1vZHVsZSBrZXkuCisgICAgVVJMIGNvbXBs
ZXRlZFVybDsKKworICAgIGlmIChpbXBvcnRlck1vZHVsZUtleS5pc1N5bWJvbCgpKQorICAgICAg
ICBjb21wbGV0ZWRVcmwgPSBtX2RvY3VtZW50LmNvbXBsZXRlVVJMKG1vZHVsZU5hbWUpOworICAg
IGVsc2UgaWYgKGltcG9ydGVyTW9kdWxlS2V5LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGNvbXBs
ZXRlZFVybCA9IG1fZG9jdW1lbnQuY29tcGxldGVVUkwobW9kdWxlTmFtZSk7CisgICAgZWxzZSBp
ZiAoaW1wb3J0ZXJNb2R1bGVLZXkuaXNTdHJpbmcoKSkgeworICAgICAgICBVUkwgaW1wb3J0ZXJN
b2R1bGVVcmwoVVJMKCksIGFzU3RyaW5nKGltcG9ydGVyTW9kdWxlS2V5KS0+dmFsdWUoZXhlYykp
OworICAgICAgICBpZiAoIWltcG9ydGVyTW9kdWxlVXJsLmlzVmFsaWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIEpTQzo6Y3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJJbXBvcnRlciBtb2R1bGUga2V5IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKKyAgICAgICAgY29t
cGxldGVkVXJsID0gbV9kb2N1bWVudC5jb21wbGV0ZVVSTChtb2R1bGVOYW1lLCBpbXBvcnRlck1v
ZHVsZVVybCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4
ZWMsIEpTQzo6Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbXBvcnRlciBtb2R1bGUga2V5IGlzIG5v
dCBTeW1ib2wgb3IgU3RyaW5nLiIpKTsKKworICAgIGlmICghY29tcGxldGVkVXJsLmlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgSlNDOjpjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIk1vZHVsZSBuYW1lIGNvbnN0cnVjdHMgYW4gaW52YWxpZCBVUkwuIikpOwor
CisgICAgcmV0dXJuIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIGNvbXBs
ZXRlZFVybC5zdHJpbmcoKSkpOworfQorCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRN
b2R1bGVMb2FkZXI6OmZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9k
dWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSkKK3sKKyAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKworICAgIGlmIChtb2R1bGVLZXlWYWx1ZS5pc1N5bWJv
bCgpKQorICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBKU0M6OmNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiU3ltYm9sIG1vZHVsZSBrZXkgc2hvdWxkIGJlIGFscmVhZHkgZnVsZmls
bGVkIHdpdGggdGhlIGlubGluZWQgcmVzb3VyY2UuIikpOworCisgICAgaWYgKCFtb2R1bGVLZXlW
YWx1ZS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBK
U0M6OmNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTW9kdWxlIGtleSBpcyBub3QgU3ltYm9sIG9yIFN0
cmluZy4iKSk7CisKKyAgICBVUkwgY29tcGxldGVkVXJsKFVSTCgpLCBhc1N0cmluZyhtb2R1bGVL
ZXlWYWx1ZSktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoIWNvbXBsZXRlZFVybC5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIEpTQzo6Y3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJNb2R1bGUga2V5IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKKworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhlIG1vZHVsZSBmZXRjaGVyLgorCisgICAgcmV0dXJuIGRlZmVycmVk
LT5wcm9taXNlKCk7Cit9CisKK0pTQzo6SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1
YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01v
ZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1ZSwgSlNDOjpKU1ZhbHVlIG1v
ZHVsZVJlY29yZFZhbHVlLCBKU0M6OkpTVmFsdWUpCit7CisgICAgSlNDOjpWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBKU01vZHVsZVJlY29yZC4KKyAg
ICAvLyBPbmNlIHRoZSByZWZsZWN0aXZlIHBhcnQgb2YgdGhlIG1vZHVsZSBsb2FkZXIgaXMgc3Vw
cG9ydGVkLCB3ZSB3aWxsIGhhbmRsZSBhcmJpdHJhcnkgdmFsdWVzLgorICAgIC8vIGh0dHBzOi8v
d2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlZ2lzdHJ5LXByb3RvdHlwZS1wcm92aWRlCisgICAg
SlNDOjpKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpT
Qzo6SlNNb2R1bGVSZWNvcmQqPihtb2R1bGVSZWNvcmRWYWx1ZSk7CisgICAgaWYgKCFtb2R1bGVS
ZWNvcmQpCisgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisKKyAgICBVUkwgc291
cmNlVXJsOworICAgIGlmIChtb2R1bGVLZXlWYWx1ZS5pc1N5bWJvbCgpKQorICAgICAgICBzb3Vy
Y2VVcmwgPSBtX2RvY3VtZW50LnVybCgpOworICAgIGVsc2UgaWYgKG1vZHVsZUtleVZhbHVlLmlz
U3RyaW5nKCkpCisgICAgICAgIHNvdXJjZVVybCA9IFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxl
S2V5VmFsdWUpLT52YWx1ZShleGVjKSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gSlNDOjp0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJNb2R1bGUga2V5IGlzIG5v
dCBTeW1ib2wgb3IgU3RyaW5nLiIpKTsKKworICAgIGlmICghc291cmNlVXJsLmlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiTW9kdWxlIGtleSBpcyBhbiBpbnZhbGlkIFVSTC4iKSk7CisKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGV2YWx1YXRpbmcgbW9kdWxlIGNvZGUuCisKKyAgICByZXR1cm4gSlNDOjpqc1Vu
ZGVmaW5lZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZGM4YTY1NWM1ZWVmZTRjNWM5NGI0OTZiOGVi
NTU4ZDE3ZWRjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRNb2R1bGVMb2FkZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNJbnRlcm5hbFByb21pc2U7Citj
bGFzcyBKU01vZHVsZUxvYWRlcjsKKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IERvY3VtZW50OworCitjbGFzcyBTY3JpcHRNb2R1bGVMb2FkZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNjcmlwdE1vZHVsZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFNjcmlwdE1vZHVsZUxvYWRlcihEb2N1bWVudCYpOworCisg
ICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQorCisgICAgSlND
OjpKU0ludGVybmFsUHJvbWlzZSogcmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWUs
IEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIGluaXRpYXRvcik7
CisgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1
bGVLZXksIEpTQzo6SlNWYWx1ZSBpbml0aWF0b3IpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9h
ZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCwg
SlNDOjpKU1ZhbHVlIGluaXRpYXRvcik7CisKK3ByaXZhdGU6CisgICAgRG9jdW1lbnQmIG1fZG9j
dW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCAwMzhlMzRmZjkzZWFlN2VjZjA0ZGFiMDU5YmYxZmM2NTE2MzQzZWQyLi4zZTQ4YTcw
NmI1ZTA3MTI3ODMzYTdkZGExMDQ3MjM4MzJjYWJjODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTEwMyw3ICsxMDMsNiBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpT
TGF6eUV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1
ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxv
YWRlclN0cmF0ZWd5LmgiCkBAIC0xNTMsNiArMTUyLDcgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCkBAIC00ODAsNyArNDgwLDcgQEAgRG9jdW1lbnQ6OkRv
Y3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xh
c3NlcywgdW5zaWcKICAgICAsIG1fc3RhcnRUaW1lKHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6
Om5vdygpKQogICAgICwgbV9vdmVyTWluaW11bUxheW91dFRocmVzaG9sZChmYWxzZSkKICAgICAs
IG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCi0g
ICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEpTTW9kdWxlTG9hZGVyPigqdGhp
cykpCisgICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxv
YWRlcj4oKnRoaXMpKQogICAgICwgbV94bWxWZXJzaW9uKEFTQ0lJTGl0ZXJhbCgiMS4wIikpCiAg
ICAgLCBtX3htbFN0YW5kYWxvbmUoU3RhbmRhbG9uZVVuc3BlY2lmaWVkKQogICAgICwgbV9oYXNY
TUxEZWNsYXJhdGlvbihmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOGMxNTVmMTE5ZTZj
ODNmNGVmODlmYTM4YzgwZGQ4ZDEzYWVkODFlMy4uMGQ5ZjliY2I1NTBmNzEwODVjZGY4M2RmYTNm
MTZhOTI5NjYyNWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBj
bGFzcyBJbnRQb2ludDsKIGNsYXNzIExheW91dFBvaW50OwogY2xhc3MgTGF5b3V0UmVjdDsKIGNs
YXNzIExpdmVOb2RlTGlzdDsKLWNsYXNzIEpTTW9kdWxlTG9hZGVyOworY2xhc3MgU2NyaXB0TW9k
dWxlTG9hZGVyOwogY2xhc3MgSlNOb2RlOwogY2xhc3MgTG9jYWxlOwogY2xhc3MgTG9jYXRpb247
CkBAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1l
ZGlhUGxheWJhY2tUYXJnZXRDbGllbnQ7CiBjbGFzcyBNZWRpYVF1ZXJ5TGlzdDsKIGNsYXNzIE1l
ZGlhUXVlcnlNYXRjaGVyOworY2xhc3MgU2NyaXB0TW9kdWxlTG9hZGVyOwogY2xhc3MgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFz
cyBOb2RlRmlsdGVyOwpAQCAtOTQ3LDcgKzk0OCw3IEBAIGNsYXNzIERvY3VtZW50CiAgICAgRG9j
dW1lbnQmIHRvcERvY3VtZW50KCkgY29uc3Q7CiAgICAgCiAgICAgU2NyaXB0UnVubmVyKiBzY3Jp
cHRSdW5uZXIoKSB7IHJldHVybiBtX3NjcmlwdFJ1bm5lci5nZXQoKTsgfQotICAgIEpTTW9kdWxl
TG9hZGVyKiBtb2R1bGVMb2FkZXIoKSB7IHJldHVybiBtX21vZHVsZUxvYWRlci5nZXQoKTsgfQor
ICAgIFNjcmlwdE1vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyKCkgeyByZXR1cm4gbV9tb2R1bGVM
b2FkZXIuZ2V0KCk7IH0KIAogICAgIEhUTUxTY3JpcHRFbGVtZW50KiBjdXJyZW50U2NyaXB0KCkg
Y29uc3QgeyByZXR1cm4gIW1fY3VycmVudFNjcmlwdFN0YWNrLmlzRW1wdHkoKSA/IG1fY3VycmVu
dFNjcmlwdFN0YWNrLmxhc3QoKS5nZXQoKSA6IG51bGxwdHI7IH0KICAgICB2b2lkIHB1c2hDdXJy
ZW50U2NyaXB0KEhUTUxTY3JpcHRFbGVtZW50Kik7CkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBjbGFz
cyBEb2N1bWVudAogICAgIGJvb2wgbV9vdmVyTWluaW11bUxheW91dFRocmVzaG9sZDsKICAgICAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0UnVubmVyPiBtX3NjcmlwdFJ1bm5lcjsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SlNNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4+IG1fY3VycmVudFNjcmlwdFN0YWNrOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>