<?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>232584</bug_id>
          
          <creation_ts>2021-11-01 14:31:29 -0700</creation_ts>
          <short_desc>Web Inspector: REGRESSION(?): Emulate User Gesture doesn&apos;t work</short_desc>
          <delta_ts>2022-03-18 18:04:35 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1810880</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-01 14:31:29 -0700</bug_when>
    <thetext>try evaluating the following on any page
```
     navigator.share({ text: &quot;test&quot; })
```

this used to work

now it errors with
&gt; Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

T.T</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810882</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-01 14:32:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/84899576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811011</commentid>
    <comment_count>2</comment_count>
      <attachid>443053</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-11-01 20:14:38 -0700</bug_when>
    <thetext>Created attachment 443053
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811020</commentid>
    <comment_count>3</comment_count>
      <attachid>443057</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-11-01 20:35:27 -0700</bug_when>
    <thetext>Created attachment 443057
Patch v1.1 - Fix additional user gesture emulation cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811034</commentid>
    <comment_count>4</comment_count>
      <attachid>443057</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-01 22:41:26 -0700</bug_when>
    <thetext>Comment on attachment 443057
Patch v1.1 - Fix additional user gesture emulation cases

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

r- as this definitely needs some tests, but otherwise the logic is sound :)

One thing worth noting is that the underlying concept we&apos;re trying to emulate with this is a &quot;activation&quot; &lt;https://html.spec.whatwg.org/multipage/interaction.html#activation-notification&gt;, and in the case of `navigator.share` specifically it&apos;s a &quot;transient activation&quot; that&apos;s consumed on the first attempt.  So we may wanna make a test that tries to call `navigator.share` twice in the same `Runtime.evaluate` and confirm that the second one fails because the first consumed the emulated &quot;transient activation&quot;.

&gt; Source/WebCore/ChangeLog:8
&gt; +        In some code paths, including navigator.share require that we emulate user gestures for the specific Document

NIT: awkward sentence, please rephrase :)

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:113
&gt; +                document = downcast&lt;Document&gt;(globalObject-&gt;scriptExecutionContext());

Can we actually assume for sure that this is a `Document`?  I think yes (since this is about contextmenus), but just wanna make sure :)

&gt; Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp:70
&gt; +Document* PageDebuggerAgent::documentForInjectedScript(InjectedScript injectedScript)

`const InjectedScript&amp; injectedScript`

NIT: I kinda think this would be better on `PageRuntimeAgent` since &quot;debugging&quot; is kinda a subset of &quot;regular evaluation&quot; 😅

&gt; Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp:84
&gt; +    auto injectedScript = injectedScriptManager().injectedScriptForObjectId(callFrameId);

So this means that we have two calls to `injectedScriptForObjectId` in the same callstack, since `InspectorDebuggerAgent::evaluateOnCallFrame` also does it.  That&apos;s not the worst thing, but it&apos;s not super ideal either.

Rather than have that, perhaps we could remove the override `PageDebuggerAgent::evaluateOnCallFrame` and introduce a new `virtual UserGestureEmulationScope InspectorDebuggerAgent::emulateUserGesture(bool, const InjectedScript&amp;) { }` that&apos;d be overridden by `PageDebuggerAgent` and is called inside `InspectorDebuggerAgent::evaluateOnCallFrame` that&apos;d do the `UserGestureEmulationScope` logic instead (tho this may require that we create a base `UserGestureEmulationScope` inside JSC that&apos;s overridden in WebCore)?

&gt; Source/WebCore/inspector/agents/page/PageDebuggerAgent.cpp:140
&gt; +        Document* document = nullptr;
&gt; +        if (auto* domGlobalObject = JSC::jsCast&lt;JSDOMGlobalObject*&gt;(globalObject))
&gt; +            document = downcast&lt;Document&gt;(domGlobalObject-&gt;scriptExecutionContext());

Could we also create a `static Document* PageDebuggerAgent::documentForGlobalObject(JSC::JSGlobalObject*)` so that this code isn&apos;t repeated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851910</commentid>
    <comment_count>5</comment_count>
      <attachid>454869</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-16 11:43:23 -0700</bug_when>
    <thetext>Created attachment 454869
[fast-cq] Patch

(apologies to @Patrick Angle, I totally forgot that I&apos;d filed this bug AND that you&apos;d already written a patch 😅 thanks for letting me take it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851961</commentid>
    <comment_count>6</comment_count>
      <attachid>454888</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-16 13:23:22 -0700</bug_when>
    <thetext>Created attachment 454888
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852876</commentid>
    <comment_count>7</comment_count>
      <attachid>454888</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-03-18 16:21:09 -0700</bug_when>
    <thetext>Comment on attachment 454888
[fast-cq] Patch

rs=me, Nice tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852921</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-18 18:04:32 -0700</bug_when>
    <thetext>Committed r291517 (248623@main): &lt;https://commits.webkit.org/248623@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454888.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443053</attachid>
            <date>2021-11-01 20:14:38 -0700</date>
            <delta_ts>2021-11-01 20:35:24 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-232584-20211101201437.patch</filename>
            <type>text/plain</type>
            <size>13773</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YmU2ZjRjOWY4ZjNhMjFjNThiYTQzYjcwZmExZjIyMzVjNDBlMDJkLi42MWJhOTlkNzhkOTU3ZGRj
OWUwNzNiMzgxY2EyYWU2YjQ4ZDE1ZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0xMS0wMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW11bGF0ZSBVc2VyIEdlc3R1cmUgZG9lc24ndCB3
b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92
aWRlIHRoZSBjdXJyZW50IGdsb2JhbCBvYmplY3QgdG8gY2xpZW50cyBiZWZvcmUgZXZhbHVhdGlu
ZyBzbyB0aGF0IHRoZXkgY2FuIHByb3Blcmx5IGVtdWxhdGUgdXNlciBnZXN0dXJlcworICAgICAg
ICBmb3IgdGhlIGNvcnJlY3QgcmVsYXRlZCBEb2N1bWVudC4KKworICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2lu
dEFjdGlvbnMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgIChKU0M6
OkRlYnVnZ2VyOjpDbGllbnQ6OmRlYnVnZ2VyV2lsbEV2YWx1YXRlKToKKwogMjAyMS0xMS0wMSAg
Um9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQgY3Jhc2hlcyBpZiB0aGUgbGVuZ3RoICsgb2Jq
ZWN0T2Zmc2V0IGlzID4gVUlOVDMyX01BWApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI5ZjVjOGJjM2Y3NjEyMDgy
NTgyODU2YTdhMjYyYjViMDI1Zjg4OWMuLmY5YTk3OTVkNGJiNGE1Nzg1NWZiNDFkMTJjZTQ5NzM5
YTE5OTFlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0xMS0wMSAgUGF0cmlj
ayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW11
bGF0ZSBVc2VyIEdlc3R1cmUgZG9lc24ndCB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGNvZGUgcGF0aHMsIGluY2x1ZGluZyBuYXZpZ2F0
b3Iuc2hhcmUgcmVxdWlyZSB0aGF0IHdlIGVtdWxhdGUgdXNlciBnZXN0dXJlcyBmb3IgdGhlIHNw
ZWNpZmljIERvY3VtZW50CisgICAgICAgIGNvbm5lY3RlZCB0byB0aGUgc2NyaXB0aW5nIGdsb2Jh
bCBvYmplY3QgaW4gb3JkZXIgdG8gYnlwYXNzIHRoZSBub3JtYWwgdXNlciBnZXN0dXJlIHJlcXVp
cmVtZW50cyBmb3IgdGhlIEFQSS4KKyAgICAgICAgUHJldmlvdXNseSwgd2Ugb25seSBzZXQgdGhl
IGdsb2JhbCB1c2VyIGdlc3R1cmUgc3RhdGUgd2l0aG91dCBhIHJlbGF0ZWQgRG9jdW1lbnQsIHdo
aWNoIG1lYW50IGFueSBjYWxsIHNpdGVzCisgICAgICAgIGNoZWNraW5nIHRoZSB1c2VyIGdlc3R1
cmUgc3RhdGUgZm9yIGEgc3BlY2lmaWMgRG9jdW1lbnQgd291bGQgZmFpbC4gV2Ugbm93IHByb3Bl
cmx5IGRldGVybWluZSB0aGUgRG9jdW1lbnQgZm9yCisgICAgICAgIHRoZSBzY3JpcHRpbmcgY29u
dGV4dC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6ZG9jdW1lbnRGb3JJ
bmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6ZXZh
bHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6
ZGVidWdnZXJXaWxsRXZhbHVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmV2
YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlv
bk9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRp
b25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3Bl
OjpVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oOgorCiAyMDIxLTExLTAxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxpZ24gWFNMVFByb2Nlc3NvciB3
aXRoIEJsaW5rIGFuZCBnZXQgY2xvc2VyIHRvIEdlY2tvIGluIHRoZSBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCAwYmNlMmE2ODk4OTM3
ZmEyZDhiNDQwY2IyZjI2MTZkNTFlMzY1Yjk2Li5lMjZmNmFiZmMwOTUyZTQ2ZDBiZjk4MzE3Zjk2
NTI1NjlhY2VjM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIERlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9p
bnRBY3Rpb25zKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEpTR2xvYmFsT2JqZWN0KgogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBhY3Rpb24gOiBicmVha3BvaW50LmFjdGlvbnMoKSkgewogICAgICAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGVidWdnZXJXaWxsRXZhbHVh
dGUoKnRoaXMsIGFjdGlvbik7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGVidWdnZXJXaWxsRXZh
bHVhdGUoKnRoaXMsIGdsb2JhbE9iamVjdCwgYWN0aW9uKTsKIAogICAgICAgICBhdXRvJiBkZWJ1
Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IDkzODgwMjNhNjQxNmEzZjA0YzBi
MGEyNGIxYTM3NzQzOGUyNTJmZDYuLjZmZWZmZmMzMDNmYmVmNjMzYzI5YTg1ZmZkNzgwZTUzN2Iz
MzYxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC0x
NDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1
bHQ7CiAKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogZGVidWdnZXJTY29wZUV4dGVuc2lvbk9i
amVjdChEZWJ1Z2dlciYsIEpTR2xvYmFsT2JqZWN0KiwgRGVidWdnZXJDYWxsRnJhbWUmKSB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWJ1Z2dlcldpbGxFdmFsdWF0
ZShEZWJ1Z2dlciYsIGNvbnN0IEJyZWFrcG9pbnQ6OkFjdGlvbiYpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZGVidWdnZXJXaWxsRXZhbHVhdGUoRGVidWdnZXImLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEJyZWFrcG9pbnQ6OkFjdGlvbiYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVi
dWdnZXJEaWRFdmFsdWF0ZShEZWJ1Z2dlciYsIGNvbnN0IEJyZWFrcG9pbnQ6OkFjdGlvbiYpIHsg
fQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDU1ZDk1MTg0OTQxOTViOTZkZjE2
NWE5NGMxYzI5NjNhZGNlYjgzOTUuLjZhNDM2MzhmNTEyNGY0OWUxZjZiM2QyZTk3MTBkMTc1NWI2
NWQ1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjcsOSArNjcsMjIgQEAgYm9vbCBQYWdl
RGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkUGFnZURlYnVnZ2VyQWdlbnQoKSA9PSB0aGlzICYmIFdlYkRlYnVnZ2Vy
QWdlbnQ6OmVuYWJsZWQoKTsKIH0KIAorRG9jdW1lbnQqIFBhZ2VEZWJ1Z2dlckFnZW50Ojpkb2N1
bWVudEZvckluamVjdGVkU2NyaXB0KEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQorewor
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCFnbG9iYWxP
YmplY3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50PihnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cit9CisKIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgc3RkOjpv
cHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBQYWdlRGVidWdnZXJBZ2VudDo6
ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZUlk
JiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpCiB7Ci0gICAgVXNlckdlc3R1
cmVFbXVsYXRpb25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVjdGVkUGFnZSwgZW11bGF0
ZVVzZXJHZXN0dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUpOworICAgIGF1dG8gaW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvck9iamVjdElk
KGNhbGxGcmFtZUlkKTsKKyAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJl
U2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVVc2Vy
R2VzdHVyZSwgZG9jdW1lbnRGb3JJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdCkpOwogCiAg
ICAgcmV0dXJuIFdlYkRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoY2FsbEZyYW1l
SWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBXVEZNb3ZlKGluY2x1ZGVDb21tYW5kTGluZUFQ
SSksIFdURk1vdmUoZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSwgV1RGTW92
ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNhdmVS
ZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQpAQCAtMTE5LDEwICsxMzIs
MTQgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6dW5tdXRlQ29uc29sZSgpCiAgICAgUGFnZUNv
bnNvbGVDbGllbnQ6OnVubXV0ZSgpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkZWJ1
Z2dlcldpbGxFdmFsdWF0ZShKU0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpB
Y3Rpb24mIGFjdGlvbikKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyV2lsbEV2YWx1
YXRlKEpTQzo6RGVidWdnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uJiBhY3Rpb24pCiB7Ci0gICAgaWYgKGFjdGlvbi5l
bXVsYXRlVXNlckdlc3R1cmUpCi0gICAgICAgIG1fYnJlYWtwb2ludEFjdGlvblVzZXJHZXN0dXJl
RW11bGF0aW9uU2NvcGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZVJlZjxVc2VyR2VzdHVyZUVtdWxh
dGlvblNjb3BlPihtX2luc3BlY3RlZFBhZ2UsIHRydWUpKTsKKyAgICBpZiAoYWN0aW9uLmVtdWxh
dGVVc2VyR2VzdHVyZSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOwor
ICAgICAgICBpZiAoYXV0byogZG9tR2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oZG9tR2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwor
ICAgICAgICBtX2JyZWFrcG9pbnRBY3Rpb25Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlU3RhY2su
YXBwZW5kKG1ha2VVbmlxdWVSZWY8VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZT4obV9pbnNwZWN0
ZWRQYWdlLCB0cnVlLCBkb2N1bWVudCkpOworICAgIH0KIH0KIAogdm9pZCBQYWdlRGVidWdnZXJB
Z2VudDo6ZGVidWdnZXJEaWRFdmFsdWF0ZShKU0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpCcmVh
a3BvaW50OjpBY3Rpb24mIGFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggMTc4ODFiMTE0ZTMz
MDlkN2QzYjc4MGRlMGRhYjNhMjA0NGZiYmJlZi4uZmViZjdiNTQ4YmNjOGI1MWM1NmEzYjBmMjhk
MzM2ZWViNWQ2MTQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25h
bDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3Vs
dEluZGV4ICovPj4gZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2
ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKICAg
ICAvLyBKU0M6OkRlYnVnZ2VyOjpDbGllbnQKLSAgICB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRl
KEpTQzo6RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOworICAgIHZv
aWQgZGVidWdnZXJXaWxsRXZhbHVhdGUoSlNDOjpEZWJ1Z2dlciYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwogICAgIHZvaWQgZGVidWdnZXJE
aWRFdmFsdWF0ZShKU0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24m
KTsKIAogICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCkBAIC02OCw2ICs2OCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQpOwog
ICAgIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQpOwogCisgICAg
c3RhdGljIERvY3VtZW50KiBkb2N1bWVudEZvckluamVjdGVkU2NyaXB0KEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHQpOworCiBwcml2YXRlOgogICAgIHZvaWQgaW50ZXJuYWxFbmFibGUoKTsKICAg
ICB2b2lkIGludGVybmFsRGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCmluZGV4IGIzMmYzZjY5OWMyZDJhMzc3Mjg5NzYwYjI0NWFjODE3ODQxMDI0NTguLmEy
OGY0M2ZjZDkxMTE1ZDE5ODdjNmQ3YTJkZWVjODZhMWI3NmIyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJQ
YWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0xOTEs
MTMgKzE5MiwxNSBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Om5vdGlmeUNvbnRleHRDcmVhdGVk
KGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiBmcgogCiBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwg
c3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAv
KiBzYXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZVJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYm
IGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpCiB7Ci0gICAgVXNlckdlc3R1cmVF
bXVsYXRpb25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVjdGVkUGFnZSwgZW11bGF0ZVVz
ZXJHZXN0dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUpOworICAgIGF1dG8gaW5qZWN0ZWRTY3Jp
cHQgPSBleGVjdXRpb25Db250ZXh0SWQgPyBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3Rl
ZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpIDogaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KCkuaW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2Uu
bWFpbkZyYW1lKCkpKTsKKyAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJl
U2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVVc2Vy
R2VzdHVyZSwgUGFnZURlYnVnZ2VyQWdlbnQ6OmRvY3VtZW50Rm9ySW5qZWN0ZWRTY3JpcHQoaW5q
ZWN0ZWRTY3JpcHQpKTsKICAgICByZXR1cm4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0
ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgV1RGTW92ZShpbmNsdWRlQ29tbWFuZExpbmVBUEkp
LCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUo
ZXhlY3V0aW9uQ29udGV4dElkKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5l
cmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2Vz
dHVyZSkpOwogfQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNU
aHJvd24gKi8+PiBQYWdlUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbihjb25zdCBQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRpb25hbEFyZ3VtZW50cywgc3RkOjpvcHRp
b25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpv
cHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5l
cmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpCiB7
Ci0gICAgVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVj
dGVkUGFnZSwgZW11bGF0ZVVzZXJHZXN0dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUpOworICAg
IGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNj
cmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKKyAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3Bl
IHVzZXJHZXN0dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYg
KmVtdWxhdGVVc2VyR2VzdHVyZSwgUGFnZURlYnVnZ2VyQWdlbnQ6OmRvY3VtZW50Rm9ySW5qZWN0
ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHQpKTsKICAgICByZXR1cm4gSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpjYWxsRnVuY3Rpb25PbihvYmplY3RJZCwgZXhwcmVzc2lvbiwgV1RGTW92ZShvcHRpb25h
bEFyZ3VtZW50cyksIFdURk1vdmUoZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
KSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZN
b3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25T
Y29wZS5jcHAKaW5kZXggODY5OTQzNmUzZjk2MmI0NjViNDdhZWJlYmQ2MDFlZTkwMTUyZWY4My4u
MzVmYmQ0NjYyN2Y2OGQ5ZWJhYzUyNTAwYmM1NjBkNGZkOTg2NjE2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2Vz
dHVyZUVtdWxhdGlvblNjb3BlLmNwcApAQCAtMzgsOSArMzgsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0aW9u
U2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUpCitVc2Vy
R2VzdHVyZUVtdWxhdGlvblNjb3BlOjpVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlKFBhZ2UmIGlu
c3BlY3RlZFBhZ2UsIGJvb2wgZW11bGF0ZVVzZXJHZXN0dXJlLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBtX3BhZ2VDaHJvbWVDbGllbnQoaW5zcGVjdGVkUGFnZS5jaHJvbWUoKS5jbGllbnQo
KSkKLSAgICAsIG1fZ2VzdHVyZUluZGljYXRvcihlbXVsYXRlVXNlckdlc3R1cmUgPyBzdGQ6Om9w
dGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUp
IDogc3RkOjpudWxsb3B0KQorICAgICwgbV9nZXN0dXJlSW5kaWNhdG9yKGVtdWxhdGVVc2VyR2Vz
dHVyZSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3Np
bmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQsIGRvY3VtZW50KQogICAgICwgbV9lbXVsYXRl
VXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgICwgbV91c2VyV2FzSW50ZXJhY3Rp
bmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuaAppbmRleCAxNmVkYjNi
YzY4OWI4ZTJkZGUxNzU5N2I2NDJiNzA2YzEzNDNlMWY1Li45NWZkNWMwMmVmZTBiMDI4NGRkNDY2
NjcwYTcwNDYxNjEyNWQxNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmgKQEAg
LTM3LDEzICszNywxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVDbGll
bnQ7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIFVzZXJHZXN0dXJlRW11
bGF0aW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJHZXN0dXJlRW11bGF0
aW9uU2NvcGUpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFVz
ZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9vbCBlbXVsYXRl
VXNlckdlc3R1cmUpOworICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVj
dGVkUGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUsIERvY3VtZW50Kik7CiAgICAgflVzZXJH
ZXN0dXJlRW11bGF0aW9uU2NvcGUoKTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443057</attachid>
            <date>2021-11-01 20:35:27 -0700</date>
            <delta_ts>2022-03-16 11:43:23 -0700</delta_ts>
            <desc>Patch v1.1 - Fix additional user gesture emulation cases</desc>
            <filename>bug-232584-20211101203526.patch</filename>
            <type>text/plain</type>
            <size>17196</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YmU2ZjRjOWY4ZjNhMjFjNThiYTQzYjcwZmExZjIyMzVjNDBlMDJkLi5kMWJlZjBiNzIwOGEyZTgz
MmE2ZjNjZjNiZjIwNWIzNzRiZWQzMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0xMS0wMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTig/KTogRW11bGF0ZSBVc2VyIEdl
c3R1cmUgZG9lc24ndCB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzI1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcm92aWRlIHRoZSBjdXJyZW50IGdsb2JhbCBvYmplY3QgdG8gY2xpZW50cyBi
ZWZvcmUgZXZhbHVhdGluZyBzbyB0aGF0IHRoZXkgY2FuIHByb3Blcmx5IGVtdWxhdGUgdXNlciBn
ZXN0dXJlcworICAgICAgICBmb3IgdGhlIGNvcnJlY3QgcmVsYXRlZCBEb2N1bWVudC4KKworICAg
ICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmV2
YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpDbGllbnQ6OmRlYnVnZ2VyV2lsbEV2YWx1YXRlKToK
KwogMjAyMS0xMS0wMSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXQgY3Jhc2hlcyBpZiB0
aGUgbGVuZ3RoICsgb2JqZWN0T2Zmc2V0IGlzID4gVUlOVDMyX01BWApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI5
ZjVjOGJjM2Y3NjEyMDgyNTgyODU2YTdhMjYyYjViMDI1Zjg4OWMuLmU1ZmIzMzU5NDBhMGFjMDYx
MTkwYzVlNWM1ZTBmZTZjM2MzYjA4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAy
MS0xMS0wMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogUkVHUkVTU0lPTig/KTogRW11bGF0ZSBVc2VyIEdlc3R1cmUgZG9lc24ndCB3
b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBz
b21lIGNvZGUgcGF0aHMsIGluY2x1ZGluZyBuYXZpZ2F0b3Iuc2hhcmUgcmVxdWlyZSB0aGF0IHdl
IGVtdWxhdGUgdXNlciBnZXN0dXJlcyBmb3IgdGhlIHNwZWNpZmljIERvY3VtZW50CisgICAgICAg
IGNvbm5lY3RlZCB0byB0aGUgc2NyaXB0aW5nIGdsb2JhbCBvYmplY3QgaW4gb3JkZXIgdG8gYnlw
YXNzIHRoZSBub3JtYWwgdXNlciBnZXN0dXJlIHJlcXVpcmVtZW50cyBmb3IgdGhlIEFQSS4KKyAg
ICAgICAgUHJldmlvdXNseSwgd2Ugb25seSBzZXQgdGhlIGdsb2JhbCB1c2VyIGdlc3R1cmUgc3Rh
dGUgd2l0aG91dCBhIHJlbGF0ZWQgRG9jdW1lbnQsIHdoaWNoIG1lYW50IGFueSBjYWxsIHNpdGVz
CisgICAgICAgIGNoZWNraW5nIHRoZSB1c2VyIGdlc3R1cmUgc3RhdGUgZm9yIGEgc3BlY2lmaWMg
RG9jdW1lbnQgd291bGQgZmFpbC4gV2Ugbm93IHByb3Blcmx5IGRldGVybWluZSB0aGUgRG9jdW1l
bnQgZm9yCisgICAgICAgIHRoZSBzY3JpcHRpbmcgY29udGV4dCB3aGVuIHVzaW5nIG91ciBVc2Vy
R2VzdHVyZUVtdWxhdGlvblNjb3BlLCBhcyB3ZWxsIGFzIHdoZW4gZGlyZWN0bHkgdXNpbmcKKyAg
ICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpvcGVuVVJMRXh0ZXJuYWxseSk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpuYXZpZ2F0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpk
b2N1bWVudEZvckluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dl
ckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1
Z2dlckFnZW50OjpkZWJ1Z2dlcldpbGxFdmFsdWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRp
bWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6
Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2Vz
dHVyZUVtdWxhdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0dXJlRW11
bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmg6CisKIDIwMjEtMTEt
MDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGlnbiBYU0xU
UHJvY2Vzc29yIHdpdGggQmxpbmsgYW5kIGdldCBjbG9zZXIgdG8gR2Vja28gaW4gdGhlIHByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IDBi
Y2UyYTY4OTg5MzdmYTJkOGI0NDBjYjJmMjYxNmQ1MWUzNjViOTYuLmUyNmY2YWJmYzA5NTJlNDZk
MGJmOTgzMTdmOTY1MjU2OWFjZWMzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgRGVidWdnZXI6OmV2YWx1
YXRlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgSlNHbG9iYWxPYmpl
Y3QqCiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjdGlvbiA6IGJyZWFrcG9pbnQuYWN0aW9ucygp
KSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kZWJ1Z2dl
cldpbGxFdmFsdWF0ZSgqdGhpcywgYWN0aW9uKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kZWJ1
Z2dlcldpbGxFdmFsdWF0ZSgqdGhpcywgZ2xvYmFsT2JqZWN0LCBhY3Rpb24pOwogCiAgICAgICAg
IGF1dG8mIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggOTM4ODAyM2E2
NDE2YTNmMDRjMGIwYTI0YjFhMzc3NDM4ZTI1MmZkNi4uNmZlZmZmYzMwM2ZiZWY2MzNjMjlhODVm
ZmQ3ODBlNTM3YjMzNjE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNsaWVu
dCgpID0gZGVmYXVsdDsKIAogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBkZWJ1Z2dlclNjb3Bl
RXh0ZW5zaW9uT2JqZWN0KERlYnVnZ2VyJiwgSlNHbG9iYWxPYmplY3QqLCBEZWJ1Z2dlckNhbGxG
cmFtZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlYnVnZ2Vy
V2lsbEV2YWx1YXRlKERlYnVnZ2VyJiwgY29uc3QgQnJlYWtwb2ludDo6QWN0aW9uJikgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkZWJ1Z2dlcldpbGxFdmFsdWF0ZShEZWJ1Z2dlciYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQnJlYWtwb2ludDo6QWN0aW9uJikgeyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkZWJ1Z2dlckRpZEV2YWx1YXRlKERlYnVnZ2VyJiwgY29uc3QgQnJlYWtwb2ludDo6
QWN0aW9uJikgeyB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDlkZGZjYmJmOGJi
NDQ5N2FjNzJlYjY5YjBjMDQ0NzM0YmViMmEwN2IuLjAzODE5NWYyMTlmZWExOGNhNjIwNWVkZmM5
MWY4NWQ2ZWU5ZDRiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTI2NSw4ICsyNjUsOCBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNoYW5nZVNoZWV0UmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3Bl
blVSTEV4dGVybmFsbHkoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgaW5kaWNhdG9yIHsgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CiAgICAgRnJhbWUmIG1h
aW5GcmFtZSA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWlu
RnJhbWUoKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBQcm9jZXNzaW5n
VXNlckdlc3R1cmUsIG1haW5GcmFtZS5kb2N1bWVudCgpIH07CiAgICAgRnJhbWVMb2FkUmVxdWVz
dCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCBibGFua1RhcmdldEZyYW1lTmFtZSgpLCBJ
bml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApp
bmRleCAyMThkZjZhMTkxMTI5NDgxNTNhMWRiZjQ5NWVmNTVlYTBmMWU2ZjdlLi5mYWM5ZWI2MTE1
Y2NiMTNiOWU1ZmQ1MGJkMjdkMzg2N2E5ZTFhYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMTA4LDcgKzEwOCwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVB
Y3Rpb24gYWN0aW9uLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KG1fZnJvbnRlbmRIb3N0KSB7Ci0gICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0
dXJlSW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisgICAgICAgICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVj
dCA9IEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9mcm9udGVuZEFwaU9iamVjdC5n
bG9iYWxPYmplY3QoKSkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihQcm9jZXNzaW5nVXNlckdl
c3R1cmUsIGRvY3VtZW50KTsKICAgICAgICAgICAgIGludCBpdGVtTnVtYmVyID0gYWN0aW9uIC0g
Q29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZzsKIAogICAgICAgICAgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZCIsIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhy
ZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCAzMzU3YmEwMWZmOWFiMzVlZTAxODQwMjNhMjUwMjBiNzU5
MDE2NWY5Li5lMGVjYTg3ZWQyM2ZlODc4YWNhNmRjODE1MGE0ZTVkYjMxNzEzYzY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCkBAIC00MDksOCArNDA5LDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQoc3RkOjpvcHRpb25hbDxib29sPiYmIGkKIAogUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZShj
b25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3Ig
eyBQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKICAgICBGcmFtZSYgZnJhbWUgPSBtX2luc3BlY3Rl
ZFBhZ2UubWFpbkZyYW1lKCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsg
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBmcmFtZS5kb2N1bWVudCgpIH07CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsKSB9OwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5k
b2N1bWVudCgpLCBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJl
c291cmNlUmVxdWVzdCksIHNlbGZUYXJnZXRGcmFtZU5hbWUoKSwgSW5pdGlhdGVkQnlNYWluRnJh
bWU6OlVua25vd24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDU1ZDk1MTg0OTQxOTViOTZk
ZjE2NWE5NGMxYzI5NjNhZGNlYjgzOTUuLjZhNDM2MzhmNTEyNGY0OWUxZjZiM2QyZTk3MTBkMTc1
NWI2NWQ1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjcsOSArNjcsMjIgQEAgYm9vbCBQ
YWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkUGFnZURlYnVnZ2VyQWdlbnQoKSA9PSB0aGlzICYmIFdlYkRlYnVn
Z2VyQWdlbnQ6OmVuYWJsZWQoKTsKIH0KIAorRG9jdW1lbnQqIFBhZ2VEZWJ1Z2dlckFnZW50Ojpk
b2N1bWVudEZvckluamVjdGVkU2NyaXB0KEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQor
eworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCFnbG9i
YWxPYmplY3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRvd25jYXN0
PERvY3VtZW50PihnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cit9CisK
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgc3Rk
OjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBQYWdlRGVidWdnZXJBZ2Vu
dDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpCiB7Ci0gICAgVXNlckdl
c3R1cmVFbXVsYXRpb25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVjdGVkUGFnZSwgZW11
bGF0ZVVzZXJHZXN0dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUpOworICAgIGF1dG8gaW5qZWN0
ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvck9iamVj
dElkKGNhbGxGcmFtZUlkKTsKKyAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0
dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVV
c2VyR2VzdHVyZSwgZG9jdW1lbnRGb3JJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdCkpOwog
CiAgICAgcmV0dXJuIFdlYkRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoY2FsbEZy
YW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBXVEZNb3ZlKGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSksIFdURk1vdmUoZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSwgV1RG
TW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNh
dmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQpAQCAtMTE5LDEwICsx
MzIsMTQgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6dW5tdXRlQ29uc29sZSgpCiAgICAgUGFn
ZUNvbnNvbGVDbGllbnQ6OnVubXV0ZSgpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojpk
ZWJ1Z2dlcldpbGxFdmFsdWF0ZShKU0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpCcmVha3BvaW50
OjpBY3Rpb24mIGFjdGlvbikKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyV2lsbEV2
YWx1YXRlKEpTQzo6RGVidWdnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uJiBhY3Rpb24pCiB7Ci0gICAgaWYgKGFjdGlv
bi5lbXVsYXRlVXNlckdlc3R1cmUpCi0gICAgICAgIG1fYnJlYWtwb2ludEFjdGlvblVzZXJHZXN0
dXJlRW11bGF0aW9uU2NvcGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZVJlZjxVc2VyR2VzdHVyZUVt
dWxhdGlvblNjb3BlPihtX2luc3BlY3RlZFBhZ2UsIHRydWUpKTsKKyAgICBpZiAoYWN0aW9uLmVt
dWxhdGVVc2VyR2VzdHVyZSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRy
OworICAgICAgICBpZiAoYXV0byogZG9tR2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKQorICAgICAgICAgICAgZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4oZG9tR2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworICAgICAgICBtX2JyZWFrcG9pbnRBY3Rpb25Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlU3Rh
Y2suYXBwZW5kKG1ha2VVbmlxdWVSZWY8VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZT4obV9pbnNw
ZWN0ZWRQYWdlLCB0cnVlLCBkb2N1bWVudCkpOworICAgIH0KIH0KIAogdm9pZCBQYWdlRGVidWdn
ZXJBZ2VudDo6ZGVidWdnZXJEaWRFdmFsdWF0ZShKU0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpC
cmVha3BvaW50OjpBY3Rpb24mIGFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggMTc4ODFiMTE0
ZTMzMDlkN2QzYjc4MGRlMGRhYjNhMjA0NGZiYmJlZi4uZmViZjdiNTQ4YmNjOGI1MWM1NmEzYjBm
MjhkMzM2ZWViNWQ2MTQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRp
b25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJl
c3VsdEluZGV4ICovPj4gZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
c2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAK
ICAgICAvLyBKU0M6OkRlYnVnZ2VyOjpDbGllbnQKLSAgICB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1
YXRlKEpTQzo6RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOworICAg
IHZvaWQgZGVidWdnZXJXaWxsRXZhbHVhdGUoSlNDOjpEZWJ1Z2dlciYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwogICAgIHZvaWQgZGVidWdn
ZXJEaWRFdmFsdWF0ZShKU0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpBY3Rp
b24mKTsKIAogICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCkBAIC02OCw2ICs2OCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQp
OwogICAgIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQpOwogCisg
ICAgc3RhdGljIERvY3VtZW50KiBkb2N1bWVudEZvckluamVjdGVkU2NyaXB0KEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQpOworCiBwcml2YXRlOgogICAgIHZvaWQgaW50ZXJuYWxFbmFibGUoKTsK
ICAgICB2b2lkIGludGVybmFsRGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1l
QWdlbnQuY3BwCmluZGV4IGIzMmYzZjY5OWMyZDJhMzc3Mjg5NzYwYjI0NWFjODE3ODQxMDI0NTgu
LmEyOGY0M2ZjZDkxMTE1ZDE5ODdjNmQ3YTJkZWVjODZhMWI3NmIyMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKKyNpbmNsdWRl
ICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0x
OTEsMTMgKzE5MiwxNSBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Om5vdGlmeUNvbnRleHRDcmVh
dGVkKGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJiBmcgogCiBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50
PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZVJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPFBy
b3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElk
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29s
PiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpCiB7Ci0gICAgVXNlckdlc3R1
cmVFbXVsYXRpb25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVjdGVkUGFnZSwgZW11bGF0
ZVVzZXJHZXN0dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUpOworICAgIGF1dG8gaW5qZWN0ZWRT
Y3JpcHQgPSBleGVjdXRpb25Db250ZXh0SWQgPyBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpIDogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBh
Z2UubWFpbkZyYW1lKCkpKTsKKyAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0
dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVV
c2VyR2VzdHVyZSwgUGFnZURlYnVnZ2VyQWdlbnQ6OmRvY3VtZW50Rm9ySW5qZWN0ZWRTY3JpcHQo
aW5qZWN0ZWRTY3JpcHQpKTsKICAgICByZXR1cm4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFs
dWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgV1RGTW92ZShpbmNsdWRlQ29tbWFuZExpbmVB
UEkpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1v
dmUoZXhlY3V0aW9uQ29udGV4dElkKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShn
ZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2Vy
R2VzdHVyZSkpOwogfQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3
YXNUaHJvd24gKi8+PiBQYWdlUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbihjb25zdCBQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIFJlZlB0cjxKU09OOjpBcnJheT4mJiBvcHRpb25hbEFyZ3VtZW50cywgc3RkOjpv
cHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3Rk
OjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBn
ZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUp
CiB7Ci0gICAgVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5z
cGVjdGVkUGFnZSwgZW11bGF0ZVVzZXJHZXN0dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUpOwor
ICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3Rl
ZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKKyAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNj
b3BlIHVzZXJHZXN0dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUg
JiYgKmVtdWxhdGVVc2VyR2VzdHVyZSwgUGFnZURlYnVnZ2VyQWdlbnQ6OmRvY3VtZW50Rm9ySW5q
ZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHQpKTsKICAgICByZXR1cm4gSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpjYWxsRnVuY3Rpb25PbihvYmplY3RJZCwgZXhwcmVzc2lvbiwgV1RGTW92ZShvcHRp
b25hbEFyZ3VtZW50cyksIFdURk1vdmUoZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBX
VEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRp
b25TY29wZS5jcHAKaW5kZXggODY5OTQzNmUzZjk2MmI0NjViNDdhZWJlYmQ2MDFlZTkwMTUyZWY4
My4uMzVmYmQ0NjYyN2Y2OGQ5ZWJhYzUyNTAwYmM1NjBkNGZkOTg2NjE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9u
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2Vy
R2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcApAQCAtMzgsOSArMzgsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0
aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUpCitV
c2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlOjpVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlKFBhZ2Um
IGluc3BlY3RlZFBhZ2UsIGJvb2wgZW11bGF0ZVVzZXJHZXN0dXJlLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBtX3BhZ2VDaHJvbWVDbGllbnQoaW5zcGVjdGVkUGFnZS5jaHJvbWUoKS5jbGll
bnQoKSkKLSAgICAsIG1fZ2VzdHVyZUluZGljYXRvcihlbXVsYXRlVXNlckdlc3R1cmUgPyBzdGQ6
Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpIDogc3RkOjpudWxsb3B0KQorICAgICwgbV9nZXN0dXJlSW5kaWNhdG9yKGVtdWxhdGVVc2Vy
R2VzdHVyZSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQsIGRvY3VtZW50KQogICAgICwgbV9lbXVs
YXRlVXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgICwgbV91c2VyV2FzSW50ZXJh
Y3RpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuaAppbmRleCAxNmVk
YjNiYzY4OWI4ZTJkZGUxNzU5N2I2NDJiNzA2YzEzNDNlMWY1Li45NWZkNWMwMmVmZTBiMDI4NGRk
NDY2NjcwYTcwNDYxNjEyNWQxNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmgK
QEAgLTM3LDEzICszNywxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVD
bGllbnQ7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIFVzZXJHZXN0dXJl
RW11bGF0aW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJHZXN0dXJlRW11
bGF0aW9uU2NvcGUpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9vbCBlbXVs
YXRlVXNlckdlc3R1cmUpOworICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5z
cGVjdGVkUGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUsIERvY3VtZW50Kik7CiAgICAgflVz
ZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoKTsKIAogcHJpdmF0ZToK
</data>
<flag name="review"
          id="467699"
          type_id="1"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454869</attachid>
            <date>2022-03-16 11:43:23 -0700</date>
            <delta_ts>2022-03-16 13:34:26 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>232584.diff</filename>
            <type>text/plain</type>
            <size>48952</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZmQ4MzBjZjQ5MjAuLjJkODU5MGQyODRlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIyLTAzLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKD8pOiBFbXVsYXRlIFVzZXIgR2VzdHVyZSBkb2Vz
bid0IHdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjU4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ4OTk1NzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1hY3Rpb24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2aWF0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LWFjdGlvbi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZpYXRpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZXZhbHVhdGVPbkNh
bGxGcmFtZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZXZhbHVhdGVPbkNhbGxGcmFtZS1l
bXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9ydW50aW1lL2NhbGxGdW5jdGlvbk9uLWVtdWxhdGVV
c2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9ydW50aW1lL2NhbGxGdW5jdGlvbk9uLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNU
cmFuc2llbnRBY3RpdmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3J1bnRpbWUvZXZhbHVhdGUtZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2
YXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3J1bnRpbWUvZXZhbHVhdGUt
ZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKwogMjAyMi0wMy0wNCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KIAogICAgICAgICBDU1AgcmVwb3J0IGRvZXMgbm90IGdldCBzZW50IHRvIHRoZSBkb2N1
bWVudCBpbiB0aGUgY2FzZSBvZiBhIGRldGFjaGVkIGVsZW1lbnQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1lbXVsYXRlVXNlckdl
c3R1cmUtaGFzVHJhbnNpZW50QWN0aXZpYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWVtdWxhdGVVc2VyR2VzdHVyZS1o
YXNUcmFuc2llbnRBY3RpdmlhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi43YjYwMDZmMjA4YTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZW11bGF0ZVVzZXJH
ZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2aWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4
IEBACitUZXN0cyBmb3IgRGVidWdnZXIuQnJlYWtwb2ludEFjdGlvbiBlbXVsYXRlVXNlckdlc3R1
cmUgcGFyYW1ldGVyLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuQnJlYWtw
b2ludEFjdGlvbgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLkJyZWFrcG9pbnRBY3Rp
b24uZW11bGF0ZVVzZXJHZXN0dXJlLmhhc1RyYW5zaWVudEFjdGl2YXRpb24uZmFsc2UKK1BhdXNp
bmcuLi4KK2JlZm9yZSBkZWJ1Z2dlcgorTm8gdHJhbnNpZW50IGFjdGl2YXRpb24KK1Jlc3VtaW5n
Li4uCithZnRlciBkZWJ1Z2dlcgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuQnJl
YWtwb2ludEFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi50
cnVlCitQYXVzaW5nLi4uCitiZWZvcmUgZGVidWdnZXIKK0hhcyB0cmFuc2llbnQgYWN0aXZhdGlv
bgorUmVzdW1pbmcuLi4KK2FmdGVyIGRlYnVnZ2VyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1lbXVsYXRlVXNlckdlc3R1cmUt
aGFzVHJhbnNpZW50QWN0aXZpYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LWFjdGlvbi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0
aXZpYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY0
MTg0YWMwMDlkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LWFjdGlvbi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0
aXZpYXRpb24uaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0cmlnZ2Vy
UGF1c2UoKSB7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJiZWZvcmUgZGVidWdnZXIiKTsKKyAg
ICBkZWJ1Z2dlcjsKKyAgICBUZXN0UGFnZS5hZGRSZXN1bHQoImFmdGVyIGRlYnVnZ2VyIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RFbXVsYXRlVXNlckdlc3R1cmUoKSB7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIFRlc3RQYWdlLmFkZFJlc3VsdCh3aW5kb3cuaW50ZXJuYWxzLmhh
c1RyYW5zaWVudEFjdGl2YXRpb24oKSA/ICJIYXMgdHJhbnNpZW50IGFjdGl2YXRpb24iIDogIk5v
IHRyYW5zaWVudCBhY3RpdmF0aW9uIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRGVidWdnZXIuQnJlYWtw
b2ludEFjdGlvbiIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
RGVidWdnZXIuQnJlYWtwb2ludEFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50
QWN0aXZhdGlvbi5mYWxzZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiRXZhbHV0ZSB3aXRoIHRo
ZSBlbXVsYXRlVXNlckdlc3R1cmUgb3B0aW9uIHNldCB0byBmYWxzZS4iLAorICAgICAgICBhc3lu
YyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IGFjdGlvbiA9IG5ldyBXSS5CcmVha3BvaW50QWN0
aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6IGB0ZXN0RW11bGF0
ZVVzZXJHZXN0dXJlKClgLCBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlfSk7CisgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5hZGRBY3Rp
b24oYWN0aW9uKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBhdXNpbmcuLi4i
KTsKKyAgICAgICAgICAgIGxldCBwYXVzZWRQcm9taXNlID0gV0kuZGVidWdnZXJNYW5hZ2VyLmF3
YWl0RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCk7CisgICAgICAgICAgICBs
ZXQgZXZhbHVhdGVQcm9taXNlID0gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgidHJpZ2dl
clBhdXNlKCkiKTsKKyAgICAgICAgICAgIGF3YWl0IHBhdXNlZFByb21pc2U7CisKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJh
bWUsICJTaG91bGQgaGF2ZSBhY3RpdmUgY2FsbCBmcmFtZS4iKTsKKworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlJlc3VtaW5nLi4uIik7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQpLAorICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZXN1bWUoKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5yZW1vdmVBY3Rpb24o
YWN0aW9uKTsKKworICAgICAgICAgICAgYXdhaXQgZXZhbHVhdGVQcm9taXNlOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJEZWJ1
Z2dlci5CcmVha3BvaW50QWN0aW9uLmVtdWxhdGVVc2VyR2VzdHVyZS5oYXNUcmFuc2llbnRBY3Rp
dmF0aW9uLnRydWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkV2YWx1dGUgd2l0aCB0aGUgZW11
bGF0ZVVzZXJHZXN0dXJlIG9wdGlvbiBzZXQgdG8gdHJ1ZS4iLAorICAgICAgICBhc3luYyB0ZXN0
KCkgeworICAgICAgICAgICAgbGV0IGFjdGlvbiA9IG5ldyBXSS5CcmVha3BvaW50QWN0aW9uKFdJ
LkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6IGB0ZXN0RW11bGF0ZVVzZXJH
ZXN0dXJlKClgLCBlbXVsYXRlVXNlckdlc3R1cmU6IHRydWV9KTsKKyAgICAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50LmFkZEFjdGlvbihhY3Rp
b24pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUGF1c2luZy4uLiIpOworICAg
ICAgICAgICAgbGV0IHBhdXNlZFByb21pc2UgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVu
dChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkKTsKKyAgICAgICAgICAgIGxldCBldmFs
dWF0ZVByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ0cmlnZ2VyUGF1c2Uo
KSIpOworICAgICAgICAgICAgYXdhaXQgcGF1c2VkUHJvbWlzZTsKKworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZSwgIlNo
b3VsZCBoYXZlIGFjdGl2ZSBjYWxsIGZyYW1lLiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUmVzdW1pbmcuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsK
KyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUmVzdW1lZCksCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLnJlc3VtZSgpLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50LnJlbW92ZUFjdGlvbihhY3Rpb24p
OworCisgICAgICAgICAgICBhd2FpdCBldmFsdWF0ZVByb21pc2U7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBmb3IgRGVidWdnZXIu
QnJlYWtwb2ludEFjdGlvbiBlbXVsYXRlVXNlckdlc3R1cmUgcGFyYW1ldGVyLjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9l
dmFsdWF0ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9ldmFsdWF0
ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ3NDVj
ZjM3NGJiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9ldmFsdWF0ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3Rp
dmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBmb3IgRGVidWdnZXIu
ZXZhbHVhdGVPbkNhbGxGcmFtZSBlbXVsYXRlVXNlckdlc3R1cmUgb3B0aW9uLgorCisKKz09IFJ1
bm5pbmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuZXZhbHVhdGVPbkNhbGxGcmFtZQorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLmV2YWx1YXRlT25DYWxsRnJhbWUuZW11bGF0ZVVzZXJHZXN0
dXJlLmhhc1RyYW5zaWVudEFjdGl2YXRpb24uZmFsc2UKK1BhdXNpbmcuLi4KK2JlZm9yZSBkZWJ1
Z2dlcgorTm8gdHJhbnNpZW50IGFjdGl2YXRpb24KK1Jlc3VtaW5nLi4uCithZnRlciBkZWJ1Z2dl
cgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuZXZhbHVhdGVPbkNhbGxGcmFtZS5l
bXVsYXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi50cnVlCitQYXVzaW5nLi4u
CitiZWZvcmUgZGVidWdnZXIKK0hhcyB0cmFuc2llbnQgYWN0aXZhdGlvbgorUmVzdW1pbmcuLi4K
K2FmdGVyIGRlYnVnZ2VyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9ldmFsdWF0ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRB
Y3RpdmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZXZhbHVhdGVP
bkNhbGxGcmFtZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjA3ZWI4MDlmNGI4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2V2YWx1YXRl
T25DYWxsRnJhbWUtZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2YXRpb24uaHRt
bApAQCAtMCwwICsxLDc5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0cmlnZ2VyUGF1c2UoKSB7Cisg
ICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJiZWZvcmUgZGVidWdnZXIiKTsKKyAgICBkZWJ1Z2dlcjsK
KyAgICBUZXN0UGFnZS5hZGRSZXN1bHQoImFmdGVyIGRlYnVnZ2VyIik7Cit9CisKK2Z1bmN0aW9u
IHRlc3RFbXVsYXRlVXNlckdlc3R1cmUoKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIFRlc3RQYWdlLmFkZFJlc3VsdCh3aW5kb3cuaW50ZXJuYWxzLmhhc1RyYW5zaWVudEFj
dGl2YXRpb24oKSA/ICJIYXMgdHJhbnNpZW50IGFjdGl2YXRpb24iIDogIk5vIHRyYW5zaWVudCBh
Y3RpdmF0aW9uIik7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGNvbnN0IGV4cHJlc3Np
b24gPSBgdGVzdEVtdWxhdGVVc2VyR2VzdHVyZSgpYDsKKyAgICBjb25zdCBvYmplY3RHcm91cCA9
ICJ0ZXN0IjsKKworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0
ZSgiRGVidWdnZXIuZXZhbHVhdGVPbkNhbGxGcmFtZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiRGVidWdnZXIuZXZhbHVhdGVPbkNhbGxGcmFtZS5lbXVsYXRl
VXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5mYWxzZSIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiRXZhbHV0ZSB3aXRoIHRoZSBlbXVsYXRlVXNlckdlc3R1cmUgb3B0aW9uIHNldCB0
byBmYWxzZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5wYXVzZWQsICJTaG91bGQgbm90IGJlIHBh
dXNlZC4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBhdXNpbmcuLi4iKTsK
KyAgICAgICAgICAgIGxldCBwYXVzZWRQcm9taXNlID0gV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0
RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCk7CisgICAgICAgICAgICBsZXQg
ZXZhbHVhdGVQcm9taXNlID0gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgidHJpZ2dlclBh
dXNlKCkiKTsKKyAgICAgICAgICAgIGF3YWl0IHBhdXNlZFByb21pc2U7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUs
ICJTaG91bGQgaGF2ZSBhY3RpdmUgY2FsbCBmcmFtZS4iKTsKKyAgICAgICAgICAgIGF3YWl0IERl
YnVnZ2VyQWdlbnQuZXZhbHVhdGVPbkNhbGxGcmFtZS5pbnZva2Uoe2NhbGxGcmFtZUlkOiBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLmlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91
cCwgZW11bGF0ZVVzZXJHZXN0dXJlOiBmYWxzZX0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUmVzdW1pbmcuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsK
KyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUmVzdW1lZCksCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLnJlc3VtZSgpLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGF3YWl0IGV2YWx1
YXRlUHJvbWlzZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiRGVidWdnZXIuZXZhbHVhdGVPbkNhbGxGcmFtZS5lbXVsYXRlVXNl
ckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi50cnVlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJFdmFsdXRlIHdpdGggdGhlIGVtdWxhdGVVc2VyR2VzdHVyZSBvcHRpb24gc2V0IHRvIHRy
dWUuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIucGF1c2VkLCAiU2hvdWxkIG5vdCBiZSBwYXVzZWQu
Iik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQYXVzaW5nLi4uIik7CisgICAg
ICAgICAgICBsZXQgcGF1c2VkUHJvbWlzZSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQpOworICAgICAgICAgICAgbGV0IGV2YWx1
YXRlUHJvbWlzZSA9IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInRyaWdnZXJQYXVzZSgp
Iik7CisgICAgICAgICAgICBhd2FpdCBwYXVzZWRQcm9taXNlOworCisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lLCAiU2hv
dWxkIGhhdmUgYWN0aXZlIGNhbGwgZnJhbWUuIik7CisgICAgICAgICAgICBhd2FpdCBEZWJ1Z2dl
ckFnZW50LmV2YWx1YXRlT25DYWxsRnJhbWUuaW52b2tlKHtjYWxsRnJhbWVJZDogV0kuZGVidWdn
ZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZS5pZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGVt
dWxhdGVVc2VyR2VzdHVyZTogdHJ1ZX0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiUmVzdW1pbmcuLi4iKTsKKyAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuUmVzdW1lZCksCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJl
c3VtZSgpLAorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGF3YWl0IGV2YWx1YXRlUHJv
bWlzZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPlRlc3RzIGZvciBEZWJ1Z2dlci5ldmFsdWF0ZU9uQ2FsbEZyYW1lIGVtdWxhdGVVc2VyR2Vz
dHVyZSBvcHRpb24uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJlLWhh
c1RyYW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFj
dGl2YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uNzFmZDM3OGI0MGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVu
dEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgZm9yIFJ1bnRp
bWUuY2FsbEZ1bmN0aW9uT24gZW11bGF0ZVVzZXJHZXN0dXJlIG9wdGlvbi4KKworCis9PSBSdW5u
aW5nIHRlc3Qgc3VpdGU6IFJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24KKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBSdW50aW1lLmNhbGxGdW5jdGlvbk9uLmVtdWxhdGVVc2VyR2VzdHVyZS5oYXNUcmFuc2ll
bnRBY3RpdmF0aW9uLmZhbHNlCitObyB0cmFuc2llbnQgYWN0aXZhdGlvbgorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IFJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24uZW11bGF0ZVVzZXJHZXN0dXJlLmhhc1Ry
YW5zaWVudEFjdGl2YXRpb24udHJ1ZQorSGFzIHRyYW5zaWVudCBhY3RpdmF0aW9uCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ydW50aW1lL2NhbGxGdW5jdGlvbk9uLWVtdWxh
dGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcnVudGltZS9jYWxsRnVuY3Rpb25Pbi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJh
bnNpZW50QWN0aXZhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uM2UzZjM3ZjU5MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVu
dEFjdGl2YXRpb24uaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxv
YWQoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIChldmVudCkgPT4geworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIFRlc3RQYWdlLmFkZFJlc3VsdCh3aW5kb3cuaW50ZXJuYWxzLmhhc1RyYW5z
aWVudEFjdGl2YXRpb24oKSA/ICJIYXMgdHJhbnNpZW50IGFjdGl2YXRpb24iIDogIk5vIHRyYW5z
aWVudCBhY3RpdmF0aW9uIik7CisgICAgfSk7CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiUnVudGltZS5jYWxsRnVuY3Rpb25PbiIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiUnVudGltZS5jYWxsRnVuY3Rpb25Pbi5lbXVsYXRlVXNlckdlc3R1
cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5mYWxzZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
Q2hlY2sgdGhhdCBjYWxsRnVuY3Rpb25PbiBpcyBub3QgY29uc2lkZXJlZCBhIHVzZXIgaW50ZXJh
Y3Rpb24gd2hlbiBlbXVsYXRlVXNlckdlc3R1cmUgaXMgZmFsc2UuIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB0ZXN0RWxlbWVudCA9IGF3YWl0IFJ1bnRpbWVBZ2Vu
dC5ldmFsdWF0ZS5pbnZva2Uoe2V4cHJlc3Npb246IGBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdCIpYH0pOworICAgICAgICAgICAgYXdhaXQgUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9u
Lmludm9rZSh7ZnVuY3Rpb25EZWNsYXJhdGlvbjogYGZ1bmN0aW9uKCkgeyB0aGlzLmNsaWNrKCk7
IH1gLCBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLCBvYmplY3RJZDogdGVzdEVsZW1lbnQucmVz
dWx0Lm9iamVjdElkfSk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJSdW50aW1lLmNhbGxGdW5jdGlvbk9uLmVtdWxhdGVVc2Vy
R2VzdHVyZS5oYXNUcmFuc2llbnRBY3RpdmF0aW9uLnRydWUiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIkNoZWNrIHRoYXQgY2FsbEZ1bmN0aW9uT24gaXMgY29uc2lkZXJlZCBhIHVzZXIgaW50ZXJh
Y3Rpb24gd2hlbiBlbXVsYXRlVXNlckdlc3R1cmUgaXMgdHJ1ZS4iLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRlc3RFbGVtZW50ID0gYXdhaXQgUnVudGltZUFnZW50
LmV2YWx1YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogYGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0IilgfSk7CisgICAgICAgICAgICBhd2FpdCBSdW50aW1lQWdlbnQuY2FsbEZ1bmN0aW9uT24u
aW52b2tlKHtmdW5jdGlvbkRlY2xhcmF0aW9uOiBgZnVuY3Rpb24oKSB7IHRoaXMuY2xpY2soKTsg
fWAsIGVtdWxhdGVVc2VyR2VzdHVyZTogdHJ1ZSwgb2JqZWN0SWQ6IHRlc3RFbGVtZW50LnJlc3Vs
dC5vYmplY3RJZH0pOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibG9h
ZCgpIj4KKyAgICA8cD5UZXN0cyBmb3IgUnVudGltZS5jYWxsRnVuY3Rpb25PbiBlbXVsYXRlVXNl
ckdlc3R1cmUgb3B0aW9uLjwvcD4KKyAgICA8YSBpZD0idGVzdCI+PC9hPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZXZhbHVhdGUt
ZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZXZhbHVhdGUtZW11bGF0ZVVzZXJHZXN0dXJl
LWhhc1RyYW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uZTlkYWQ1OTVlYzVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZXZhbHVhdGUtZW11bGF0ZVVzZXJHZXN0dXJlLWhh
c1RyYW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMg
Zm9yIFJ1bnRpbWUgZW11bGF0ZVVzZXJHZXN0dXJlIG9wdGlvbi4KKworCis9PSBSdW5uaW5nIHRl
c3Qgc3VpdGU6IFJ1bnRpbWUuZXZhbHVhdGUKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSdW50aW1l
LmV2YWx1YXRlLmVtdWxhdGVVc2VyR2VzdHVyZS5oYXNUcmFuc2llbnRBY3RpdmF0aW9uLmZhbHNl
CitObyB0cmFuc2llbnQgYWN0aXZhdGlvbgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFJ1bnRpbWUu
ZXZhbHVhdGUuZW11bGF0ZVVzZXJHZXN0dXJlLmhhc1RyYW5zaWVudEFjdGl2YXRpb24udHJ1ZQor
SGFzIHRyYW5zaWVudCBhY3RpdmF0aW9uCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9ydW50aW1lL2V2YWx1YXRlLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3Rp
dmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9ldmFsdWF0ZS1lbXVs
YXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2E3Yzg5YmZkNzNiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZXZhbHVhdGUtZW11bGF0ZVVzZXJHZXN0
dXJlLWhhc1RyYW5zaWVudEFjdGl2YXRpb24uaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisKK2Z1bmN0aW9uIGxvYWQoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qi
KS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChldmVudCkgPT4geworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIFRlc3RQYWdlLmFkZFJlc3VsdCh3aW5kb3cuaW50
ZXJuYWxzLmhhc1RyYW5zaWVudEFjdGl2YXRpb24oKSA/ICJIYXMgdHJhbnNpZW50IGFjdGl2YXRp
b24iIDogIk5vIHRyYW5zaWVudCBhY3RpdmF0aW9uIik7CisgICAgfSk7CisKKyAgICBydW5UZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRl
c3QuY3JlYXRlQXN5bmNTdWl0ZSgiUnVudGltZS5ldmFsdWF0ZSIpOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUnVudGltZS5ldmFsdWF0ZS5lbXVsYXRlVXNlckdl
c3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5mYWxzZSIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiQ2hlY2sgdGhhdCB0aGUgZXZhbHVhdGlvbiBpcyBub3QgY29uc2lkZXJlZCBhIHVzZXIgaW50
ZXJhY3Rpb24gd2hlbiBlbXVsYXRlVXNlckdlc3R1cmUgaXMgZmFsc2UuIiwKKyAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZv
a2Uoe2V4cHJlc3Npb246IGBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmNsaWNrKClg
LCBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlfSk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJSdW50aW1lLmV2YWx1YXRlLmVt
dWxhdGVVc2VyR2VzdHVyZS5oYXNUcmFuc2llbnRBY3RpdmF0aW9uLnRydWUiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGV2YWx1YXRpb24gaXMgY29uc2lkZXJlZCBhIHVz
ZXIgaW50ZXJhY3Rpb24gd2hlbiBlbXVsYXRlVXNlckdlc3R1cmUgaXMgdHJ1ZS4iLAorICAgICAg
ICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgYXdhaXQgUnVudGltZUFnZW50LmV2YWx1YXRl
Lmludm9rZSh7ZXhwcmVzc2lvbjogYGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuY2xp
Y2soKWAsIGVtdWxhdGVVc2VyR2VzdHVyZTogdHJ1ZX0pOworICAgICAgICB9LAorICAgIH0pOwor
CisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0ibG9hZCgpIj4KKyAgICA8cD5UZXN0cyBmb3IgUnVudGltZSBlbXVs
YXRlVXNlckdlc3R1cmUgb3B0aW9uLjwvcD4KKyAgICA8YSBpZD0idGVzdCI+PC9hPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjVhODFlYTVjZmZlLi44YTFm
MGFmODlhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIy
LTAzLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSRUdSRVNTSU9OKD8pOiBFbXVsYXRlIFVzZXIgR2VzdHVyZSBkb2Vzbid0IHdv
cmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjU4
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ4OTk1NzY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICBDcmVhdGUgb3ZlcmxvYWRzIGZvciB0aGVz
ZSAocHJvdG9jb2wpIG1ldGhvZHMgc28gdGhhdCB3ZSBjYW4gYXZvaWQgaGF2aW5nIHRvIGZldGNo
IHRoZSBzYW1lCisgICAgICAgIGBJbmplY3RlZFNjcmlwdGAgbW9yZSB0aGFuIG9uY2UgKGkuZS4g
aWYgdGhlIHN1YmNsYXNzIGZldGNoZXMgdGhlIGBJbmplY3RlZFNjcmlwdGAgYW5kIHRoZW4KKyAg
ICAgICAgY2FsbGVkIGludG8gdGhlIGJhc2VjbGFzcywgd2hpY2ggYWxzbyBmZXRjaGVzIHRoZSBz
YW1lIGBJbmplY3RlZFNjcmlwdGApLgorCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoK
KyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkNsaWVudDo6ZGVidWdnZXJXaWxsRXZhbHVhdGUpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Q2xpZW50OjpkZWJ1Z2dlckRpZEV2YWx1YXRlKToKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpl
dmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKToKKyAgICAgICAgUGFzcyBhbG9uZyB0aGUgY3VycmVu
dCBgSlNHbG9iYWxPYmplY3RgIHRvIGV2ZW50dWFsbHkgZGVyaXZlIGEgcmVsZXZhbnQgYFdlYkNv
cmU6OkRvY3VtZW50YC4KKwogMjAyMi0wMy0wNCAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFu
Z2Vsb3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXByb3ZlIHJldXNlIG9mIGtub3du
IHJlZ2lzdGVyIHZhbHVlcyBvbiBBUk12NwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKaW5kZXggYjA3NGZhOTA2MGJmLi41MzgzMjE2MWNmODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNjM3LDcgKzYzNyw3
IEBAIHZvaWQgRGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludCYg
YnJlYWtwb2ludCwgSlNHbG9iYWxPYmplY3QqCiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjdGlv
biA6IGJyZWFrcG9pbnQuYWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5kZWJ1Z2dlcldpbGxFdmFsdWF0ZSgqdGhpcywgYWN0aW9uKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LT5kZWJ1Z2dlcldpbGxFdmFsdWF0ZSgqdGhpcywgZ2xvYmFsT2Jq
ZWN0LCBhY3Rpb24pOwogCiAgICAgICAgIGF1dG8mIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVu
dERlYnVnZ2VyQ2FsbEZyYW1lKCk7CiAKQEAgLTY3OSw3ICs2NzksNyBAQCB2b2lkIERlYnVnZ2Vy
OjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEpTR2xv
YmFsT2JqZWN0KgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAg
ICAgbV9jbGllbnQtPmRlYnVnZ2VyRGlkRXZhbHVhdGUoKnRoaXMsIGFjdGlvbik7CisgICAgICAg
ICAgICBtX2NsaWVudC0+ZGVidWdnZXJEaWRFdmFsdWF0ZSgqdGhpcywgZ2xvYmFsT2JqZWN0LCBh
Y3Rpb24pOwogCiAgICAgICAgIGlmICghaXNBdHRhY2hlZChnbG9iYWxPYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApp
bmRleCA2NWY2NWQ2MzcxZjAuLmI3ZGQxOTAzNzQyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTE0Nyw4ICsxNDcsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiBkZWJ1Z2dlclNjb3BlRXh0ZW5zaW9uT2JqZWN0KERlYnVnZ2VyJiwgSlNHbG9iYWxPYmplY3Qq
LCBEZWJ1Z2dlckNhbGxGcmFtZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRlKERlYnVnZ2VyJiwgY29uc3QgQnJlYWtwb2ludDo6
QWN0aW9uJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWJ1Z2dlckRpZEV2YWx1YXRlKERl
YnVnZ2VyJiwgY29uc3QgQnJlYWtwb2ludDo6QWN0aW9uJikgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkZWJ1Z2dlcldpbGxFdmFsdWF0ZShEZWJ1Z2dlciYsIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQnJlYWtwb2ludDo6QWN0aW9uJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZWJ1Z2dl
ckRpZEV2YWx1YXRlKERlYnVnZ2VyJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBCcmVha3BvaW50
OjpBY3Rpb24mKSB7IH0KICAgICB9OwogCiAgICAgdm9pZCBzZXRDbGllbnQoQ2xpZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGNmYTdjYTc2ZTE0YS4uMzQwNGM0
YzRjMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtOTkyLDE3ICs5
OTIsMjUgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2V0UGF1c2VPbk1pY3JvdGFza3MoYm9vbAogICAgIHJldHVybiB7IH07CiB9CiAKLVBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgc3RkOjpv
cHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lSWQmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNv
bnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3Vs
dCwgc3RkOjpvcHRpb25hbDxib29sPiYmICAvKiBlbXVsYXRlVXNlckdlc3R1cmUgKi8pCitQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpCiB7CisgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3Rl
ZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5q
ZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBjYWxsRnJhbWVJZCJfcyk7CisKKyAgICByZXR1cm4gZXZh
bHVhdGVPbkNhbGxGcmFtZShpbmplY3RlZFNjcmlwdCwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24s
IG9iamVjdEdyb3VwLCBXVEZNb3ZlKGluY2x1ZGVDb21tYW5kTGluZUFQSSksIFdURk1vdmUoZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVl
KSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3Zl
KGVtdWxhdGVVc2VyR2VzdHVyZSkpOworfQorCitQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6
OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25h
bDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3Vs
dEluZGV4ICovPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShJ
bmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQsIGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6
Q2FsbEZyYW1lSWQmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2
ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLykK
K3sKKyAgICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSk7CisgICAgQVNTRVJU
KCZpbmplY3RlZFNjcmlwdCA9PSAmbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCkpOworCiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
IGVycm9yU3RyaW5nOwogCiAgICAgaWYgKCFhc3NlcnRQYXVzZWQoZXJyb3JTdHJpbmcpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCi0gICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNj
cmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKLSAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5qZWN0
ZWQgc2NyaXB0IGZvciBnaXZlbiBjYWxsRnJhbWVJZCJfcyk7Ci0KICAgICBKU0M6OkRlYnVnZ2Vy
OjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2Fi
bGVFeGNlcHRpb25CcmVha3BvaW50cyhtX2RlYnVnZ2VyKTsKIAogICAgIGJvb2wgcGF1c2VBbmRN
dXRlID0gZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlICYmICpkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
aW5kZXggYjk5NmM5ZmJmZDcwLi5lMGNlNzY1YTQyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGludGVybmFsRW5hYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGludGVybmFsRGlzYWJsZShib29s
IGlzQmVpbmdEZXN0cm95ZWQpOwogCisgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0
dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJ
bmRleCAqLz4+IGV2YWx1YXRlT25DYWxsRnJhbWUoSW5qZWN0ZWRTY3JpcHQmLCBjb25zdCBQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZUlkJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3Rk
OjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYm
IHNhdmVSZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpOwor
CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25z
dCB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQogICAgIHZpcnR1YWwgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0
ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCA3NmQ3MmM3MjczZjEuLjJk
M2I5ODVjZTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0xMjEsNyAr
MTIxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6UnVu
dGltZTo6U3ludGF4RXJyb3JUeXBlLCBTdHJpbmcgLyoKICAgICByZXR1cm4geyB7ICpyZXN1bHQs
IG1lc3NhZ2UsIFdURk1vdmUocmFuZ2UpIH0gfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2
ZWRSZXN1bHRJbmRleCAqLz4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYm
IGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRlVXNlckdlc3R1cmUgKi8pCitQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50
PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0
ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9u
YWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250
ZXh0SWQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3Vs
dCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkKIHsKICAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKQEAgLTEyOSw2ICsxMjksMTUgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4sIHN0ZDo6b3AKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3JTdHJpbmcpOwogCisgICAgcmV0
dXJuIGV2YWx1YXRlKGluamVjdGVkU2NyaXB0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgV1RG
TW92ZShpbmNsdWRlQ29tbWFuZExpbmVBUEkpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUocmV0dXJuQnlWYWx1ZSksIFdURk1vdmUoZ2VuZXJh
dGVQcmV2aWV3KSwgV1RGTW92ZShzYXZlUmVzdWx0KSwgV1RGTW92ZShlbXVsYXRlVXNlckdlc3R1
cmUpKTsKK30KKworUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhy
b3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQ
cmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLykKK3sKKyAgICBBU1NFUlQoIWluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSk7CisKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JT
dHJpbmc7CisKICAgICBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVz
dWx0OwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd2FzVGhyb3duOwogICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwpAQCAtMTY4LDE0ICsxNzcsMjIgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmF3YWl0UHJvbWlzZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0SWQKICAgICB9KTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3Rk
Ojp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVu
Y3Rpb25Pbihjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElk
LCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIFJlZlB0cjxKU09OOjpBcnJheT4m
JiBhcmd1bWVudHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
LyogZW11bGF0ZVVzZXJHZXN0dXJlICovKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0
dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gLyogd2FzVGhyb3duICovPj4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rp
b25Pbihjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIFJlZlB0cjxKU09OOjpBcnJheT4mJiBh
cmd1bWVudHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZW11
bGF0ZVVzZXJHZXN0dXJlKQogewotICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmlu
ZzsKLQogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQiX3MpOwogCisgICAg
cmV0dXJuIGNhbGxGdW5jdGlvbk9uKGluamVjdGVkU2NyaXB0LCBvYmplY3RJZCwgZnVuY3Rpb25E
ZWNsYXJhdGlvbiwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUocmV0dXJuQnlWYWx1ZSksIFdURk1vdmUoZ2Vu
ZXJhdGVQcmV2aWV3KSwgV1RGTW92ZShlbXVsYXRlVXNlckdlc3R1cmUpKTsKK30KKworUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4gSW5zcGVjdG9y
UnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3Jp
cHQsIGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIGFy
Z3VtZW50cywgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiAvKiBl
bXVsYXRlVXNlckdlc3R1cmUgKi8pCit7CisgICAgQVNTRVJUKCFpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpOworICAgIEFTU0VSVCgmaW5qZWN0ZWRTY3JpcHQgPT0gJm1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpKTsKKworICAgIFBy
b3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKKwogICAgIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiByZXN1bHQ7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiB3
YXNUaHJvd247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggYzRmNmZhNWI5ZGU1
Li4xZGI2NDgzMWI4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC04MSw2ICs4
MSw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQoQWdl
bnRDb250ZXh0Jik7CiAKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJl
ZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAv
KiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICov
Pj4gZXZhbHVhdGUoSW5qZWN0ZWRTY3JpcHQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYg
c2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7Cisg
ICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovPj4g
Y2FsbEZ1bmN0aW9uT24oSW5qZWN0ZWRTY3JpcHQmLCBjb25zdCBQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0SWQmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uRGVjbGFyYXRpb24sIFJlZlB0
cjxKU09OOjpBcnJheT4mJiBhcmd1bWVudHMsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBh
dXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1
cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKTsKKwogICAgIEluamVjdGVkU2NyaXB0
TWFuYWdlciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7IH0KIAogICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1
bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg0OTYwOTc2
MmI4MC4uZGYzYzljNDg2NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjItMDMt
MTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJFR1JFU1NJT04oPyk6IEVtdWxhdGUgVXNlciBHZXN0dXJlIGRvZXNuJ3Qgd29yawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNTg0Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDg5OTU3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWNlbnRseSBzb21lIG5ldyB3ZWIgQVBJcyBoYXZl
IGdvbmUgYSBzdGVwIGZ1cnRoZXIgYnkgdXNpbmcgYSBuZXcgd2F5IHRvIGRldGVjdCBvbmUtdGlt
ZQorICAgICAgICB1c2VyIGludGVyYWN0aW9uIGNhbGxlZCBbdHJhbnNpZW50IGFjdGl2YXRpb25d
KGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ludGVyYWN0aW9uLmh0bWwj
dHJhbnNpZW50LWFjdGl2YXRpb24pLgorICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IGludm9r
aW5nIHRoZXNlIEFQSXMgZnJvbSBXZWIgSW5zcGVjdG9yLCBgVXNlckdlc3R1cmVFbXVsYXRpb25T
Y29wZWAKKyAgICAgICAgbmVlZHMgdG8gYmUgYWRqdXN0ZWQgdG8gc3VwcG9ydCBtYXJraW5nIHRo
ZSBjb250ZXh0IGFzIGhhdmluZyByZWNlbnRseSBiZWVuIGludGVyYWN0ZWQgd2l0aCwKKyAgICAg
ICAgd2hpY2ggdHVybnMgb3V0IHRvIGp1c3QgaW52b2x2ZSBwbHVtYmluZyBhIGBEb2N1bWVudGAg
dGhyb3VnaCB0byB0aGUgYFVzZXJHZXN0dXJlSW5kaWNhdG9yYCwKKyAgICAgICAgYXMgdGhlIHJl
c3QgaGFzIGFscmVhZHkgYmVlbiBpbXBsZW1lbnRlZC4KKworICAgICAgICBUZXN0czogaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFu
c2llbnRBY3RpdmlhdGlvbi5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZGVidWdnZXIv
ZXZhbHVhdGVPbkNhbGxGcmFtZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZh
dGlvbi5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvcnVudGltZS9jYWxsRnVuY3Rpb25P
bi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5odG1sCisgICAgICAg
ICAgICAgICBpbnNwZWN0b3IvcnVudGltZS9ldmFsdWF0ZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFz
VHJhbnNpZW50QWN0aXZhdGlvbi5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdl
bnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2Vy
QWdlbnQ6OmRlYnVnZ2VyV2lsbEV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1
Z2dlckFnZW50OjpkZWJ1Z2dlckRpZEV2YWx1YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVu
dGltZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50
OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJH
ZXN0dXJlRW11bGF0aW9uU2NvcGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2Vz
dHVyZUVtdWxhdGlvblNjb3BlOjpVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlKToKKyAgICAgICAg
RGVyaXZlIGEgYERvY3VtZW50YCBmcm9tIHRoZSBgSlNHbG9iYWxPYmplY3RgIG9mIHRoZSByZWxl
dmFudCBgSW5qZWN0ZWRTY3JpcHRgLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6b3BlblVSTEV4dGVybmFsbHkpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51
UHJvdmlkZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKToKKyAgICAgICAgRHJpdmUtYnk6IFBhc3MgdGhlIHJlbGV2
YW50IGBEb2N1bWVudGAgdG8gdGhlIGBVc2VyR2VzdHVyZUluZGljYXRvcmAganVzdCBpbiBjYXNl
IHRoZSBXZWIKKyAgICAgICAgICAgICAgICAgIEluc3BlY3RvciBmcm9udGVuZCBuZWVkcyBpdC4K
KworICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNUcmFuc2ll
bnRBY3RpdmF0aW9uKTogQWRkZWQuCisgICAgICAgIEV4cG9zZSBgRE9NV2luZG93OjpoYXNUcmFu
c2llbnRBY3RpdmF0aW9uYCB0byB0ZXN0cy4KKwogMjAyMi0wMy0wNCAgUm9iIEJ1aXMgIDxyYnVp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFRvcCBsYXllcnMgc2hvdWxkIG5vdCBiZSBtb3ZlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuY3BwCmluZGV4IGQxZjkyN2QxYzUxMy4uYjU4ZTczZTcwNGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCkBAIC0yNjQsOCArMjY0LDEwIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6Y2hhbmdlU2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuVVJMRXh0ZXJuYWxseShjb25zdCBT
dHJpbmcmIHVybCkKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBQcm9j
ZXNzaW5nVXNlckdlc3R1cmUgfTsKICAgICBGcmFtZSYgbWFpbkZyYW1lID0gbV9pbnNwZWN0ZWRQ
YWdlQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpOworCisgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBtYWluRnJh
bWUuZG9jdW1lbnQoKSB9OworCiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgeyB9LCBibGFua1RhcmdldEZyYW1lTmFtZSgpLCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBiNGYzNDJmNGEwMWYu
LmU5YmY1ZWEyMDUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fZnJvbnRlbmRIb3N0KSB7
Ci0gICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKFByb2Nl
c3NpbmdVc2VyR2VzdHVyZSk7CisgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0
dXJlSW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgZHluYW1pY0Rvd25jYXN0PERvY3Vt
ZW50PihleGVjdXRpb25Db250ZXh0KG1fZnJvbnRlbmRBcGlPYmplY3QuZ2xvYmFsT2JqZWN0KCkp
KSk7CiAgICAgICAgICAgICBpbnQgaXRlbU51bWJlciA9IGFjdGlvbiAtIENvbnRleHRNZW51SXRl
bUJhc2VDdXN0b21UYWc7CiAKICAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKaW5kZXggY2IxMmNjNjk0ZTJmLi5kMWIyNjlmOGZhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTQw
OSw5ICs0MDksMTAgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZWxvYWQoc3RkOjpvcHRpb25hbDxib29sPiYmIGkKIAogUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZShjb25zdCBTdHJpbmcm
IHVybCkKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBQcm9jZXNzaW5n
VXNlckdlc3R1cmUgfTsKICAgICBGcmFtZSYgZnJhbWUgPSBtX2luc3BlY3RlZFBhZ2UubWFpbkZy
YW1lKCk7CiAKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IgeyBQcm9jZXNzaW5n
VXNlckdlc3R1cmUsIGZyYW1lLmRvY3VtZW50KCkgfTsKKwogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXNvdXJjZVJlcXVlc3QgeyBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpIH07CiAg
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3VtZW50KCks
IGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1
ZXN0KSwgc2VsZlRhcmdldEZyYW1lTmFtZSgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93
biB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3QuZGlzYWJsZU5hdmlnYXRpb25Ub0ludmFsaWRVUkwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDgyYjVkMjQ0YjYyOS4uM2RkMWJhZjFlMzc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3dDdXN0b20uaCIKKyNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBh
Z2VEZWJ1Z2dlci5oIgpAQCAtNjksOSArNzAsMTIgQEAgYm9vbCBQYWdlRGVidWdnZXJBZ2VudDo6
ZW5hYmxlZCgpIGNvbnN0CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVm
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8q
IHdhc1Rocm93biAqLywgc3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+
PiBQYWdlRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQcm90b2NvbDo6
RGVidWdnZXI6OkNhbGxGcmFtZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1
ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxi
b29sPiYmIHNhdmVSZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1
cmUpCiB7Ci0gICAgVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1f
aW5zcGVjdGVkUGFnZSwgZW11bGF0ZVVzZXJHZXN0dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUp
OworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3Npbmcg
aW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBjYWxsRnJhbWVJZCJfcyk7CiAKLSAgICByZXR1cm4g
V2ViRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjYWxsRnJhbWVJZCwgZXhwcmVz
c2lvbiwgb2JqZWN0R3JvdXAsIFdURk1vdmUoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgV1RGTW92
ZShkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpLCBXVEZNb3ZlKHJldHVybkJ5
VmFsdWUpLCBXVEZNb3ZlKGdlbmVyYXRlUHJldmlldyksIFdURk1vdmUoc2F2ZVJlc3VsdCksIFdU
Rk1vdmUoZW11bGF0ZVVzZXJHZXN0dXJlKSk7CisgICAgVXNlckdlc3R1cmVFbXVsYXRpb25TY29w
ZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVjdGVkUGFnZSwgZW11bGF0ZVVzZXJHZXN0dXJlLnZh
bHVlX29yKGZhbHNlKSwgZHluYW1pY0Rvd25jYXN0PERvY3VtZW50PihleGVjdXRpb25Db250ZXh0
KGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOworICAgIHJldHVybiBXZWJEZWJ1Z2dl
ckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKGluamVjdGVkU2NyaXB0LCBjYWxsRnJhbWVJZCwg
ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIFdURk1vdmUoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwg
V1RGTW92ZShkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpLCBXVEZNb3ZlKHJl
dHVybkJ5VmFsdWUpLCBXVEZNb3ZlKGdlbmVyYXRlUHJldmlldyksIFdURk1vdmUoc2F2ZVJlc3Vs
dCksIFdURk1vdmUoZW11bGF0ZVVzZXJHZXN0dXJlKSk7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2Vy
QWdlbnQ6OmludGVybmFsRW5hYmxlKCkKQEAgLTExOSwxNiArMTIzLDE0IEBAIHZvaWQgUGFnZURl
YnVnZ2VyQWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQogICAgIFBhZ2VDb25zb2xlQ2xpZW50Ojp1bm11
dGUoKTsKIH0KIAotdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJXaWxsRXZhbHVhdGUo
SlNDOjpEZWJ1Z2dlciYsIGNvbnN0IEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uJiBhY3Rpb24pCit2
b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlcldpbGxFdmFsdWF0ZShKU0M6OkRlYnVnZ2Vy
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OkJyZWFrcG9p
bnQ6OkFjdGlvbiYgYWN0aW9uKQogewotICAgIGlmIChhY3Rpb24uZW11bGF0ZVVzZXJHZXN0dXJl
KQotICAgICAgICBtX2JyZWFrcG9pbnRBY3Rpb25Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlU3Rh
Y2suYXBwZW5kKG1ha2VVbmlxdWVSZWY8VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZT4obV9pbnNw
ZWN0ZWRQYWdlLCB0cnVlKSk7CisgICAgbV9icmVha3BvaW50QWN0aW9uVXNlckdlc3R1cmVFbXVs
YXRpb25TY29wZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlUmVmPFVzZXJHZXN0dXJlRW11bGF0aW9u
U2NvcGU+KG1faW5zcGVjdGVkUGFnZSwgYWN0aW9uLmVtdWxhdGVVc2VyR2VzdHVyZSwgZHluYW1p
Y0Rvd25jYXN0PERvY3VtZW50PihleGVjdXRpb25Db250ZXh0KGdsb2JhbE9iamVjdCkpKSk7CiB9
CiAKLXZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyRGlkRXZhbHVhdGUoSlNDOjpEZWJ1
Z2dlciYsIGNvbnN0IEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uJiBhY3Rpb24pCit2b2lkIFBhZ2VE
ZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlckRpZEV2YWx1YXRlKEpTQzo6RGVidWdnZXImLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24mKQogewotICAgIGlm
IChhY3Rpb24uZW11bGF0ZVVzZXJHZXN0dXJlKQotICAgICAgICBtX2JyZWFrcG9pbnRBY3Rpb25V
c2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlU3RhY2sucmVtb3ZlTGFzdCgpOworICAgIG1fYnJlYWtw
b2ludEFjdGlvblVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGVTdGFjay5yZW1vdmVMYXN0KCk7CiB9
CiAKIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1
Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURl
YnVnZ2VyQWdlbnQuaAppbmRleCAxNzg4MWIxMTRlMzMuLjViOGNmZTJhODE2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dl
ckFnZW50LmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8s
IHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGVPbkNh
bGxGcmFtZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQm
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQ
cmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxi
b29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKICAgICAvLyBKU0M6OkRlYnVnZ2VyOjpDbGll
bnQKLSAgICB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRlKEpTQzo6RGVidWdnZXImLCBjb25zdCBK
U0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwotICAgIHZvaWQgZGVidWdnZXJEaWRFdmFsdWF0ZShK
U0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24mKTsKKyAgICB2b2lk
IGRlYnVnZ2VyV2lsbEV2YWx1YXRlKEpTQzo6RGVidWdnZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24mKTsKKyAgICB2b2lkIGRlYnVnZ2VyRGlk
RXZhbHVhdGUoSlNDOjpEZWJ1Z2dlciYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0M6
OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwogCiAgICAgLy8gSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIK
ICAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZGU1Njg5YWEzMzQ1Li41ZTdh
MTIxNGRhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
CiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKKyNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTE4OSwxNCArMTkwLDI0IEBAIHZvaWQgUGFn
ZVJ1bnRpbWVBZ2VudDo6bm90aWZ5Q29udGV4dENyZWF0ZWQoY29uc3QgUHJvdG9jb2w6Ok5ldHdv
cms6OkZyYW1lSWQmIGZyCiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVm
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8q
IHdhc1Rocm93biAqLywgc3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+
PiBQYWdlUnVudGltZUFnZW50OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29t
bWFuZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlv
bkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBy
ZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxh
dGVVc2VyR2VzdHVyZSkKIHsKLSAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0
dXJlU2NvcGUobV9pbnNwZWN0ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVV
c2VyR2VzdHVyZSk7Ci0gICAgcmV0dXJuIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUo
ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIFdURk1vdmUoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwg
V1RGTW92ZShkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpLCBXVEZNb3ZlKGV4
ZWN1dGlvbkNvbnRleHRJZCksIFdURk1vdmUocmV0dXJuQnlWYWx1ZSksIFdURk1vdmUoZ2VuZXJh
dGVQcmV2aWV3KSwgV1RGTW92ZShzYXZlUmVzdWx0KSwgV1RGTW92ZShlbXVsYXRlVXNlckdlc3R1
cmUpKTsKKyAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CisKKyAgICBhdXRv
IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKGVycm9yU3RyaW5nLCBXVEZN
b3ZlKGV4ZWN1dGlvbkNvbnRleHRJZCkpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CisKKyAg
ICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJlU2NvcGUobV9pbnNwZWN0ZWRQ
YWdlLCBlbXVsYXRlVXNlckdlc3R1cmUudmFsdWVfb3IoZmFsc2UpLCBkeW5hbWljRG93bmNhc3Q8
RG9jdW1lbnQ+KGV4ZWN1dGlvbkNvbnRleHQoaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCkp
KSk7CisgICAgcmV0dXJuIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoaW5qZWN0ZWRT
Y3JpcHQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBXVEZNb3ZlKGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSksIFdURk1vdmUoZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSwgV1RG
TW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNh
dmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQogCiBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8+PiBQYWdlUnVudGltZUFn
ZW50OjpjYWxsRnVuY3Rpb25Pbihjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
SWQmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFJlZlB0cjxKU09OOjpBcnJh
eT4mJiBvcHRpb25hbEFyZ3VtZW50cywgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5
VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpCiB7Ci0gICAgVXNlckdlc3R1cmVFbXVsYXRp
b25TY29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVjdGVkUGFnZSwgZW11bGF0ZVVzZXJHZXN0
dXJlICYmICplbXVsYXRlVXNlckdlc3R1cmUpOwotICAgIHJldHVybiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmNhbGxGdW5jdGlvbk9uKG9iamVjdElkLCBleHByZXNzaW9uLCBXVEZNb3ZlKG9wdGlv
bmFsQXJndW1lbnRzKSwgV1RGTW92ZShkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUpLCBXVEZNb3ZlKHJldHVybkJ5VmFsdWUpLCBXVEZNb3ZlKGdlbmVyYXRlUHJldmlldyksIFdU
Rk1vdmUoZW11bGF0ZVVzZXJHZXN0dXJlKSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQp
OworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9iamVjdElk
Il9zKTsKKworICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUgdXNlckdlc3R1cmVTY29wZSht
X2luc3BlY3RlZFBhZ2UsIGVtdWxhdGVVc2VyR2VzdHVyZS52YWx1ZV9vcihmYWxzZSksIGR5bmFt
aWNEb3duY2FzdDxEb2N1bWVudD4oZXhlY3V0aW9uQ29udGV4dChpbmplY3RlZFNjcmlwdC5nbG9i
YWxPYmplY3QoKSkpKTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVu
Y3Rpb25PbihpbmplY3RlZFNjcmlwdCwgb2JqZWN0SWQsIGV4cHJlc3Npb24sIFdURk1vdmUob3B0
aW9uYWxBcmd1bWVudHMpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29u
c29sZSksIFdURk1vdmUocmV0dXJuQnlWYWx1ZSksIFdURk1vdmUoZ2VuZXJhdGVQcmV2aWV3KSwg
V1RGTW92ZShlbXVsYXRlVXNlckdlc3R1cmUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJH
ZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwCmluZGV4IDg2OTk0MzZlM2Y5Ni4u
NGU4YzVjMmNiOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwCkBAIC0z
MywxNCArMzMsMTUgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVXNl
ckdlc3R1cmVFbXVsYXRpb25TY29wZTo6VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZShQYWdlJiBp
bnNwZWN0ZWRQYWdlLCBib29sIGVtdWxhdGVVc2VyR2VzdHVyZSkKK1VzZXJHZXN0dXJlRW11bGF0
aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwg
Ym9vbCBlbXVsYXRlVXNlckdlc3R1cmUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fcGFn
ZUNocm9tZUNsaWVudChpbnNwZWN0ZWRQYWdlLmNocm9tZSgpLmNsaWVudCgpKQotICAgICwgbV9n
ZXN0dXJlSW5kaWNhdG9yKGVtdWxhdGVVc2VyR2VzdHVyZSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxv
cHQpCisgICAgLCBtX2dlc3R1cmVJbmRpY2F0b3IoZW11bGF0ZVVzZXJHZXN0dXJlID8gc3RkOjpv
cHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSA6IHN0ZDo6bnVsbG9wdCwgZG9jdW1lbnQpCiAgICAgLCBtX2VtdWxhdGVVc2VyR2VzdHVyZShl
bXVsYXRlVXNlckdlc3R1cmUpCiAgICAgLCBtX3VzZXJXYXNJbnRlcmFjdGluZyhmYWxzZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2Vz
dHVyZUVtdWxhdGlvblNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oCmluZGV4IDE2ZWRiM2JjNjg5Yi4uMTFiZGEw
NDcwM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmgKQEAgLTM3LDEzICszNywx
NCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVDbGllbnQ7CitjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFVzZXJHZXN0dXJlRW11
bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1cmUp
OworICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYsIGJvb2wgZW11bGF0ZVVzZXJH
ZXN0dXJlLCBEb2N1bWVudCogPSBudWxscHRyKTsKICAgICB+VXNlckdlc3R1cmVFbXVsYXRpb25T
Y29wZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggZmUxY2EwMDE3
MTIyLi4yZWVjZTdhMTI1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMTgzLDcgKzE4
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhc3RBY3RpdmF0aW9uVGltZXN0YW1wKE1vbm90
b25pY1RpbWUgbGFzdEFjdGl2YXRpb25UaW1lc3RhbXApIHsgbV9sYXN0QWN0aXZhdGlvblRpbWVz
dGFtcCA9IGxhc3RBY3RpdmF0aW9uVGltZXN0YW1wOyB9CiAgICAgTW9ub3RvbmljVGltZSBsYXN0
QWN0aXZhdGlvblRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEFjdGl2YXRpb25UaW1l
c3RhbXA7IH0KICAgICB2b2lkIG5vdGlmeUFjdGl2YXRlZChNb25vdG9uaWNUaW1lKTsKLSAgICBi
b29sIGhhc1RyYW5zaWVudEFjdGl2YXRpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc1RyYW5zaWVudEFjdGl2YXRpb24oKSBjb25zdDsKICAgICBib29sIGNvbnN1bWVUcmFu
c2llbnRBY3RpdmF0aW9uKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBMb2NhdGlvbiYgbG9jYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzZTEyZWM4ZjYwZDEu
LmUwZDQ5MTBkNjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTA5
MCw2ICs1MDkwLDE1IEBAIGJvb2wgSW50ZXJuYWxzOjp1c2VySXNJbnRlcmFjdGluZygpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitib29sIEludGVybmFsczo6aGFzVHJhbnNpZW50QWN0aXZhdGlv
bigpCit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3VtZW50LT5kb21XaW5kb3coKSkKKyAgICAgICAg
ICAgIHJldHVybiB3aW5kb3ctPmhhc1RyYW5zaWVudEFjdGl2YXRpb24oKTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBkb3VibGUgSW50ZXJuYWxzOjpsYXN0SGFuZGxlZFVzZXJHZXN0
dXJlVGltZXN0YW1wKCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGNlOTk4YzM0N2U0NS4uZDU3
NTRiMzlhMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTgxMCw2ICs4MTAs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIHVzZXJJc0ludGVyYWN0aW5nKCk7CiAKKyAgICBib29s
IGhhc1RyYW5zaWVudEFjdGl2YXRpb24oKTsKKwogICAgIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBv
YnNlcnZlR0MoSlNDOjpKU1ZhbHVlKTsKIAogICAgIGVudW0gY2xhc3MgVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbiA6IHVpbnQ4X3QgeyBMVFIsIFJUTCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IDQyOGYzYjMyYWI5Ni4uMjBmNWJmZGU5ZTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04NjgsNiArODY4LDggQEAgdHlwZWRlZiAoRmV0
Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogCiAgICAgYm9vbGVhbiB1
c2VySXNJbnRlcmFjdGluZygpOwogCisgICAgYm9vbGVhbiBoYXNUcmFuc2llbnRBY3RpdmF0aW9u
KCk7CisKICAgICBHQ09ic2VydmF0aW9uPyBvYnNlcnZlR0MoYW55IG9ic2VydmVkKTsKIAogICAg
IHVuZGVmaW5lZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik7Cg==
</data>
<flag name="commit-queue"
          id="482679"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454888</attachid>
            <date>2022-03-16 13:23:22 -0700</date>
            <delta_ts>2022-03-18 18:04:33 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-232584-20220316142321.patch</filename>
            <type>text/plain</type>
            <size>50391</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDczNGQyMzE2YjFhYWFiZTMyOTUyNzNlYTBjZWVk
MTA0ZDhjYjI3YjcuLjVkOGJiN2QzZjRlNzdlZDhmZDg0YTcwN2M0NzUxZDM4MWE1OGQ0ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAzLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
RUdSRVNTSU9OKD8pOiBFbXVsYXRlIFVzZXIgR2VzdHVyZSBkb2Vzbid0IHdvcmsKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjU4NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODQ4OTk1NzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0
ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFs
dWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1
bmN0aW9uT24pOgorICAgICAgICBDcmVhdGUgb3ZlcmxvYWRzIGZvciB0aGVzZSAocHJvdG9jb2wp
IG1ldGhvZHMgc28gdGhhdCB3ZSBjYW4gYXZvaWQgaGF2aW5nIHRvIGZldGNoIHRoZSBzYW1lCisg
ICAgICAgIGBJbmplY3RlZFNjcmlwdGAgbW9yZSB0aGFuIG9uY2UgKGkuZS4gaWYgdGhlIHN1YmNs
YXNzIGZldGNoZXMgdGhlIGBJbmplY3RlZFNjcmlwdGAgYW5kIHRoZW4KKyAgICAgICAgY2FsbGVk
IGludG8gdGhlIGJhc2VjbGFzcywgd2hpY2ggYWxzbyBmZXRjaGVzIHRoZSBzYW1lIGBJbmplY3Rl
ZFNjcmlwdGApLgorCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXI6OkNsaWVudDo6ZGVidWdnZXJXaWxsRXZhbHVhdGUpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6Q2xpZW50OjpkZWJ1Z2dlckRpZEV2YWx1YXRlKToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpldmFsdWF0ZUJyZWFr
cG9pbnRBY3Rpb25zKToKKyAgICAgICAgUGFzcyBhbG9uZyB0aGUgY3VycmVudCBgSlNHbG9iYWxP
YmplY3RgIHRvIGV2ZW50dWFsbHkgZGVyaXZlIGEgcmVsZXZhbnQgYFdlYkNvcmU6OkRvY3VtZW50
YC4KKwogMjAyMi0wMy0xNiAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlh
LmNvbT4KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3OiBCZSBmcmllbmRsaWVyIHRvIERp
c2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAxODc5ODI1NTc3
NGM3OTc0MzMwODQwZGFiNzRhZjg3NjFhMmE0NjIuLjc0ZGM4OGRhNWZlZmY5OWZlNWRkMDZjYzI4
NDY5MWE5MjAxMzhiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMi0wMy0xNSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUkVHUkVTU0lPTig/KTogRW11bGF0ZSBVc2VyIEdlc3R1cmUgZG9lc24ndCB3b3JrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1ODQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzg0ODk5NTc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlY2VudGx5IHNvbWUgbmV3IHdlYiBBUElzIGhhdmUgZ29u
ZSBhIHN0ZXAgZnVydGhlciBieSB1c2luZyBhIG5ldyB3YXkgdG8gZGV0ZWN0IG9uZS10aW1lCisg
ICAgICAgIHVzZXIgaW50ZXJhY3Rpb24gY2FsbGVkIFt0cmFuc2llbnQgYWN0aXZhdGlvbl0oaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW50ZXJhY3Rpb24uaHRtbCN0cmFu
c2llbnQtYWN0aXZhdGlvbikuCisgICAgICAgIEluIG9yZGVyIHRvIHN1cHBvcnQgaW52b2tpbmcg
dGhlc2UgQVBJcyBmcm9tIFdlYiBJbnNwZWN0b3IsIGBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3Bl
YAorICAgICAgICBuZWVkcyB0byBiZSBhZGp1c3RlZCB0byBzdXBwb3J0IG1hcmtpbmcgdGhlIGNv
bnRleHQgYXMgaGF2aW5nIHJlY2VudGx5IGJlZW4gaW50ZXJhY3RlZCB3aXRoLAorICAgICAgICB3
aGljaCB0dXJucyBvdXQgdG8ganVzdCBpbnZvbHZlIHBsdW1iaW5nIGEgYERvY3VtZW50YCB0aHJv
dWdoIHRvIHRoZSBgVXNlckdlc3R1cmVJbmRpY2F0b3JgLAorICAgICAgICBhcyB0aGUgcmVzdCBo
YXMgYWxyZWFkeSBiZWVuIGltcGxlbWVudGVkLgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0b3Iv
ZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVu
dEFjdGl2aWF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kZWJ1Z2dlci9ldmFs
dWF0ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9u
Lmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9ydW50aW1lL2NhbGxGdW5jdGlvbk9uLWVt
dWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9uLmh0bWwKKyAgICAgICAgICAg
ICAgIGluc3BlY3Rvci9ydW50aW1lL2V2YWx1YXRlLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFu
c2llbnRBY3RpdmF0aW9uLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6
ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJXaWxsRXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2Vy
QWdlbnQ6OmRlYnVnZ2VyRGlkRXZhbHVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1l
QWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmNh
bGxGdW5jdGlvbk9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1
cmVFbXVsYXRpb25TY29wZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2Vy
R2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0dXJl
RW11bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUpOgorICAgICAgICBEZXJp
dmUgYSBgRG9jdW1lbnRgIGZyb20gdGhlIGBKU0dsb2JhbE9iamVjdGAgb2YgdGhlIHJlbGV2YW50
IGBJbmplY3RlZFNjcmlwdGAuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpvcGVuVVJMRXh0ZXJuYWxseSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcm9udGVuZE1lbnVQcm92
aWRlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bmF2aWdhdGUpOgorICAgICAgICBEcml2ZS1ieTogUGFzcyB0aGUgcmVsZXZhbnQg
YERvY3VtZW50YCB0byB0aGUgYFVzZXJHZXN0dXJlSW5kaWNhdG9yYCBqdXN0IGluIGNhc2UgdGhl
IFdlYgorICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yIGZyb250ZW5kIG5lZWRzIGl0LgorCisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1RyYW5zaWVudEFj
dGl2YXRpb24pOiBBZGRlZC4KKyAgICAgICAgRXhwb3NlIGBET01XaW5kb3c6Omhhc1RyYW5zaWVu
dEFjdGl2YXRpb25gIHRvIHRlc3RzLgorCiAyMDIyLTAzLTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBNaWdyYXRlIHVzZSBvZiBNZWRpYVNhbXBs
ZUdTdHJlYW1lciB0byBWaWRlb0ZyYW1lIGluIFdlYlJUQyBwaXBlbGluZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGIwNzRmYTkwNjBiZjIzOGZj
M2VmOTk5ZjZhOWRiZjllNzM0YjUwYTIuLjUzODMyMTYxY2Y4NzUxNThkYWE1NTk2NmJhZDAyN2Vi
NjA5NGZjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cApAQCAtNjM3LDcgKzYzNyw3IEBAIHZvaWQgRGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2ludEFj
dGlvbnMoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgSlNHbG9iYWxPYmplY3QqCiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGFjdGlvbiA6IGJyZWFrcG9pbnQuYWN0aW9ucygpKSB7CiAgICAgICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kZWJ1Z2dlcldpbGxFdmFsdWF0ZSgq
dGhpcywgYWN0aW9uKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kZWJ1Z2dlcldpbGxFdmFsdWF0
ZSgqdGhpcywgZ2xvYmFsT2JqZWN0LCBhY3Rpb24pOwogCiAgICAgICAgIGF1dG8mIGRlYnVnZ2Vy
Q2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7CiAKQEAgLTY3OSw3ICs2Nzks
NyBAQCB2b2lkIERlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnQm
IGJyZWFrcG9pbnQsIEpTR2xvYmFsT2JqZWN0KgogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmRlYnVnZ2VyRGlkRXZhbHVhdGUoKnRoaXMs
IGFjdGlvbik7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGVidWdnZXJEaWRFdmFsdWF0ZSgqdGhp
cywgZ2xvYmFsT2JqZWN0LCBhY3Rpb24pOwogCiAgICAgICAgIGlmICghaXNBdHRhY2hlZChnbG9i
YWxPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaAppbmRleCA2NWY2NWQ2MzcxZjA0MDY4NjVlYjBhNmI5ZWIyN2E5MmU4
N2ViZTlmLi5iN2RkMTkwMzc0MmMyNzVmYTkyOWQ1ZjdlZDc4YzE4ZmJiMTVkOWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMTQ3LDggKzE0Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIGRlYnVnZ2VyU2NvcGVFeHRlbnNpb25PYmplY3QoRGVidWdnZXIm
LCBKU0dsb2JhbE9iamVjdCosIERlYnVnZ2VyQ2FsbEZyYW1lJikgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVidWdnZXJXaWxsRXZhbHVhdGUoRGVidWdnZXImLCBj
b25zdCBCcmVha3BvaW50OjpBY3Rpb24mKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlYnVn
Z2VyRGlkRXZhbHVhdGUoRGVidWdnZXImLCBjb25zdCBCcmVha3BvaW50OjpBY3Rpb24mKSB7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRlKERlYnVnZ2VyJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBCcmVha3BvaW50OjpBY3Rpb24mKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGRlYnVnZ2VyRGlkRXZhbHVhdGUoRGVidWdnZXImLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEJyZWFrcG9pbnQ6OkFjdGlvbiYpIHsgfQogICAgIH07CiAKICAgICB2b2lkIHNldENs
aWVudChDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggY2Zh
N2NhNzZlMTRhZDdjNzBjOWRkYjUzZWE5NWQ5YmEwOGI1NmRhZC4uZWYwZmY2MmE3OGEzYTFmNjBk
NTUzMjlhNTUzNzhiNGY1NTEyZmQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTk5MiwxNyArOTkyLDI0IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25NaWNyb3Rhc2tzKGJvb2wKICAgICByZXR1
cm4geyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNU
aHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBQcm90b2NvbDo6
RGVidWdnZXI6OkNhbGxGcmFtZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1
ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxi
b29sPiYmIHNhdmVSZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiAgLyogZW11bGF0ZVVzZXJH
ZXN0dXJlICovKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhy
b3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoY29uc3QgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpDYWxsRnJhbWVJZCYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJl
KQogeworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZCk7CisgICAgaWYg
KGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gY2FsbEZyYW1lSWQiX3MpOwor
CisgICAgcmV0dXJuIGV2YWx1YXRlT25DYWxsRnJhbWUoaW5qZWN0ZWRTY3JpcHQsIGNhbGxGcmFt
ZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgV1RGTW92ZShpbmNsdWRlQ29tbWFuZExpbmVB
UEkpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1v
dmUocmV0dXJuQnlWYWx1ZSksIFdURk1vdmUoZ2VuZXJhdGVQcmV2aWV3KSwgV1RGTW92ZShzYXZl
UmVzdWx0KSwgV1RGTW92ZShlbXVsYXRlVXNlckdlc3R1cmUpKTsKK30KKworUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGlu
dD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUoSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0LCBjb25zdCBQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZUlkJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJu
QnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRp
b25hbDxib29sPiYmIHNhdmVSZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRl
VXNlckdlc3R1cmUgKi8pCit7CisgICAgQVNTRVJUKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpOworCiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCiAgICAgaWYg
KCFhc3NlcnRQYXVzZWQoZXJyb3JTdHJpbmcpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZXJyb3JTdHJpbmcpOwogCi0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFt
ZUlkKTsKLSAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBjYWxs
RnJhbWVJZCJfcyk7Ci0KICAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNl
cHRpb25CcmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyht
X2RlYnVnZ2VyKTsKIAogICAgIGJvb2wgcGF1c2VBbmRNdXRlID0gZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlICYmICpkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggYjk5NmM5ZmJmZDcwOWU5YjJm
NTIzNTgyZmMzNmEyNTU1NWI2NzU0Ny4uZTBjZTc2NWE0MmNhYTVmZDA2MzcwMTVkZWFkZDUyNTRh
YTM5N2ExOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMTUyLDYgKzE1Miw4
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaW50ZXJuYWxFbmFibGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgaW50ZXJuYWxEaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCk7CiAKKyAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0
ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gZXZhbHVhdGVPbkNhbGxG
cmFtZShJbmplY3RlZFNjcmlwdCYsIGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
SWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJh
dGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2ZVJlc3VsdCwgc3RkOjpvcHRpb25h
bDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CisKICAgICBJbmplY3RlZFNjcmlwdE1hbmFn
ZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOyB9CiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZv
ckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVu
dGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwCmluZGV4IDc2ZDcyYzcyNzNmMWJiMjE3MDQ4NTAxNWQ5MzFiMWZiYTkyZDNiNWEu
LjZlOTc2NjIxMTg2MzI2YmU1M2FlZGVlZGE2MThhNDQxZDdiZWE2YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSwgU3Ry
aW5nIC8qCiAgICAgcmV0dXJuIHsgeyAqcmVzdWx0LCBtZXNzYWdlLCBXVEZNb3ZlKHJhbmdlKSB9
IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93
biAqLywgc3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29u
dGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVy
bkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgLyogZW11bGF0
ZVVzZXJHZXN0dXJlICovKQorUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyog
d2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4gLyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVj
dXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywg
c3RkOjpvcHRpb25hbDxib29sPiYmIHNhdmVSZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBl
bXVsYXRlVXNlckdlc3R1cmUpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3Ry
aW5nOwogCkBAIC0xMjksNiArMTI5LDE1IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6
dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wCiAgICAg
aWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKGVycm9yU3RyaW5nKTsKIAorICAgIHJldHVybiBldmFsdWF0ZShpbmplY3RlZFNjcmlw
dCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIFdURk1vdmUoaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
KSwgV1RGTW92ZShkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpLCBXVEZNb3Zl
KHJldHVybkJ5VmFsdWUpLCBXVEZNb3ZlKGdlbmVyYXRlUHJldmlldyksIFdURk1vdmUoc2F2ZVJl
c3VsdCksIFdURk1vdmUoZW11bGF0ZVVzZXJHZXN0dXJlKSk7Cit9CisKK1Byb3RvY29sOjpFcnJv
clN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLywgc3RkOjpvcHRpb25hbDxpbnQ+
IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRl
KEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwg
c3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29s
PiYmIHNhdmVSZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiAvKiBlbXVsYXRlVXNlckdlc3R1
cmUgKi8pCit7CisgICAgQVNTRVJUKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpOworCisg
ICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOworCiAgICAgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc3VsdDsKICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHdhc1Rocm93bjsKICAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsK
QEAgLTE2OCwxNCArMTc3LDIxIEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojphd2FpdFBy
b21pc2UoY29uc3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkCiAgICAgfSk7CiB9
CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbkRl
Y2xhcmF0aW9uLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgYXJndW1lbnRzLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRl
UHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIC8qIGVtdWxhdGVVc2VyR2VzdHVyZSAqLykK
K1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Rocm93biAqLz4+IElu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oY29uc3QgUHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdElkJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbkRlY2xh
cmF0aW9uLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiYgYXJndW1lbnRzLCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVyYXRlUHJl
dmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkKIHsKLSAgICBQ
cm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7Ci0KICAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9y
T2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQg
Zm9yIGdpdmVuIG9iamVjdElkIl9zKTsKIAorICAgIHJldHVybiBjYWxsRnVuY3Rpb25Pbihpbmpl
Y3RlZFNjcmlwdCwgb2JqZWN0SWQsIGZ1bmN0aW9uRGVjbGFyYXRpb24sIFdURk1vdmUoYXJndW1l
bnRzKSwgV1RGTW92ZShkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpLCBXVEZN
b3ZlKHJldHVybkJ5VmFsdWUpLCBXVEZNb3ZlKGdlbmVyYXRlUHJldmlldyksIFdURk1vdmUoZW11
bGF0ZVVzZXJHZXN0dXJlKSk7Cit9CisKK1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVw
bGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IC8qIHdhc1Rocm93biAqLz4+IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9u
T24oSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0LCBjb25zdCBQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0SWQmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uRGVjbGFy
YXRpb24sIFJlZlB0cjxKU09OOjpBcnJheT4mJiBhcmd1bWVudHMsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2
aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgLyogZW11bGF0ZVVzZXJHZXN0dXJlICovKQorewor
ICAgIEFTU0VSVCghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKKworICAgIFByb3RvY29s
OjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKKwogICAgIFJlZlB0cjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiByZXN1bHQ7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiB3YXNUaHJv
d247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggYzRmNmZhNWI5ZGU1NDMxN2Rh
MDdjMjM3MWE3MTI2YWFlMWM5NjdhYS4uMWRiNjQ4MzFiODM1ZGY4MTYxMzBiZTRlN2Q0MmI3YjIx
MzYyNTY1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTgxLDYgKzgxLDkgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudChBZ2VudENvbnRl
eHQmKTsKIAorICAgIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Ro
cm93biAqLywgc3RkOjpvcHRpb25hbDxpbnQ+IC8qIHNhdmVkUmVzdWx0SW5kZXggKi8+PiBldmFs
dWF0ZShJbmplY3RlZFNjcmlwdCYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKTsKKyAgICBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8+PiBjYWxsRnVu
Y3Rpb25PbihJbmplY3RlZFNjcmlwdCYsIGNvbnN0IFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3RJZCYsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25EZWNsYXJhdGlvbiwgUmVmUHRyPEpTT046
OkFycmF5PiYmIGFyZ3VtZW50cywgc3RkOjpvcHRpb25hbDxib29sPiYmIGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFs
dWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4mJiBlbXVsYXRlVXNlckdlc3R1cmUpOworCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
JiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cjsgfQogCiAgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6
RXhlY3V0aW9uQ29udGV4dElkPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggZDFmOTI3
ZDFjNTEzY2FiZWVmMzFmNzNiZGY0OWYzMDdmNzg2ZmE4NC4uYjU4ZTczZTcwNGY0MzQxYzUzNzU5
NjIyOTE2ZGM3YzFkOWViZTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMjY0LDggKzI2NCwx
MCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNoYW5nZVNoZWV0UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6b3BlblVSTEV4dGVybmFsbHkoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CiAgICAgRnJh
bWUmIG1haW5GcmFtZSA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2Uo
KS5tYWluRnJhbWUoKTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvciB7IFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSwgbWFpbkZyYW1lLmRvY3VtZW50KCkgfTsKKwogICAgIEZyYW1l
TG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFp
bkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgYmxhbmtUYXJnZXRGcmFt
ZU5hbWUoKSwgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKIAogICAgIGJvb2wgY3Jl
YXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKaW5kZXggOGRlNDM3YjVhNDczMGFhOGMxZTZhYjM4ZTI3MGI0ZDFmNmRkMGE3Ny4u
YTgwOTljODFjY2U2MjJjNjEzNDNmZWJmMjkyMDZkNjRiYTEyZTY3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTEwOCw3
ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgaWYgKG1fZnJvbnRlbmRIb3N0KSB7Ci0gICAgICAgICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBnZXN0dXJlSW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisgICAgICAgICAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgZHluYW1pY0Rvd25jYXN0PERvY3VtZW50PihleGVjdXRpb25Db250ZXh0KG1fZnJvbnRl
bmRBcGlPYmplY3QuZ2xvYmFsT2JqZWN0KCkpKSk7CiAgICAgICAgICAgICBpbnQgaXRlbU51bWJl
ciA9IGFjdGlvbiAtIENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWc7CiAKICAgICAgICAgICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2Zyb250ZW5kQXBpT2Jq
ZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5k
bGVyRnJvbUFueVRocmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggY2IxMmNjNjk0ZTJmYWJiZmNjNTdi
OTg0M2NjNTA3MjYwOTllNDJhYi4uZDFiMjY5ZjhmYTdkNjVhYTQ4NDIwNWZkNTAyOGQ4OTQ1N2Uz
YWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNDA5LDkgKzQwOSwxMCBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgaQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdl
bnQ6Om5hdmlnYXRlKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGluZGljYXRvciB7IFByb2Nlc3NpbmdVc2VyR2VzdHVyZSB9OwogICAgIEZyYW1lJiBmcmFt
ZSA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKTsKIAorICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGluZGljYXRvciB7IFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgZnJhbWUuZG9jdW1lbnQoKSB9
OworCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IGZyYW1lLmRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKHVybCkgfTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJl
cXVlc3QgeyAqZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCksIElu
aXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5kaXNh
YmxlTmF2aWdhdGlvblRvSW52YWxpZFVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggODJi
NWQyNDRiNjI5NjQ2MTVmYzRjMTIzNzIzNTE0ZjI2ODFiMzkxNS4uM2RkMWJhZjFlMzc1ZGI2MDU4
ZjMyZGZlN2ZhYzU3MjNiY2Y3ZWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisjaW5jbHVk
ZSAiSlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNv
bGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlRGVidWdnZXIuaCIKQEAgLTY5LDkgKzcwLDEyIEBA
IGJvb2wgUGFnZURlYnVnZ2VyQWdlbnQ6OmVuYWJsZWQoKSBjb25zdAogCiBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
Piwgc3RkOjpvcHRpb25hbDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50
PiAvKiBzYXZlZFJlc3VsdEluZGV4ICovPj4gUGFnZURlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25D
YWxsRnJhbWUoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWVJZCYgY2FsbEZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwg
c3RkOjpvcHRpb25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRpb25h
bDxib29sPiYmIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRp
b25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBnZW5lcmF0
ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKQogewotICAgIFVzZXJHZXN0dXJlRW11bGF0aW9u
U2NvcGUgdXNlckdlc3R1cmVTY29wZShtX2luc3BlY3RlZFBhZ2UsIGVtdWxhdGVVc2VyR2VzdHVy
ZSAmJiAqZW11bGF0ZVVzZXJHZXN0dXJlKTsKKyAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJ
ZCk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gY2FsbEZy
YW1lSWQiX3MpOwogCi0gICAgcmV0dXJuIFdlYkRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxs
RnJhbWUoY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBXVEZNb3ZlKGluY2x1
ZGVDb21tYW5kTGluZUFQSSksIFdURk1vdmUoZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcp
LCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOworICAg
IFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUgdXNlckdlc3R1cmVTY29wZShtX2luc3BlY3RlZFBh
Z2UsIGVtdWxhdGVVc2VyR2VzdHVyZS52YWx1ZV9vcihmYWxzZSksIGR5bmFtaWNEb3duY2FzdDxE
b2N1bWVudD4oZXhlY3V0aW9uQ29udGV4dChpbmplY3RlZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkp
KTsKKyAgICByZXR1cm4gV2ViRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShpbmpl
Y3RlZFNjcmlwdCwgY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBXVEZNb3Zl
KGluY2x1ZGVDb21tYW5kTGluZUFQSSksIFdURk1vdmUoZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVBy
ZXZpZXcpLCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkp
OwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjppbnRlcm5hbEVuYWJsZSgpCkBAIC0xMTks
MTYgKzEyMywxNCBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojp1bm11dGVDb25zb2xlKCkKICAg
ICBQYWdlQ29uc29sZUNsaWVudDo6dW5tdXRlKCk7CiB9CiAKLXZvaWQgUGFnZURlYnVnZ2VyQWdl
bnQ6OmRlYnVnZ2VyV2lsbEV2YWx1YXRlKEpTQzo6RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFr
cG9pbnQ6OkFjdGlvbiYgYWN0aW9uKQordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJX
aWxsRXZhbHVhdGUoSlNDOjpEZWJ1Z2dlciYsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24mIGFjdGlvbikKIHsKLSAgICBpZiAo
YWN0aW9uLmVtdWxhdGVVc2VyR2VzdHVyZSkKLSAgICAgICAgbV9icmVha3BvaW50QWN0aW9uVXNl
ckdlc3R1cmVFbXVsYXRpb25TY29wZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlUmVmPFVzZXJHZXN0
dXJlRW11bGF0aW9uU2NvcGU+KG1faW5zcGVjdGVkUGFnZSwgdHJ1ZSkpOworICAgIG1fYnJlYWtw
b2ludEFjdGlvblVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGVTdGFjay5hcHBlbmQobWFrZVVuaXF1
ZVJlZjxVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlPihtX2luc3BlY3RlZFBhZ2UsIGFjdGlvbi5l
bXVsYXRlVXNlckdlc3R1cmUsIGR5bmFtaWNEb3duY2FzdDxEb2N1bWVudD4oZXhlY3V0aW9uQ29u
dGV4dChnbG9iYWxPYmplY3QpKSkpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkZWJ1
Z2dlckRpZEV2YWx1YXRlKEpTQzo6RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFj
dGlvbiYgYWN0aW9uKQordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJEaWRFdmFsdWF0
ZShKU0M6OkRlYnVnZ2VyJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6QnJlYWtw
b2ludDo6QWN0aW9uJikKIHsKLSAgICBpZiAoYWN0aW9uLmVtdWxhdGVVc2VyR2VzdHVyZSkKLSAg
ICAgICAgbV9icmVha3BvaW50QWN0aW9uVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZVN0YWNrLnJl
bW92ZUxhc3QoKTsKKyAgICBtX2JyZWFrcG9pbnRBY3Rpb25Vc2VyR2VzdHVyZUVtdWxhdGlvblNj
b3BlU3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpicmVh
a3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggMTc4ODFiMTE0ZTMz
MDlkN2QzYjc4MGRlMGRhYjNhMjA0NGZiYmJlZi4uNWI4Y2ZlMmE4MTYyZjg0Y2JjNzVlZDE5NDM3
ZmZhODk3NWUyMDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGlj
OgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcHRpb25h
bDxib29sPiAvKiB3YXNUaHJvd24gKi8sIHN0ZDo6b3B0aW9uYWw8aW50PiAvKiBzYXZlZFJlc3Vs
dEluZGV4ICovPj4gZXZhbHVhdGVPbkNhbGxGcmFtZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lSWQmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXAsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiByZXR1cm5CeVZhbHVlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgZ2VuZXJhdGVQcmV2aWV3LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgc2F2
ZVJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSk7CiAKICAg
ICAvLyBKU0M6OkRlYnVnZ2VyOjpDbGllbnQKLSAgICB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRl
KEpTQzo6RGVidWdnZXImLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwotICAgIHZv
aWQgZGVidWdnZXJEaWRFdmFsdWF0ZShKU0M6OkRlYnVnZ2VyJiwgY29uc3QgSlNDOjpCcmVha3Bv
aW50OjpBY3Rpb24mKTsKKyAgICB2b2lkIGRlYnVnZ2VyV2lsbEV2YWx1YXRlKEpTQzo6RGVidWdn
ZXImLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24m
KTsKKyAgICB2b2lkIGRlYnVnZ2VyRGlkRXZhbHVhdGUoSlNDOjpEZWJ1Z2dlciYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbiYpOwogCiAgICAgLy8g
SlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKICAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAK
aW5kZXggZGU1Njg5YWEzMzQ1MmFmZDk1YTMyOTJhYjE4MDhhYTk1ZTFmNmIxYy4uNWU3YTEyMTRk
YTA2MGJhM2ExNjhjZjIxYjIyZTZjMzk4YzBlMDdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgor
I2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgpAQCAtMTg5
LDE0ICsxOTAsMjQgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50Ojpub3RpZnlDb250ZXh0Q3JlYXRl
ZChjb25zdCBQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYgZnIKIAogUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gLyogd2FzVGhyb3duICovLCBzdGQ6Om9wdGlvbmFsPGludD4g
Lyogc2F2ZWRSZXN1bHRJbmRleCAqLz4+IFBhZ2VSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgc3RkOjpvcHRp
b25hbDxib29sPiYmIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgc3RkOjpvcHRpb25hbDxib29sPiYm
IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgc3RkOjpvcHRpb25hbDxQcm90
b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCwg
c3RkOjpvcHRpb25hbDxib29sPiYmIHJldHVybkJ5VmFsdWUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
JiBnZW5lcmF0ZVByZXZpZXcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJiBzYXZlUmVzdWx0LCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiYgZW11bGF0ZVVzZXJHZXN0dXJlKQogewotICAgIFVzZXJHZXN0dXJl
RW11bGF0aW9uU2NvcGUgdXNlckdlc3R1cmVTY29wZShtX2luc3BlY3RlZFBhZ2UsIGVtdWxhdGVV
c2VyR2VzdHVyZSAmJiAqZW11bGF0ZVVzZXJHZXN0dXJlKTsKLSAgICByZXR1cm4gSW5zcGVjdG9y
UnVudGltZUFnZW50OjpldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgV1RGTW92ZShp
bmNsdWRlQ29tbWFuZExpbmVBUEkpLCBXVEZNb3ZlKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSksIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSwgV1RGTW92ZShyZXR1cm5C
eVZhbHVlKSwgV1RGTW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKHNhdmVSZXN1bHQpLCBX
VEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOworICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBl
cnJvclN0cmluZzsKKworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZv
ckV2YWwoZXJyb3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CisgICAgaWYg
KGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGVycm9yU3RyaW5nKTsKKworICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUgdXNlckdl
c3R1cmVTY29wZShtX2luc3BlY3RlZFBhZ2UsIGVtdWxhdGVVc2VyR2VzdHVyZS52YWx1ZV9vcihm
YWxzZSksIGR5bmFtaWNEb3duY2FzdDxEb2N1bWVudD4oZXhlY3V0aW9uQ29udGV4dChpbmplY3Rl
ZFNjcmlwdC5nbG9iYWxPYmplY3QoKSkpKTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpldmFsdWF0ZShpbmplY3RlZFNjcmlwdCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIFdU
Rk1vdmUoaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgV1RGTW92ZShkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUpLCBXVEZNb3ZlKHJldHVybkJ5VmFsdWUpLCBXVEZNb3ZlKGdlbmVy
YXRlUHJldmlldyksIFdURk1vdmUoc2F2ZVJlc3VsdCksIFdURk1vdmUoZW11bGF0ZVVzZXJHZXN0
dXJlKSk7CiB9CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IC8qIHdhc1Ro
cm93biAqLz4+IFBhZ2VSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKGNvbnN0IFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3RJZCYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgUmVmUHRyPEpTT046OkFycmF5PiYmIG9wdGlvbmFsQXJndW1lbnRzLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiYgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiYgcmV0dXJuQnlWYWx1ZSwgc3RkOjpvcHRpb25hbDxib29sPiYmIGdlbmVy
YXRlUHJldmlldywgc3RkOjpvcHRpb25hbDxib29sPiYmIGVtdWxhdGVVc2VyR2VzdHVyZSkKIHsK
LSAgICBVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlIHVzZXJHZXN0dXJlU2NvcGUobV9pbnNwZWN0
ZWRQYWdlLCBlbXVsYXRlVXNlckdlc3R1cmUgJiYgKmVtdWxhdGVVc2VyR2VzdHVyZSk7Ci0gICAg
cmV0dXJuIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24ob2JqZWN0SWQsIGV4
cHJlc3Npb24sIFdURk1vdmUob3B0aW9uYWxBcmd1bWVudHMpLCBXVEZNb3ZlKGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSksIFdURk1vdmUocmV0dXJuQnlWYWx1ZSksIFdURk1v
dmUoZ2VuZXJhdGVQcmV2aWV3KSwgV1RGTW92ZShlbXVsYXRlVXNlckdlc3R1cmUpKTsKKyAgICBh
dXRvIGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChvYmplY3RJZCk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGluamVjdGVkIHNj
cmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQiX3MpOworCisgICAgVXNlckdlc3R1cmVFbXVsYXRpb25T
Y29wZSB1c2VyR2VzdHVyZVNjb3BlKG1faW5zcGVjdGVkUGFnZSwgZW11bGF0ZVVzZXJHZXN0dXJl
LnZhbHVlX29yKGZhbHNlKSwgZHluYW1pY0Rvd25jYXN0PERvY3VtZW50PihleGVjdXRpb25Db250
ZXh0KGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSkpOworICAgIHJldHVybiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKGluamVjdGVkU2NyaXB0LCBvYmplY3RJZCwg
ZXhwcmVzc2lvbiwgV1RGTW92ZShvcHRpb25hbEFyZ3VtZW50cyksIFdURk1vdmUoZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSwgV1RGTW92ZShyZXR1cm5CeVZhbHVlKSwgV1RG
TW92ZShnZW5lcmF0ZVByZXZpZXcpLCBXVEZNb3ZlKGVtdWxhdGVVc2VyR2VzdHVyZSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5j
cHAKaW5kZXggODY5OTQzNmUzZjk2MmI0NjViNDdhZWJlYmQ2MDFlZTkwMTUyZWY4My4uNGU4YzVj
MmNiOTdlZGFhNWMxNzg3OTEwZDczMDljNjQ1MmI1ZGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVt
dWxhdGlvblNjb3BlLmNwcApAQCAtMzMsMTQgKzMzLDE1IEBACiAKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGU6OlVzZXJHZXN0dXJl
RW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9vbCBlbXVsYXRlVXNlckdlc3R1
cmUpCitVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlOjpVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3Bl
KFBhZ2UmIGluc3BlY3RlZFBhZ2UsIGJvb2wgZW11bGF0ZVVzZXJHZXN0dXJlLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBtX3BhZ2VDaHJvbWVDbGllbnQoaW5zcGVjdGVkUGFnZS5jaHJvbWUo
KS5jbGllbnQoKSkKLSAgICAsIG1fZ2VzdHVyZUluZGljYXRvcihlbXVsYXRlVXNlckdlc3R1cmUg
PyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KQorICAgICwgbV9nZXN0dXJlSW5kaWNhdG9yKGVtdWxh
dGVVc2VyR2VzdHVyZSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQsIGRvY3VtZW50KQogICAgICwg
bV9lbXVsYXRlVXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgICwgbV91c2VyV2Fz
SW50ZXJhY3RpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuaAppbmRl
eCAxNmVkYjNiYzY4OWI4ZTJkZGUxNzU5N2I2NDJiNzA2YzEzNDNlMWY1Li4xMWJkYTA0NzAzYzM4
YzBhYzNjODFjYThkNTc1YzQ1M2VkMzQzMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNj
b3BlLmgKQEAgLTM3LDEzICszNywxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
aHJvbWVDbGllbnQ7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIFVzZXJH
ZXN0dXJlRW11bGF0aW9uU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJHZXN0
dXJlRW11bGF0aW9uU2NvcGUpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFnZSYgaW5zcGVjdGVkUGFnZSwgYm9v
bCBlbXVsYXRlVXNlckdlc3R1cmUpOworICAgIFVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUoUGFn
ZSYsIGJvb2wgZW11bGF0ZVVzZXJHZXN0dXJlLCBEb2N1bWVudCogPSBudWxscHRyKTsKICAgICB+
VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKaW5kZXggZmUxY2EwMDE3MTIyMGQyZmU3Njc1NjU1Y2JjMWIxOTY4ZWQwZWZiYy4uMmVl
Y2U3YTEyNWFhZWExOGI2N2JmNDYzYjA0YWU1ZjhjNjc3MjQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdEFjdGl2
YXRpb25UaW1lc3RhbXAoTW9ub3RvbmljVGltZSBsYXN0QWN0aXZhdGlvblRpbWVzdGFtcCkgeyBt
X2xhc3RBY3RpdmF0aW9uVGltZXN0YW1wID0gbGFzdEFjdGl2YXRpb25UaW1lc3RhbXA7IH0KICAg
ICBNb25vdG9uaWNUaW1lIGxhc3RBY3RpdmF0aW9uVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0QWN0aXZhdGlvblRpbWVzdGFtcDsgfQogICAgIHZvaWQgbm90aWZ5QWN0aXZhdGVkKE1v
bm90b25pY1RpbWUpOwotICAgIGJvb2wgaGFzVHJhbnNpZW50QWN0aXZhdGlvbigpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzVHJhbnNpZW50QWN0aXZhdGlvbigpIGNvbnN0Owog
ICAgIGJvb2wgY29uc3VtZVRyYW5zaWVudEFjdGl2YXRpb24oKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIExvY2F0aW9uJiBsb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDE4M2NjZTE5NzYzODIwMWJlN2I0ZWJjZDQ3ODc5MzE2MmU2MTQ2M2QuLjQwZWZkZDVl
MTY0NGEyNTNiNDIyMjNlMTBkZWIxM2JiMjY3ZjZhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTUwOTcsNiArNTA5NywxNSBAQCBib29sIEludGVybmFsczo6dXNlcklz
SW50ZXJhY3RpbmcoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6Omhh
c1RyYW5zaWVudEFjdGl2YXRpb24oKQoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGNvbnRl
eHREb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC0+ZG9t
V2luZG93KCkpCisgICAgICAgICAgICByZXR1cm4gd2luZG93LT5oYXNUcmFuc2llbnRBY3RpdmF0
aW9uKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogZG91YmxlIEludGVybmFsczo6
bGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gY29udGV4dERvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCBmMmI4ZmQ1MGRjMTYzZGNjNmYwMTI2ODE2OWJhOGFiNGU1Zjg4MTRmLi5hOTJhZmQ4MjU1YTFl
Y2Q0Yzc5ZmVhNWU1NTMyMmY5OWQ1MzBiZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTgxMSw2ICs4MTEsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHVzZXJJc0ludGVyYWN0
aW5nKCk7CiAKKyAgICBib29sIGhhc1RyYW5zaWVudEFjdGl2YXRpb24oKTsKKwogICAgIFJlZlB0
cjxHQ09ic2VydmF0aW9uPiBvYnNlcnZlR0MoSlNDOjpKU1ZhbHVlKTsKIAogICAgIGVudW0gY2xh
c3MgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA6IHVpbnQ4X3QgeyBMVFIsIFJUTCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDE1ZTRhZTExMDg5ODQ5NTVkNmNj
ZDU5MjhjZDdhODY4YzAwODcwNTEuLjQ4NmU1ZDE1NzBhODJiOGU4ZjljOTQzYzA1MTA5OWU5NTIz
MWVlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2OSw2ICs4Njks
OCBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7
CiAKICAgICBib29sZWFuIHVzZXJJc0ludGVyYWN0aW5nKCk7CiAKKyAgICBib29sZWFuIGhhc1Ry
YW5zaWVudEFjdGl2YXRpb24oKTsKKwogICAgIEdDT2JzZXJ2YXRpb24/IG9ic2VydmVHQyhhbnkg
b2JzZXJ2ZWQpOwogCiAgICAgdW5kZWZpbmVkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24oVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA2NWRiZTY0MmU0MWFhNWY2OGM1ZTBlOGFjNjU2N2I1OGU1M2NlNmE4Li42
MGE1NzRiOTc5MzI4YTBjMDA2NDY4MWYzODk3YzFiY2RmZjllYmY5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMjItMDMtMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04oPyk6IEVtdWxhdGUgVXNlciBHZXN0dXJl
IGRvZXNuJ3Qgd29yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyNTg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDg5OTU3Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LWFjdGlvbi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0
aXZpYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFr
cG9pbnQtYWN0aW9uLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmlhdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9ldmFsdWF0
ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9uLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9ldmFsdWF0ZU9uQ2FsbEZy
YW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11
bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2YXRpb24uaHRtbDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJl
LWhhc1RyYW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvcnVudGltZS9ldmFsdWF0ZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50
QWN0aXZhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcnVudGltZS9ldmFs
dWF0ZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorCiAyMDIyLTAzLTE2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgU3luYyBjc3MvY3NzLWNvbnRhaW4gZnJvbSBXUFQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1lbXVsYXRlVXNlckdl
c3R1cmUtaGFzVHJhbnNpZW50QWN0aXZpYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWVtdWxhdGVVc2VyR2VzdHVyZS1o
YXNUcmFuc2llbnRBY3RpdmlhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I2MDA2ZjIw
OGEwZGEwNmFmNzc2MWE3Njc3Nzk2OWU2ODQ5M2E5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1lbXVsYXRlVXNlckdl
c3R1cmUtaGFzVHJhbnNpZW50QWN0aXZpYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTgg
QEAKK1Rlc3RzIGZvciBEZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uIGVtdWxhdGVVc2VyR2VzdHVy
ZSBwYXJhbWV0ZXIuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBEZWJ1Z2dlci5CcmVha3Bv
aW50QWN0aW9uCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuQnJlYWtwb2ludEFjdGlv
bi5lbXVsYXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5mYWxzZQorUGF1c2lu
Zy4uLgorYmVmb3JlIGRlYnVnZ2VyCitObyB0cmFuc2llbnQgYWN0aXZhdGlvbgorUmVzdW1pbmcu
Li4KK2FmdGVyIGRlYnVnZ2VyCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5CcmVh
a3BvaW50QWN0aW9uLmVtdWxhdGVVc2VyR2VzdHVyZS5oYXNUcmFuc2llbnRBY3RpdmF0aW9uLnRy
dWUKK1BhdXNpbmcuLi4KK2JlZm9yZSBkZWJ1Z2dlcgorSGFzIHRyYW5zaWVudCBhY3RpdmF0aW9u
CitSZXN1bWluZy4uLgorYWZ0ZXIgZGVidWdnZXIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWVtdWxhdGVVc2VyR2VzdHVyZS1o
YXNUcmFuc2llbnRBY3RpdmlhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtYWN0aW9uLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3Rp
dmlhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0MTg0YWMwMDlkZjUzMGQxMjkyYmE5NzU2ZGQ3ZTli
NzdkYTQyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1hY3Rpb24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2
aWF0aW9uLmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdHJpZ2dlclBh
dXNlKCkgeworICAgIFRlc3RQYWdlLmFkZFJlc3VsdCgiYmVmb3JlIGRlYnVnZ2VyIik7CisgICAg
ZGVidWdnZXI7CisgICAgVGVzdFBhZ2UuYWRkUmVzdWx0KCJhZnRlciBkZWJ1Z2dlciIpOworfQor
CitmdW5jdGlvbiB0ZXN0RW11bGF0ZVVzZXJHZXN0dXJlKCkgeworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICBUZXN0UGFnZS5hZGRSZXN1bHQod2luZG93LmludGVybmFscy5oYXNU
cmFuc2llbnRBY3RpdmF0aW9uKCkgPyAiSGFzIHRyYW5zaWVudCBhY3RpdmF0aW9uIiA6ICJObyB0
cmFuc2llbnQgYWN0aXZhdGlvbiIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQg
c3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRlYnVnZ2VyLkJyZWFrcG9p
bnRBY3Rpb24iKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRl
YnVnZ2VyLkJyZWFrcG9pbnRBY3Rpb24uZW11bGF0ZVVzZXJHZXN0dXJlLmhhc1RyYW5zaWVudEFj
dGl2YXRpb24uZmFsc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkV2YWx1dGUgd2l0aCB0aGUg
ZW11bGF0ZVVzZXJHZXN0dXJlIG9wdGlvbiBzZXQgdG8gZmFsc2UuIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBhY3Rpb24gPSBuZXcgV0kuQnJlYWtwb2ludEFjdGlv
bihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIHtkYXRhOiBgdGVzdEVtdWxhdGVV
c2VyR2VzdHVyZSgpYCwgZW11bGF0ZVVzZXJHZXN0dXJlOiBmYWxzZX0pOworICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQuYWRkQWN0aW9u
KGFjdGlvbik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQYXVzaW5nLi4uIik7
CisgICAgICAgICAgICBsZXQgcGF1c2VkUHJvbWlzZSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hd2Fp
dEV2ZW50KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQpOworICAgICAgICAgICAgbGV0
IGV2YWx1YXRlUHJvbWlzZSA9IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInRyaWdnZXJQ
YXVzZSgpIik7CisgICAgICAgICAgICBhd2FpdCBwYXVzZWRQcm9taXNlOworCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChXSS5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1l
LCAiU2hvdWxkIGhhdmUgYWN0aXZlIGNhbGwgZnJhbWUuIik7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJSZXN1bWluZy4uLiIpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5h
bGwoWworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkKSwKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVzdW1lKCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQucmVtb3ZlQWN0aW9uKGFj
dGlvbik7CisKKyAgICAgICAgICAgIGF3YWl0IGV2YWx1YXRlUHJvbWlzZTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRGVidWdn
ZXIuQnJlYWtwb2ludEFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZh
dGlvbi50cnVlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJFdmFsdXRlIHdpdGggdGhlIGVtdWxh
dGVVc2VyR2VzdHVyZSBvcHRpb24gc2V0IHRvIHRydWUuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIGxldCBhY3Rpb24gPSBuZXcgV0kuQnJlYWtwb2ludEFjdGlvbihXSS5C
cmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIHtkYXRhOiBgdGVzdEVtdWxhdGVVc2VyR2Vz
dHVyZSgpYCwgZW11bGF0ZVVzZXJHZXN0dXJlOiB0cnVlfSk7CisgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5hZGRBY3Rpb24oYWN0aW9u
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBhdXNpbmcuLi4iKTsKKyAgICAg
ICAgICAgIGxldCBwYXVzZWRQcm9taXNlID0gV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCk7CisgICAgICAgICAgICBsZXQgZXZhbHVh
dGVQcm9taXNlID0gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgidHJpZ2dlclBhdXNlKCki
KTsKKyAgICAgICAgICAgIGF3YWl0IHBhdXNlZFByb21pc2U7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUsICJTaG91
bGQgaGF2ZSBhY3RpdmUgY2FsbCBmcmFtZS4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlJlc3VtaW5nLi4uIik7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisg
ICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlJlc3VtZWQpLAorICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZXN1bWUoKSwKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5yZW1vdmVBY3Rpb24oYWN0aW9uKTsK
KworICAgICAgICAgICAgYXdhaXQgZXZhbHVhdGVQcm9taXNlOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgZm9yIERlYnVnZ2VyLkJy
ZWFrcG9pbnRBY3Rpb24gZW11bGF0ZVVzZXJHZXN0dXJlIHBhcmFtZXRlci48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZXZh
bHVhdGVPbkNhbGxGcmFtZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZXZhbHVhdGVP
bkNhbGxGcmFtZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc0NWNmMzc0YmI2MDJiNGEyNTE4YTA4NmM4M2IwNTQ5YjQ2
OWQwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9l
dmFsdWF0ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBmb3IgRGVidWdnZXIuZXZh
bHVhdGVPbkNhbGxGcmFtZSBlbXVsYXRlVXNlckdlc3R1cmUgb3B0aW9uLgorCisKKz09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogRGVidWdnZXIuZXZhbHVhdGVPbkNhbGxGcmFtZQorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERlYnVnZ2VyLmV2YWx1YXRlT25DYWxsRnJhbWUuZW11bGF0ZVVzZXJHZXN0dXJl
Lmhhc1RyYW5zaWVudEFjdGl2YXRpb24uZmFsc2UKK1BhdXNpbmcuLi4KK2JlZm9yZSBkZWJ1Z2dl
cgorTm8gdHJhbnNpZW50IGFjdGl2YXRpb24KK1Jlc3VtaW5nLi4uCithZnRlciBkZWJ1Z2dlcgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuZXZhbHVhdGVPbkNhbGxGcmFtZS5lbXVs
YXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi50cnVlCitQYXVzaW5nLi4uCiti
ZWZvcmUgZGVidWdnZXIKK0hhcyB0cmFuc2llbnQgYWN0aXZhdGlvbgorUmVzdW1pbmcuLi4KK2Fm
dGVyIGRlYnVnZ2VyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9ldmFsdWF0ZU9uQ2FsbEZyYW1lLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3Rp
dmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZXZhbHVhdGVPbkNh
bGxGcmFtZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYwN2ViODA5ZjRiOGM2NzIxOWFlOWViZGY3ZTAxODFiMmU1MDA4ZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZXZhbHVhdGVPbkNh
bGxGcmFtZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5odG1sCkBA
IC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRyaWdnZXJQYXVzZSgpIHsKKyAgICBU
ZXN0UGFnZS5hZGRSZXN1bHQoImJlZm9yZSBkZWJ1Z2dlciIpOworICAgIGRlYnVnZ2VyOworICAg
IFRlc3RQYWdlLmFkZFJlc3VsdCgiYWZ0ZXIgZGVidWdnZXIiKTsKK30KKworZnVuY3Rpb24gdGVz
dEVtdWxhdGVVc2VyR2VzdHVyZSgpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgVGVzdFBhZ2UuYWRkUmVzdWx0KHdpbmRvdy5pbnRlcm5hbHMuaGFzVHJhbnNpZW50QWN0aXZh
dGlvbigpID8gIkhhcyB0cmFuc2llbnQgYWN0aXZhdGlvbiIgOiAiTm8gdHJhbnNpZW50IGFjdGl2
YXRpb24iKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgY29uc3QgZXhwcmVzc2lvbiA9
IGB0ZXN0RW11bGF0ZVVzZXJHZXN0dXJlKClgOworICAgIGNvbnN0IG9iamVjdEdyb3VwID0gInRl
c3QiOworCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJE
ZWJ1Z2dlci5ldmFsdWF0ZU9uQ2FsbEZyYW1lIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5ldmFsdWF0ZU9uQ2FsbEZyYW1lLmVtdWxhdGVVc2Vy
R2VzdHVyZS5oYXNUcmFuc2llbnRBY3RpdmF0aW9uLmZhbHNlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJFdmFsdXRlIHdpdGggdGhlIGVtdWxhdGVVc2VyR2VzdHVyZSBvcHRpb24gc2V0IHRvIGZh
bHNlLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydCghV0kuZGVidWdnZXJNYW5hZ2VyLnBhdXNlZCwgIlNob3VsZCBub3QgYmUgcGF1c2Vk
LiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUGF1c2luZy4uLiIpOworICAg
ICAgICAgICAgbGV0IHBhdXNlZFByb21pc2UgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVu
dChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkKTsKKyAgICAgICAgICAgIGxldCBldmFs
dWF0ZVByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ0cmlnZ2VyUGF1c2Uo
KSIpOworICAgICAgICAgICAgYXdhaXQgcGF1c2VkUHJvbWlzZTsKKworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZSwgIlNo
b3VsZCBoYXZlIGFjdGl2ZSBjYWxsIGZyYW1lLiIpOworICAgICAgICAgICAgYXdhaXQgRGVidWdn
ZXJBZ2VudC5ldmFsdWF0ZU9uQ2FsbEZyYW1lLmludm9rZSh7Y2FsbEZyYW1lSWQ6IFdJLmRlYnVn
Z2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUuaWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBl
bXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlfSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJSZXN1bWluZy4uLiIpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5SZXN1bWVkKSwKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
cmVzdW1lKCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgYXdhaXQgZXZhbHVhdGVQ
cm9taXNlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5ldmFsdWF0ZU9uQ2FsbEZyYW1lLmVtdWxhdGVVc2VyR2Vz
dHVyZS5oYXNUcmFuc2llbnRBY3RpdmF0aW9uLnRydWUiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IkV2YWx1dGUgd2l0aCB0aGUgZW11bGF0ZVVzZXJHZXN0dXJlIG9wdGlvbiBzZXQgdG8gdHJ1ZS4i
LAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5wYXVzZWQsICJTaG91bGQgbm90IGJlIHBhdXNlZC4iKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBhdXNpbmcuLi4iKTsKKyAgICAgICAg
ICAgIGxldCBwYXVzZWRQcm9taXNlID0gV0kuZGVidWdnZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCk7CisgICAgICAgICAgICBsZXQgZXZhbHVhdGVQ
cm9taXNlID0gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgidHJpZ2dlclBhdXNlKCkiKTsK
KyAgICAgICAgICAgIGF3YWl0IHBhdXNlZFByb21pc2U7CisKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUsICJTaG91bGQg
aGF2ZSBhY3RpdmUgY2FsbCBmcmFtZS4iKTsKKyAgICAgICAgICAgIGF3YWl0IERlYnVnZ2VyQWdl
bnQuZXZhbHVhdGVPbkNhbGxGcmFtZS5pbnZva2Uoe2NhbGxGcmFtZUlkOiBXSS5kZWJ1Z2dlck1h
bmFnZXIuYWN0aXZlQ2FsbEZyYW1lLmlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgZW11bGF0
ZVVzZXJHZXN0dXJlOiB0cnVlfSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJS
ZXN1bWluZy4uLiIpOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5SZXN1bWVkKSwKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1l
KCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgYXdhaXQgZXZhbHVhdGVQcm9taXNl
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2go
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
VGVzdHMgZm9yIERlYnVnZ2VyLmV2YWx1YXRlT25DYWxsRnJhbWUgZW11bGF0ZVVzZXJHZXN0dXJl
IG9wdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcnVudGltZS9jYWxsRnVuY3Rpb25Pbi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJh
bnNpZW50QWN0aXZhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVu
dGltZS9jYWxsRnVuY3Rpb25Pbi1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZh
dGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzFmZDM3OGI0MGZiNmNiYmQ5OGZiMmU1NWEz
YzViYTA4YmU3Nzc3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
dW50aW1lL2NhbGxGdW5jdGlvbk9uLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNUcmFuc2llbnRBY3Rp
dmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIGZvciBSdW50aW1lLmNh
bGxGdW5jdGlvbk9uIGVtdWxhdGVVc2VyR2VzdHVyZSBvcHRpb24uCisKKworPT0gUnVubmluZyB0
ZXN0IHN1aXRlOiBSdW50aW1lLmNhbGxGdW5jdGlvbk9uCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
UnVudGltZS5jYWxsRnVuY3Rpb25Pbi5lbXVsYXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0
aXZhdGlvbi5mYWxzZQorTm8gdHJhbnNpZW50IGFjdGl2YXRpb24KKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBSdW50aW1lLmNhbGxGdW5jdGlvbk9uLmVtdWxhdGVVc2VyR2VzdHVyZS5oYXNUcmFuc2ll
bnRBY3RpdmF0aW9uLnRydWUKK0hhcyB0cmFuc2llbnQgYWN0aXZhdGlvbgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9jYWxsRnVuY3Rpb25Pbi1lbXVsYXRlVXNl
ckdlc3R1cmUtaGFzVHJhbnNpZW50QWN0aXZhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3J1bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVu
dEFjdGl2YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTNmMzdmNTkyYTdkNzI3OTE2NjE3NTMxMWUy
MThlMDEwOThmODI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1
bnRpbWUvY2FsbEZ1bmN0aW9uT24tZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2
YXRpb24uaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWQoKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIChldmVudCkgPT4geworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgIFRlc3RQYWdlLmFkZFJlc3VsdCh3aW5kb3cuaW50ZXJuYWxzLmhhc1RyYW5zaWVudEFj
dGl2YXRpb24oKSA/ICJIYXMgdHJhbnNpZW50IGFjdGl2YXRpb24iIDogIk5vIHRyYW5zaWVudCBh
Y3RpdmF0aW9uIik7CisgICAgfSk7CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
UnVudGltZS5jYWxsRnVuY3Rpb25PbiIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiUnVudGltZS5jYWxsRnVuY3Rpb25Pbi5lbXVsYXRlVXNlckdlc3R1cmUuaGFz
VHJhbnNpZW50QWN0aXZhdGlvbi5mYWxzZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sg
dGhhdCBjYWxsRnVuY3Rpb25PbiBpcyBub3QgY29uc2lkZXJlZCBhIHVzZXIgaW50ZXJhY3Rpb24g
d2hlbiBlbXVsYXRlVXNlckdlc3R1cmUgaXMgZmFsc2UuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgp
IHsKKyAgICAgICAgICAgIGxldCB0ZXN0RWxlbWVudCA9IGF3YWl0IFJ1bnRpbWVBZ2VudC5ldmFs
dWF0ZS5pbnZva2Uoe2V4cHJlc3Npb246IGBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIp
YH0pOworICAgICAgICAgICAgYXdhaXQgUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9uLmludm9r
ZSh7ZnVuY3Rpb25EZWNsYXJhdGlvbjogYGZ1bmN0aW9uKCkgeyB0aGlzLmNsaWNrKCk7IH1gLCBl
bXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLCBvYmplY3RJZDogdGVzdEVsZW1lbnQucmVzdWx0Lm9i
amVjdElkfSk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJSdW50aW1lLmNhbGxGdW5jdGlvbk9uLmVtdWxhdGVVc2VyR2VzdHVy
ZS5oYXNUcmFuc2llbnRBY3RpdmF0aW9uLnRydWUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgY2FsbEZ1bmN0aW9uT24gaXMgY29uc2lkZXJlZCBhIHVzZXIgaW50ZXJhY3Rpb24g
d2hlbiBlbXVsYXRlVXNlckdlc3R1cmUgaXMgdHJ1ZS4iLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IHRlc3RFbGVtZW50ID0gYXdhaXQgUnVudGltZUFnZW50LmV2YWx1
YXRlLmludm9rZSh7ZXhwcmVzc2lvbjogYGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iilg
fSk7CisgICAgICAgICAgICBhd2FpdCBSdW50aW1lQWdlbnQuY2FsbEZ1bmN0aW9uT24uaW52b2tl
KHtmdW5jdGlvbkRlY2xhcmF0aW9uOiBgZnVuY3Rpb24oKSB7IHRoaXMuY2xpY2soKTsgfWAsIGVt
dWxhdGVVc2VyR2VzdHVyZTogdHJ1ZSwgb2JqZWN0SWQ6IHRlc3RFbGVtZW50LnJlc3VsdC5vYmpl
Y3RJZH0pOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibG9hZCgpIj4K
KyAgICA8cD5UZXN0cyBmb3IgUnVudGltZS5jYWxsRnVuY3Rpb25PbiBlbXVsYXRlVXNlckdlc3R1
cmUgb3B0aW9uLjwvcD4KKyAgICA8YSBpZD0idGVzdCI+PC9hPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZXZhbHVhdGUtZW11bGF0
ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZXZhbHVhdGUtZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1Ry
YW5zaWVudEFjdGl2YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZGFkNTk1ZWM1ZmRk
NzMzMWQ1YjAwZWY1NGQzYjEwMzg3ZjM5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcnVudGltZS9ldmFsdWF0ZS1lbXVsYXRlVXNlckdlc3R1cmUtaGFzVHJhbnNp
ZW50QWN0aXZhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBmb3IgUnVu
dGltZSBlbXVsYXRlVXNlckdlc3R1cmUgb3B0aW9uLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogUnVudGltZS5ldmFsdWF0ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFJ1bnRpbWUuZXZhbHVh
dGUuZW11bGF0ZVVzZXJHZXN0dXJlLmhhc1RyYW5zaWVudEFjdGl2YXRpb24uZmFsc2UKK05vIHRy
YW5zaWVudCBhY3RpdmF0aW9uCistLSBSdW5uaW5nIHRlc3QgY2FzZTogUnVudGltZS5ldmFsdWF0
ZS5lbXVsYXRlVXNlckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi50cnVlCitIYXMgdHJh
bnNpZW50IGFjdGl2YXRpb24KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1
bnRpbWUvZXZhbHVhdGUtZW11bGF0ZVVzZXJHZXN0dXJlLWhhc1RyYW5zaWVudEFjdGl2YXRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9ydW50aW1lL2V2YWx1YXRlLWVtdWxhdGVVc2Vy
R2VzdHVyZS1oYXNUcmFuc2llbnRBY3RpdmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E3Yzg5YmZk
NzNiMTA3NzkxMjA2MDIxMDRiNmM3MzgxOThmMzliOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9ydW50aW1lL2V2YWx1YXRlLWVtdWxhdGVVc2VyR2VzdHVyZS1oYXNU
cmFuc2llbnRBY3RpdmF0aW9uLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5j
dGlvbiBsb2FkKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCAoZXZlbnQpID0+IHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBUZXN0UGFnZS5hZGRSZXN1bHQod2luZG93LmludGVybmFscy5o
YXNUcmFuc2llbnRBY3RpdmF0aW9uKCkgPyAiSGFzIHRyYW5zaWVudCBhY3RpdmF0aW9uIiA6ICJO
byB0cmFuc2llbnQgYWN0aXZhdGlvbiIpOworICAgIH0pOworCisgICAgcnVuVGVzdCgpOworfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUFzeW5jU3VpdGUoIlJ1bnRpbWUuZXZhbHVhdGUiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIlJ1bnRpbWUuZXZhbHVhdGUuZW11bGF0ZVVzZXJHZXN0dXJlLmhh
c1RyYW5zaWVudEFjdGl2YXRpb24uZmFsc2UiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNr
IHRoYXQgdGhlIGV2YWx1YXRpb24gaXMgbm90IGNvbnNpZGVyZWQgYSB1c2VyIGludGVyYWN0aW9u
IHdoZW4gZW11bGF0ZVVzZXJHZXN0dXJlIGlzIGZhbHNlLiIsCisgICAgICAgIGFzeW5jIHRlc3Qo
KSB7CisgICAgICAgICAgICBhd2FpdCBSdW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHBy
ZXNzaW9uOiBgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKS5jbGljaygpYCwgZW11bGF0
ZVVzZXJHZXN0dXJlOiBmYWxzZX0pOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUnVudGltZS5ldmFsdWF0ZS5lbXVsYXRlVXNl
ckdlc3R1cmUuaGFzVHJhbnNpZW50QWN0aXZhdGlvbi50cnVlIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJDaGVjayB0aGF0IHRoZSBldmFsdWF0aW9uIGlzIGNvbnNpZGVyZWQgYSB1c2VyIGludGVy
YWN0aW9uIHdoZW4gZW11bGF0ZVVzZXJHZXN0dXJlIGlzIHRydWUuIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGF3YWl0IFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uo
e2V4cHJlc3Npb246IGBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLmNsaWNrKClgLCBl
bXVsYXRlVXNlckdlc3R1cmU6IHRydWV9KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1
aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9ImxvYWQoKSI+CisgICAgPHA+VGVzdHMgZm9yIFJ1bnRpbWUgZW11bGF0ZVVzZXJH
ZXN0dXJlIG9wdGlvbi48L3A+CisgICAgPGEgaWQ9InRlc3QiPjwvYT4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>