<?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>197974</bug_id>
          
          <creation_ts>2019-05-16 20:21:05 -0700</creation_ts>
          <short_desc>[WebAuthN] Allow authenticators that support both CTAP and U2F to try U2F if CTAP fails in authenticatorGetAssertion</short_desc>
          <delta_ts>2019-05-18 17:42:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1537005</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-16 20:21:05 -0700</bug_when>
    <thetext>Allow authenticators that support both CTAP and U2F to try U2F if CTAP fails in authenticatorGetAssertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537007</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-16 20:24:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/50879746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537008</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-16 20:24:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/50879747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537012</commentid>
    <comment_count>3</comment_count>
      <attachid>370100</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-16 20:43:07 -0700</bug_when>
    <thetext>Created attachment 370100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537032</commentid>
    <comment_count>4</comment_count>
      <attachid>370100</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-16 22:34:09 -0700</bug_when>
    <thetext>Comment on attachment 370100
Patch

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

&gt; Source/WebKit/ChangeLog:16
&gt; +        to ask a potential U2F credential once a kCtap2ErrInvalidCredential error is returned regarding to the first CTAP request,

I should probably relax all conditions to always downgrade to U2F whenever there is no responses to the first CTAP request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537062</commentid>
    <comment_count>5</comment_count>
      <attachid>370100</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-17 00:57:20 -0700</bug_when>
    <thetext>Comment on attachment 370100
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:93
&gt; +        auto error = getResponseCode(data);

I should probably relax all conditions to always downgrade to U2F whenever there is no responses to the first CTAP request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537290</commentid>
    <comment_count>6</comment_count>
      <attachid>370100</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-17 15:24:47 -0700</bug_when>
    <thetext>Comment on attachment 370100
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:93
&gt;&gt; +        auto error = getResponseCode(data);
&gt; 
&gt; I should probably relax all conditions to always downgrade to U2F whenever there is no responses to the first CTAP request.

The reason behinds this decision is that CTAP2_ERR_NO_CREDENTIALS is recommended in the spec: https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#authenticatorGetAssertion. On contrary, I get CTAP2_ERR_INVALID_CREDENTIAL from some keys. Therefore, we should probably not check any error.

Also, bad user agents might somehow prefer U2F over CTAP, and therefore relaying parties might not be aware of it and supply an appid to indicate a U2F credential should be used instead. Therefore, we should omit that check as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537294</commentid>
    <comment_count>7</comment_count>
      <attachid>370163</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-17 15:36:25 -0700</bug_when>
    <thetext>Created attachment 370163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537298</commentid>
    <comment_count>8</comment_count>
      <attachid>370163</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-05-17 15:42:25 -0700</bug_when>
    <thetext>Comment on attachment 370163
Patch

Looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537300</commentid>
    <comment_count>9</comment_count>
      <attachid>370165</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-17 15:45:42 -0700</bug_when>
    <thetext>Created attachment 370165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537301</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-17 15:47:15 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; Comment on attachment 370163 [details]
&gt; Patch
&gt; 
&gt; Looks good. r=me

Sorry, Brent. I modified a test and uploaded a new patch which obsolete your r+ flag. Could you r+ it again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537341</commentid>
    <comment_count>11</comment_count>
      <attachid>370165</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-05-17 17:13:18 -0700</bug_when>
    <thetext>Comment on attachment 370165
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537446</commentid>
    <comment_count>12</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-05-18 17:15:35 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #11)
&gt; Comment on attachment 370165 [details]
&gt; Patch
&gt; 
&gt; R=me

Thanks Brent for r+ this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537449</commentid>
    <comment_count>13</comment_count>
      <attachid>370165</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-18 17:42:22 -0700</bug_when>
    <thetext>Comment on attachment 370165
Patch

Clearing flags on attachment: 370165

Committed r245500: &lt;https://trac.webkit.org/changeset/245500&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537450</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-18 17:42:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370100</attachid>
            <date>2019-05-16 20:43:07 -0700</date>
            <delta_ts>2019-05-17 15:36:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197974-20190516204306.patch</filename>
            <type>text/plain</type>
            <size>29122</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5YjQzNzAyNzkxMjY0ODE3
Y2VkMmFlMTMxZGFmZGIxOTc2YWZhYTMuLmM3NWYzN2RjNzI4MWRhOTIwOGFiNWE4NjU5NDk3MGQ0
MDJjZjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTktMDUtMTYgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEFsbG93IGF1
dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCBib3RoIENUQVAgYW5kIFUyRiB0byB0cnkgVTJGIGlm
IENUQVAgZmFpbHMgaW4gYXV0aGVudGljYXRvckdldEFzc2VydGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTc0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81MDg3OTc0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBdXRoZW50aWNhdG9ycyB0aGF0IHN1cHBvcnQgYm90aCBDVEFQIGFuZCBVMkYg
cHJvdG9jb2xzIGNhbiBiZSB1c2VkIGluIGEgVTJGIGVuYWJsZWQgYnJvd3NlciB0byBjcmVhdGUg
YSBjcmVkZW50aWFsIGluCisgICAgICAgIFUyRiBmb3JtYXQuIFdoZW4gc3VjaCBhdXRoZW50aWNh
dG9yIGlzIHVzZWQgdG8gbG9naW4gaW4gV2ViS2l0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBD
VEFQIGF1dGhlbnRpY2F0b3IuIFNpbmNlIHRoZQorICAgICAgICBwcmV2aW91cyBjcmVkZW50aWFs
IGlzIGluIFUyRiBmb3JtYXQsIHRoZSBhdXRoZW50aWNhdG9yIHdpbGwgbm90IGNvbnNpZGVyIHRo
YXQgYXMgYSB2YWxpZCBjcmVkZW50aWFsIHdoZW4gQ1RBUCByZXF1ZXN0cworICAgICAgICBjb21l
IGFsb25nIGZvciB0aGF0IFUyRiBjcmVkZW50aWFsLiBUaGVyZWZvcmUgdGhlIHByZXZpb3VzIGNy
ZWF0ZWQgVTJGIGNyZWRlbnRpYWwgd2lsbCBub3QgYmUgYXNrZWQgYXQgYWxsLCBhbmQgdXNlcnMK
KyAgICAgICAgd2lsbCBub3QgYmUgYWJsZSB0byBsb2dpbi4gVGhpcyBzaXR1YXRpb24gaXMgbm90
IHdlbGwgZG9jdW1lbnRlZCBpbiB0aGUgQ1RBUC9XZWJBdXRoTiBzcGVjIHlldC4KKworICAgICAg
ICBUbyB3b3JrYXJvdW5kIHRoZSBhYm92ZSBpc3N1ZSwgYW4gYXV0aGVudGljYXRvciB0aGF0IHN1
cHBvcnRzIGJvdGggcHJvdG9jb2xzIHdpbGwgYmUgZG93bmdyYWRlZCB0byBhIFUyRiBhdXRoZW50
aWNhdG9yCisgICAgICAgIHRvIGFzayBhIHBvdGVudGlhbCBVMkYgY3JlZGVudGlhbCBvbmNlIGEg
a0N0YXAyRXJySW52YWxpZENyZWRlbnRpYWwgZXJyb3IgaXMgcmV0dXJuZWQgcmVnYXJkaW5nIHRv
IHRoZSBmaXJzdCBDVEFQIHJlcXVlc3QsCisgICAgICAgIGFuZCBhbiBBcHBJRCBpcyBzdXBwbGll
ZCB0byBpbmRpY2F0ZSBwb3RlbnRpYWwgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzdXBwb3J0Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpk
b3duZ3JhZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9u
OjpmZWVkUmVwb3J0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAg
ICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkN0YXBIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFm
dGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWRBdXRoZW50aWNh
dG9yOjp0cnlEb3duZ3JhZGUpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRv
cjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRB
dXRoZW50aWNhdG9yLmg6CisKIDIwMTktMDUtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgU1BJIHRvIHNldCBhIGxpc3Qgb2YgaG9z
dHMgdG8gd2hpY2ggdG8gc2VuZCBjdXN0b20gaGVhZGVyIGZpZWxkcyBjcm9zcy1vcmlnaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCmluZGV4IDJkYWQ1NjQyN2QxN2E5YzRkYzk2ZjNjODRjMjNjYmQzNGE4NTUwOGEu
LjNjOTY2MGUyYmU1MjQ2YTNjYTZiYmE0ZWI4ZmEyZWI4MDMxM2E2ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cApAQCAtNjUyLDYgKzY1Miw5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIGlm
IChhdXRvIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDb250aW51ZUFmdGVyRXJyb3JEYXRhIikpLmdldCgpKSkpCiAgICAg
ICAgICAgICBoaWQuY29udGludWVBZnRlckVycm9yRGF0YSA9IFdLQm9vbGVhbkdldFZhbHVlKGNv
bnRpbnVlQWZ0ZXJFcnJvckRhdGEpOwogCisgICAgICAgIGlmIChhdXRvIGNhbkRvd25ncmFkZSA9
IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRS
ZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbkRvd25ncmFkZSIp
KS5nZXQoKSkpKQorICAgICAgICAgICAgaGlkLmNhbkRvd25ncmFkZSA9IFdLQm9vbGVhbkdldFZh
bHVlKGNhbkRvd25ncmFkZSk7CisKICAgICAgICAgY29uZmlndXJhdGlvbi5oaWQgPSBXVEZNb3Zl
KGhpZCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKaW5kZXggYTJhYTI3YTZmNDBkNTlhMTcz
YTBlNTk3M2ZmNjVmNjY0YzM1ZmVhZS4uY2IwMTExYTE3M2Q5ZTZjNTc0MjAzYzFjODExMzY0MmU5
ZjM2Yjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlc3BvbmRSZWNlaXZlZChSZXNwb25kJiYpID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRvd25ncmFkZShBdXRoZW50aWNhdG9yKiBpZCwgUmVmPEF1dGhlbnRpY2F0
b3I+JiYgZG93bmdyYWRlZEF1dGhlbnRpY2F0b3IpID0gMDsKICAgICB9OwogCiAgICAgdmlydHVh
bCB+QXV0aGVudGljYXRvcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcAppbmRleCAwYzVkMjVjNTU0MzAxYzBjMWI1N2Y3ZGFkNTQ5N2U5MTUwY2RlY2ZhLi45
MTNiYzhhOTU3MjE0OWQ2ZjE2M2E3ZmE0YWU3ODEzY2ZlMDMyYzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0yMDgsNiArMjA4LDE3IEBAIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OnJlc3BvbmRSZWNlaXZlZChSZXNwb25kJiYgcmVzcG9uZCkKICAgICByZXNw
b25kUmVjZWl2ZWRJbnRlcm5hbChXVEZNb3ZlKHJlc3BvbmQpKTsKIH0KIAordm9pZCBBdXRoZW50
aWNhdG9yTWFuYWdlcjo6ZG93bmdyYWRlKEF1dGhlbnRpY2F0b3IqIGlkLCBSZWY8QXV0aGVudGlj
YXRvcj4mJiBkb3duZ3JhZGVkQXV0aGVudGljYXRvcikKK3sKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBpZF0geworICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHJlbW92ZWQg
PSB3ZWFrVGhpcy0+bV9hdXRoZW50aWNhdG9ycy5yZW1vdmUoaWQpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOworICAgIH0pOworICAgIGF1dGhlbnRpY2F0b3JBZGRl
ZChXVEZNb3ZlKGRvd25ncmFkZWRBdXRoZW50aWNhdG9yKSk7Cit9CisKIFVuaXF1ZVJlZjxBdXRo
ZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvck1hbmFnZXI6OmNyZWF0ZVNl
cnZpY2UoV2ViQ29yZTo6QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIEF1dGhlbnRp
Y2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpjcmVhdGUodHJhbnNwb3J0LCBv
YnNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaAppbmRleCBkYzQ1OWI0NGM4
OTEwNWM4MzgzMzI2OGY1Y2IzMzY0NjgwNDA3MGM5Li5iMDNmZTU3NDZiY2YzOWU1YmY4MGVjYzEz
MmViYjBlNzMxNmYwY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTcw
LDYgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEF1dGhlbnRpY2F0b3I6Ok9ic2VydmVyCiAg
ICAgdm9pZCByZXNwb25kUmVjZWl2ZWQoUmVzcG9uZCYmKSBmaW5hbDsKKyAgICB2b2lkIGRvd25n
cmFkZShBdXRoZW50aWNhdG9yKiBpZCwgUmVmPEF1dGhlbnRpY2F0b3I+JiYgZG93bmdyYWRlZEF1
dGhlbnRpY2F0b3IpIGZpbmFsOwogCiAgICAgLy8gT3ZlcnJpZGVuIGJ5IE1vY2tBdXRoZW50aWNh
dG9yTWFuYWdlci4KICAgICB2aXJ0dWFsIFVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0
U2VydmljZT4gY3JlYXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0LCBB
dXRoZW50aWNhdG9yVHJhbnNwb3J0U2VydmljZTo6T2JzZXJ2ZXImKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hp
ZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggZDg2YTNhNDcyZTZiYjc3MzkwZTM0
MDFhNmNkZTgyYzY1M2E2ODQ2ZS4uMzlkZDc1Mjg4YTk1NzY0MGQ5NTgzYWIwMThmMjFlZjkzMzk5
NzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTEzMiw2
ICsxMzIsOCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVlc3QoKQogCiAgICAg
aWYgKG1fc3RhZ2UgPT0gTW9jazo6U3RhZ2U6OlJlcXVlc3QgJiYgbV9zdWJTdGFnZSA9PSBNb2Nr
OjpTdWJTdGFnZTo6TXNnKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBpc3N1ZSBkaWZmZXJl
bnQgbXNnIGNtZCBmb3IgQ1RBUCBhbmQgVTJGLgorICAgICAgICBpZiAobV9jb25maWd1cmF0aW9u
LmhpZC0+Y2FuRG93bmdyYWRlICYmICFtX2NvbmZpZ3VyYXRpb24uaGlkLT5pc1UyZikKKyAgICAg
ICAgICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmID0gbV9yZXF1ZXN0TWVzc2FnZS0+Y21k
KCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtNc2c7CiAgICAgICAgIEFTU0VSVChtX2NvbmZp
Z3VyYXRpb24uaGlkLT5pc1UyZiBeIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSAhPSBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a01zZykpOwogCiAgICAgICAgIC8vIFNldCBvcHRpb25zLgpAQCAtMjA4
LDcgKzIxMCwxMSBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAKICAg
ICBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAobV9zdGFnZSA9PSBN
b2NrOjpTdGFnZTo6SW5mbyAmJiBtX3N1YlN0YWdlID09IE1vY2s6OlN1YlN0YWdlOjpNc2cpIHsK
LSAgICAgICAgYXV0byBpbmZvRGF0YSA9IGVuY29kZUFzQ0JPUihBdXRoZW50aWNhdG9yR2V0SW5m
b1Jlc3BvbnNlKHsgUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9LCBWZWN0b3I8dWludDhfdD4oYWFn
dWlkTGVuZ3RoLCAwdSkpKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGluZm9EYXRhOworICAg
ICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+Y2FuRG93bmdyYWRlKQorICAgICAgICAgICAg
aW5mb0RhdGEgPSBlbmNvZGVBc0NCT1IoQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFBy
b3RvY29sVmVyc2lvbjo6a0N0YXAsIFByb3RvY29sVmVyc2lvbjo6a1UyZiB9LCBWZWN0b3I8dWlu
dDhfdD4oYWFndWlkTGVuZ3RoLCAwdSkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5m
b0RhdGEgPSBlbmNvZGVBc0NCT1IoQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSh7IFByb3Rv
Y29sVmVyc2lvbjo6a0N0YXAgfSwgVmVjdG9yPHVpbnQ4X3Q+KGFhZ3VpZExlbmd0aCwgMHUpKSk7
CiAgICAgICAgIGluZm9EYXRhLmluc2VydCgwLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2
aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykpOyAvLyBQcmVwZW5kIHN0YXR1cyBjb2RlLgogICAg
ICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBN
b2NrOjpFcnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hp
ZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsIC0gMSwgRmlkb0hpZERldmljZUNvbW1h
bmQ6OmtDYm9yLCBpbmZvRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCmluZGV4IGJlMDg3MmZiZGZiOWNhYzgy
NzgzYjU0NWY1NDk5NmQ2NGVlNzkzNzYuLmY3YzM5Njk2OTU5NDE4YWI5NTBkNjdmNDQzNmVjZmUz
YTNjYmZkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCkBAIC02OSw2ICs2OSw3IEBAIHN0cnVjdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHsKICAgICAgICAgYm9vbCBrZWVwQWxpdmUgeyBm
YWxzZSB9OwogICAgICAgICBib29sIGZhc3REYXRhQXJyaXZhbCB7IGZhbHNlIH07CiAgICAgICAg
IGJvb2wgY29udGludWVBZnRlckVycm9yRGF0YSB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgY2Fu
RG93bmdyYWRlIHsgZmFsc2UgfTsKICAgICB9OwogCiAgICAgYm9vbCBzaWxlbnRGYWlsdXJlIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAKaW5k
ZXggMDhjZDVhMzQzYjEyN2Y0NWNhZDJmZWRmZWVhOThhMWEwZWI5YWRmZS4uOTVmODQ1OTQ2OTUx
NDc0YzQ3YTFhYTZlYTQ2ZjEyZTJmZWJhNTA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
SGlkQXV0aGVudGljYXRvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKSAmJiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJDdGFwSGlkRHJpdmVyLmgiCisjaW5j
bHVkZSAiVTJmSGlkQXV0aGVudGljYXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlUmVx
dWVzdENvbnZlcnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlUmVzcG9uc2VDb252ZXJ0
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KQEAgLTQ5LDYgKzUwLDcg
QEAgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OkN0YXBIaWRBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVl
X3B0cjxDdGFwSGlkRHJpdmVyPiYmIGRyaXYKIAogdm9pZCBDdGFwSGlkQXV0aGVudGljYXRvcjo6
bWFrZUNyZWRlbnRpYWwoKQogeworICAgIEFTU0VSVCghbV9pc0Rvd25ncmFkZWQpOwogICAgIGF1
dG8gY2JvckNtZCA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihyZXF1ZXN0RGF0
YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLCBtX2luZm8ub3B0aW9ucygp
LnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7CiAgICAgbV9kcml2ZXItPnRyYW5zYWN0
KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpA
QCAtNzQsNiArNzYsNyBAQCB2b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aQogCiB2b2lkIEN0YXBIaWRB
dXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogeworICAgIEFTU0VSVCghbV9pc0Rvd25ncmFk
ZWQpOwogICAgIGF1dG8gY2JvckNtZCA9IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1Io
cmVxdWVzdERhdGEoKS5oYXNoLCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLCBtX2luZm8u
b3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7CiAgICAgbV9kcml2ZXIt
PnRyYW5zYWN0KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtODMsMTYgKzg2LDM0IEBAIHZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6Omdl
dEFzc2VydGlvbigpCiAgICAgfSk7CiB9CiAKLXZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpIGNvbnN0Cit2b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2Vy
dGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAg
IGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGRhdGEpOwogICAg
IGlmICghcmVzcG9uc2UpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3Ig
Y29kZTogIiwgZGF0YS5zaXplKCkgPT0gMSA/IGRhdGFbMF0gOiAtMSkgfSk7CisgICAgICAgIGF1
dG8gZXJyb3IgPSBnZXRSZXNwb25zZUNvZGUoZGF0YSk7CisgICAgICAgIGlmIChlcnJvciA9PSBD
dGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJJbnZhbGlkQ3JlZGVudGlhbCAmJiB0cnlE
b3duZ3JhZGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQo
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5h
bCBlcnJvci4gRXJyb3IgY29kZTogIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4oZXJyb3IpKSB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNw
b25zZSkpOwogfQogCitib29sIEN0YXBIaWRBdXRoZW50aWNhdG9yOjp0cnlEb3duZ3JhZGUoKQor
eworICAgIGlmIChtX2luZm8udmVyc2lvbnMoKS5maW5kKFByb3RvY29sVmVyc2lvbjo6a1UyZikg
PT0gbV9pbmZvLnZlcnNpb25zKCkuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIXJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMuZXh0ZW5zaW9ucyB8fCByZXF1ZXN0RGF0
YSgpLnJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFvYnNlcnZlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtX2lzRG93bmdyYWRlZCA9IHRydWU7CisgICAgbV9kcml2ZXItPnNldFByb3RvY29s
KFByb3RvY29sVmVyc2lvbjo6a1UyZik7CisgICAgb2JzZXJ2ZXIoKS0+ZG93bmdyYWRlKHRoaXMs
IFUyZkhpZEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKG1fZHJpdmVyKSkpOworICAgIHJl
dHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1
dGhlbnRpY2F0b3IuaAppbmRleCBmZGY2Mjc5NTI1NjkxZGVjNWZhOGQzNTZlMGFlMTlmMmJmMjA3
YjY2Li42M2M0NjExNzQyNDI4NDdjNjJmOWE1ZDJhZTM2YzU2MWYwZmFjN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRB
dXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oCkBAIC00NywxMCArNDcsMTMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIG1ha2VDcmVkZW50aWFsKCkgZmluYWw7CiAgICAgdm9pZCBjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKSBj
b25zdDsKICAgICB2b2lkIGdldEFzc2VydGlvbigpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVH
ZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYpIGNvbnN0
OworICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworCisgICAgYm9vbCB0cnlEb3duZ3JhZGUoKTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBtX2RyaXZlcjsKICAgICBmaWRvOjpBdXRoZW50aWNh
dG9yR2V0SW5mb1Jlc3BvbnNlIG1faW5mbzsKKyAgICBib29sIG1faXNEb3duZ3JhZGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgwYTM2MjdiYTEyODNjN2UxN2I3ODBiNzdl
ZWMyOTNjMDcwN2FkZWYuLmZkYTljNjkzZmFkYTQxYTg4NDNmYjZiMDNlZmNmMjIxMTJmYjk3Y2Mg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOS0wNS0xNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJBdXRoTl0gQWxsb3cgYXV0aGVudGljYXRvcnMgdGhhdCBzdXBwb3J0
IGJvdGggQ1RBUCBhbmQgVTJGIHRvIHRyeSBVMkYgaWYgQ1RBUCBmYWlscyBpbiBhdXRoZW50aWNh
dG9yR2V0QXNzZXJ0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTc5NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwODc5NzQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNhbkRvd25n
cmFkZSBvcHRpb24gZm9yIG1vY2sgaGlkIGRldmljZXMgdG8gc2ltdWxhdGUgdGhlIHNpdHVhdGlv
bi4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24pOgorCiAyMDE5LTA1LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBzZXQgYSBsaXN0IG9mIGhv
c3RzIHRvIHdoaWNoIHRvIHNlbmQgY3VzdG9tIGhlYWRlciBmaWVsZHMgY3Jvc3Mtb3JpZ2luCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCBiMjQ1OTNmZjE2N2UzZDE1MjYxMTI5MmI1NjBhMTBjZDc0ZjMzYjQ5Li4wYmU0
YzFjZWI5ZTY0OTdlZmJjMGEwNjMyN2E3YTc2MGRlZGMwYjI5IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTI2OTIs
NiArMjY5MiwxNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oSlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVgogICAgICAgICAgICAgaGlkVmFs
dWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShjb250aW51ZUFmdGVyRXJyb3JEYXRh
KSkuZ2V0KCkpOwogICAgICAgICB9CiAKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGNhbkRvd25ncmFkZVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoImNhbkRvd25ncmFkZSIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiBjYW5Eb3duZ3JhZGVW
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBjYW5Eb3duZ3JhZGVQcm9w
ZXJ0eU5hbWUuZ2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCBjYW5Eb3duZ3JhZGVWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgY2FuRG93
bmdyYWRlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4
dCwgY2FuRG93bmdyYWRlVmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGJvb2wgY2FuRG93bmdyYWRlID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBjYW5Eb3du
Z3JhZGVWYWx1ZSk7CisgICAgICAgICAgICBoaWRLZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYW5Eb3duZ3JhZGUiKSkpOworICAgICAgICAgICAgaGlk
VmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShjYW5Eb3duZ3JhZGUpKS5nZXQo
KSk7CisgICAgICAgIH0KKwogICAgICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0hpZEtleXM7
CiAgICAgICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd0hpZFZhbHVlczsKICAgICAgICAgcmF3SGlk
S2V5cy5yZXNpemUoaGlkS2V5cy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBiNmFiZTY1ZGZhNGI3MjMwNWZk
Yjc3NTFlODE5NTk4YTBjMGFiNjMuLmI3OTBjNjNjNWQ5NWIxZTE3ZmU4NjczM2ZhOGNkNDdlYzJi
MGM0ZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wNS0xNiAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gQWxsb3cgYXV0aGVudGlj
YXRvcnMgdGhhdCBzdXBwb3J0IGJvdGggQ1RBUCBhbmQgVTJGIHRvIHRyeSBVMkYgaWYgQ1RBUCBm
YWlscyBpbiBhdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzUwODc5NzQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LWhpZC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLWhpZC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sOgor
ICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3Vj
Y2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAxOS0wNS0xNiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IFRlc3Qg
aHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1xdW90YS1hZGQuYW55Lmh0bWwgaXMgYSBmbGFr
eSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYjQ2MmE0NDY4
Y2E1MmNhNWE4ZjExNjRiMmZlYjhhM2RmYTBiYmZkNi4uYWE5ZTYzOTAxMmY5YmFiYmVhMjhlNTI3
ZTA5YmJjMDQwMTAzOThmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDcgQEAKIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1h
bGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiBQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIGludmFsaWQgY3JlZGVudGlhbCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93
bmdyYWRlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBkb3duZ3JhZGUgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAyIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCAxNDRiYTlkODlhOWJk
ODYwNmQ5NDQ3ODBkNDRiYmExZjk1MjAyMzIxLi5lODVjMmM4NGFmNzIyZDc1MTljNTVlYzdjNWNl
NmM1MDA2MzZhYzIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTMwLDQgKzMwLDQ0IEBACiAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7Cisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRp
YWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBpbnZhbGlkIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGNhbkRv
d25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRp
YWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAg
ZXh0ZW5zaW9uczogeyBhcHBpZDogIiIgfSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9u
c2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlv
biB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggYXV0aGVudGljYXRvciBkb3duZ3JhZGUgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAy
Iik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLWhpZC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYTUzZGQxNTcyZTdhNmQ0YzUz
YTI1Y2E1ZWM5YjAyMzQzYjE2OTIwOC4uODdiMDJhY2ZiYThkYmJjY2QzNDJlOGVjYTBlNzJjZmI3
ZGE4MWU2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLWhpZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIsNCArMiw3IEBACiBQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGlj
aW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCiBQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3
aXRoIGludmFsaWQgY3JlZGVudGlhbCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdy
YWRlIGZhaWxlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIHN1Y2NlZWRl
ZCBhbmQgdGhlbiBVMkYgZmFpbGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiAKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1s
CmluZGV4IDVhYzIxMzkwYTI1MmE2M2FhMzc1OTM0NWJkNTEyMDM5Zjg3MzVmOTQuLmYxMmVkNThj
MmVlNWE2NWY4NGMzMjdlMzY3ZmI4ZDc5NDViYmU1MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQu
aHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTMzLDcgKzMzLDcgQEAK
IAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwotICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2Rl
OiAtMSIpOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVy
cm9yLiBFcnJvciBjb2RlOiAyNTUiKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewpAQCAtNDgsNCArNDgsNDEgQEAK
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
dW5zdXBwb3J0ZWQtb3B0aW9ucyIgfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogNDMiKTsKICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB1bnN1cHBvcnRlZCBvcHRpb25zIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3Jl
ZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyks
ICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAzNCIpOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGludmFsaWQgY3JlZGVudGlhbCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7Cisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IikKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2Rl
OiAzNCIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhl
bnRpY2F0b3IgZG93bmdyYWRlIGZhaWxlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdl
OiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9u
czogeyBhcHBpZDogIiIgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VC
YXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90U3VwcG9y
dGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiQ2Fubm90IGNv
bnZlcnQgdGhlIHJlcXVlc3QgdG8gVTJGIGNvbW1hbmQuIik7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGljYXRvciBkb3duZ3JhZGUgc3VjY2VlZGVk
IGFuZCB0aGVuIFUyRiBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7CiA8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLXUyZi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggYWI4ZjA3MWViNTQ3NDEyODMzNjE3ZmQx
MTlmMzVhNmRlNjZjMGIxNC4uYWVmZTc1ZWQ1MjU4NTU4YjBjYjA3OTAyZWQ1NzJhZDE3ZGMxY2Uz
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNz
LXUyZi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTgsNCArOCw2IEBAIFBBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBlbXB0eSBBcHBJRCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYW4gQXBwSUQg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCBtdWx0aXBsZSBjcmVkZW50aWFscyBhbmQgQXBwSUQgaXMgbm90IHVzZWQg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCBtdWx0aXBsZSBjcmVkZW50aWFscyBhbmQgQXBwSUQgaXMgdXNlZCBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIGRvd25ncmFkZWQgYXV0aGVudGljYXRvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGRvd25ncmFk
ZWQgYXV0aGVudGljYXRvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIChBcHBJRCkgCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRt
bAppbmRleCBhMGEwZjBiN2Y4YjBhODhkMDAzOTYxMGQ5ZjZjNGYwNjU5NmIzZjg5Li5jODU3MTE0
Zjk3N2Y0OWI2ZTNmNTNlNDQ4YjcxODViYWEwMWFkM2FkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJm
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCkBAIC0xODEsNCArMTgxLDM4
IEBACiAgICAgICAgIH0pOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3
aXRoIG11bHRpcGxlIGNyZWRlbnRpYWxzIGFuZCBBcHBJRCBpcyB1c2VkIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4iKTsKIAorICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAg
IGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAg
IGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1l
b3V0OiAxMDAsCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogeyBhcHBpZDogImh0dHBzOi8v
bG9jYWxob3N0OjY2Ni9hcHBpZCIgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNhbkRvd25ncmFkZTogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggZG93bmdyYWRlZCBhdXRoZW50aWNhdG9y
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAor
ICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
aWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAg
ICAgICAgICAgICB0aW1lb3V0OiAxMDAsCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogeyBh
cHBpZDogImh0dHBzOi8vbG9jYWxob3N0OjY2Ni9hcHBpZCIgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGNhbkRv
d25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRp
YWxSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgdHJ1ZSwgIjdlYWJjNWNjMzI1MWJkYzU5MTE1
ZWY4N2I1ZjdlZTc0Y2IwMzc0N2UzOWJhODM0MTc0ODU2NWNjMTI5YzA3MTkiKTsKKyAgICAgICAg
fSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggZG93bmdyYWRl
ZCBhdXRoZW50aWNhdG9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gKEFwcElEKSIpOwor
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jl
c291cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2Vz
L3V0aWwuanMKaW5kZXggZjlhMzIwNDExODAwMWU1OTljMmY4ZTcyZDBjN2ZmODg1OTJhYzdjZC4u
OTg3ZDA3MjE5ZDRlNDc3MDc0Yzk4ZjQyYzE1YjE4NTNjNzNhYzYxMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTk4LDYgKzk4LDcg
QEAgY29uc3QgdGVzdFUyZlNpZ25SZXNwb25zZSA9CiAgICAgIkFRQUFBRHN3UkFJZ2U5NEtVcXdm
VElzbjRBT2pjTTFtcE1jUmpkSXRWRWVEWDBXNW5HaENQL2NDSUR4UmUwZUgiICsKICAgICAiZjRW
NExlRUFocWVEMGVmZlRqWTU1M0gxOXEraldxMVRjNFdPa0FBPSI7CiBjb25zdCB0ZXN0Q3RhcEVy
ckNyZWRlbnRpYWxFeGNsdWRlZE9ubHlSZXNwb25zZUJhc2U2NCA9ICJHUT09IjsKK2NvbnN0IHRl
c3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NCA9ICJJZz09IjsKIAogY29u
c3QgUkVTT1VSQ0VTX0RJUiA9ICIvV2ViS2l0L3dlYmF1dGhuL3Jlc291cmNlcy8iOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370163</attachid>
            <date>2019-05-17 15:36:25 -0700</date>
            <delta_ts>2019-05-17 15:45:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197974-20190517153625.patch</filename>
            <type>text/plain</type>
            <size>28874</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5YjQzNzAyNzkxMjY0ODE3
Y2VkMmFlMTMxZGFmZGIxOTc2YWZhYTMuLmQzZDA1NmRhNGUxNTBjYmE1NTNkMjE4M2M0NTRiYmY0
NTI4ZjVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTktMDUtMTYgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEFsbG93IGF1
dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCBib3RoIENUQVAgYW5kIFUyRiB0byB0cnkgVTJGIGlm
IENUQVAgZmFpbHMgaW4gYXV0aGVudGljYXRvckdldEFzc2VydGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTc0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81MDg3OTc0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBdXRoZW50aWNhdG9ycyB0aGF0IHN1cHBvcnQgYm90aCBDVEFQIGFuZCBVMkYg
cHJvdG9jb2xzIGNhbiBiZSB1c2VkIGluIGEgVTJGIGVuYWJsZWQgYnJvd3NlciB0byBjcmVhdGUg
YSBjcmVkZW50aWFsIGluCisgICAgICAgIFUyRiBmb3JtYXQuIFdoZW4gc3VjaCBhdXRoZW50aWNh
dG9yIGlzIHVzZWQgdG8gbG9naW4gaW4gV2ViS2l0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBD
VEFQIGF1dGhlbnRpY2F0b3IuIFNpbmNlIHRoZQorICAgICAgICBwcmV2aW91cyBjcmVkZW50aWFs
IGlzIGluIFUyRiBmb3JtYXQsIHRoZSBhdXRoZW50aWNhdG9yIHdpbGwgbm90IGNvbnNpZGVyIHRo
YXQgYXMgYSB2YWxpZCBjcmVkZW50aWFsIHdoZW4gQ1RBUCByZXF1ZXN0cworICAgICAgICBjb21l
IGFsb25nIGZvciB0aGF0IFUyRiBjcmVkZW50aWFsLiBUaGVyZWZvcmUgdGhlIHByZXZpb3VzIGNy
ZWF0ZWQgVTJGIGNyZWRlbnRpYWwgd2lsbCBub3QgYmUgYXNrZWQgYXQgYWxsLCBhbmQgdXNlcnMK
KyAgICAgICAgd2lsbCBub3QgYmUgYWJsZSB0byBsb2dpbi4gVGhpcyBzaXR1YXRpb24gaXMgbm90
IHdlbGwgZG9jdW1lbnRlZCBpbiB0aGUgQ1RBUC9XZWJBdXRoTiBzcGVjIHlldC4KKworICAgICAg
ICBUbyB3b3JrYXJvdW5kIHRoZSBhYm92ZSBpc3N1ZSwgYW4gYXV0aGVudGljYXRvciB0aGF0IHN1
cHBvcnRzIGJvdGggcHJvdG9jb2xzIHdpbGwgYmUgZG93bmdyYWRlZCB0byBhIFUyRiBhdXRoZW50
aWNhdG9yCisgICAgICAgIHRvIGFzayBhIHBvdGVudGlhbCBVMkYgY3JlZGVudGlhbCBvbmNlIGEg
dmFsaWQgZXJyb3IgaXMgcmV0dXJuZWQgcmVnYXJkaW5nIHRvIHRoZSBmaXJzdCBDVEFQIHJlcXVl
c3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFn
ZXI6OmRvd25ncmFkZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlk
Q29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OmZlZWRSZXBvcnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhl
bnRpY2F0b3I6OnRyeURvd25ncmFkZSk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWRBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEhpZEF1dGhlbnRpY2F0b3IuaDoKKwogMjAxOS0wNS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gc2V0IGEgbGlzdCBv
ZiBob3N0cyB0byB3aGljaCB0byBzZW5kIGN1c3RvbSBoZWFkZXIgZmllbGRzIGNyb3NzLW9yaWdp
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKaW5kZXggMmRhZDU2NDI3ZDE3YTljNGRjOTZmM2M4NGMyM2NiZDM0YTg1
NTA4YS4uM2M5NjYwZTJiZTUyNDZhM2NhNmJiYTRlYjhmYTJlYjgwMzEzYTZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwCkBAIC02NTIsNiArNjUyLDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAg
ICAgaWYgKGF1dG8gY29udGludWVBZnRlckVycm9yRGF0YSA9IHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEiKSkuZ2V0KCkpKSkK
ICAgICAgICAgICAgIGhpZC5jb250aW51ZUFmdGVyRXJyb3JEYXRhID0gV0tCb29sZWFuR2V0VmFs
dWUoY29udGludWVBZnRlckVycm9yRGF0YSk7CiAKKyAgICAgICAgaWYgKGF1dG8gY2FuRG93bmdy
YWRlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FuRG93bmdy
YWRlIikpLmdldCgpKSkpCisgICAgICAgICAgICBoaWQuY2FuRG93bmdyYWRlID0gV0tCb29sZWFu
R2V0VmFsdWUoY2FuRG93bmdyYWRlKTsKKwogICAgICAgICBjb25maWd1cmF0aW9uLmhpZCA9IFdU
Rk1vdmUoaGlkKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAppbmRleCBhMmFhMjdhNmY0MGQ1
OWExNzNhMGU1OTczZmY2NWY2NjRjMzVmZWFlLi5jYjAxMTFhMTczZDllNmM1NzQyMDNjMWM4MTEz
NjQyZTlmMzZiNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0Owog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFJlY2VpdmVkKFJlc3BvbmQmJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZG93bmdyYWRlKEF1dGhlbnRpY2F0b3IqIGlkLCBSZWY8QXV0aGVu
dGljYXRvcj4mJiBkb3duZ3JhZGVkQXV0aGVudGljYXRvcikgPSAwOwogICAgIH07CiAKICAgICB2
aXJ0dWFsIH5BdXRoZW50aWNhdG9yKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwCmluZGV4IDBjNWQyNWM1NTQzMDFjMGMxYjU3ZjdkYWQ1NDk3ZTkxNTBjZGVj
ZmEuLjkxM2JjOGE5NTcyMTQ5ZDZmMTYzYTdmYTRhZTc4MTNjZmUwMzJjMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTIwOCw2ICsyMDgsMTcgQEAgdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6cmVzcG9uZFJlY2VpdmVkKFJlc3BvbmQmJiByZXNwb25kKQogICAg
IHJlc3BvbmRSZWNlaXZlZEludGVybmFsKFdURk1vdmUocmVzcG9uZCkpOwogfQogCit2b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjpkb3duZ3JhZGUoQXV0aGVudGljYXRvciogaWQsIFJlZjxBdXRo
ZW50aWNhdG9yPiYmIGRvd25ncmFkZWRBdXRoZW50aWNhdG9yKQoreworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGlkXSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gcmVt
b3ZlZCA9IHdlYWtUaGlzLT5tX2F1dGhlbnRpY2F0b3JzLnJlbW92ZShpZCk7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7CisgICAgfSk7CisgICAgYXV0aGVudGljYXRv
ckFkZGVkKFdURk1vdmUoZG93bmdyYWRlZEF1dGhlbnRpY2F0b3IpKTsKK30KKwogVW5pcXVlUmVm
PEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3Jl
YXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsK
ICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3Bv
cnQsIG9ic2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGRjNDU5
YjQ0Yzg5MTA1YzgzODMzMjY4ZjVjYjMzNjQ2ODA0MDcwYzkuLmIwM2ZlNTc0NmJjZjM5ZTViZjgw
ZWNjMTMyZWJiMGU3MzE2ZjBjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApA
QCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQXV0aGVudGljYXRvcjo6T2JzZXJ2
ZXIKICAgICB2b2lkIHJlc3BvbmRSZWNlaXZlZChSZXNwb25kJiYpIGZpbmFsOworICAgIHZvaWQg
ZG93bmdyYWRlKEF1dGhlbnRpY2F0b3IqIGlkLCBSZWY8QXV0aGVudGljYXRvcj4mJiBkb3duZ3Jh
ZGVkQXV0aGVudGljYXRvcikgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFu
c3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAppbmRleCBkODZhM2E0NzJlNmJiNzcz
OTBlMzQwMWE2Y2RlODJjNjUzYTY4NDZlLi4zOWRkNzUyODhhOTU3NjQwZDk1ODNhYjAxOGYyMWVm
OTMzOTk3MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAt
MTMyLDYgKzEzMiw4IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAK
ICAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09
IE1vY2s6OlN1YlN0YWdlOjpNc2cpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGlzc3VlIGRp
ZmZlcmVudCBtc2cgY21kIGZvciBDVEFQIGFuZCBVMkYuCisgICAgICAgIGlmIChtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5jYW5Eb3duZ3JhZGUgJiYgIW1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQor
ICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYgPSBtX3JlcXVlc3RNZXNzYWdl
LT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZzsKICAgICAgICAgQVNTRVJUKG1f
Y29uZmlndXJhdGlvbi5oaWQtPmlzVTJmIF4gKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpICE9IEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprTXNnKSk7CiAKICAgICAgICAgLy8gU2V0IG9wdGlvbnMuCkBA
IC0yMDgsNyArMjEwLDExIEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkK
IAogICAgIE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChtX3N0YWdl
ID09IE1vY2s6OlN0YWdlOjpJbmZvICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6U3ViU3RhZ2U6Ok1z
ZykgewotICAgICAgICBhdXRvIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1dGhlbnRpY2F0b3JH
ZXRJbmZvUmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZlY3Rvcjx1aW50OF90
PihhYWd1aWRMZW5ndGgsIDB1KSkpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gaW5mb0RhdGE7
CisgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5jYW5Eb3duZ3JhZGUpCisgICAgICAg
ICAgICBpbmZvRGF0YSA9IGVuY29kZUFzQ0JPUihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNl
KHsgUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCwgUHJvdG9jb2xWZXJzaW9uOjprVTJmIH0sIFZlY3Rv
cjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDB1KSkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBpbmZvRGF0YSA9IGVuY29kZUFzQ0JPUihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlKHsg
UHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9LCBWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAw
dSkpKTsKICAgICAgICAgaW5mb0RhdGEuaW5zZXJ0KDAsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0
YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKSk7IC8vIFByZXBlbmQgc3RhdHVzIGNvZGUu
CiAgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9y
ID09IE1vY2s6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIG1lc3NhZ2UgPSBG
aWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwgLSAxLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0Nib3IsIGluZm9EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKaW5kZXggYmUwODcyZmJkZmI5
Y2FjODI3ODNiNTQ1ZjU0OTk2ZDY0ZWU3OTM3Ni4uZjdjMzk2OTY5NTk0MThhYjk1MGQ2N2Y0NDM2
ZWNmZTNhM2NiZmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKQEAgLTY5LDYgKzY5LDcgQEAgc3RydWN0IE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGtlZXBBbGl2
ZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZmFzdERhdGFBcnJpdmFsIHsgZmFsc2UgfTsKICAg
ICAgICAgYm9vbCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIHsgZmFsc2UgfTsKKyAgICAgICAgYm9v
bCBjYW5Eb3duZ3JhZGUgeyBmYWxzZSB9OwogICAgIH07CiAKICAgICBib29sIHNpbGVudEZhaWx1
cmUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNw
cAppbmRleCAwOGNkNWEzNDNiMTI3ZjQ1Y2FkMmZlZGZlZWE5OGExYTBlYjlhZGZlLi4zNTQxYThj
YTRlNjY2ZjFiM2U5YjNhYjJmNzA3NTA1OTJhOTY1MjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIkN0YXBIaWREcml2ZXIuaCIK
KyNpbmNsdWRlICJVMmZIaWRBdXRoZW50aWNhdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXZp
Y2VSZXF1ZXN0Q29udmVydGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgpAQCAtNDksNiAr
NTAsNyBAQCBDdGFwSGlkQXV0aGVudGljYXRvcjo6Q3RhcEhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1
bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYgZHJpdgogCiB2b2lkIEN0YXBIaWRBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbCgpCiB7CisgICAgQVNTRVJUKCFtX2lzRG93bmdyYWRlZCk7CiAg
ICAgYXV0byBjYm9yQ21kID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKHJlcXVl
c3REYXRhKCkuaGFzaCwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMsIG1faW5mby5vcHRp
b25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKICAgICBtX2RyaXZlci0+dHJh
bnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CkBAIC03NCw2ICs3Niw3IEBAIHZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpCiAKIHZvaWQgQ3Rh
cEhpZEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiB7CisgICAgQVNTRVJUKCFtX2lzRG93
bmdyYWRlZCk7CiAgICAgYXV0byBjYm9yQ21kID0gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFz
Q0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMsIG1f
aW5mby5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKICAgICBtX2Ry
aXZlci0+dHJhbnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC04MywxNiArODYsMzIgQEAgdm9pZCBDdGFwSGlkQXV0aGVudGljYXRv
cjo6Z2V0QXNzZXJ0aW9uKCkKICAgICB9KTsKIH0KIAotdm9pZCBDdGFwSGlkQXV0aGVudGljYXRv
cjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgY29uc3QKK3ZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0
QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7
CiAgICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSk7
CiAgICAgaWYgKCFyZXNwb25zZSkgewotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25E
YXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBF
cnJvciBjb2RlOiAiLCBkYXRhLnNpemUoKSA9PSAxID8gZGF0YVswXSA6IC0xKSB9KTsKKyAgICAg
ICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKKyAgICAgICAgaWYgKGVycm9y
ICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVyckludmFsaWRDQk9SICYmIHRyeURv
d25ncmFkZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZWNlaXZlUmVzcG9uZChF
eGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFs
IGVycm9yLiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1aW50OF90PihlcnJvcikpIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3Bv
bnNlKSk7CiB9CiAKK2Jvb2wgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSgpCit7
CisgICAgaWYgKG1faW5mby52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjprVTJmKSA9
PSBtX2luZm8udmVyc2lvbnMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghb2JzZXJ2ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9pc0Rvd25ncmFk
ZWQgPSB0cnVlOworICAgIG1fZHJpdmVyLT5zZXRQcm90b2NvbChQcm90b2NvbFZlcnNpb246OmtV
MmYpOworICAgIG9ic2VydmVyKCktPmRvd25ncmFkZSh0aGlzLCBVMmZIaWRBdXRoZW50aWNhdG9y
OjpjcmVhdGUoV1RGTW92ZShtX2RyaXZlcikpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmgKaW5kZXgg
ZmRmNjI3OTUyNTY5MWRlYzVmYThkMzU2ZTBhZTE5ZjJiZjIwN2I2Ni4uNjNjNDYxMTc0MjQyODQ3
YzYyZjlhNWQyYWUzNmM1NjFmMGZhYzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1
dGhlbnRpY2F0b3IuaApAQCAtNDcsMTAgKzQ3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWtl
Q3JlZGVudGlhbCgpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
UmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJikgY29uc3Q7CiAgICAgdm9pZCBnZXRB
c3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lkIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKSBjb25zdDsKKyAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKTsKKwor
ICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERy
aXZlcj4gbV9kcml2ZXI7CiAgICAgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBt
X2luZm87CisgICAgYm9vbCBtX2lzRG93bmdyYWRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA4MGEzNjI3YmExMjgzYzdlMTdiNzgwYjc3ZWVjMjkzYzA3MDdhZGVmLi5mZGE5
YzY5M2ZhZGE0MWE4ODQzZmI2YjAzZWZjZjIyMTEyZmI5N2NjIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUt
MTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIEFsbG93IGF1dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCBib3RoIENUQVAgYW5kIFUyRiB0
byB0cnkgVTJGIGlmIENUQVAgZmFpbHMgaW4gYXV0aGVudGljYXRvckdldEFzc2VydGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTc0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MDg3OTc0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjYW5Eb3duZ3JhZGUgb3B0aW9uIGZvciBtb2Nr
IGhpZCBkZXZpY2VzIHRvIHNpbXVsYXRlIHRoZSBzaXR1YXRpb24uCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKwog
MjAxOS0wNS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBTUEkgdG8gc2V0IGEgbGlzdCBvZiBob3N0cyB0byB3aGljaCB0byBzZW5k
IGN1c3RvbSBoZWFkZXIgZmllbGRzIGNyb3NzLW9yaWdpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYjI0NTkzZmYx
NjdlM2QxNTI2MTEyOTJiNTYwYTEwY2Q3NGYzM2I0OS4uMGJlNGMxY2ViOWU2NDk3ZWZiYzBhMDYz
MjdhN2E3NjBkZWRjMGIyOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNjkyLDYgKzI2OTIsMTYgQEAgdm9pZCBU
ZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKEpTVmFsdWVS
ZWYgY29uZmlndXJhdGlvblYKICAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUoY29udGludWVBZnRlckVycm9yRGF0YSkpLmdldCgpKTsKICAgICAgICAg
fQogCisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjYW5Eb3duZ3JhZGVQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJjYW5Eb3duZ3JhZGUi
KSk7CisgICAgICAgIEpTVmFsdWVSZWYgY2FuRG93bmdyYWRlVmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5KGNvbnRleHQsIGhpZCwgY2FuRG93bmdyYWRlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsK
KyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgY2FuRG93bmdyYWRlVmFs
dWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGNhbkRvd25ncmFkZVZhbHVlKSkgeworICAg
ICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGNhbkRvd25ncmFkZVZhbHVl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBib29sIGNhbkRvd25ncmFk
ZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY2FuRG93bmdyYWRlVmFsdWUpOworICAgICAg
ICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FuRG93bmdyYWRlIikpKTsKKyAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoY2FuRG93bmdyYWRlKSkuZ2V0KCkpOworICAgICAgICB9CisKICAg
ICAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdIaWRLZXlzOwogICAgICAgICBWZWN0b3I8V0tU
eXBlUmVmPiByYXdIaWRWYWx1ZXM7CiAgICAgICAgIHJhd0hpZEtleXMucmVzaXplKGhpZEtleXMu
c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAwYjZhYmU2NWRmYTRiNzIzMDVmZGI3NzUxZTgxOTU5OGEwYzBhYjYz
Li5iNzkwYzYzYzVkOTViMWUxN2ZlODY3MzNmYThjZDQ3ZWMyYjBjNGQ1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTktMDUtMTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViQXV0aE5dIEFsbG93IGF1dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCBi
b3RoIENUQVAgYW5kIFUyRiB0byB0cnkgVTJGIGlmIENUQVAgZmFpbHMgaW4gYXV0aGVudGljYXRv
ckdldEFzc2VydGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk3OTc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDg3OTc0Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0
aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMTktMDUtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0IGh0dHAvd3B0L2NhY2hlLXN0b3Jh
Z2UvY2FjaGUtcXVvdGEtYWRkLmFueS5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxl
bnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGI0NjJhNDQ2OGNhNTJjYTVhOGYxMTY0YjJmZWI4
YTNkZmEwYmJmZDYuLmFhOWU2MzkwMTJmOWJhYmJlYTI4ZTUyN2UwOWJiYzA0MDEwMzk4ZjcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtaGlkLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw3IEBACiAKIFBBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBpbnZhbGlkIGNyZWRl
bnRpYWwgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRo
IGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiAK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQt
c2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggMTQ0YmE5ZDg5YTliZDg2MDZkOTQ0NzgwZDQ0YmJhMWY5
NTIwMjMyMS4uZTg1YzJjODRhZjcyMmQ3NTE5YzU1ZWM3YzVjZTZjNTAwNjM2YWMyMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVu
dC5odHRwcy5odG1sCkBAIC0zMCw0ICszMCw0NCBAQAogICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1
cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJP
cGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0g
fSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggaW52YWxpZCBj
cmVkZW50aWFsIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNp
bGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0g
fSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGlj
YXRvciBkb3duZ3JhZGUgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6
ICIiIH0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93
bmdyYWRlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IGE1M2RkMTU3MmU3YTZkNGM1M2EyNWNhNWVjOWIwMjM0M2IxNjky
MDguLjg3YjAyYWNmYmE4ZGJiY2NkMzQyZThlY2EwZTcyY2ZiN2RhODFlNjEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0yLDQgKzIsNyBAQAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAK
K1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBpbnZhbGlkIGNyZWRlbnRp
YWwgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBmYWlsZWQgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBzdWNjZWVkZWQgYW5kIHRoZW4gVTJGIGZhaWxl
ZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1o
aWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAppbmRleCA1YWMyMTM5MGEyNTJh
NjNhYTM3NTkzNDViZDUxMjAzOWY4NzM1Zjk0Li5mMTJlZDU4YzJlZTVhNjVmODRjMzI3ZTM2N2Zi
OGQ3OTQ1YmJlNTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLWhpZC5odHRwcy5odG1sCkBAIC0zMyw3ICszMyw3IEBACiAKICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVt
bXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKLSAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogLTEiKTsKKyAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuZ2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjU1
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsaWNpb3Vz
IHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCiAgICAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHQpIHsKQEAgLTQ4LDQgKzQ4LDQxIEBACiAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInVuc3VwcG9ydGVkLW9wdGlvbnMi
IH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJy
b3IuIEVycm9yIGNvZGU6IDQzIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
Iik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRp
b25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IikKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4gRXJyb3IgY29kZTogMzQiKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBpbnZhbGlkIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGNhbkRvd25ncmFkZTogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxpZENy
ZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMzQiKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBm
YWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6ICIiIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNhbm5vdCBjb252ZXJ0IHRoZSByZXF1ZXN0IHRv
IFUyRiBjb21tYW5kLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3
aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIHN1Y2NlZWRlZCBhbmQgdGhlbiBVMkYgZmFpbGVk
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0
ZWQudHh0CmluZGV4IGFiOGYwNzFlYjU0NzQxMjgzMzYxN2ZkMTE5ZjM1YTZkZTY2YzBiMTQuLmFl
ZmU3NWVkNTI1ODU1OGIwY2IwNzkwMmVkNTcyYWQxN2RjMWNlMzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC04LDQgKzgsNiBAQCBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggZW1wdHkgQXBwSUQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLgogUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGFuIEFwcElEIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbXVsdGlw
bGUgY3JlZGVudGlhbHMgYW5kIEFwcElEIGlzIG5vdCB1c2VkIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbXVsdGlw
bGUgY3JlZGVudGlhbHMgYW5kIEFwcElEIGlzIHVzZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBkb3duZ3JhZGVk
IGF1dGhlbnRpY2F0b3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBkb3duZ3JhZGVkIGF1dGhlbnRpY2F0b3IgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAoQXBwSUQpIAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
dTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKaW5kZXggYTBhMGYwYjdmOGIw
YTg4ZDAwMzk2MTBkOWY2YzRmMDY1OTZiM2Y4OS4uYzg1NzExNGY5NzdmNDliNmUzZjUzZTQ0OGI3
MTg1YmFhMDFhZDNhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3Vj
Y2Vzcy11MmYuaHR0cHMuaHRtbApAQCAtMTgxLDQgKzE4MSwzOCBAQAogICAgICAgICB9KTsKICAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtdWx0aXBsZSBjcmVkZW50
aWFscyBhbmQgQXBwSUQgaXMgdXNlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
KyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVS
TC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRp
YWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6ICJodHRwczovL2xvY2FsaG9zdDo2NjYvYXBwaWQi
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9u
c2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQo
Y3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSB3aXRoIGRvd25ncmFkZWQgYXV0aGVudGljYXRvciBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBhbGxv
d0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDog
MTAwLAorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6ICJodHRwczovL2xvY2Fs
aG9zdDo2NjYvYXBwaWQiIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRl
c3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3BvbnNl
XSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNy
ZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVjYzMyNTFiZGM1OTExNWVmODdiNWY3ZWU3NGNiMDM3NDdl
MzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5Iik7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGRvd25ncmFkZWQgYXV0aGVudGljYXRvciBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIChBcHBJRCkiKTsKKwogPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCmluZGV4IGY5YTMy
MDQxMTgwMDFlNTk5YzJmOGU3MmQwYzdmZjg4NTkyYWM3Y2QuLjk4N2QwNzIxOWQ0ZTQ3NzA3NGM5
OGY0MmMxNWIxODUzYzczYWM2MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC05OCw2ICs5OCw3IEBAIGNvbnN0IHRlc3RVMmZTaWdu
UmVzcG9uc2UgPQogICAgICJBUUFBQURzd1JBSWdlOTRLVXF3ZlRJc240QU9qY00xbXBNY1JqZEl0
VkVlRFgwVzVuR2hDUC9jQ0lEeFJlMGVIIiArCiAgICAgImY0VjRMZUVBaHFlRDBlZmZUalk1NTNI
MTlxK2pXcTFUYzRXT2tBQT0iOwogY29uc3QgdGVzdEN0YXBFcnJDcmVkZW50aWFsRXhjbHVkZWRP
bmx5UmVzcG9uc2VCYXNlNjQgPSAiR1E9PSI7Citjb25zdCB0ZXN0Q3RhcEVyckludmFsaWRDcmVk
ZW50aWFsUmVzcG9uc2VCYXNlNjQgPSAiSWc9PSI7CiAKIGNvbnN0IFJFU09VUkNFU19ESVIgPSAi
L1dlYktpdC93ZWJhdXRobi9yZXNvdXJjZXMvIjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370165</attachid>
            <date>2019-05-17 15:45:42 -0700</date>
            <delta_ts>2019-05-18 17:42:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197974-20190517154542.patch</filename>
            <type>text/plain</type>
            <size>28136</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5YjQzNzAyNzkxMjY0ODE3
Y2VkMmFlMTMxZGFmZGIxOTc2YWZhYTMuLmQzZDA1NmRhNGUxNTBjYmE1NTNkMjE4M2M0NTRiYmY0
NTI4ZjVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTktMDUtMTYgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIEFsbG93IGF1
dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCBib3RoIENUQVAgYW5kIFUyRiB0byB0cnkgVTJGIGlm
IENUQVAgZmFpbHMgaW4gYXV0aGVudGljYXRvckdldEFzc2VydGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTc0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81MDg3OTc0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBdXRoZW50aWNhdG9ycyB0aGF0IHN1cHBvcnQgYm90aCBDVEFQIGFuZCBVMkYg
cHJvdG9jb2xzIGNhbiBiZSB1c2VkIGluIGEgVTJGIGVuYWJsZWQgYnJvd3NlciB0byBjcmVhdGUg
YSBjcmVkZW50aWFsIGluCisgICAgICAgIFUyRiBmb3JtYXQuIFdoZW4gc3VjaCBhdXRoZW50aWNh
dG9yIGlzIHVzZWQgdG8gbG9naW4gaW4gV2ViS2l0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBD
VEFQIGF1dGhlbnRpY2F0b3IuIFNpbmNlIHRoZQorICAgICAgICBwcmV2aW91cyBjcmVkZW50aWFs
IGlzIGluIFUyRiBmb3JtYXQsIHRoZSBhdXRoZW50aWNhdG9yIHdpbGwgbm90IGNvbnNpZGVyIHRo
YXQgYXMgYSB2YWxpZCBjcmVkZW50aWFsIHdoZW4gQ1RBUCByZXF1ZXN0cworICAgICAgICBjb21l
IGFsb25nIGZvciB0aGF0IFUyRiBjcmVkZW50aWFsLiBUaGVyZWZvcmUgdGhlIHByZXZpb3VzIGNy
ZWF0ZWQgVTJGIGNyZWRlbnRpYWwgd2lsbCBub3QgYmUgYXNrZWQgYXQgYWxsLCBhbmQgdXNlcnMK
KyAgICAgICAgd2lsbCBub3QgYmUgYWJsZSB0byBsb2dpbi4gVGhpcyBzaXR1YXRpb24gaXMgbm90
IHdlbGwgZG9jdW1lbnRlZCBpbiB0aGUgQ1RBUC9XZWJBdXRoTiBzcGVjIHlldC4KKworICAgICAg
ICBUbyB3b3JrYXJvdW5kIHRoZSBhYm92ZSBpc3N1ZSwgYW4gYXV0aGVudGljYXRvciB0aGF0IHN1
cHBvcnRzIGJvdGggcHJvdG9jb2xzIHdpbGwgYmUgZG93bmdyYWRlZCB0byBhIFUyRiBhdXRoZW50
aWNhdG9yCisgICAgICAgIHRvIGFzayBhIHBvdGVudGlhbCBVMkYgY3JlZGVudGlhbCBvbmNlIGEg
dmFsaWQgZXJyb3IgaXMgcmV0dXJuZWQgcmVnYXJkaW5nIHRvIHRoZSBmaXJzdCBDVEFQIHJlcXVl
c3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvck1hbmFn
ZXI6OmRvd25ncmFkZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlk
Q29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5l
Y3Rpb246OmZlZWRSZXBvcnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhl
bnRpY2F0b3I6OnRyeURvd25ncmFkZSk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWRBdXRoZW50
aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEhpZEF1dGhlbnRpY2F0b3IuaDoKKwogMjAxOS0wNS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gc2V0IGEgbGlzdCBv
ZiBob3N0cyB0byB3aGljaCB0byBzZW5kIGN1c3RvbSBoZWFkZXIgZmllbGRzIGNyb3NzLW9yaWdp
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAKaW5kZXggMmRhZDU2NDI3ZDE3YTljNGRjOTZmM2M4NGMyM2NiZDM0YTg1
NTA4YS4uM2M5NjYwZTJiZTUyNDZhM2NhNmJiYTRlYjhmYTJlYjgwMzEzYTZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwCkBAIC02NTIsNiArNjUyLDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAg
ICAgaWYgKGF1dG8gY29udGludWVBZnRlckVycm9yRGF0YSA9IHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEiKSkuZ2V0KCkpKSkK
ICAgICAgICAgICAgIGhpZC5jb250aW51ZUFmdGVyRXJyb3JEYXRhID0gV0tCb29sZWFuR2V0VmFs
dWUoY29udGludWVBZnRlckVycm9yRGF0YSk7CiAKKyAgICAgICAgaWYgKGF1dG8gY2FuRG93bmdy
YWRlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FuRG93bmdy
YWRlIikpLmdldCgpKSkpCisgICAgICAgICAgICBoaWQuY2FuRG93bmdyYWRlID0gV0tCb29sZWFu
R2V0VmFsdWUoY2FuRG93bmdyYWRlKTsKKwogICAgICAgICBjb25maWd1cmF0aW9uLmhpZCA9IFdU
Rk1vdmUoaGlkKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3IuaAppbmRleCBhMmFhMjdhNmY0MGQ1
OWExNzNhMGU1OTczZmY2NWY2NjRjMzVmZWFlLi5jYjAxMTFhMTczZDllNmM1NzQyMDNjMWM4MTEz
NjQyZTlmMzZiNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0Owog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFJlY2VpdmVkKFJlc3BvbmQmJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZG93bmdyYWRlKEF1dGhlbnRpY2F0b3IqIGlkLCBSZWY8QXV0aGVu
dGljYXRvcj4mJiBkb3duZ3JhZGVkQXV0aGVudGljYXRvcikgPSAwOwogICAgIH07CiAKICAgICB2
aXJ0dWFsIH5BdXRoZW50aWNhdG9yKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwCmluZGV4IDBjNWQyNWM1NTQzMDFjMGMxYjU3ZjdkYWQ1NDk3ZTkxNTBjZGVj
ZmEuLjkxM2JjOGE5NTcyMTQ5ZDZmMTYzYTdmYTRhZTc4MTNjZmUwMzJjMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTIwOCw2ICsyMDgsMTcgQEAgdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6cmVzcG9uZFJlY2VpdmVkKFJlc3BvbmQmJiByZXNwb25kKQogICAg
IHJlc3BvbmRSZWNlaXZlZEludGVybmFsKFdURk1vdmUocmVzcG9uZCkpOwogfQogCit2b2lkIEF1
dGhlbnRpY2F0b3JNYW5hZ2VyOjpkb3duZ3JhZGUoQXV0aGVudGljYXRvciogaWQsIFJlZjxBdXRo
ZW50aWNhdG9yPiYmIGRvd25ncmFkZWRBdXRoZW50aWNhdG9yKQoreworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGlkXSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gcmVt
b3ZlZCA9IHdlYWtUaGlzLT5tX2F1dGhlbnRpY2F0b3JzLnJlbW92ZShpZCk7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7CisgICAgfSk7CisgICAgYXV0aGVudGljYXRv
ckFkZGVkKFdURk1vdmUoZG93bmdyYWRlZEF1dGhlbnRpY2F0b3IpKTsKK30KKwogVW5pcXVlUmVm
PEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3Jl
YXRlU2VydmljZShXZWJDb3JlOjpBdXRoZW50aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0
aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsK
ICAgICByZXR1cm4gQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6OmNyZWF0ZSh0cmFuc3Bv
cnQsIG9ic2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5oCmluZGV4IGRjNDU5
YjQ0Yzg5MTA1YzgzODMzMjY4ZjVjYjMzNjQ2ODA0MDcwYzkuLmIwM2ZlNTc0NmJjZjM5ZTViZjgw
ZWNjMTMyZWJiMGU3MzE2ZjBjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuaApA
QCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQXV0aGVudGljYXRvcjo6T2JzZXJ2
ZXIKICAgICB2b2lkIHJlc3BvbmRSZWNlaXZlZChSZXNwb25kJiYpIGZpbmFsOworICAgIHZvaWQg
ZG93bmdyYWRlKEF1dGhlbnRpY2F0b3IqIGlkLCBSZWY8QXV0aGVudGljYXRvcj4mJiBkb3duZ3Jh
ZGVkQXV0aGVudGljYXRvcikgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZW4gYnkgTW9ja0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLgogICAgIHZpcnR1YWwgVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFu
c3BvcnRTZXJ2aWNlPiBjcmVhdGVTZXJ2aWNlKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JUcmFuc3Bv
cnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRTZXJ2aWNlOjpPYnNlcnZlciYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrSGlkQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAppbmRleCBkODZhM2E0NzJlNmJiNzcz
OTBlMzQwMWE2Y2RlODJjNjUzYTY4NDZlLi4zOWRkNzUyODhhOTU3NjQwZDk1ODNhYjAxOGYyMWVm
OTMzOTk3MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAt
MTMyLDYgKzEzMiw4IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAK
ICAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09
IE1vY2s6OlN1YlN0YWdlOjpNc2cpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGlzc3VlIGRp
ZmZlcmVudCBtc2cgY21kIGZvciBDVEFQIGFuZCBVMkYuCisgICAgICAgIGlmIChtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5jYW5Eb3duZ3JhZGUgJiYgIW1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQor
ICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYgPSBtX3JlcXVlc3RNZXNzYWdl
LT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZzsKICAgICAgICAgQVNTRVJUKG1f
Y29uZmlndXJhdGlvbi5oaWQtPmlzVTJmIF4gKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpICE9IEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprTXNnKSk7CiAKICAgICAgICAgLy8gU2V0IG9wdGlvbnMuCkBA
IC0yMDgsNyArMjEwLDExIEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZlZWRSZXBvcnRzKCkK
IAogICAgIE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChtX3N0YWdl
ID09IE1vY2s6OlN0YWdlOjpJbmZvICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6U3ViU3RhZ2U6Ok1z
ZykgewotICAgICAgICBhdXRvIGluZm9EYXRhID0gZW5jb2RlQXNDQk9SKEF1dGhlbnRpY2F0b3JH
ZXRJbmZvUmVzcG9uc2UoeyBQcm90b2NvbFZlcnNpb246OmtDdGFwIH0sIFZlY3Rvcjx1aW50OF90
PihhYWd1aWRMZW5ndGgsIDB1KSkpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gaW5mb0RhdGE7
CisgICAgICAgIGlmIChtX2NvbmZpZ3VyYXRpb24uaGlkLT5jYW5Eb3duZ3JhZGUpCisgICAgICAg
ICAgICBpbmZvRGF0YSA9IGVuY29kZUFzQ0JPUihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNl
KHsgUHJvdG9jb2xWZXJzaW9uOjprQ3RhcCwgUHJvdG9jb2xWZXJzaW9uOjprVTJmIH0sIFZlY3Rv
cjx1aW50OF90PihhYWd1aWRMZW5ndGgsIDB1KSkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBpbmZvRGF0YSA9IGVuY29kZUFzQ0JPUihBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlKHsg
UHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9LCBWZWN0b3I8dWludDhfdD4oYWFndWlkTGVuZ3RoLCAw
dSkpKTsKICAgICAgICAgaW5mb0RhdGEuaW5zZXJ0KDAsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0
YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKSk7IC8vIFByZXBlbmQgc3RhdHVzIGNvZGUu
CiAgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQtPmVycm9y
ID09IE1vY2s6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIG1lc3NhZ2UgPSBG
aWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwgLSAxLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0Nib3IsIGluZm9EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKaW5kZXggYmUwODcyZmJkZmI5
Y2FjODI3ODNiNTQ1ZjU0OTk2ZDY0ZWU3OTM3Ni4uZjdjMzk2OTY5NTk0MThhYjk1MGQ2N2Y0NDM2
ZWNmZTNhM2NiZmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKQEAgLTY5LDYgKzY5LDcgQEAgc3RydWN0IE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBib29sIGtlZXBBbGl2
ZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZmFzdERhdGFBcnJpdmFsIHsgZmFsc2UgfTsKICAg
ICAgICAgYm9vbCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIHsgZmFsc2UgfTsKKyAgICAgICAgYm9v
bCBjYW5Eb3duZ3JhZGUgeyBmYWxzZSB9OwogICAgIH07CiAKICAgICBib29sIHNpbGVudEZhaWx1
cmUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNw
cAppbmRleCAwOGNkNWEzNDNiMTI3ZjQ1Y2FkMmZlZGZlZWE5OGExYTBlYjlhZGZlLi4zNTQxYThj
YTRlNjY2ZjFiM2U5YjNhYjJmNzA3NTA1OTJhOTY1MjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShX
RUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgIkN0YXBIaWREcml2ZXIuaCIK
KyNpbmNsdWRlICJVMmZIaWRBdXRoZW50aWNhdG9yLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXZp
Y2VSZXF1ZXN0Q29udmVydGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNv
bnZlcnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgpAQCAtNDksNiAr
NTAsNyBAQCBDdGFwSGlkQXV0aGVudGljYXRvcjo6Q3RhcEhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1
bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYgZHJpdgogCiB2b2lkIEN0YXBIaWRBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbCgpCiB7CisgICAgQVNTRVJUKCFtX2lzRG93bmdyYWRlZCk7CiAg
ICAgYXV0byBjYm9yQ21kID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKHJlcXVl
c3REYXRhKCkuaGFzaCwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMsIG1faW5mby5vcHRp
b25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKICAgICBtX2RyaXZlci0+dHJh
bnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CkBAIC03NCw2ICs3Niw3IEBAIHZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpCiAKIHZvaWQgQ3Rh
cEhpZEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiB7CisgICAgQVNTRVJUKCFtX2lzRG93
bmdyYWRlZCk7CiAgICAgYXV0byBjYm9yQ21kID0gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFz
Q0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMsIG1f
aW5mby5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsKICAgICBtX2Ry
aXZlci0+dHJhbnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC04MywxNiArODYsMzIgQEAgdm9pZCBDdGFwSGlkQXV0aGVudGljYXRv
cjo6Z2V0QXNzZXJ0aW9uKCkKICAgICB9KTsKIH0KIAotdm9pZCBDdGFwSGlkQXV0aGVudGljYXRv
cjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgY29uc3QKK3ZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0
QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7
CiAgICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSk7
CiAgICAgaWYgKCFyZXNwb25zZSkgewotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25E
YXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBF
cnJvciBjb2RlOiAiLCBkYXRhLnNpemUoKSA9PSAxID8gZGF0YVswXSA6IC0xKSB9KTsKKyAgICAg
ICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKKyAgICAgICAgaWYgKGVycm9y
ICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVyckludmFsaWRDQk9SICYmIHRyeURv
d25ncmFkZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZWNlaXZlUmVzcG9uZChF
eGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFs
IGVycm9yLiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1aW50OF90PihlcnJvcikpIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3Bv
bnNlKSk7CiB9CiAKK2Jvb2wgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OnRyeURvd25ncmFkZSgpCit7
CisgICAgaWYgKG1faW5mby52ZXJzaW9ucygpLmZpbmQoUHJvdG9jb2xWZXJzaW9uOjprVTJmKSA9
PSBtX2luZm8udmVyc2lvbnMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghb2JzZXJ2ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9pc0Rvd25ncmFk
ZWQgPSB0cnVlOworICAgIG1fZHJpdmVyLT5zZXRQcm90b2NvbChQcm90b2NvbFZlcnNpb246OmtV
MmYpOworICAgIG9ic2VydmVyKCktPmRvd25ncmFkZSh0aGlzLCBVMmZIaWRBdXRoZW50aWNhdG9y
OjpjcmVhdGUoV1RGTW92ZShtX2RyaXZlcikpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmgKaW5kZXgg
ZmRmNjI3OTUyNTY5MWRlYzVmYThkMzU2ZTBhZTE5ZjJiZjIwN2I2Ni4uNjNjNDYxMTc0MjQyODQ3
YzYyZjlhNWQyYWUzNmM1NjFmMGZhYzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1
dGhlbnRpY2F0b3IuaApAQCAtNDcsMTAgKzQ3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWtl
Q3JlZGVudGlhbCgpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
UmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJikgY29uc3Q7CiAgICAgdm9pZCBnZXRB
c3NlcnRpb24oKSBmaW5hbDsKLSAgICB2b2lkIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKSBjb25zdDsKKyAgICB2b2lkIGNvbnRpbnVl
R2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKTsKKwor
ICAgIGJvb2wgdHJ5RG93bmdyYWRlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERy
aXZlcj4gbV9kcml2ZXI7CiAgICAgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSBt
X2luZm87CisgICAgYm9vbCBtX2lzRG93bmdyYWRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA4MGEzNjI3YmExMjgzYzdlMTdiNzgwYjc3ZWVjMjkzYzA3MDdhZGVmLi5mZGE5
YzY5M2ZhZGE0MWE4ODQzZmI2YjAzZWZjZjIyMTEyZmI5N2NjIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDUt
MTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIEFsbG93IGF1dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCBib3RoIENUQVAgYW5kIFUyRiB0
byB0cnkgVTJGIGlmIENUQVAgZmFpbHMgaW4gYXV0aGVudGljYXRvckdldEFzc2VydGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTc0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81MDg3OTc0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjYW5Eb3duZ3JhZGUgb3B0aW9uIGZvciBtb2Nr
IGhpZCBkZXZpY2VzIHRvIHNpbXVsYXRlIHRoZSBzaXR1YXRpb24uCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKwog
MjAxOS0wNS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBTUEkgdG8gc2V0IGEgbGlzdCBvZiBob3N0cyB0byB3aGljaCB0byBzZW5k
IGN1c3RvbSBoZWFkZXIgZmllbGRzIGNyb3NzLW9yaWdpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYjI0NTkzZmYx
NjdlM2QxNTI2MTEyOTJiNTYwYTEwY2Q3NGYzM2I0OS4uMGJlNGMxY2ViOWU2NDk3ZWZiYzBhMDYz
MjdhN2E3NjBkZWRjMGIyOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNjkyLDYgKzI2OTIsMTYgQEAgdm9pZCBU
ZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKEpTVmFsdWVS
ZWYgY29uZmlndXJhdGlvblYKICAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUoY29udGludWVBZnRlckVycm9yRGF0YSkpLmdldCgpKTsKICAgICAgICAg
fQogCisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjYW5Eb3duZ3JhZGVQcm9wZXJ0
eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJjYW5Eb3duZ3JhZGUi
KSk7CisgICAgICAgIEpTVmFsdWVSZWYgY2FuRG93bmdyYWRlVmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5KGNvbnRleHQsIGhpZCwgY2FuRG93bmdyYWRlUHJvcGVydHlOYW1lLmdldCgpLCAwKTsK
KyAgICAgICAgaWYgKCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgY2FuRG93bmdyYWRlVmFs
dWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGNhbkRvd25ncmFkZVZhbHVlKSkgeworICAg
ICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGNhbkRvd25ncmFkZVZhbHVl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBib29sIGNhbkRvd25ncmFk
ZSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgY2FuRG93bmdyYWRlVmFsdWUpOworICAgICAg
ICAgICAgaGlkS2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FuRG93bmdyYWRlIikpKTsKKyAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoY2FuRG93bmdyYWRlKSkuZ2V0KCkpOworICAgICAgICB9CisKICAg
ICAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdIaWRLZXlzOwogICAgICAgICBWZWN0b3I8V0tU
eXBlUmVmPiByYXdIaWRWYWx1ZXM7CiAgICAgICAgIHJhd0hpZEtleXMucmVzaXplKGhpZEtleXMu
c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAwYjZhYmU2NWRmYTRiNzIzMDVmZGI3NzUxZTgxOTU5OGEwYzBhYjYz
Li5iNzkwYzYzYzVkOTViMWUxN2ZlODY3MzNmYThjZDQ3ZWMyYjBjNGQ1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTktMDUtMTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViQXV0aE5dIEFsbG93IGF1dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCBi
b3RoIENUQVAgYW5kIFUyRiB0byB0cnkgVTJGIGlmIENUQVAgZmFpbHMgaW4gYXV0aGVudGljYXRv
ckdldEFzc2VydGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk3OTc0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDg3OTc0Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0
aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMTktMDUtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0IGh0dHAvd3B0L2NhY2hlLXN0b3Jh
Z2UvY2FjaGUtcXVvdGEtYWRkLmFueS5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxl
bnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGI0NjJhNDQ2OGNhNTJjYTVhOGYxMTY0YjJmZWI4
YTNkZmEwYmJmZDYuLmFhOWU2MzkwMTJmOWJhYmJlYTI4ZTUyN2UwOWJiYzA0MDEwMzk4ZjcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtaGlkLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw3IEBACiAKIFBBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBpbnZhbGlkIGNyZWRl
bnRpYWwgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRo
IGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiAK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQt
c2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggMTQ0YmE5ZDg5YTliZDg2MDZkOTQ0NzgwZDQ0YmJhMWY5
NTIwMjMyMS4uZTg1YzJjODRhZjcyMmQ3NTE5YzU1ZWM3YzVjZTZjNTAwNjM2YWMyMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVu
dC5odHRwcy5odG1sCkBAIC0zMCw0ICszMCw0NCBAQAogICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ1bnN1
cHBvcnRlZC1vcHRpb25zIiB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJP
cGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0g
fSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggaW52YWxpZCBj
cmVkZW50aWFsIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNp
bGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjRdIH0g
fSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggYXV0aGVudGlj
YXRvciBkb3duZ3JhZGUgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6
ICIiIH0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93
bmdyYWRlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IGE1M2RkMTU3MmU3YTZkNGM1M2EyNWNhNWVjOWIwMjM0M2IxNjky
MDguLjYxYjNhZmFmMWYyY2ViYjY4MDJmMzlhM2QzNWE0MWNiMDFmYzZmODQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1oaWQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0yLDQgKzIsNiBAQAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIHVuc3VwcG9ydGVkIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAK
K1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRv
d25ncmFkZSBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFkZSBzdWNj
ZWVkZWQgYW5kIHRoZW4gVTJGIGZhaWxlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIg
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMu
aHRtbAppbmRleCA1YWMyMTM5MGEyNTJhNjNhYTM3NTkzNDViZDUxMjAzOWY4NzM1Zjk0Li41NDg1
ZjM3MGQ2Nzk3MWUyMjM1ZDhkOWE4NzJlYWIzNGY5YzU2NmY3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUt
aGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCkBAIC0zMyw3ICszMyw3
IEBACiAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKLSAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3Ig
Y29kZTogLTEiKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5h
bCBlcnJvci4gRXJyb3IgY29kZTogMjU1Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggbWFsaWNpb3VzIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKQEAgLTQ4LDQgKzQ4LDI5
IEBACiAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInVuc3VwcG9ydGVkLW9wdGlvbnMiIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25z
KSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDQzIik7CiAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdW5zdXBwb3J0ZWQgb3B0aW9ucyBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IikK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDdGFwRXJySW52YWxp
ZENyZWRlbnRpYWxSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlv
bnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMzQiKTsKKyAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBhdXRoZW50aWNhdG9yIGRvd25ncmFk
ZSBmYWlsZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAg
IHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJy
YXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6ICIiIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgY2FuRG93bmdyYWRlOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdEN0YXBFcnJJbnZhbGlkQ3JlZGVudGlhbFJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNhbm5vdCBjb252ZXJ0IHRoZSByZXF1ZXN0
IHRvIFUyRiBjb21tYW5kLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIGF1dGhlbnRpY2F0b3IgZG93bmdyYWRlIHN1Y2NlZWRlZCBhbmQgdGhlbiBVMkYgZmFp
bGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhw
ZWN0ZWQudHh0CmluZGV4IGFiOGYwNzFlYjU0NzQxMjgzMzYxN2ZkMTE5ZjM1YTZkZTY2YzBiMTQu
LmFlZmU3NWVkNTI1ODU1OGIwY2IwNzkwMmVkNTcyYWQxN2RjMWNlMzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3Vj
Y2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC04LDQgKzgsNiBAQCBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggZW1wdHkgQXBwSUQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLgogUEFTUyBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGFuIEFwcElEIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbXVs
dGlwbGUgY3JlZGVudGlhbHMgYW5kIEFwcElEIGlzIG5vdCB1c2VkIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbXVs
dGlwbGUgY3JlZGVudGlhbHMgYW5kIEFwcElEIGlzIHVzZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBkb3duZ3Jh
ZGVkIGF1dGhlbnRpY2F0b3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBkb3duZ3JhZGVkIGF1dGhlbnRpY2F0b3Ig
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAoQXBwSUQpIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nl
c3MtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKaW5kZXggYTBhMGYwYjdm
OGIwYTg4ZDAwMzk2MTBkOWY2YzRmMDY1OTZiM2Y4OS4uYzg1NzExNGY5NzdmNDliNmUzZjUzZTQ0
OGI3MTg1YmFhMDFhZDNhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy11MmYuaHR0cHMuaHRtbApAQCAtMTgxLDQgKzE4MSwzOCBAQAogICAgICAgICB9KTsK
ICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtdWx0aXBsZSBjcmVk
ZW50aWFscyBhbmQgQXBwSUQgaXMgdXNlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7
CiAKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Cisg
ICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2
NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxz
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRl
bnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAwLAorICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6ICJodHRwczovL2xvY2FsaG9zdDo2NjYvYXBw
aWQiIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVz
cG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIGRvd25ncmFkZWQgYXV0aGVudGljYXRvciBpbiBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBh
bGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91
dDogMTAwLAorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IHsgYXBwaWQ6ICJodHRwczovL2xv
Y2FsaG9zdDo2NjYvYXBwaWQiIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBjYW5Eb3duZ3JhZGU6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0Q3RhcEVyckludmFsaWRDcmVkZW50aWFsUmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmU2lnblJlc3Bv
bnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwsIHRydWUsICI3ZWFiYzVjYzMyNTFiZGM1OTExNWVmODdiNWY3ZWU3NGNiMDM3
NDdlMzliYTgzNDE3NDg1NjVjYzEyOWMwNzE5Iik7CisgICAgICAgIH0pOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIGRvd25ncmFkZWQgYXV0aGVudGljYXRvciBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIChBcHBJRCkiKTsKKwogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCmluZGV4IGY5
YTMyMDQxMTgwMDFlNTk5YzJmOGU3MmQwYzdmZjg4NTkyYWM3Y2QuLjk4N2QwNzIxOWQ0ZTQ3NzA3
NGM5OGY0MmMxNWIxODUzYzczYWM2MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC05OCw2ICs5OCw3IEBAIGNvbnN0IHRlc3RVMmZT
aWduUmVzcG9uc2UgPQogICAgICJBUUFBQURzd1JBSWdlOTRLVXF3ZlRJc240QU9qY00xbXBNY1Jq
ZEl0VkVlRFgwVzVuR2hDUC9jQ0lEeFJlMGVIIiArCiAgICAgImY0VjRMZUVBaHFlRDBlZmZUalk1
NTNIMTlxK2pXcTFUYzRXT2tBQT0iOwogY29uc3QgdGVzdEN0YXBFcnJDcmVkZW50aWFsRXhjbHVk
ZWRPbmx5UmVzcG9uc2VCYXNlNjQgPSAiR1E9PSI7Citjb25zdCB0ZXN0Q3RhcEVyckludmFsaWRD
cmVkZW50aWFsUmVzcG9uc2VCYXNlNjQgPSAiSWc9PSI7CiAKIGNvbnN0IFJFU09VUkNFU19ESVIg
PSAiL1dlYktpdC93ZWJhdXRobi9yZXNvdXJjZXMvIjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>