<?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>126923</bug_id>
          
          <creation_ts>2014-01-13 11:38:52 -0800</creation_ts>
          <short_desc>Web Inspector: support handling mouse events on the inspector page overlay</short_desc>
          <delta_ts>2016-12-13 15:37:07 -0800</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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Blaze Burg">bburg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achicu</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>madonnk</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>967429</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-13 11:38:52 -0800</bug_when>
    <thetext>This will allow interaction with the overlay, such as showing interactive highlights of shapes, regions, rectangle selection, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967459</commentid>
    <comment_count>1</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-13 12:56:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/15806447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065157</commentid>
    <comment_count>2</comment_count>
      <attachid>245608</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-28 21:44:14 -0800</bug_when>
    <thetext>Created attachment 245608
[WIP]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065493</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-29 22:13:10 -0800</bug_when>
    <thetext>WIP notes:

Current idea is to add a WKWebView for the overlay page rather than using a PageOverlay. Specific highlight methods can be moved over to this overlay as part of the patch or in a follow-up.

As for page lifetime, the patch pairs together the setup and teardown of the overlay page and the inspector page. The overlay page is not used unless the inspector is active. (This may be split into two messages if necessary to make IPC work out.)

The point of making this overlay a real WebPage is so that we can add buttons, tooltips, direct manipulation, and other interactive features without further shoehorning PageOverlay to do things it wasn&apos;t designed for.

To me, it doesn&apos;t make much sense to put iOS (i.e., CALayer based) paint highlighting through this overlay page because 1) paint flashing requires low latency, which in practice is hard given the message-passing nature of Inspector and Overlay pages; 2) paint flashes aren&apos;t interactive, so they get no benefit from being rendered to an interactive overlay page.

As for other ports, I assume they can easily create an overlay page and composite it over the inspected page when the inspector opens. That&apos;s what a WKWebView approach does for mac/ios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065997</commentid>
    <comment_count>4</comment_count>
      <attachid>245844</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-01 14:28:52 -0800</bug_when>
    <thetext>Created attachment 245844
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066249</commentid>
    <comment_count>5</comment_count>
      <attachid>245844</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-02-02 14:55:54 -0800</bug_when>
    <thetext>Comment on attachment 245844
WIP

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

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.h:138
&gt; +    static bool isOverlayPage(WebPageProxy&amp;);

isInspectorOverlayPage(WebPageProxy&amp;)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067093</commentid>
    <comment_count>6</comment_count>
      <attachid>246101</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-05 07:46:03 -0800</bug_when>
    <thetext>Created attachment 246101
WIP

Latest patch can show and hide the overlay WKWebView. Does not forward unhandled user inputs yet. Does not recieve highlight commands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067094</commentid>
    <comment_count>7</comment_count>
      <attachid>246101</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-02-05 08:18:26 -0800</bug_when>
    <thetext>Comment on attachment 246101
WIP

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.h:112
&gt; +    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::OverlayChannel*, Inspector::InspectorBackendDispatcher*) override;

We should rename Inspector::InspectorFrontendChannel to something like Inspector::FrontendChannel or Inspector::UserInterfaceChannel.

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.cpp:502
&gt; +void WebInspectorProxy::eagerlyCreateOverlayPage()

Not sure we need to eagerly do this for the overlay. I did it for the fronted because it shaves ~500ms of load time opening the Inspector. Though if there is a noticeable delay in the overlay, maybe we should.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:947
&gt; +    [[NSNotificationCenter defaultCenter] addObserver:m_inspectorProxyObjCAdapter.get() selector:@selector(inspectedViewFrameDidChange:) name:NSViewFrameDidChangeNotification object:inspectedView];

We should consider using constraints here (and for the Inspector). They will allow us to auto magically follow the frame. I plan to look at this soon (for other reasons) if you don&apos;t want to try it. It might require switching other views to auto layout and sprinkling translatesAutoresizingMaskIntoConstraints = NO.

Roughly what you should need:

    [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeTop multiplier:1 constant:0].active = YES;
    [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeBottom multiplier:1 constant:0].active = YES;
    [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeLeft multiplier:1 constant:0].active = YES;
    [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeRight multiplier:1 constant:0].active = YES;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067100</commentid>
    <comment_count>8</comment_count>
      <attachid>246101</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-05 09:05:33 -0800</bug_when>
    <thetext>Comment on attachment 246101
WIP

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

&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.h:112
&gt;&gt; +    virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::OverlayChannel*, Inspector::InspectorBackendDispatcher*) override;
&gt; 
&gt; We should rename Inspector::InspectorFrontendChannel to something like Inspector::FrontendChannel or Inspector::UserInterfaceChannel.

In general, this seems fine for things defined in Inspector namespace within JSC. For WebCore things, it might lead to some awkward filename clashes.

&gt;&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:947
&gt;&gt; +    [[NSNotificationCenter defaultCenter] addObserver:m_inspectorProxyObjCAdapter.get() selector:@selector(inspectedViewFrameDidChange:) name:NSViewFrameDidChangeNotification object:inspectedView];
&gt; 
&gt; We should consider using constraints here (and for the Inspector). They will allow us to auto magically follow the frame. I plan to look at this soon (for other reasons) if you don&apos;t want to try it. It might require switching other views to auto layout and sprinkling translatesAutoresizingMaskIntoConstraints = NO.
&gt; 
&gt; Roughly what you should need:
&gt; 
&gt;     [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeTop multiplier:1 constant:0].active = YES;
&gt;     [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeBottom multiplier:1 constant:0].active = YES;
&gt;     [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeLeft multiplier:1 constant:0].active = YES;
&gt;     [NSLayoutConstraint constraintWithItem:overlayView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:inspectedView attribute:NSLayoutAttributeRight multiplier:1 constant:0].active = YES;

Sounds fine to me (it might allow us to remove the ObjC proxy), though I probably won&apos;t have time to attempt that myself. The frame sizing code in this file is kinda scary.

&gt; Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm:950
&gt; +    // FIXME: when the overlay is ready to handle user input, make first responder here.

Am still investigating how Cocoa or WebKit decides which WebPageProxy to send user input to. Without first responder here, the overlay still gets most events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068345</commentid>
    <comment_count>9</comment_count>
      <attachid>246388</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-11 06:52:19 -0800</bug_when>
    <thetext>Created attachment 246388
Patch

Latest patch implements overlay attach and detach. Does not yet delegate events to inspected page when not inactive.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245608</attachid>
            <date>2015-01-28 21:44:14 -0800</date>
            <delta_ts>2015-02-01 14:28:50 -0800</delta_ts>
            <desc>[WIP]</desc>
            <filename>bug-126923-20150128214419.patch</filename>
            <type>text/plain</type>
            <size>137757</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MzY3MzRmMmFmZjJhNDg4ZDllZGQ2NzQxYWYwNWNiYTdhNjEwYjc1Li5mMDQ3ZTVjYTM1ZDcwMDcx
YWUxYzFjYzBmMmM3MjVkMjQ5ZmI0ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNS0wMS0yOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBl
dmVudHMgb24gdGhlIGluc3BlY3RvciBwYWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvT3ZlcmxheUNoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Ok92ZXJsYXlD
aGFubmVsOjp+T3ZlcmxheUNoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50Lmg6CisKIDIwMTUtMDEtMTkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgogCiAgICAgICAgIFdlYiBSZXBsYXk6IGNvZGUgZ2VuZXJhdG9yIHNob3VsZCB0YWtl
IHN1cHBsZW1lbnRhbCBzcGVjaWZpY2F0aW9ucyBhbmQgYWxsb3cgY3Jvc3MtZnJhbWV3b3JrIHJl
ZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMTI4NWJlYzE4ZDFjYjlmZWNmYTViNTExMTcyZWFiNmQx
MDRkYTdhLi5iNjUzNWFiYjM1ZjgzOTkwNjBiNzNmOTEwNjQzNjljZDkyNzNlOGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTUtMDEtMjggIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNz
Lndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgaGFuZGxp
bmcgbW91c2UgZXZlbnRzIG9uIHRoZSBpbnNwZWN0b3IgcGFnZSBvdmVybGF5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY5MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5Q2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheUNsaWVu
dDo6fkluc3BlY3Rvck92ZXJsYXlDbGllbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dv
cmtlclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yT3Zlcmxh
eSk6CisKIDIwMTUtMDEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGEgd2F5IHRvIGNvbGxlY3Qgc2Nyb2xsaW5nIHBlcmZvcm1hbmNlIGRh
dGEgKHZpZXdwb3J0IHRpbGUgY292ZXJhZ2UpIHdpdGggVUktc2lkZSBjb21wb3NpdGluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDk0NThkMmQ5YjdhYWQ3ZmU5ZmMzOTljNTk1YmQzNjRi
ODBmZmUyNi4uYmRmYzA0ZTRjMDVkZDEyYjBmMTFiMDcyYjlhM2QwMmYxNGIxODQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTUtMDEtMjggIEJyaWFuIEou
IEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHN1cHBvcnQgaGFuZGxpbmcgbW91c2UgZXZlbnRzIG9uIHRoZSBpbnNwZWN0b3IgcGFnZSBvdmVy
bGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY5
MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQmFzZS9PdmVybGF5LmpzOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvck92
ZXJsYXkubG9hZGVkKToKKyAgICAgICAgKGRyYXdQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZSk6Cisg
ICAgICAgIChfZHJhd1JlZ2lvbk51bWJlcik6CisgICAgICAgIChxdWFkVG9QYXRoKToKKyAgICAg
ICAgKGRyYXdPdXRsaW5lZFF1YWQpOgorICAgICAgICAocGF0aENvbW1hbmQpOgorICAgICAgICAo
ZHJhd1BhdGgpOgorICAgICAgICAoZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKToKKyAgICAgICAg
KHF1YWRFcXVhbHMpOgorICAgICAgICAoZHJhd0d1dHRlcik6CisgICAgICAgICh1cGRhdGVQYWlu
dFJlY3RzKToKKyAgICAgICAgKHJlc2V0KToKKyAgICAgICAgKERPTUJ1aWxkZXIpOgorICAgICAg
ICAoRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kVGV4dE5vZGUpOgorICAgICAgICAoRE9NQnVp
bGRlci5wcm90b3R5cGUuYXBwZW5kU3Bhbik6CisgICAgICAgIChET01CdWlsZGVyLnByb3RvdHlw
ZS5hcHBlbmRTcGFuSWZOb3ROdWxsKToKKyAgICAgICAgKERPTUJ1aWxkZXIucHJvdG90eXBlLmFw
cGVuZFByb3BlcnR5KToKKyAgICAgICAgKERPTUJ1aWxkZXIucHJvdG90eXBlLmFwcGVuZFByb3Bl
cnR5SWZOb3ROdWxsKToKKyAgICAgICAgKF90cnVuY2F0ZVN0cmluZyk6CisgICAgICAgIChfY3Jl
YXRlRWxlbWVudFRpdGxlKToKKyAgICAgICAgKF9kcmF3RWxlbWVudFRpdGxlKToKKyAgICAgICAg
KF9xdWFkTWlkUG9pbnQpOgorICAgICAgICAoX2RyYXdSZWdpb25MaW5rKToKKyAgICAgICAgKF9k
cmF3UmVnaW9uc0hpZ2hsaWdodCk6CisgICAgICAgIChfZHJhd1NoYXBlSGlnaGxpZ2h0KToKKyAg
ICAgICAgKF9kcmF3RnJhZ21lbnRIaWdobGlnaHQpOgorICAgICAgICAoc2hvd1BhZ2VJbmRpY2F0
aW9uKToKKyAgICAgICAgKGhpZGVQYWdlSW5kaWNhdGlvbik6CisgICAgICAgIChkcmF3Tm9kZUhp
Z2hsaWdodCk6CisgICAgICAgIChkcmF3UXVhZEhpZ2hsaWdodCk6CisgICAgICAgIChzZXRQbGF0
Zm9ybSk6CisgICAgICAgIChkaXNwYXRjaCk6CisgICAgICAgIChsb2cpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvT3ZlcmxheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL092ZXJsYXkuY3NzOiBBZGRlZC4KKyAgICAgICAgKGJvZHkpOgorICAgICAgICAoYm9k
eS5wbGF0Zm9ybS1tYWMpOgorICAgICAgICAoYm9keS5wbGF0Zm9ybS13aW5kb3dzKToKKyAgICAg
ICAgKGJvZHkucGxhdGZvcm0tbGludXgpOgorICAgICAgICAoLmZpbGwpOgorICAgICAgICAoLmlu
ZGljYXRlKToKKyAgICAgICAgKC5kaW1tZWQpOgorICAgICAgICAoLm1lc3NhZ2UtbGluZSk6Cisg
ICAgICAgICgubWVzc2FnZS1ib3gpOgorICAgICAgICAoLnB4KToKKyAgICAgICAgKC5lbGVtZW50
LXRpdGxlLWNvbnRhaW5lcik6CisgICAgICAgICguZWxlbWVudC10aXRsZSk6CisgICAgICAgICgu
dGFnLW5hbWUpOgorICAgICAgICAoLm5vZGUtaWQpOgorICAgICAgICAoLmNsYXNzLW5hbWUpOgor
ICAgICAgICAoLmNzcy1wcm9wZXJ0eSk6CisgICAgICAgICgjcmlnaHQtZ3V0dGVyKToKKyAgICAg
ICAgKCNib3R0b20tZ3V0dGVyKToKKwogMjAxNS0wMS0xOSAgU2FhbSBCYXJhdGkgIDxzYWFtYmFy
YXRpMUBnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIGZyb250
IGVuZCBmb3IgSlNDJ3MgQ29udHJvbCBGbG93IFByb2ZpbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ZTdkNTMwZmM4YTA3ZDc3ZjcwYTc5NjU1Nzc1NWI0ZmJiMmEwMWE0Ny4uN2JkN2I3Yzc1MzI3MTRk
OGE5NGZhNDkzOGU4YWY5MWE2ZWZhODZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE1LTAxLTI4ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBv
biB0aGUgaW5zcGVjdG9yIHBhZ2Ugb3ZlcmxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JPdmVybGF5KToKKwogMjAxNS0w
MS0xOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtTVkcgLT4gT1RGIENvbnZlcnRlcl0gRmxpcCB0aGUgc3dpdGNoIG9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MDgxMmIzMGE4ZDdkNDY3MTQ2OWNiZGJjODg5YTM4NGNmNGE0N2Q5Yy4uYWQzYjIzZDMwYmUwYmNm
MTQwNWU4ZDU2OGEwM2E4MThjMzAwODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisy
MDE1LTAxLTI4ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBvbiB0aGUg
aW5zcGVjdG9yIHBhZ2Ugb3ZlcmxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI2OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpkaWRSZWxhdW5jaEluc3BlY3RvclBhZ2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
aXNJbnNwZWN0b3JPdmVybGF5UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25JbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbk92ZXJsYXlQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVPdmVybGF5UGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZU92ZXJsYXlQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZU92ZXJsYXlQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6Omluc3BlY3Rvck92ZXJsYXlVUkwpOgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3Rvck92ZXJsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6
Y2xvc2VGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y3JlYXRlT3Zl
cmxheVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9P
dmVybGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvck92ZXJsYXkuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6V2ViSW5zcGVjdG9yT3ZlcmxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmVzdGFibGlzaENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5Ojp3aW5kb3dPYmplY3RDbGVh
cmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZnJvbnRlbmRMb2Fk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5Ojptb3ZlV2luZG93Qnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpicmluZ1RvRnJvbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpjbG9zZVdpbmRvdyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnJlcXVlc3RTZXREb2NrU2lkZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNldERvY2tTaWRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWln
aHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpjaGFuZ2VBdHRhY2hl
ZFdpbmRvd1dpZHRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2V0
VG9vbGJhckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNhdmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjphcHBlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd0NvbnNvbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c3RhcnRQYWdlUHJvZmlsaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c3RvcFBhZ2VQcm9maWxp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpkaWRTYXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZGlkQXBwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUNvbW1hbmRP
bkxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUV4
cHJlc3Npb25PbkxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5Ojpl
dmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvck92ZXJsYXkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3Rvck92ZXJsYXk6OnBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JPdmVybGF5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4uCisKIDIwMTUtMDEtMTkgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgd2F5IHRv
IGNvbGxlY3Qgc2Nyb2xsaW5nIHBlcmZvcm1hbmNlIGRhdGEgKHZpZXdwb3J0IHRpbGUgY292ZXJh
Z2UpIHdpdGggVUktc2lkZSBjb21wb3NpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlNzlkN2MxZTVlODVkMjEzMDYxMjlmYTk4ZTZiZDk5MzNmNGUxMjRlLi5kMzA1MzBjM2M0
NTdjNGE1MzZlNDA1MWFiNDRkM2YwNjkyNzEzMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTU4MSw2ICsxNTgxLDcgQEAKIAkJQzQ3MDNDRDUxOTI4NDRDQzAwMTNGQkVBIC8q
IGdlbmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNDcwM0NDQTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDNDcwM0NENjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQ0IxOTI4NDRDQzAwMTNGQkVB
IC8qIGdlbmVyYXRvci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDNDcwM0NENzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5IGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQ0MxOTI4NDRDQzAw
MTNGQkVBIC8qIG1vZGVscy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlDNEIyQkE0NDFBNkYwQTJBMDA5MDEyRUUgLyogT3ZlcmxheUNoYW5uZWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0QjJCQTQz
MUE2RjBBMkEwMDkwMTJFRSAvKiBPdmVybGF5Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0RjRCNkYzMUEwNUM5NDQwMDVDQUI3NiAv
KiBjcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM0RjRCNkNGMUEwNUM3NkYwMDVDQUI3NiAvKiBjcHBfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDNEY0QjZGNDFBMDVDOTQ0MDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvci5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0RjRCNkQwMUEw
NUM3NkYwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0RjRCNkY1MUEwNUM5ODQwMDVDQUI3NiAvKiBn
ZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGNEI2RDcxQTA1Qzc2RjAwNUNB
Qjc2IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyNjQsNiAr
MzI2NSw3IEBACiAJCUM0NzAzQ0NBMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxh
dGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdG9yX3Rl
bXBsYXRlcy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzQ3MDNDQ0IxOTI4NDRD
QzAwMTNGQkVBIC8qIGdlbmVyYXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
cGF0aCA9IGdlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzQ3MDND
Q0MxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IG1vZGVscy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRC
MkJBNDMxQTZGMEEyQTAwOTAxMkVFIC8qIE92ZXJsYXlDaGFubmVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJsYXlDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM0RjRCNkNGMUEwNUM3NkYwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGNwcF9nZW5lcmF0
b3JfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNEY0QjZEMDFB
MDVDNzZGMDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnB5dGhvbjsgcGF0aCA9IGNwcF9nZW5lcmF0b3IucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM0RjRCNkQxMUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9k
aXNwYXRjaGVyX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9
IGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTI1Niw2ICs1MjU4LDcgQEAKIAkJCQlBNTAzRkExNjE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8sCiAJCQkJQTUwM0ZBMTcxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZS5oICovLAorCQkJCUM0QjJCQTQzMUE2RjBBMkEwMDkwMTJFRSAvKiBPdmVybGF5Q2hhbm5l
bC5oICovLAogCQkJCUE1RkQwMDY1MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMu
Y3BwICovLAogCQkJCUE1RkQwMDY2MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMu
aCAqLywKIAkJCQlBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovLApAQCAtNTc3OCw2ICs1NzgxLDcgQEAKIAkJCQkxNDJFMzEzNDEzNEZGMEE2MDBBRkFEQjUg
LyogSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQg
LyogSGFuZGxlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUMyODMxOTAyMTZGRTUzM0UwMDE1
N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0QjJCQTQ0
MUE2RjBBMkEwMDkwMTJFRSAvKiBPdmVybGF5Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJENERFQzE5ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDJFMzEzNjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50QmFzZS5oCmluZGV4IDYzOWQwNDhiMjdhZWY5N2VkM2ZjMmQyZTA4OGY1ZWI2
MzMwOWE1YTYuLjU3ZTczZTNjN2EzZTcxMTg4ZWE2NmMyMTUwNGU0YzdiYTYwOGZjYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJh
c2UuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7
CitjbGFzcyBPdmVybGF5Q2hhbm5lbDsKIAogZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uIHsKICAgICBJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQsCkBAIC00NSw3ICs0Niw3IEBA
IHB1YmxpYzoKIAogICAgIFN0cmluZyBkb21haW5OYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKaW5kZXgg
ZTQzOGNmMTZmMGM0MGU2NTJjZWU2OGU0MWFmMjYyODA0MTIwN2UxMS4uYzhjNzc5MDNmYzRjYTVk
YjIzY2NlMWE4MmVkMjBiMzJhN2Q1ZDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCkBAIC01MSwx
MCArNTEsMTAgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2UKIH0KICNlbmRpZgogCi12b2lkIElu
c3BlY3RvckFnZW50UmVnaXN0cnk6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqIG92ZXJsYXlDaGFubmVsLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9hZ2Vu
dHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIGJhY2tl
bmREaXNwYXRjaGVyKTsKKyAgICAgICAgbV9hZ2VudHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChmcm9udGVuZENoYW5uZWwsIG92ZXJsYXlDaGFubmVsLCBiYWNrZW5kRGlzcGF0Y2hl
cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oCmluZGV4IDhiNzc1N2Y4Y2E1NWI5MjMzZjVlZGNjYzhjM2JiMjlmN2RmNjZjZWUuLmE5Y2E1
NzQ1MzBjZTIxNDAyZDU4MWYxZjI4MzZhMDdkMGQwNmQxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCkBA
IC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQWdl
bnRCYXNlOwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CitjbGFzcyBPdmVybGF5Q2hhbm5lbDsKIGVudW0gY2xhc3MgSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbjsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeSB7CkBAIC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KTsKIAotICAgIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbik7CiAg
ICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCBkZGE1NGIxMjgxMmM0YzZmMjQ3MDE5ZGM5NDAyNWI2YjNhOWRlOTM1
Li41ODA1MDExMWM3YjE2YTBlY2Q2ZWYwOGM0ZDgyMWJkMTZjM2IzZWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwKICAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IGZyb250
ZW5kQ2hhbm5lbDsKICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2Vu
dHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbnVsbHB0ciwgbV9pbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhtX2Fn
ZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3QKICAgICBTdHJpbmcgZG9tYWluTmFtZSA9IGFnZW50LT5kb21haW5OYW1lKCk7CiAK
ICAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCi0gICAgICAgIGFnZW50LT5kaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwsIG1faW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgICAgICBhZ2VudC0+ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBudWxscHRyLCBt
X2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVu
ZEV4dHJhQWdlbnQoV1RGOjptb3ZlKGFnZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvT3ZlcmxheUNoYW5uZWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvT3ZlcmxheUNoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGExOTBlNjI0MWFj
MDcwN2MzN2Y4ZjdjMGY2NGVlYjhhOGFjOTI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9PdmVybGF5Q2hhbm5lbC5oCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBPdmVybGF5Q2hhbm5lbF9oCisjZGVmaW5l
IE92ZXJsYXlDaGFubmVsX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgT3ZlcmxheUNoYW5uZWwgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfk92ZXJsYXlDaGFubmVsKCkgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRN
ZXNzYWdlVG9PdmVybGF5KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyAhZGVmaW5lZChPdmVybGF5Q2hhbm5lbF9o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDRmNjk1YTc1YmEwMWJiNDEzNDIzZDE1NDFhMTQwOGFi
ZjYzZTdlNWEuLjhlYTgwNzhkMGY0NTRhNjU0MmQ5ZWZmMDE5NGQzNGFkZDc1YjU5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgSW5zcGVjdG9yQWdlbnQ6On5JbnNwZWN0
b3JBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXggNzMwZGNlNjMwYTc4ZTg4MWExNzRiMjA0
M2E0NGJjZGYyYjk4ZWYwYy4uNmYzZmFhMmZlNmExOTRmZDZhNjY0NGIzYWM2MDQ1MmVlOWJkNTUy
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JBZ2VudChJbnNwZWN0b3JFbnZpcm9ubWVudCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckFn
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24p
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggNDljN2ZjMWE2ZDcwMjU4
MDVkZWE5MjMzNDYwYzU1MzU4N2UwM2VjYi4uNzg1YzU4ZDVhYzgxOTYyNjdkOWY3ZWY0N2IyZGRk
M2NlMWVjNWQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBAIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNvbGVBZ2VudCgpCiB7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6
Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oCmluZGV4IDc4MzNiZTI3YTYzNjY0YjU0NWRhNzcxZTgyYWNhNzJiZDYwN2U4YjQuLmFhMTk0
ZTJkN2RlNGNhN2U1OWUzZGJkMzNiM2RhOGU4NWI1NGM3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xl
QWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29u
c29sZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDNmZGMwZWM5NjJlODk1
NDFmYzUxMmRiYTZlZjRjNWM2NmM2NGNiZWMuLjg3YTBkMDYzZTQyYmRmOWJlZDYzODY4ZmRlZTk2
MTM0ZjMzNTA4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC03MCw3
ICs3MCw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCBh
Yjk2MTk4OWVjZTc1YmZkYTdhMjhhOWRlZTg3Y2NlODg1M2NjNDhiLi5jMTc1ZjcxNDM2NzJkY2M5
YjNjYjBlYjRhMGVkNzAzYTQwYzMxYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAppbmRleCA3NDA2MWM1
OTcxOWEyMzU5MGIzNGFlNzU5OGY3N2E0NTEyZTBmZTRhLi5mOWE0OTQ4Y2I0ZDgyMzhjOTlkMTdj
YWJiMmUzZjRkODRmZjBhYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluCiB7CiB9CiAK
LXZvaWQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSdW50aW1lRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaAppbmRl
eCA4ZmI4MTFlMjI2Mjg5YzczYzNjZmEwYzcwN2EwYzRlNjAzMDdkNjM5Li44OTM1ZWJhZWE2N2U2
NDQwZWJkMDExNzg1YTYwZjBlYTNjYzlkNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKICAg
ICBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIEpTQzo6Vk0mIGdsb2JhbFZNKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRl
OTIyZGMyNGMwZTc2N2I2MTY1MDk1OTZhM2EwZDk4MGU4NzM4YzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheUNoYW5uZWwuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfT3Zlcmxh
eUNoYW5uZWxfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9PdmVybGF5Q2hhbm5lbF9oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvT3ZlcmxheUNoYW5uZWwuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU0ODVjYTZm
ZjczNTBlNWUxOTU5OGMzYTY2NzNkMzliZmIwYjFlNDcuLjFkODQ3NWI2NTIzMGYyNjEyZDhjNGJi
ZGFhMGNjZDViMGNmMTg5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MzgsNiArNTUzOCw3IEBACiAJCUMzQ0YxN0E2MTVC
MDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTIxNUIwMDYzRjAwMjc2
RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi87IH07CiAJCUMzQ0YxN0E3MTVC
MDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQz
OSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNDAwRDEwOTE4RjFDOEY2MDA5MEQ4NjMgLyogRXZl
bnRMb29wSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzQwMEQxMDgxOEYxQzhGNjAwOTBEODYzIC8qIEV2ZW50TG9vcElucHV0LmNwcCAqLzsg
fTsKKwkJQzRCMkJBNDkxQTZGNTI0RjAwOTAxMkVFIC8qIEluc3BlY3Rvck92ZXJsYXlDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0QjJCQTQ4
MUE2RjUyNEYwMDkwMTJFRSAvKiBJbnNwZWN0b3JPdmVybGF5Q2xpZW50LmggKi87IH07CiAJCUM0
Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5ODE4MzgzNzY2MDA3
RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuY3BwICovOyB9OwogCQlDNENENjI5QjE4MzgzNzY2
MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUM1MEQwRTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MTBGRjQy
NzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjk2NCw2ICsxMjk2NSw3IEBACiAJCUMzQ0Yx
N0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAvKiBN
YXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzQwMEQxMDgxOEYxQzhGNjAwOTBEODYzIC8qIEV2ZW50TG9vcElucHV0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TG9vcElucHV0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRCMkJBNDgxQTZGNTI0RjAwOTAxMkVFIC8qIElu
c3BlY3Rvck92ZXJsYXlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJh
bWVTbmFwc2hvdHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVT
bmFwc2hvdHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODEwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTUyMzYsNiArMTUyMzgsNyBAQAogCQkJCTUwNEFBQ0NDMTgzNDQ1NTkwMEUzRDlCQyAv
KiBJbnNwZWN0b3JOb2RlRmluZGVyLmggKi8sCiAJCQkJN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1
IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovLAogCQkJCTdDNTIyRDRBMTVCNDc4QjIwMDlCN0M5
NSAvKiBJbnNwZWN0b3JPdmVybGF5LmggKi8sCisJCQkJQzRCMkJBNDgxQTZGNTI0RjAwOTAxMkVF
IC8qIEluc3BlY3Rvck92ZXJsYXlDbGllbnQuaCAqLywKIAkJCQlBNTE4MjI1NDE3RTJBMEQ0MDBB
OUJBMUQgLyogSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY3NzICovLAogCQkJCTdBNzI1NkI5MTVFQjlG
NUIwMDczMjNBNyAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5odG1sICovLAogCQkJCUE1MTgyMjU1
MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5qcyAqLywKQEAgLTI0ODc5
LDYgKzI0ODgyLDcgQEAKIAkJCQkxQUUyQUIyMjBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGFi
ZWxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUIyNDBBMUNFNjNCMDBCNDJCMjUg
LyogSlNIVE1MTGVnZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFCMjYwQTFD
RTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzRC
MkJBNDkxQTZGNTI0RjAwOTAxMkVFIC8qIEluc3BlY3Rvck92ZXJsYXlDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MEU3QjBEMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFCMjgwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRN
TE1hcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDkxQjc5MEMwMjNFRkQwMDlENjMx
NiAvKiBKU0hUTUxNYXJxdWVlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwCmluZGV4IGNjYWY2MDg2YTIwZmRhZmVlMGQyN2MzZGYyMmQ5MzJkYmZjYTUxN2UuLjZj
NTViMGM4Y2RkODVkODNkOGE0MDU2Y2VhNDc4ZjQ1YTg5NzVjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VuCiB7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggYzcxMjlkNmYzNjcxMGI3NDhjY2MwOTYxZmE1
NzgxYzRiYWMzZGE3MC4uZGYzYWYyNjhhYjkzNzVmOWI2ZmRlNTc3Y2Y0NTNkYjQ1MjhkMmZmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQo
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGY0MjFi
NDZjZjhhY2Q5ODAzNTY3Y2YxZjFiMzUwZGE5MzZiODA2ZTUuLmY1OWM0YjE5ZmMyMjBiNGIxOGIw
ZGQyMDgyNmJjODE5ODllY2M5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIEluc3BlY3RvckNTU0FnZW50
Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JD
U1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggZDNhMDFm
YzA1MmMwN2Y4NDBkYTkzNDVhNWY5ODI3YjdlNWE0YzQ5OC4uNTJhZjk1MGFhMGIwNDUyNmQ4MmIy
MDkxMzg5ODM0NWVjMjVlYjY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIENT
U1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2Fy
ZEFnZW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCmlu
ZGV4IGVlN2Q4ZmFjNDY1ZDFlNWNlZGUyMGUyYzE4ZWRlNWQ1ZjgxMDYxMWUuLmMyMDI0MjcxNWQz
OTQxNTE1ODQ0MDY4NGY4Y2UxZmUwOTdkZDkwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKK2NsYXNzIE92ZXJsYXlDaGFubmVsOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZsb2F0UmVjdDsKQEAgLTQ2LDggKzUwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgPSAwOwogCiAgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikg
PSAwOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCogb3Blbkluc3BlY3Rv
ck92ZXJsYXkoKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSA9IDA7Cisg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShGcmFtZSopIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAyMDkxZjFjNzZlOTZkZjExY2Nl
OTQ2ZGUxZGY0ZTgzYTY0YzQ4OGEzLi45OGY0ZTJiMTdkMTRiMTE2ZWQzNjViZDFkZTdhZGI5MWE3
Zjg4ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0yNDMsMTAgKzI0MywxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbgog
CiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBpc0F1dG9tYXRpY0luc3BlY3Rpb247CiAK
KyAgICAKICAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsK
ICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOworICAgIG1fb3ZlcmxheUNoYW5uZWwgPSBt
X2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3Rvck92ZXJsYXkoKTsKIAotICAgIG1fYWdlbnRz
LmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1faW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1fb3ZlcmxheUNoYW5uZWwsIG1faW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7CiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKQEAgLTI2Nyw2
ICsyNjksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKICAgICBtX2luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7CiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jbGVhcigpOwogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsK
KyAgICBtX292ZXJsYXlDaGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNw
ZWN0aW9uID0gZmFsc2U7CiAKQEAgLTI4OCwxMyArMjkxLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2hvdygpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKKyAgICBpZiAobV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpIHsKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJvbnRl
bmRUb0Zyb250KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9y
RnJvbnRlbmQodGhpcykpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
ID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsLCBp
c0F1dG9tYXRpY0luc3BlY3Rpb24pOwotICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBt
X2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKSB7CisgICAgICAg
IGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CisgICAgICAgIGNvbm5lY3RGcm9u
dGVuZChmcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRl
eCAzZDM0YWRmNGM4YmEzMzgyMWZhZGVmNjI0M2VmOWUxZjYyNWEyN2E4Li44OTM0ZDNhMzQ0NjFl
ODI2YWY0Y2JhOTRjYzliYWFmYWE5NDY1NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgSW5zcGVj
dG9yQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIE92ZXJs
YXlDaGFubmVsOwogCiBuYW1lc3BhY2UgUHJvdG9jb2wgewogbmFtZXNwYWNlIE92ZXJsYXlUeXBl
cyB7CkBAIC0xNTYsNiArMTU3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbDsKKyAgICBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiBtX292ZXJsYXlD
aGFubmVsOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAg
ICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRl
eCBkYWEwZGYwNzU0YjdmOWIwMWQyOWU3YzEyZDIyZDA1MDIzODc5ZTdhLi43OTdmNTBmMDg1NzA0
YjE5ZTE5MTIxODY1OWE5ZjFjNWU5ZWI2OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBJbnNwZWN0b3JE
T01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKICAgICBBU1NFUlQoIW1fc2VhcmNoaW5nRm9y
Tm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01Gcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA0
MTJiN2MwZDQ0MTNmYzAzNjY2NzFjMTg4NmVkMjg5NjdhNzkyYzYzLi4xOTcxM2VlZTJlMzI1Njc1
ZjU0MjIxYWJmZjJiMGQ0MGY0ODgyZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJs
YXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgVmVjdG9y
PERvY3VtZW50Kj4gZG9jdW1lbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZGQ4ZjUyMzdiZWY2NDE5
OGNiZmMwYjY1NGY3Mzc4ODEzZTZmYjhkZS4uNDMzNDMxYTJhMDAyY2Y4YzI2Mzc0MDJiZDUxYWUw
YjAwZGNlZDc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgY2xlYXIoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBjNjliM2I4NDUxMjZkYjI2NTdmZjY5ZjJm
MmQ1ZTgyMjJlMDc1MzY0Li41MTljMjQ4NjEwNTFlYzFhZjI5YmY2YmRjMTg5MmFhYTQzNjZhOTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRY
TUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZl
RXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBi
b29sIHN5bmNocm9ub3VzKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwCmluZGV4IDgxMTNjNTQxODJlMjAzYzE4MGNjMGRiNGY4ZWMyNTVlYjVmYWZiNDgu
LmZiZDZhODAzYjE5MDY2ODBkM2Q3Mjk2YzNlMGFiNmJkZTc1N2VlODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzID0gbnVsbHB0cjsKIH0KIAot
dm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6
T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCAzNjFiNjEz
Y2MxZDc1N2Q0NDY2ZGYyODlmN2U5NmZhZWQwYTJhYzVkLi45MTlhZWY2MzBmNmZhYzg5OTU3NmY0
M2I4MTNjYzI5ZDAzNDBiODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAg
IC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggNzNkYWExNmYyOTAxZmFi
YjNmYTZjM2ZlMDNkZTM3YWRjN2E1MjdiMy4uZDBkZGQwMjc4ZTQ3NGUzZWZiYTVkMTc0MDA5YjY2
NjRlZTU4YjU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQobnVsbHB0cik7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNl
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggNDQzZmNkOWIxZDFjNDhiZjUxNWRlNTM3OTA5MTYz
NmIxMDVlNzFlZS4uMjFmZTQ4MmU1Yjc5NjUyMjJkOWMxZTJlNTc3ODBhODU4MTI2NzVkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5o
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRh
YmFzZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggZjc5YzAy
ZTc4N2U2NDk1ZTY1YTU0ODdjOGI4YjBiMWMxZDFlOGQ3Mi4uNDA5YTcwZmZkYmQ1OWNkZDA0MjQ5
MzAzNjEyMzgyMDZjYzMzMWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC01NzUsNyArNTc1LDcgQEAgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpCiB7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCAzYjBlOWZhMTBiNTcxYzM0MGRhYWFjYjk4ZWY0YWM4
YTQ5YzUzOWRhLi40MDY4OGJkZTYyNjg2ZDdiNjdhZTQyMmRhNWIxZjg0MGU5ZmU3YzcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
SW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggNDU1NWRi
MjEzNTNiNmYxNjdhNzgzMTU4ZWU1ZWJmM2U0Y2Y2OWNjNS4uYWI1M2ExNjNkY2E4ZWY3OGU3OWRh
Mzc2YzRiZDI2ZGEwYTkwNjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggMjc0ZTIz
ZWY0Yzg4MDM5YzMzNTZmNDAyZjliYzFkNWMwN2IyYTI1My4uZTU0OGY0Yzc1M2FlYjdjNGM3NjQ3
Y2UyODdjNmIwNDg3MTBlMmRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUNsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYyNDlhNGZmMzZmMWIyNmM1MDQyZmIzOTA2NWQ4OTY3MzkwODE5NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eUNsaWVudC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5p
dmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEluc3BlY3Rvck92ZXJsYXlDbGllbnRfaAorI2RlZmluZSBJbnNwZWN0b3JPdmVybGF5
Q2xpZW50X2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSW5zcGVjdG9yT3ZlcmxheUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+SW5zcGVjdG9yT3ZlcmxheUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG92ZXJs
YXlMb2FkZWQoKSA9IDA7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1l
c3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKaW5kZXggNGJkMzA0MzIwYTczZjRkZDVlZjEyMDdkZDIxZTVmZTVlZGY3
NTNiOC4uYWUyM2JhYTE0YjQzYjgzNzQ4NmRjYTJkZDA1YTA4NTIwN2U0NzZkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMzOSw3
ICszMzksNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLAogewogfQogCi12b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yUGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4
IGJmMjY0YTdkMjhmMzEzM2ZkOWQyMmE2ZGU4MGY2ZDFjYjJiNDM5ZjYuLjJjMjg0NTAzYWIyN2Iz
Y2ZmMzhhZTMzODM4N2E5ZjRkODg0Nzc5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzY3JpcHRzRW5hYmxlZChib29sIGlzRW5hYmxlZCk7CiAKICAgICAvLyBJbnNwZWN0b3Ig
Q29udHJvbGxlciBBUEkKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92
ZXJyaWRlOwogCiAgICAgLy8gQ3Jvc3MtYWdlbnRzIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggMDYxMDVkNTBjY2Y4MmMz
YmViOTNkNGQ1NTRkZmE0NDQ1NzMwYzExZi4uYTQwZDFmODI0OWQ4ZGZlZTVkN2ZmZDE0YmVmMWNj
MmQ3ZGZjZGFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViQ29yZTo6U2Vzc2lvblN0YXRl
IEluc3BlY3RvclJlcGxheUFnZW50OjpzZXNzaW9uU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBt
X3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnNlc3Npb25TdGF0ZSgpOwogfQogCi12b2lkIEluc3Bl
Y3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSZXBsYXlCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKaW5kZXggMTFmMmE5
NDE5ZTI0ZGVlMzlkMjYxN2Y1ZDFkZDY1ZTVjYjkwOTkxZi4uOGFkNmI4MjViMDJkZTBhYTY0Mzc3
NDhhYjhiYzIyNTYxZDFmODU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlcGxheUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlcGxheUFnZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIEluc3Bl
Y3RvclJlcGxheUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQq
KTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSZXBsYXlBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggNGNlZmU0YWY3YTdhMWY3OTYwOTIw
NmE3YWQyYjMxOTlhYmI2Zjg2NS4uMWU5MjhjYzRjZWU2MmQ1ODZiZjc1N2FmYWY3Y2Y5N2U0NTE5
MjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
CiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDcwMGNmMzU4NjQw
MWFkOWEyMzhmYmMzNWVmMzQ1YWMwOGM3MTEzNmYuLmQ1M2JkYWIxZmJlOGIwNGNjMzMwNDU1MGMx
OTgzMjgzYjlkYzUxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50
KiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
IAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXgg
YTI3YTk0Njk5NjVkMDYxY2Q0MjY3ODAyYWYxNTA4MDZkMTdkY2VmNi4uZTg1YjM4NmZhOGFjNTli
MDg5ZmQyMTIyZGNjZWE1MTNmNjUxYjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3Zlcmxh
eUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
clRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggMzc4ZjljODZkNzQzN2NhYjZhNjQx
MzgyNGQ3NWYwM2RhOWMzMGVkNi4uOGI1ODFlNGQzZTQzYjFhNWI4Y2FlNWQ3ODlhNjZiNWY2MTM5
OWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3Bl
Y3RvclR5cGUsIEluc3BlY3RvckNsaWVudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQq
IG1heENhbGxTdGFja0RlcHRoID0gbnVsbHB0cikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCBjYTY5ZWI0OTFh
MTE5N2NmYTllNGFlNzUxOTkzZGFiMjU3NjE0MmFlLi5mYjdjOTc2ODI3NWM0NzA5YTliMjgyNTIz
N2FiY2RkZTcyNzliODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6fkluc3BlY3RvcldvcmtlckFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldEluc3BlY3RvcldvcmtlckFnZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3Rvcldv
cmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oCmluZGV4IDY4NjlkNWE2ODA0ZjcyOTgwYjA2NzJiMDliNmNhM2NiODgwMmZhZmIuLmU5YTkw
YWRkYTgwNGIxYmMxMTAyZjczOTdhNjk1NmI2NmM5MDA4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yV29ya2VyQWdlbnQoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQg
ZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCAxMWZiMmQ1NTVjZTkwZTQ1ZWVlZmU0M2I1MTg2
MjRlNTIxYjA1ZjE4Li4wNzcxOTRiMjIyZWM3NjJhMjBhZjQ3NmNlODNhMzY3MjViNWIyNDZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsCiB7CiB9CiAKLXZvaWQgUGFnZVJ1
bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4
IGM0MTJmYmNmNWVlN2Q2ZDg1M2Q5ZWI5ODkwZTc2ZGVlNzNiOTgwZWEuLmZhMTM1MGQ0NWIxMWZh
YWRhNGNjYzM5YWY3MTdlOTc2MTkwOWNlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgUGFnZVJ1
bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFBhZ2UqLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDA0Yzhi
ZWI3Y2RjY2VmZjQzNWI2OGU4MmVhOWU2MzdkNTM5ZTdiZTEuLmYzMDE0MzFkNGI5Mzk0OTYyNjQ4
YzkzMmIwY2U2NGEzNDkyYTcwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2
b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgQVNT
RVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
bV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRl
bmRDaGFubmVsLmdldCgpLCBudWxscHRyLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0K
IAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDIxZDQzMDFiNjFhNzdlZTNhODM0ZmIx
NzRiZGVlOGVlMjQ4Zjg0Y2MuLjJjM2Y0ZTUxMWVmN2E3ZDk3ODFmMmQzMGI4ZTMzYTgyZWJjZTRl
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFn
ZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hCiB7CiB9CiAKLXZv
aWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmlu
ZGV4IGNiODJjM2JjNzc1MjAxMGFlNTlhNzM3ZDI0ZWRjYzJkNzFhMGE0ZWEuLjliODk1MmEyMWZh
ODBjYTlhZmJjOTdmODIzMGI4YWI4YzhiZTdmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IFdvcmtlclJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFdv
cmtlckdsb2JhbFNjb3BlKik7CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGltZUFnZW50KCkgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDZhOTNmNzJkYjJkOWNiNmE1OGRmOTBiNTdlODM4OWIx
MWIyMzJkYjUuLjVmMjEyNjQ3YzVlMTU3YWM2NTQ4MDExOTAyNzFiZTc5OTI2ZGQzNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTU5NCw3ICs1OTQsOSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiAg
ICAgCi0gICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2
aXJ0dWFsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqIG9wZW5JbnNwZWN0b3JPdmVybGF5KCkg
eyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJv
bnQoKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9PdmVybGF5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9PdmVybGF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MDA4NGMxNDJjYWRkYTE2ZGM1
ODJiNDg3M2VhMGE1NzU3ZjFhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL092ZXJsYXkuanMKQEAgLTAsMCArMSw1NjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitJbnNwZWN0b3JPdmVybGF5ID0ge307CisKK0luc3BlY3Rvck92ZXJsYXkubG9hZGVk
ID0gZnVuY3Rpb24oKQoreworICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJIRUxPIFdPUkxEIikpOworfQorCitjb25zdCBsaWdodEdyaWRDb2xvciA9ICJy
Z2JhKDAsMCwwLDAuMikiOworY29uc3QgZGFya0dyaWRDb2xvciA9ICJyZ2JhKDAsMCwwLDAuNSki
OworY29uc3QgdHJhbnNwYXJlbnRDb2xvciA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKK2NvbnN0IGdy
aWRCYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpIjsKKworLy8gQ1NT
IFJlZ2lvbnMgaGlnaGxpZ2h0IGNvbG9ycy4KK2NvbnN0IGhpZ2hsaWdodGVkUmVnaW9uQmFja2dy
b3VuZENvbG9yID0gInJnYmEoMTI3LCAyMTEsIDI0OCwgMC4xKSI7Citjb25zdCByZWdpb25CYWNr
Z3JvdW5kQ29sb3IgPSAicmdiYSgxMjcsIDIxMSwgMjQ4LCAwLjQ1KSI7Citjb25zdCByZWdpb25T
dHJva2VDb2xvciA9ICJyZ2JhKDk4LCAyMDcsIDI1NSwgMC44NSkiOworCisvLyBDU1MgUmVnaW9u
cyBjaGFpbiBoaWdobGlnaHQgY29sb3JzLgorY29uc3QgcmVnaW9uTGlua0JveEJhY2tncm91bmRD
b2xvciA9ICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzEpIjsKK2NvbnN0IHJlZ2lvbkxpbmtCb3hT
dHJva2VDb2xvciA9ICJyZ2JhKDk4LCAyMDcsIDI1NSwgMC44NSkiOworY29uc3QgcmVnaW9uQ2hh
aW5TdHJva2VDb2xvciA9ICJyZ2JhKDk4LCAyMDcsIDI1NSwgMC44NSkiOworCisvLyBDU1MgUmVn
aW9uIG51bWJlciBzdHlsZS4KK2NvbnN0IHJlZ2lvbk51bWJlckZvbnQgPSAiYm9sZCA0MHB0IHNh
bnMtc2VyaWYiOworY29uc3QgcmVnaW9uTnVtYmVyRmlsbENvbG9yID0gInJnYmEoMjU1LCAyNTUs
IDI1NSwgMC45KSI7Citjb25zdCByZWdpb25OdW1iZXJTdHJva2VDb2xvciA9ICJyZ2IoNjEsIDEy
NywgMjA0KSI7CisKKy8vIENTUyBTaGFwZXMgaGlnaGxpZ2h0IGNvbG9ycworY29uc3Qgc2hhcGVI
aWdobGlnaHRDb2xvciA9ICJyZ2JhKDk2LCA4MiwgMTI3LCAwLjgpIjsKK2NvbnN0IHNoYXBlTWFy
Z2luSGlnaGxpZ2h0Q29sb3IgPSAicmdiYSg5NiwgODIsIDEyNywgMC42KSI7CisKK2NvbnN0IHBh
aW50UmVjdEZpbGxDb2xvciA9ICJyZ2JhKDI1NSwgMCwgMCwgMC41KSI7CisKK2Z1bmN0aW9uIGRy
YXdQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZShtZXNzYWdlKQoreworICAgIHZhciBwYXVzZWRJbkRl
YnVnZ2VyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhdXNlZC1pbi1kZWJ1Z2dlciIpOwor
ICAgIHBhdXNlZEluRGVidWdnZXIudGV4dENvbnRlbnQgPSBtZXNzYWdlOworICAgIHBhdXNlZElu
RGVidWdnZXIuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKKyAgICBkb2N1bWVudC5ib2R5
LmNsYXNzTGlzdC5hZGQoImRpbW1lZCIpOworfQorCitmdW5jdGlvbiBfZHJhd1JlZ2lvbk51bWJl
cihxdWFkLCBudW1iZXIpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgdmFyIG1pZFBvaW50
ID0gX3F1YWRNaWRQb2ludChxdWFkKTsKKyAgICBjb250ZXh0LmZvbnQgPSByZWdpb25OdW1iZXJG
b250OworICAgIGNvbnRleHQudGV4dEFsaWduID0gImNlbnRlciI7CisgICAgY29udGV4dC50ZXh0
QmFzZWxpbmUgPSAibWlkZGxlIjsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHJlZ2lvbk51bWJl
ckZpbGxDb2xvcjsKKyAgICBjb250ZXh0LmZpbGxUZXh0KG51bWJlciwgbWlkUG9pbnQueCwgbWlk
UG9pbnQueSk7CisgICAgY29udGV4dC5zdHJva2VXaWR0aCA9IDQ7CisgICAgY29udGV4dC5zdHJv
a2VTdHlsZSA9IHJlZ2lvbk51bWJlclN0cm9rZUNvbG9yOworICAgIGNvbnRleHQuc3Ryb2tlVGV4
dChudW1iZXIsIG1pZFBvaW50LngsIG1pZFBvaW50LnkpOworICAgIGNvbnRleHQucmVzdG9yZSgp
OworfQorCitmdW5jdGlvbiBxdWFkVG9QYXRoKHF1YWQpCit7CisgICAgY29udGV4dC5iZWdpblBh
dGgoKTsKKyAgICBjb250ZXh0Lm1vdmVUbyhxdWFkWzBdLngsIHF1YWRbMF0ueSk7CisgICAgY29u
dGV4dC5saW5lVG8ocXVhZFsxXS54LCBxdWFkWzFdLnkpOworICAgIGNvbnRleHQubGluZVRvKHF1
YWRbMl0ueCwgcXVhZFsyXS55KTsKKyAgICBjb250ZXh0LmxpbmVUbyhxdWFkWzNdLngsIHF1YWRb
M10ueSk7CisgICAgY29udGV4dC5jbG9zZVBhdGgoKTsKKyAgICByZXR1cm4gY29udGV4dDsKK30K
KworZnVuY3Rpb24gZHJhd091dGxpbmVkUXVhZChxdWFkLCBmaWxsQ29sb3IsIG91dGxpbmVDb2xv
cikKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDI7Cisg
ICAgcXVhZFRvUGF0aChxdWFkKS5jbGlwKCk7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSBmaWxs
Q29sb3I7CisgICAgY29udGV4dC5maWxsKCk7CisgICAgaWYgKG91dGxpbmVDb2xvcikgeworICAg
ICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gb3V0bGluZUNvbG9yOworICAgICAgICBjb250ZXh0
LnN0cm9rZSgpOworICAgIH0KKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rpb24g
cGF0aENvbW1hbmQoY29udGV4dCwgY29tbWFuZHMsIG5hbWUsIGluZGV4LCBsZW5ndGgpIHsKKyAg
ICBjb250ZXh0W25hbWVdLmFwcGx5KGNvbnRleHQsIGNvbW1hbmRzLnNsaWNlKGluZGV4ICsgMSwg
aW5kZXggKyBsZW5ndGggKyAxKSk7CisgICAgcmV0dXJuIGluZGV4ICsgbGVuZ3RoICsgMTsKK30K
KworZnVuY3Rpb24gZHJhd1BhdGgoY29udGV4dCwgY29tbWFuZHMsIGZpbGxDb2xvciwgb3V0bGlu
ZUNvbG9yKQoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7
CisKKyAgICB2YXIgY29tbWFuZHNJbmRleCA9IDA7CisgICAgdmFyIGNvbW1hbmRzTGVuZ3RoID0g
Y29tbWFuZHMubGVuZ3RoOworICAgIHdoaWxlKGNvbW1hbmRzSW5kZXggPCBjb21tYW5kc0xlbmd0
aCkgeworICAgICAgICBzd2l0Y2goY29tbWFuZHNbY29tbWFuZHNJbmRleF0pIHsKKyAgICAgICAg
Ly8gMSBwb2ludAorICAgICAgICBjYXNlICdNJzoKKyAgICAgICAgICAgIGNvbW1hbmRzSW5kZXgg
PSBwYXRoQ29tbWFuZChjb250ZXh0LCBjb21tYW5kcywgIm1vdmVUbyIsIGNvbW1hbmRzSW5kZXgs
IDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIDEgcG9pbnQKKyAgICAgICAgY2Fz
ZSAnTCc6CisgICAgICAgICAgICBjb21tYW5kc0luZGV4ID0gcGF0aENvbW1hbmQoY29udGV4dCwg
Y29tbWFuZHMsICJsaW5lVG8iLCBjb21tYW5kc0luZGV4LCAyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAvLyAzIHBvaW50cworICAgICAgICBjYXNlICdDJzoKKyAgICAgICAgICAgIGNv
bW1hbmRzSW5kZXggPSBwYXRoQ29tbWFuZChjb250ZXh0LCBjb21tYW5kcywgImJlemllckN1cnZl
VG8iLCBjb21tYW5kc0luZGV4LCA2KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyAy
IHBvaW50cworICAgICAgICBjYXNlICdRJzoKKyAgICAgICAgICAgIGNvbW1hbmRzSW5kZXggPSBw
YXRoQ29tbWFuZChjb250ZXh0LCBjb21tYW5kcywgInF1YWRyYXRpY0N1cnZlVG8iLCBjb21tYW5k
c0luZGV4LCAyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyAwIHBvaW50cworICAg
ICAgICBjYXNlICdaJzoKKyAgICAgICAgICAgIGNvbW1hbmRzSW5kZXggPSBwYXRoQ29tbWFuZChj
b250ZXh0LCBjb21tYW5kcywgImNsb3NlUGF0aCIsIGNvbW1hbmRzSW5kZXgsIDApOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb21tYW5kc0luZGV4
Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LmNsb3NlUGF0aCgpOworICAgIGNv
bnRleHQuZmlsbFN0eWxlID0gZmlsbENvbG9yOworICAgIGNvbnRleHQuZmlsbCgpOworCisgICAg
aWYgKG91dGxpbmVDb2xvcikgeworICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDI7CisgICAg
ICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvdXRsaW5lQ29sb3I7CisgICAgICAgIGNvbnRleHQu
c3Ryb2tlKCk7CisgICAgfQorCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9u
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChxdWFkLCBjbGlwUXVhZCwgZmlsbENvbG9yKQorewor
ICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAg
Y29udGV4dC5maWxsU3R5bGUgPSBmaWxsQ29sb3I7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAg
Y29udGV4dC5saW5lV2lkdGggPSAwOworICAgIHF1YWRUb1BhdGgocXVhZCkuZmlsbCgpOworICAg
IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gImRlc3RpbmF0aW9uLW91dCI7Cisg
ICAgY29udGV4dC5maWxsU3R5bGUgPSAicmVkIjsKKyAgICBxdWFkVG9QYXRoKGNsaXBRdWFkKS5m
aWxsKCk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIHF1YWRFcXVhbHMo
cXVhZDEsIHF1YWQyKQoreworICAgIHJldHVybiBxdWFkMVswXS54ID09PSBxdWFkMlswXS54ICYm
IHF1YWQxWzBdLnkgPT09IHF1YWQyWzBdLnkgJiYKKyAgICAgICAgcXVhZDFbMV0ueCA9PT0gcXVh
ZDJbMV0ueCAmJiBxdWFkMVsxXS55ID09PSBxdWFkMlsxXS55ICYmCisgICAgICAgIHF1YWQxWzJd
LnggPT09IHF1YWQyWzJdLnggJiYgcXVhZDFbMl0ueSA9PT0gcXVhZDJbMl0ueSAmJgorICAgICAg
ICBxdWFkMVszXS54ID09PSBxdWFkMlszXS54ICYmIHF1YWQxWzNdLnkgPT09IHF1YWQyWzNdLnk7
Cit9CisKK2Z1bmN0aW9uIGRyYXdHdXR0ZXIoKQoreworICAgIHZhciBmcmFtZVdpZHRoID0gZnJh
bWVWaWV3RnVsbFNpemUud2lkdGg7CisgICAgdmFyIGZyYW1lSGVpZ2h0ID0gZnJhbWVWaWV3RnVs
bFNpemUuaGVpZ2h0OworCisgICAgaWYgKCFmcmFtZVdpZHRoIHx8IGRvY3VtZW50LmJvZHkub2Zm
c2V0V2lkdGggPD0gZnJhbWVXaWR0aCkKKyAgICAgICAgcmlnaHRHdXR0ZXIuc3R5bGUucmVtb3Zl
UHJvcGVydHkoImRpc3BsYXkiKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmlnaHRHdXR0ZXIuc3R5
bGUuZGlzcGxheSA9ICJibG9jayI7CisgICAgICAgIHJpZ2h0R3V0dGVyLnN0eWxlLmxlZnQgPSBm
cmFtZVdpZHRoICsgInB4IjsKKyAgICB9CisKKyAgICBpZiAoIWZyYW1lSGVpZ2h0IHx8IGRvY3Vt
ZW50LmJvZHkub2Zmc2V0SGVpZ2h0IDw9IGZyYW1lSGVpZ2h0KQorICAgICAgICBib3R0b21HdXR0
ZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
Ym90dG9tR3V0dGVyLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworICAgICAgICBib3R0b21HdXR0
ZXIuc3R5bGUudG9wID0gZnJhbWVIZWlnaHQgKyAicHgiOworICAgIH0KK30KKwordmFyIHVwZGF0
ZVBhaW50UmVjdHNJbnRlcnZhbElEOworCitmdW5jdGlvbiB1cGRhdGVQYWludFJlY3RzKHBhaW50
UmVjdExpc3QpCit7CisgICAgdmFyIGNvbnRleHQgPSBwYWludFJlY3RzQ2FudmFzLmdldENvbnRl
eHQoIjJkIik7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zY2FsZSh3aW5kb3cu
ZGV2aWNlUGl4ZWxSYXRpbywgd2luZG93LmRldmljZVBpeGVsUmF0aW8pOworCisgICAgY29udGV4
dC5jbGVhclJlY3QoMCwgMCwgcGFpbnRSZWN0c0NhbnZhcy53aWR0aCwgcGFpbnRSZWN0c0NhbnZh
cy5oZWlnaHQpOworCisgICAgY29udGV4dC5maWxsU3R5bGUgPSBwYWludFJlY3RGaWxsQ29sb3I7
CisKKyAgICBmb3IgKHZhciByZWN0T2JqZWN0IG9mIHBhaW50UmVjdExpc3QpCisgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QocmVjdE9iamVjdC54LCByZWN0T2JqZWN0LnksIHJlY3RPYmplY3Qud2lk
dGgsIHJlY3RPYmplY3QuaGVpZ2h0KTsKKworICAgIGNvbnRleHQucmVzdG9yZSgpOworfQorCitm
dW5jdGlvbiByZXNldChyZXNldERhdGEpCit7CisgICAgdmFyIGRldmljZVNjYWxlRmFjdG9yID0g
cmVzZXREYXRhLmRldmljZVNjYWxlRmFjdG9yOworICAgIHZhciB2aWV3cG9ydFNpemUgPSByZXNl
dERhdGEudmlld3BvcnRTaXplOworICAgIHdpbmRvdy5mcmFtZVZpZXdGdWxsU2l6ZSA9IHJlc2V0
RGF0YS5mcmFtZVZpZXdGdWxsU2l6ZTsKKworICAgIHdpbmRvdy5jYW52YXMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAgd2luZG93LnBhaW50UmVjdHNDYW52YXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFpbnRyZWN0cy1jYW52YXMiKTsKKworICAgIHdpbmRv
dy5jb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgd2luZG93LnJpZ2h0R3V0
dGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJpZ2h0LWd1dHRlciIpOworICAgIHdpbmRv
dy5ib3R0b21HdXR0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm90dG9tLWd1dHRlciIp
OworCisgICAgY2FudmFzLndpZHRoID0gZGV2aWNlU2NhbGVGYWN0b3IgKiB2aWV3cG9ydFNpemUu
d2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IGRldmljZVNjYWxlRmFjdG9yICogdmlld3BvcnRT
aXplLmhlaWdodDsKKyAgICBjYW52YXMuc3R5bGUud2lkdGggPSB2aWV3cG9ydFNpemUud2lkdGgg
KyAicHgiOworICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0ICsg
InB4IjsKKyAgICBjb250ZXh0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZh
Y3Rvcik7CisKKyAgICAvLyBXZSBhdm9pZCBnZXR0aW5nIHRoZSB0aGUgY29udGV4dCBmb3IgdGhl
IHBhaW50IHJlY3RzIGNhbnZhcyB1bnRpbCB3ZSBuZWVkIHRvIHBhaW50LCB0byBhdm9pZCBiYWNr
aW5nIHN0b3JlIGFsbG9jYXRpb24uCisgICAgcGFpbnRSZWN0c0NhbnZhcy53aWR0aCA9IGRldmlj
ZVNjYWxlRmFjdG9yICogdmlld3BvcnRTaXplLndpZHRoOworICAgIHBhaW50UmVjdHNDYW52YXMu
aGVpZ2h0ID0gZGV2aWNlU2NhbGVGYWN0b3IgKiB2aWV3cG9ydFNpemUuaGVpZ2h0OworICAgIHBh
aW50UmVjdHNDYW52YXMuc3R5bGUud2lkdGggPSB2aWV3cG9ydFNpemUud2lkdGggKyAicHgiOwor
ICAgIHBhaW50UmVjdHNDYW52YXMuc3R5bGUuaGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodCAr
ICJweCI7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGF1c2VkLWluLWRlYnVnZ2Vy
Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJlbGVtZW50LXRpdGxlLWNvbnRhaW5lciIpLmlubmVySFRNTCA9ICIiOworICAgIGRvY3Vt
ZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiZGltbWVkIik7Cit9CisKK2Z1bmN0aW9uIERPTUJ1
aWxkZXIodGFnTmFtZSwgY2xhc3NOYW1lKQoreworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7CisgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9IGNs
YXNzTmFtZTsKK30KKworRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kVGV4dE5vZGUgPSBmdW5j
dGlvbihjb250ZW50KQoreworICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
KTsKKyAgICBub2RlLnRleHRDb250ZW50ID0gY29udGVudDsKKyAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQobm9kZSk7CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0RPTUJ1aWxkZXIucHJvdG90
eXBlLmFwcGVuZFNwYW4gPSBmdW5jdGlvbihjbGFzc05hbWUsIHZhbHVlKQoreworICAgIHZhciBz
cGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIHNwYW4uY2xhc3NOYW1l
ID0gY2xhc3NOYW1lOworICAgIHNwYW4udGV4dENvbnRlbnQgPSB2YWx1ZTsKKyAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoc3Bhbik7CisgICAgcmV0dXJuIHNwYW47Cit9CisKK0RPTUJ1aWxk
ZXIucHJvdG90eXBlLmFwcGVuZFNwYW5JZk5vdE51bGwgPSBmdW5jdGlvbihjbGFzc05hbWUsIHZh
bHVlLCBwcmVmaXgpCit7CisgICAgcmV0dXJuIHZhbHVlID8gdGhpcy5hcHBlbmRTcGFuKGNsYXNz
TmFtZSwgKHByZWZpeCA/IHByZWZpeCA6ICIiKSArIHZhbHVlKSA6IG51bGw7Cit9CisKK0RPTUJ1
aWxkZXIucHJvdG90eXBlLmFwcGVuZFByb3BlcnR5ID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlKQoreworICAgIHZhciBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoImRp
diIsIGNsYXNzTmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJjc3MtcHJvcGVydHkiLCBw
cm9wZXJ0eU5hbWUpOworICAgIGJ1aWxkZXIuYXBwZW5kVGV4dE5vZGUoIiAiKTsKKyAgICBidWls
ZGVyLmFwcGVuZFNwYW4oInZhbHVlIiwgdmFsdWUpOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZChidWlsZGVyLmVsZW1lbnQpOworICAgIHJldHVybiBidWlsZGVyLmVsZW1lbnQ7Cit9CisK
K0RPTUJ1aWxkZXIucHJvdG90eXBlLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsID0gZnVuY3Rpb24o
Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA/IHRo
aXMuYXBwZW5kUHJvcGVydHkoY2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSA6IG51bGw7
Cit9CisKK2Z1bmN0aW9uIF90cnVuY2F0ZVN0cmluZyh2YWx1ZSwgbWF4TGVuZ3RoKQoreworICAg
IHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGggPyB2YWx1ZS5zdWJzdHJp
bmcoMCwgNTApICsgIlx1MjAyNiIgOiB2YWx1ZTsKK30KKworZnVuY3Rpb24gX2NyZWF0ZUVsZW1l
bnRUaXRsZShlbGVtZW50RGF0YSkKK3sKKyAgICB2YXIgYnVpbGRlciA9IG5ldyBET01CdWlsZGVy
KCJkaXYiLCAiZWxlbWVudC10aXRsZSIpOworICAgIAorICAgIGJ1aWxkZXIuYXBwZW5kU3Bhbklm
Tm90TnVsbCgidGFnLW5hbWUiLCBlbGVtZW50RGF0YS50YWdOYW1lKTsKKyAgICBidWlsZGVyLmFw
cGVuZFNwYW5JZk5vdE51bGwoIm5vZGUtaWQiLCBlbGVtZW50RGF0YS5pZFZhbHVlLCAiIyIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kU3BhbklmTm90TnVsbCgiY2xhc3MtbmFtZSIsIF90cnVuY2F0ZVN0
cmluZyhlbGVtZW50RGF0YS5jbGFzc05hbWUsIDUwKSk7CisKKyAgICBidWlsZGVyLmFwcGVuZFRl
eHROb2RlKCIgIik7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLXdpZHRoIiwgZWxlbWVu
dERhdGEuc2l6ZS53aWR0aCk7CisgICAgLy8gXHhkNyBpcyB0aGUgY29kZSBmb3IgdGhlICZ0aW1l
czsgSFRNTCBlbnRpdHkuCisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJweCIsICJweCBceGQ3ICIp
OworICAgIGJ1aWxkZXIuYXBwZW5kU3Bhbigibm9kZS1oZWlnaHQiLCBlbGVtZW50RGF0YS5zaXpl
LmhlaWdodCk7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJweCIsICJweCIpOworCisgICAgYnVp
bGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCgicm9sZS1uYW1lIiwgIlJvbGUiLCBlbGVtZW50
RGF0YS5yb2xlKTsKKyAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJyZWdpb24t
Zmxvdy1uYW1lIiwgIlJlZ2lvbiBGbG93IiwgZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEgPyBl
bGVtZW50RGF0YS5yZWdpb25GbG93RGF0YS5uYW1lIDogbnVsbCk7CisgICAgYnVpbGRlci5hcHBl
bmRQcm9wZXJ0eUlmTm90TnVsbCgiY29udGVudC1mbG93LW5hbWUiLCAiQ29udGVudCBGbG93Iiwg
ZWxlbWVudERhdGEuY29udGVudEZsb3dEYXRhID8gZWxlbWVudERhdGEuY29udGVudEZsb3dEYXRh
Lm5hbWUgOiBudWxsKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50LXRp
dGxlLWNvbnRhaW5lciIpLmFwcGVuZENoaWxkKGJ1aWxkZXIuZWxlbWVudCk7CisKKyAgICByZXR1
cm4gYnVpbGRlci5lbGVtZW50OworfQorCitmdW5jdGlvbiBfZHJhd0VsZW1lbnRUaXRsZShlbGVt
ZW50RGF0YSwgZnJhZ21lbnRIaWdobGlnaHQsIHNjcm9sbCkKK3sKKyAgICBpZiAoIWVsZW1lbnRE
YXRhIHx8ICFmcmFnbWVudEhpZ2hsaWdodC5xdWFkcy5sZW5ndGgpCisgICAgICAgIHJldHVybjsK
KworICAgIHZhciBlbGVtZW50VGl0bGUgPSBfY3JlYXRlRWxlbWVudFRpdGxlKGVsZW1lbnREYXRh
KTsKKworICAgIHZhciBtYXJnaW5RdWFkID0gZnJhZ21lbnRIaWdobGlnaHQucXVhZHNbMF07CisK
KyAgICB2YXIgdGl0bGVXaWR0aCA9IGVsZW1lbnRUaXRsZS5vZmZzZXRXaWR0aCArIDY7CisgICAg
dmFyIHRpdGxlSGVpZ2h0ID0gZWxlbWVudFRpdGxlLm9mZnNldEhlaWdodCArIDQ7CisKKyAgICB2
YXIgYW5jaG9yVG9wID0gbWFyZ2luUXVhZFswXS55OworICAgIHZhciBhbmNob3JCb3R0b20gPSBt
YXJnaW5RdWFkWzNdLnk7CisKKyAgICBjb25zdCBhcnJvd0hlaWdodCA9IDc7CisgICAgdmFyIHJl
bmRlckFycm93VXAgPSBmYWxzZTsKKyAgICB2YXIgcmVuZGVyQXJyb3dEb3duID0gZmFsc2U7CisK
KyAgICB2YXIgYm94WCA9IG1hcmdpblF1YWRbMF0ueDsKKworICAgIHZhciBjbGlwUXVhZCA9IGZy
YWdtZW50SGlnaGxpZ2h0LnJlZ2lvbkNsaXBwaW5nQXJlYTsKKyAgICBpZiAoY2xpcFF1YWQpIHsK
KyAgICAgICAgLy8gUmVzdHJpY3QgdGhlIHBvc2l0aW9uIG9mIHRoZSB0aXRsZSBib3ggdG8gdGhl
IGFyZWEgb2YgdGhlIGNvbnRhaW5pbmcgcmVnaW9uLgorICAgICAgICBhbmNob3JUb3AgPSBNYXRo
Lm1heChhbmNob3JUb3AsIE1hdGgubWluKGNsaXBRdWFkWzBdLnksIGNsaXBRdWFkWzFdLnksIGNs
aXBRdWFkWzJdLnksIGNsaXBRdWFkWzNdLnkpKTsKKyAgICAgICAgYW5jaG9yQm90dG9tID0gTWF0
aC5taW4oYW5jaG9yQm90dG9tLCBNYXRoLm1heChjbGlwUXVhZFswXS55LCBjbGlwUXVhZFsxXS55
LCBjbGlwUXVhZFsyXS55LCBjbGlwUXVhZFszXS55KSk7CisgICAgICAgIGJveFggPSBNYXRoLm1h
eChib3hYLCBNYXRoLm1pbihjbGlwUXVhZFswXS54LCBjbGlwUXVhZFsxXS54LCBjbGlwUXVhZFsy
XS54LCBjbGlwUXVhZFszXS54KSk7CisgICAgICAgIGJveFggPSBNYXRoLm1pbihib3hYLCBNYXRo
Lm1heChjbGlwUXVhZFswXS54LCBjbGlwUXVhZFsxXS54LCBjbGlwUXVhZFsyXS54LCBjbGlwUXVh
ZFszXS54KSk7CisgICAgfQorCisgICAgYm94WCA9IE1hdGgubWF4KDIsIGJveFggLSBzY3JvbGwu
eCk7CisgICAgYW5jaG9yVG9wIC09IHNjcm9sbC55OworICAgIGFuY2hvckJvdHRvbSAtPSBzY3Jv
bGwueTsKKworICAgIGlmIChib3hYICsgdGl0bGVXaWR0aCA+IGNhbnZhcy53aWR0aCkKKyAgICAg
ICAgYm94WCA9IGNhbnZhcy53aWR0aCAtIHRpdGxlV2lkdGggLSAyOworCisgICAgdmFyIGJveFk7
CisgICAgaWYgKGFuY2hvclRvcCA+IGNhbnZhcy5oZWlnaHQpIHsKKyAgICAgICAgYm94WSA9IGNh
bnZhcy5oZWlnaHQgLSB0aXRsZUhlaWdodCAtIGFycm93SGVpZ2h0OworICAgICAgICByZW5kZXJB
cnJvd0Rvd24gPSB0cnVlOworICAgIH0gZWxzZSBpZiAoYW5jaG9yQm90dG9tIDwgMCkgeworICAg
ICAgICBib3hZID0gYXJyb3dIZWlnaHQ7CisgICAgICAgIHJlbmRlckFycm93VXAgPSB0cnVlOwor
ICAgIH0gZWxzZSBpZiAoYW5jaG9yQm90dG9tICsgdGl0bGVIZWlnaHQgKyBhcnJvd0hlaWdodCA8
IGNhbnZhcy5oZWlnaHQpIHsKKyAgICAgICAgYm94WSA9IGFuY2hvckJvdHRvbSArIGFycm93SGVp
Z2h0IC0gNDsKKyAgICAgICAgcmVuZGVyQXJyb3dVcCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChh
bmNob3JUb3AgLSB0aXRsZUhlaWdodCAtIGFycm93SGVpZ2h0ID4gMCkgeworICAgICAgICBib3hZ
ID0gYW5jaG9yVG9wIC0gdGl0bGVIZWlnaHQgLSBhcnJvd0hlaWdodCArIDM7CisgICAgICAgIHJl
bmRlckFycm93RG93biA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIGJveFkgPSBhcnJvd0hl
aWdodDsKKworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDAuNSwg
MC41KTsKKyAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgIGNvbnRleHQubW92ZVRvKGJveFgs
IGJveFkpOworICAgIGlmIChyZW5kZXJBcnJvd1VwKSB7CisgICAgICAgIGNvbnRleHQubGluZVRv
KGJveFggKyAyICogYXJyb3dIZWlnaHQsIGJveFkpOworICAgICAgICBjb250ZXh0LmxpbmVUbyhi
b3hYICsgMyAqIGFycm93SGVpZ2h0LCBib3hZIC0gYXJyb3dIZWlnaHQpOworICAgICAgICBjb250
ZXh0LmxpbmVUbyhib3hYICsgNCAqIGFycm93SGVpZ2h0LCBib3hZKTsKKyAgICB9CisgICAgY29u
dGV4dC5saW5lVG8oYm94WCArIHRpdGxlV2lkdGgsIGJveFkpOworICAgIGNvbnRleHQubGluZVRv
KGJveFggKyB0aXRsZVdpZHRoLCBib3hZICsgdGl0bGVIZWlnaHQpOworICAgIGlmIChyZW5kZXJB
cnJvd0Rvd24pIHsKKyAgICAgICAgY29udGV4dC5saW5lVG8oYm94WCArIDQgKiBhcnJvd0hlaWdo
dCwgYm94WSArIHRpdGxlSGVpZ2h0KTsKKyAgICAgICAgY29udGV4dC5saW5lVG8oYm94WCArIDMg
KiBhcnJvd0hlaWdodCwgYm94WSArIHRpdGxlSGVpZ2h0ICsgYXJyb3dIZWlnaHQpOworICAgICAg
ICBjb250ZXh0LmxpbmVUbyhib3hYICsgMiAqIGFycm93SGVpZ2h0LCBib3hZICsgdGl0bGVIZWln
aHQpOworICAgIH0KKyAgICBjb250ZXh0LmxpbmVUbyhib3hYLCBib3hZICsgdGl0bGVIZWlnaHQp
OworICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSAicmdi
KDI1NSwgMjU1LCAxOTQpIjsKKyAgICBjb250ZXh0LmZpbGwoKTsKKyAgICBjb250ZXh0LnN0cm9r
ZVN0eWxlID0gInJnYigxMjgsIDEyOCwgMTI4KSI7CisgICAgY29udGV4dC5zdHJva2UoKTsKKwor
ICAgIGNvbnRleHQucmVzdG9yZSgpOworCisgICAgZWxlbWVudFRpdGxlLnN0eWxlLnRvcCA9IChi
b3hZICsgMykgKyAicHgiOworICAgIGVsZW1lbnRUaXRsZS5zdHlsZS5sZWZ0ID0gKGJveFggKyAz
KSArICJweCI7Cit9CisKK2Z1bmN0aW9uIF9xdWFkTWlkUG9pbnQocXVhZCkKK3sKKyAgICByZXR1
cm4geworICAgICAgICB4OiAocXVhZFswXS54ICsgcXVhZFsxXS54ICsgcXVhZFsyXS54ICsgcXVh
ZFszXS54KSAvIDQsCisgICAgICAgIHk6IChxdWFkWzBdLnkgKyBxdWFkWzFdLnkgKyBxdWFkWzJd
LnkgKyBxdWFkWzNdLnkpIC8gNCwKKyAgICB9OworfQorCitmdW5jdGlvbiBfZHJhd1JlZ2lvbkxp
bmsocG9pbnRBLCBwb2ludEIpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5s
aW5lV2lkdGggPSAyOworICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSByZWdpb25DaGFpblN0cm9r
ZUNvbG9yOworICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY29udGV4dC5tb3ZlVG8ocG9p
bnRBLngsIHBvaW50QS55KTsKKyAgICBjb250ZXh0LmxpbmVUbyhwb2ludEIueCwgcG9pbnRCLnkp
OworICAgIGNvbnRleHQuc3Ryb2tlKCk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1
bmN0aW9uIF9kcmF3UmVnaW9uc0hpZ2hsaWdodChyZWdpb25zKQoreworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVnaW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcmVnaW9uID0gcmVn
aW9uc1tpXTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChyZWdpb24uYm9yZGVyUXVhZCwgcmVn
aW9uLmlzSGlnaGxpZ2h0ZWQgPyBoaWdobGlnaHRlZFJlZ2lvbkJhY2tncm91bmRDb2xvciA6IHJl
Z2lvbkJhY2tncm91bmRDb2xvciwgcmVnaW9uU3Ryb2tlQ29sb3IpOworICAgICAgICBfZHJhd1Jl
Z2lvbk51bWJlcihyZWdpb24uYm9yZGVyUXVhZCwgaSArIDEpOworICAgIH0KKworICAgIGZvciAo
dmFyIGkgPSAxOyBpIDwgcmVnaW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcmVnaW9u
QSA9IHJlZ2lvbnNbaSAtIDFdLAorICAgICAgICAgICAgcmVnaW9uQiA9IHJlZ2lvbnNbaV07Cisg
ICAgICAgIF9kcmF3UmVnaW9uTGluayhfcXVhZE1pZFBvaW50KHJlZ2lvbkEub3V0Z29pbmdRdWFk
KSwgX3F1YWRNaWRQb2ludChyZWdpb25CLmluY29taW5nUXVhZCkpOworICAgIH0KKworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcmVnaW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcmVn
aW9uID0gcmVnaW9uc1tpXTsKKyAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgZHJhd091
dGxpbmVkUXVhZChyZWdpb24uaW5jb21pbmdRdWFkLCByZWdpb25MaW5rQm94QmFja2dyb3VuZENv
bG9yLCByZWdpb25MaW5rQm94U3Ryb2tlQ29sb3IpOworICAgICAgICBpZiAoaSAhPT0gcmVnaW9u
cy5sZW5ndGggLSAxKQorICAgICAgICAgICAgZHJhd091dGxpbmVkUXVhZChyZWdpb24ub3V0Z29p
bmdRdWFkLCByZWdpb25MaW5rQm94QmFja2dyb3VuZENvbG9yLCByZWdpb25MaW5rQm94U3Ryb2tl
Q29sb3IpOworICAgIH0KK30KKworZnVuY3Rpb24gX2RyYXdTaGFwZUhpZ2hsaWdodChzaGFwZUlu
Zm8pCit7CisgICAgaWYgKHNoYXBlSW5mby5tYXJnaW5TaGFwZSkKKyAgICAgICAgZHJhd1BhdGgo
Y29udGV4dCwgc2hhcGVJbmZvLm1hcmdpblNoYXBlLCBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9y
KTsKKworICAgIGlmIChzaGFwZUluZm8uc2hhcGUpCisgICAgICAgIGRyYXdQYXRoKGNvbnRleHQs
IHNoYXBlSW5mby5zaGFwZSwgc2hhcGVIaWdobGlnaHRDb2xvcik7CisKKyAgICBpZiAoIShzaGFw
ZUluZm8uc2hhcGUgfHwgc2hhcGVJbmZvLm1hcmdpblNoYXBlKSkKKyAgICAgICAgZHJhd091dGxp
bmVkUXVhZChzaGFwZUluZm8uYm91bmRzLCBzaGFwZUhpZ2hsaWdodENvbG9yLCBzaGFwZUhpZ2hs
aWdodENvbG9yKTsKK30KKworZnVuY3Rpb24gX2RyYXdGcmFnbWVudEhpZ2hsaWdodChoaWdobGln
aHQpCit7CisgICAgaWYgKCFoaWdobGlnaHQucXVhZHMubGVuZ3RoKQorICAgICAgICByZXR1cm47
CisKKyAgICBjb250ZXh0LnNhdmUoKTsKKworICAgIGlmIChoaWdobGlnaHQucmVnaW9uQ2xpcHBp
bmdBcmVhKSB7CisgICAgICAgIC8vIENsaXAgdG8gdGhlIGNvbnRhaW5pbmcgcmVnaW9uIHRvIGF2
b2lkIHNob3dpbmcgZnJhZ21lbnRzIHRoYXQgYXJlIG5vdCByZW5kZXJlZCBieSB0aGlzIHJlZ2lv
bi4KKyAgICAgICAgcXVhZFRvUGF0aChoaWdobGlnaHQucmVnaW9uQ2xpcHBpbmdBcmVhKS5jbGlw
KCk7CisgICAgfQorCisgICAgdmFyIHF1YWRzID0gaGlnaGxpZ2h0LnF1YWRzLnNsaWNlKCk7Cisg
ICAgdmFyIGNvbnRlbnRRdWFkID0gcXVhZHMucG9wKCk7CisgICAgdmFyIHBhZGRpbmdRdWFkID0g
cXVhZHMucG9wKCk7CisgICAgdmFyIGJvcmRlclF1YWQgPSBxdWFkcy5wb3AoKTsKKyAgICB2YXIg
bWFyZ2luUXVhZCA9IHF1YWRzLnBvcCgpOworCisgICAgdmFyIGhhc0NvbnRlbnQgPSBjb250ZW50
UXVhZCAmJiBoaWdobGlnaHQuY29udGVudENvbG9yICE9PSB0cmFuc3BhcmVudENvbG9yIHx8IGhp
Z2hsaWdodC5jb250ZW50T3V0bGluZUNvbG9yICE9PSB0cmFuc3BhcmVudENvbG9yOworICAgIHZh
ciBoYXNQYWRkaW5nID0gcGFkZGluZ1F1YWQgJiYgaGlnaGxpZ2h0LnBhZGRpbmdDb2xvciAhPT0g
dHJhbnNwYXJlbnRDb2xvcjsKKyAgICB2YXIgaGFzQm9yZGVyID0gYm9yZGVyUXVhZCAmJiBoaWdo
bGlnaHQuYm9yZGVyQ29sb3IgIT09IHRyYW5zcGFyZW50Q29sb3I7CisgICAgdmFyIGhhc01hcmdp
biA9IG1hcmdpblF1YWQgJiYgaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yICE9PSB0cmFuc3BhcmVudENv
bG9yOworCisgICAgdmFyIGNsaXBRdWFkOworICAgIGlmIChoYXNNYXJnaW4gJiYgKCFoYXNCb3Jk
ZXIgfHwgIXF1YWRFcXVhbHMobWFyZ2luUXVhZCwgYm9yZGVyUXVhZCkpKSB7CisgICAgICAgIGRy
YXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHQu
bWFyZ2luQ29sb3IpOworICAgICAgICBjbGlwUXVhZCA9IGJvcmRlclF1YWQ7CisgICAgfQorICAg
IGlmIChoYXNCb3JkZXIgJiYgKCFoYXNQYWRkaW5nIHx8ICFxdWFkRXF1YWxzKGJvcmRlclF1YWQs
IHBhZGRpbmdRdWFkKSkpIHsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGJvcmRl
clF1YWQsIHBhZGRpbmdRdWFkLCBoaWdobGlnaHQuYm9yZGVyQ29sb3IpOworICAgICAgICBjbGlw
UXVhZCA9IHBhZGRpbmdRdWFkOworICAgIH0KKyAgICBpZiAoaGFzUGFkZGluZyAmJiAoIWhhc0Nv
bnRlbnQgfHwgIXF1YWRFcXVhbHMocGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkKSkpIHsKKyAgICAg
ICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKHBhZGRpbmdRdWFkLCBjb250ZW50UXVhZCwgaGln
aGxpZ2h0LnBhZGRpbmdDb2xvcik7CisgICAgICAgIGNsaXBRdWFkID0gY29udGVudFF1YWQ7Cisg
ICAgfQorICAgIGlmIChoYXNDb250ZW50KQorICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRl
bnRRdWFkLCBoaWdobGlnaHQuY29udGVudENvbG9yLCBoaWdobGlnaHQuY29udGVudE91dGxpbmVD
b2xvcik7CisKKyAgICB2YXIgd2lkdGggPSBjYW52YXMud2lkdGg7CisgICAgdmFyIGhlaWdodCA9
IGNhbnZhcy5oZWlnaHQ7CisgICAgdmFyIG1pblggPSBOdW1iZXIuTUFYX1ZBTFVFLCBtaW5ZID0g
TnVtYmVyLk1BWF9WQUxVRSwgbWF4WCA9IE51bWJlci5NSU5fVkFMVUU7IG1heFkgPSBOdW1iZXIu
TUlOX1ZBTFVFOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGlnaGxpZ2h0LnF1YWRzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHZhciBxdWFkID0gaGlnaGxpZ2h0LnF1YWRzW2ldOworICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IHF1YWQubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIG1p
blggPSBNYXRoLm1pbihtaW5YLCBxdWFkW2pdLngpOworICAgICAgICAgICAgbWF4WCA9IE1hdGgu
bWF4KG1heFgsIHF1YWRbal0ueCk7CisgICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwg
cXVhZFtqXS55KTsKKyAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCBxdWFkW2pdLnkp
OworICAgICAgICB9CisgICAgfQorCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0
aW9uIHNob3dQYWdlSW5kaWNhdGlvbigpCit7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3Qu
YWRkKCJpbmRpY2F0ZSIpOworfQorCitmdW5jdGlvbiBoaWRlUGFnZUluZGljYXRpb24oKQorewor
ICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiaW5kaWNhdGUiKTsKK30KKworZnVu
Y3Rpb24gZHJhd05vZGVIaWdobGlnaHQoaGlnaGxpZ2h0KQoreworICAgIGNvbnRleHQuc2F2ZSgp
OworICAgIGNvbnRleHQudHJhbnNsYXRlKC1oaWdobGlnaHQuc2Nyb2xsT2Zmc2V0LngsIC1oaWdo
bGlnaHQuc2Nyb2xsT2Zmc2V0LnkpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoaWdobGln
aHQuZnJhZ21lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICBfZHJhd0ZyYWdtZW50SGlnaGxpZ2h0
KGhpZ2hsaWdodC5mcmFnbWVudHNbaV0pOworCisgICAgaWYgKGhpZ2hsaWdodC5lbGVtZW50RGF0
YSAmJiBoaWdobGlnaHQuZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEpCisgICAgICAgIF9kcmF3
UmVnaW9uc0hpZ2hsaWdodChoaWdobGlnaHQuZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEucmVn
aW9ucyk7CisKKyAgICBpZiAoaGlnaGxpZ2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdodC5lbGVt
ZW50RGF0YS5zaGFwZU91dHNpZGVEYXRhKQorICAgICAgICBfZHJhd1NoYXBlSGlnaGxpZ2h0KGhp
Z2hsaWdodC5lbGVtZW50RGF0YS5zaGFwZU91dHNpZGVEYXRhKTsKKworICAgIGNvbnRleHQucmVz
dG9yZSgpOworCisgICAgdmFyIGVsZW1lbnRUaXRsZUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJlbGVtZW50LXRpdGxlLWNvbnRhaW5lciIpOworICAgIGVsZW1lbnRUaXRsZUNv
bnRhaW5lci5pbm5lckhUTUwgPSAiIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhpZ2hsaWdo
dC5mcmFnbWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIF9kcmF3RWxlbWVudFRpdGxlKGhpZ2hs
aWdodC5lbGVtZW50RGF0YSwgaGlnaGxpZ2h0LmZyYWdtZW50c1tpXSwgaGlnaGxpZ2h0LnNjcm9s
bE9mZnNldCk7Cit9CisKK2Z1bmN0aW9uIGRyYXdRdWFkSGlnaGxpZ2h0KGhpZ2hsaWdodCkKK3sK
KyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBkcmF3T3V0bGluZWRRdWFkKGhpZ2hsaWdodC5xdWFk
c1swXSwgaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwgaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29s
b3IpOworICAgIGNvbnRleHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBzZXRQbGF0Zm9ybShw
bGF0Zm9ybSkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoInBsYXRmb3JtLSIg
KyBwbGF0Zm9ybSk7Cit9CisKK2Z1bmN0aW9uIGRpc3BhdGNoKG1lc3NhZ2UpCit7CisgICAgdmFy
IGZ1bmN0aW9uTmFtZSA9IG1lc3NhZ2Uuc2hpZnQoKTsKKyAgICB3aW5kb3dbZnVuY3Rpb25OYW1l
XS5hcHBseShudWxsLCBtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gbG9nKHRleHQpCit7CisgICAg
dmFyIGxvZ0VudHJ5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgbG9nRW50
cnkudGV4dENvbnRlbnQgPSB0ZXh0OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ci
KS5hcHBlbmRDaGlsZChsb2dFbnRyeSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9PdmVybGF5Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9PdmVybGF5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjlkY2EyYmVlOTNiN2Y0MDFl
NTQzZjY0NzNlOTk4NDM2ZjczOTI4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL092ZXJsYXkuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IS0t
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CistLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
ICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImRl
ZmF1bHQtc3JjICdzZWxmJzsgaW1nLXNyYyAqOyBjb25uZWN0LXNyYyAqOyBtZWRpYS1zcmMgKjsg
Zm9udC1zcmMgKjsgc3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSc7IHNjcmlwdC1zcmMg
J3NlbGYnICd1bnNhZmUtaW5saW5lJyI+CisKKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL092ZXJsYXkuY3NzIj4KKworICAgIDxzY3JpcHQgc3JjPSJCYXNlL092ZXJsYXku
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIEluc3BlY3Rvck92ZXJsYXkubG9h
ZGVkKCk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBjbGFzcz0iZmlsbCI+Cis8ZGl2
IGNsYXNzPSJtZXNzYWdlLWxpbmUiPjxzcGFuIGNsYXNzPSJtZXNzYWdlLWJveCIgaWQ9InBhdXNl
ZC1pbi1kZWJ1Z2dlciI+PC9zcGFuPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFzIiBjbGFzcz0i
ZmlsbCI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJwYWludHJlY3RzLWNhbnZhcyIgY2xhc3M9ImZp
bGwiPjwvY2FudmFzPgorPGRpdiBpZD0iZWxlbWVudC10aXRsZS1jb250YWluZXIiPjwvZGl2Pgor
PGRpdiBpZD0icmlnaHQtZ3V0dGVyIj48L2Rpdj4KKzxkaXYgaWQ9ImJvdHRvbS1ndXR0ZXIiPjwv
ZGl2PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJsYXkuY3NzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcmxheS5jc3MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzMxMjA1MDZkZDM5ZTM4MDZkMGVkYjE3MDYxZmYzYjljZjk5OTRhOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092
ZXJsYXkuY3NzCkBAIC0wLDAgKzEsOTcgQEAKK2JvZHkgeworICAgIG1hcmdpbjogMDsKKyAgICBw
YWRkaW5nOiAwOworfQorCitib2R5LnBsYXRmb3JtLW1hYyB7CisgICAgZm9udC1zaXplOiAxMXB4
OworICAgIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvOworfQorCitib2R5LnBsYXRmb3JtLXdp
bmRvd3MgeworICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICBmb250LWZhbWlseTogQ29uc29sYXMs
IEx1Y2lkYSBDb25zb2xlOworfQorCitib2R5LnBsYXRmb3JtLWxpbnV4IHsKKyAgICBmb250LXNp
emU6IDExcHg7CisgICAgZm9udC1mYW1pbHk6IGRlamF2dSBzYW5zIG1vbm87Cit9CisKKy5maWxs
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAwOwor
ICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAwOworfQorCisuaW5kaWNhdGUgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMTExLCAxNjgsIDIyMCwgMC42NikgIWltcG9ydGFudDsKK30KKwor
LmRpbW1lZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMxKTsKK30K
KworLm1lc3NhZ2UtbGluZSB7CisgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworfQorCisubWVzc2FnZS1ib3ggeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigy
NTUsIDI1NSwgMTk0KTsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTI4LCAxMjgsIDEyOCk7
CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHBhZGRpbmc6IDJweCA0cHg7Cit9CisK
Ky5weCB7CisgICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKK30KKworLmVsZW1lbnQtdGl0
bGUtY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgei1pbmRleDogMTA7
Cit9CisKKy5lbGVtZW50LXRpdGxlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CisKKy50
YWctbmFtZSB7CisgICAgLyogS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICgu
dGFnKSAqLworICAgIGNvbG9yOiByZ2IoMTM2LCAxOCwgMTI4KTsKK30KKworLm5vZGUtaWQgewor
ICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS12
YWx1ZSkgKi8KKyAgICBjb2xvcjogcmdiKDI2LCAyNiwgMTY2KTsKK30KKworLmNsYXNzLW5hbWUg
eworICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0
ZS1uYW1lKSAqLworICAgIGNvbG9yOiByZ2IoMTUzLCA2OSwgMCk7Cit9CisKKy5jc3MtcHJvcGVy
dHkgeworICAgIGNvbG9yOiByZ2IoMTcwLCAxMywgMTQ1KTsKK30KKworI3JpZ2h0LWd1dHRlciB7
CisgICAgZGlzcGxheTogbm9uZTsKKyAgICByaWdodDogMDsKKyAgICB0b3A6IDA7CisgICAgYm90
dG9tOiAwOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBk
YXJrZ3JheTsKK30KKworI2JvdHRvbS1ndXR0ZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
bGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtncmF5OworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRl
eCBlNmVkZTQ5ZmM5MjBhOWNhNGY2YTlkZGIxNjkyMWUyNzE0ZTk0ZmRjLi5kNWIxMzAzNDkwMGQ5
ZjgwZjdjZWFmMmFjODZkNGI3ZmVjNDJjZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNjYsOCArNjYsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRl
OworICAgIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqIG9wZW5JbnNwZWN0b3JPdmVybGF5KCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsK
KwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQppbmRleCA3ODkzZjhiMjNhODk0ZjcyNWY5MTk3NDkyYTA3ZmRmYjdlM2I0NDBmLi4xZGI4
MTJiYTA1MTk0N2MxMjQ0MTNmZDUwMTE5MjFhMGIyNGRlZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0x
NzAsNiArMTcwLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9G
cm9udCgpCiAgICAgbV9mcm9udGVuZENsaWVudC0+YnJpbmdUb0Zyb250KCk7CiB9CiAKK0luc3Bl
Y3Rvcjo6T3ZlcmxheUNoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3Rvck92
ZXJsYXkoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKIHsKICAgICBpZiAobV9mcm9udGVuZENs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGIzMWIxNGY5MDgwN2I5YjM4
NTBkMDdiYjFmNjM5YTBmODg1MDU5NDkuLjliNTUzMWYwYjQzZjE1Yjg3ZDVjNTVlMjY2YmZkN2Vl
YjQ3OWI5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTE5LDYgKzExOSw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZSBcCiAgICAgV2Vi
SWNvbkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCisgICAgV2ViSW5zcGVjdG9y
T3ZlcmxheSBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXAogICAgIFdlYkluc3BlY3RvclVJIFwK
ICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCA0ZWNjMWZjM2RjYTM0YmM2NDhjYWZhOWUzNDFm
NjYyMzQxOWIxODE1Li45NDY2MGM4NjM0NDUxZjg1NWRkZDcyYTRhOTg0ZDZhNzE5ODcxZTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JPdmVybGF5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgpAQCAtMjQ0LDcgKzI0NSw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZFJlbGF1bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3Mo
KQogICAgIC8vIFdoZW4gZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQg
d2UgY2FuIGFzc3VtZSBpdCBpcyBkdXJpbmcgYSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1l
c3NhZ2VzIHdlIHdvdWxkIGhhdmUgc2VudCB0byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRv
IGJlIHJlLXNlbnQuCiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1faW5zcGVjdG9yQ29ubmVjdGlv
bklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xl
KCkKQEAgLTM5Nyw2ICszOTgsMTggQEAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9y
UGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHkKICAgICByZXR1
cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHJlcXVlc3RVUkwucGF0aCgpKSA9PSBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXModGVzdFBhZ2VVUkwucGF0aCgpKTsKIH0KIAorc3RhdGljIGJvb2wg
aXNJbnNwZWN0b3JPdmVybGF5UGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVj
dG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQoreworICAgIFVSTCByZXF1ZXN0
VVJMKFVSTCgpLCB0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsK
KyAgICBpZiAoIVdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwocmVxdWVzdFVSTC5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gVXNlIFVSTCBzbyB3ZSBjYW4gY29tcGFyZSBqdXN0IHRoZSBwYXRocy4KKyAgICBVUkwg
b3ZlcmxheVBhZ2VVUkwoVVJMKCksIHdlYkluc3BlY3RvclByb3h5LT5pbnNwZWN0b3JPdmVybGF5
VVJMKCkpOworICAgIEFTU0VSVChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKG92ZXJsYXlQYWdlVVJMLnByb3RvY29sKCkpKTsKKyAgICByZXR1cm4g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHJlcXVlc3RVUkwucGF0aCgpKSA9PSBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXMob3ZlcmxheVBhZ2VVUkwucGF0aCgpKTsKK30KKwogc3RhdGljIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAg
ICBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHkgPSBzdGF0aWNfY2FzdDxXZWJJ
bnNwZWN0b3JQcm94eSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKQEAgLTQwNCw3
ICs0MTcsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV0tQYWdlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogICAgIHdlYkluc3BlY3RvclByb3h5LT5jbG9zZSgpOwogfQogCi1z
dGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJz
LCBXS0V2ZW50TW91c2VCdXR0b24sIFdLRnJhbWVSZWYsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0
UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25JbnNwZWN0b3JQYWdlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tG
cmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24s
IFdLRnJhbWVSZWYsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlz
dGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
IHsKICAgICAvLyBBbGxvdyBub24tbWFpbiBmcmFtZXMgdG8gbmF2aWdhdGUgYW55d2hlcmUuCiAg
ICAgaWYgKCF0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpKSB7CkBAIC00MjgsNiArNDQx
LDI4IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyCiAgICAgd2ViSW5zcGVjdG9yUHJveHktPnBh
Z2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7
CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25PdmVybGF5
UGFnZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9uVHlw
ZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBXS0ZyYW1lUmVmLCBXS1VS
TFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVy
UmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgLy8gQWxsb3cg
bm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRlIGFueXdoZXJlLgorICAgIGlmICghdG9JbXBsKGZy
YW1lUmVmKS0+aXNNYWluRnJhbWUoKSkgeworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51
c2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFdlYkluc3BlY3RvclBy
b3h5KiB3ZWJJbnNwZWN0b3JQcm94eSA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYkluc3BlY3RvclBy
b3h5Kj4oY2xpZW50SW5mbyk7CisgICAgQVNTRVJUKHdlYkluc3BlY3RvclByb3h5KTsKKworICAg
IC8vIEFsbG93IGxvYWRpbmcgb2YgdGhlIG1haW4gaW5zcGVjdG9yIG92ZXJsYXkgZmlsZS4KKyAg
ICBpZiAoaXNJbnNwZWN0b3JPdmVybGF5UGFnZSh3ZWJJbnNwZWN0b3JQcm94eSwgcmVxdWVzdFJl
ZikpIHsKKyAgICAgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+dXNlKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBQcmV2ZW50IGV2ZXJ5dGhpbmcgZWxzZSBmcm9tIGxvYWRpbmcg
aW4gdGhlIG92ZXJsYXkgcGFnZS4KKyAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5pZ25vcmUoKTsK
K30KKworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjplbmFibGVSZW1vdGVJbnNwZWN0aW9uKCkKIHsKQEAgLTQ2Nyw3ICs1MDIsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAg
IG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbgogICAgICAgICBudWxs
cHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCiAg
ICAgICAgIG51bGxwdHIsIC8vIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5Ci0gICAgICAgIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25JbnNwZWN0b3JQYWdlLAogICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZQogICAgIH07CiAKQEAgLTUyMSw2ICs1NTYsNzkgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVS
TCgpKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZU92ZXJsYXlQ
YWdlKCkKK3sKKyAgICBpZiAobV9vdmVybGF5UGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gSEFDSzogd2FpdCB1bnRpbCB3ZSBjYW4gdXNlIFdLV2ViVmlldworICAgIHJldHVybjsKKwor
ICAgIG1fb3ZlcmxheVBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZU92ZXJsYXlQYWdlKCk7CisgICAgQVNT
RVJUKG1fb3ZlcmxheVBhZ2UpOworICAgIGlmICghbV9vdmVybGF5UGFnZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xpZW50ID0geworICAgICAg
ICB7IDEsIHRoaXMgfSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIs
IC8vIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5CisgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25PdmVybGF5UGFnZSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UKKyAgICB9OworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjUgbG9hZGVyQ2xp
ZW50ID0geworICAgICAgICB7IDUsIHRoaXMgfSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAgICBudWxscHRy
LCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkQ29tbWl0TG9hZEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaExv
YWRGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQorICAgICAgICBu
dWxscHRyLCAvLyBkaWRGaXJzdExheW91dEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQorICAgICAgICBudWxscHRyLCAvLyBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUnVuSW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQorICAgICAgICBudWxscHRyLCAvLyBk
aWRTdGFydFByb2dyZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZENoYW5nZVByb2dyZXNzCisg
ICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaFByb2dyZXNzCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZEJlY29tZVVucmVzcG9uc2l2ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRCZWNvbWVSZXNw
b25zaXZlCisgICAgICAgIHByb2Nlc3NEaWRDcmFzaCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0CisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW5fZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBkaWREZXRl
Y3RYU1NGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRfdW5hdmFpbGFibGUKKyAgICAgICAgbnVsbHB0ciwgLy8gd2lsbEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtCisgICAgICAgIG51bGxwdHIsIC8vIGludGVyYWN0aW9uT2NjdXJyZWRX
aGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUKKyAgICAgICAgbnVsbHB0ciwgLy8gcGx1Z2luRGlkRmFp
bF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY2VpdmVJ
bnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICBudWxscHRyLCAvLyByZWdpc3Rlcklu
dGVudFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICBudWxscHRyLCAvLyBkaWRM
YXlvdXQKKyAgICAgICAgbnVsbHB0ciwgLy8gcGx1Z2luTG9hZFBvbGljeV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYyCisgICAgICAgIG51bGxwdHIsIC8vIHBsdWdpbkRpZEZhaWwKKyAgICAgICAgbnVs
bHB0ciwgLy8gcGx1Z2luTG9hZFBvbGljeQorICAgICAgICBudWxscHRyLCAvLyB3ZWJHTExvYWRQ
b2xpY3kKKyAgICAgICAgbnVsbHB0ciwgLy8gcmVzb2x2ZVdlYkdMTG9hZFBvbGljeQorICAgICAg
ICBudWxscHRyLCAvLyBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QK
KyAgICB9OworCisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShtX292ZXJsYXlQ
YWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KHRvQVBJKG1fb3ZlcmxheVBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgbV9vdmVy
bGF5UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMp
OworICAgIG1fb3ZlcmxheVBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KGluc3BlY3RvckJhc2VVUkwoKSk7Cit9CisKIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94
eSBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJ
UEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29s
IHVuZGVyVGVzdCkKIHsKQEAgLTUzNCw5ICs2NDIsOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmll
cgogICAgICAgICByZXR1cm47CiAKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKLSAgICBt
X2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgbV9pbnNw
ZWN0b3JDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb25JZGVudGlmaWVyOwogCi0gICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkVzdGFibGlzaENvbm5lY3Rpb24obV9jb25uZWN0aW9uSWRlbnRpZmllciwgbV9wYWdlLT5wYWdl
SUQoKSwgbV91bmRlclRlc3QpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0
YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RvckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCiAg
ICAgaWYgKCFtX3VuZGVyVGVzdCkgewogICAgICAgICBtX2NhbkF0dGFjaCA9IGNhbkF0dGFjaDsK
QEAgLTU2Miw2ICs2NzAsMjQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVj
dG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBtX2luc3Bl
Y3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRlc3QgPyBpbnNwZWN0b3JU
ZXN0UGFnZVVSTCgpIDogaW5zcGVjdG9yUGFnZVVSTCgpKSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmNyZWF0ZU92ZXJsYXlQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRl
bnRpZmllcikKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZWFn
ZXJseUNyZWF0ZU92ZXJsYXlQYWdlKCk7CisKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsK
KyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vdmVy
bGF5Q29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uSWRlbnRpZmllcjsKKworICAgIG1f
b3ZlcmxheVBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JPdmVybGF5
OjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fb3ZlcmxheUNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3Bh
Z2UtPnBhZ2VJRCgpKSwgbV9vdmVybGF5UGFnZS0+cGFnZUlEKCkpOworCisgICAgbV9pbnNwZWN0
b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIGluc3BlY3Rvck92ZXJsYXlVUkwoKSkpOwor
fQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIHsKICAgICBpZiAobV91bmRlclRl
c3QpCkBAIC01NzQsMTIgKzcwMCwxNSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UoKQogewotICAgIGlmICghbV9pbnNw
ZWN0b3JQYWdlKQorICAgIGlmICghbV9pbnNwZWN0b3JQYWdlIHx8ICFtX292ZXJsYXlQYWdlKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogICAgIG1faW5zcGVjdG9yUGFnZSA9IG51bGxw
dHI7CiAKKyAgICBtX292ZXJsYXlQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX292ZXJsYXlQYWdlID0gbnVsbHB0cjsKKwogICAgIG1faXNW
aXNpYmxlID0gZmFsc2U7CiAgICAgbV9pc1Byb2ZpbGluZ1BhZ2UgPSBmYWxzZTsKICAgICBtX3No
b3dNZXNzYWdlU2VudCA9IGZhbHNlOwpAQCAtNTkwLDcgKzcxOSw4IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmRpZENsb3NlKCkKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKICAgICBtX2Nh
bkF0dGFjaCA9IGZhbHNlOwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Ci0gICAgbV9jb25uZWN0
aW9uSWRlbnRpZmllciA9IElQQzo6QXR0YWNobWVudCgpOworICAgIG1faW5zcGVjdG9yQ29ubmVj
dGlvbklkZW50aWZpZXIgPSBJUEM6OkF0dGFjaG1lbnQoKTsKKyAgICBtX292ZXJsYXlDb25uZWN0
aW9uSWRlbnRpZmllciA9IElQQzo6QXR0YWNobWVudCgpOwogCiAgICAgcGxhdGZvcm1EaWRDbG9z
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApp
bmRleCBlMzBlNjFiOGJiZTE4MTQ1MzkzNDIwYjRlY2U3MDZlMGFkMDYwOTYwLi5jMmY2NTFhM2Vk
ODM0OTc3MDVmNmIyYWQ3MDI3MmVmN2U5MmExMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMTMzLDEyICsxMzMsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCiAgICAgc3RhdGljIGJvb2wgaXNJbnNw
ZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYpOworICAgIHN0YXRpYyBib29sIGlzT3ZlcmxheVBhZ2Uo
V2ViUGFnZVByb3h5Jik7CiAgICAgc3RhdGljIFdlYlByb2Nlc3NQb29sJiBpbnNwZWN0b3JQcm9j
ZXNzUG9vbCgpOwogCiAgICAgLy8gUHJvdmlkZWQgYnkgcGxhdGZvcm0gV2ViSW5zcGVjdG9yUHJv
eHkgaW1wbGVtZW50YXRpb25zLgogICAgIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCkgY29uc3Q7
CiAgICAgU3RyaW5nIGluc3BlY3RvclRlc3RQYWdlVVJMKCkgY29uc3Q7CiAgICAgU3RyaW5nIGlu
c3BlY3RvckJhc2VVUkwoKSBjb25zdDsKKyAgICBTdHJpbmcgaW5zcGVjdG9yT3ZlcmxheVVSTCgp
IGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAgICAgdm9pZCBlbmFibGVS
ZW1vdGVJbnNwZWN0aW9uKCk7CkBAIC0xNTIsMTEgKzE1NCwxMyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAgICAgdm9pZCBlYWdl
cmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOworICAgIHZvaWQgZWFnZXJseUNyZWF0ZU92ZXJsYXlQ
YWdlKCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
b3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlUHJveHkqIHBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFn
ZSgpOworICAgIFdlYlBhZ2VQcm94eSogcGxhdGZvcm1DcmVhdGVPdmVybGF5UGFnZSgpOwogICAg
IHZvaWQgcGxhdGZvcm1PcGVuKCk7CiAgICAgdm9pZCBwbGF0Zm9ybURpZENsb3NlKCk7CiAgICAg
dm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKQEAgLTE3OSw2ICsxODMsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQsIGJvb2wgY2FuQXR0
YWNoLCBib29sIHVuZGVyVGVzdCk7CiAgICAgdm9pZCBkaWRDbG9zZSgpOwogICAgIHZvaWQgYnJp
bmdUb0Zyb250KCk7CisKKyAgICB2b2lkIGNyZWF0ZU92ZXJsYXlQYWdlKElQQzo6QXR0YWNobWVu
dCk7CisKICAgICB2b2lkIGF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCk7CiAgICAgdm9p
ZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0yMTMsNiArMjIwLDcg
QEAgcHJpdmF0ZToKIAogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFdlYlBhZ2VQcm94
eSogbV9pbnNwZWN0b3JQYWdlOworICAgIFdlYlBhZ2VQcm94eSogbV9vdmVybGF5UGFnZTsKIAog
ICAgIGJvb2wgbV91bmRlclRlc3Q7CiAgICAgYm9vbCBtX2lzVmlzaWJsZTsKQEAgLTIyNyw3ICsy
MzUsOCBAQCBwcml2YXRlOgogICAgIC8vIHRoZSBpbnNwZWN0b3IgY29kZSwgc28gd2UgdXNlIHRo
ZSBsZXZlbCB0byBtYWtlIGRpZmZlcmVudCBwYWdlIGdyb3Vwcy4KICAgICB1bnNpZ25lZCBtX2xl
dmVsOwogICAgIAotICAgIElQQzo6QXR0YWNobWVudCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOwor
ICAgIElQQzo6QXR0YWNobWVudCBtX2luc3BlY3RvckNvbm5lY3Rpb25JZGVudGlmaWVyOworICAg
IElQQzo6QXR0YWNobWVudCBtX292ZXJsYXlDb25uZWN0aW9uSWRlbnRpZmllcjsKIAogICAgIEF0
dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlYjdmYTli
OTlkOGQ5MWQzNTY1ZjU4ZDFkZDVlYmE3YWI5ODM5NDdkLi5kOTUzNDExYWNjODM5MjZmNDBiNzIy
ZDRiODIwMzRiZGM2OTEwZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw2ICsyNCw3IEBACiAKIG1l
c3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKElQ
Qzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wg
dW5kZXJUZXN0KQorICAgIENyZWF0ZU92ZXJsYXlQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSWRlbnRpZmllcikKIAogICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KaW5kZXggNGNkZDdmYmVkYWZhNjhkNDYyYWE1OTEwMTc5M2U0MzgzMjI1OTgyYS4uYWYxYzYw
MTA5MmRjYzA5YmY4ZTVhOGE2YWM4ZGQ2NzY0NDYzY2IyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC01NTAsNiAr
NTUwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRl
SW5zcGVjdG9yUGFnZSgpCiAgICAgcmV0dXJuIGluc3BlY3RvclBhZ2U7CiB9CiAKK1dlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlT3ZlcmxheVBhZ2UoKQorewor
ICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bU9wZW4oKQogewogICAgIGlmIChtX2lzQXR0YWNoZWQpCkBAIC04NzksNiArODg0LDE3IEBAIFN0
cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSBjb25zdAogICAg
IHJldHVybiBbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXSBhYnNvbHV0ZVN0cmluZ107CiB9
CiAKK1N0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yT3ZlcmxheVVSTCgpIGNvbnN0
Cit7CisgICAgLy8gQ2FsbCB0aGUgc29mdCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0byBkbG9w
ZW4gaXQsIHRoZW4gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3b3JrLgor
ICAgIFdlYkluc3BlY3RvclVJTGlicmFyeSgpOworCisgICAgTlNTdHJpbmcgKnBhdGggPSBbW05T
QnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3RvclVJIl0g
cGF0aEZvclJlc291cmNlOkAiT3ZlcmxheSIgb2ZUeXBlOkAiaHRtbCJdOworICAgIEFTU0VSVChb
cGF0aCBsZW5ndGhdKTsKKworICAgIHJldHVybiBbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRo
XSBhYnNvbHV0ZVN0cmluZ107Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yQmFzZVVSTCgpIGNvbnN0CiB7CiAgICAgLy8gQ2FsbCB0aGUgc29mdCBsaW5rIGZyYW1ld29y
ayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlm
aWVyOl0gd2lsbCB3b3JrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ5OWI1ZDI5YjUzZjlhMmVkOWVmZjg4MWM3ZmUxMzVmNDAy
NDQzNDkuLmJjOWE1MzZlMWQyOGQwYmMwMTNjOTA5ZWZjYWVkYTg5MjQ5YTM0MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2
MDAsNiArMTYwMCw3IEBACiAJCUMwRTNBQTdBMTIwOUU4MzAwMEE0OUQwMSAvKiBNb2R1bGVDRi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUzQUE0
ODEyMDlFNDUwMDBBNDlEMDEgLyogTW9kdWxlQ0YuY3BwICovOyB9OwogCQlDMEUzQUE3QjEyMDlF
ODM1MDBBNDlEMDEgLyogTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMwRTNBQTQ1MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuY3BwICov
OyB9OwogCQlDMEUzQUE3QzEyMDlFODNDMDBBNDlEMDEgLyogTW9kdWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUzQUE0NDEyMDlFMkJBMDBBNDlE
MDEgLyogTW9kdWxlLmggKi87IH07CisJCUM0QjJCQTQ3MUE2RjRFQjkwMDkwMTJFRSAvKiBXZWJJ
bnNwZWN0b3JPdmVybGF5Lm1lc3NhZ2VzLmluIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNEIyQkE0NjFBNkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVj
dG9yT3ZlcmxheS5tZXNzYWdlcy5pbiAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3
IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24uaCAqLzsgfTsKIAkJQzUyMzdGNjAxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRv
ckNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi87
IH07CiAJCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1NkFGMThC
RUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLzsgfTsKQEAgLTM3NzcsNiAr
Mzc3OCw4IEBACiAJCUMwRTNBQTQ0MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMwRTNBQTQ1MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzBFM0FBNDgxMjA5RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUNGLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRCMkJBNDUxQTZGM0ZDNjAwOTAxMkVFIC8qIFdlYklu
c3BlY3Rvck92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5z
cGVjdG9yT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNEIyQkE0NjFB
NkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUyMzdGNUYx
MjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdLRm9ybUlu
cHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zvcm1JbnB1
dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5MjYsNiArNTkyOSw4IEBACiAJCQkJMUM4RTI4MUYx
Mjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8sCiAJCQkJMUM4RTI4MUUxMjc1
RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovLAogCQkJCTFDOEUyQTFDMTI3NzgzM0Yw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gKi8sCisJCQkJQzRCMkJBNDUxQTZG
M0ZDNjAwOTAxMkVFIC8qIFdlYkluc3BlY3Rvck92ZXJsYXkuaCAqLywKKwkJCQlDNEIyQkE0NjFB
NkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbiAqLywKIAkJ
CQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovLAogCQkJ
CTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovLAogCQkJCTFD
ODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLywK
QEAgLTg1OTksNiArODYwNCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlFMUQyNkE1MTE3NTk2NEQ3
MDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliIGluIFJlc291cmNlcyAqLywKIAkJCQlF
MTMzRkQ4QTE0MjNERDdGMDBGQzdCRkIgLyogV2ViS2l0LmljbnMgaW4gUmVzb3VyY2VzICovLAor
CQkJCUM0QjJCQTQ3MUE2RjRFQjkwMDkwMTJFRSAvKiBXZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3Nh
Z2VzLmluIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRl
eCA0ZDcyY2FjMzgyYWRlZTUzYzJjNGM1NWFhYzZkYjBmMWUzMzJjMGViLi42OTc0MTNhYzMxNzU4
OTNhNzY1Y2ZmZDlhNTk2MzY1YTE2MDhiZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCkBAIC0xMDMsNiArMTAzLDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zy
b250ZW5kVG9Gcm9udCgpCiAgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5nVG9Gcm9u
dCgpOwogfQogCitJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5JbnNwZWN0b3JPdmVybGF5KCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5jcmVh
dGVPdmVybGF5UGFnZSgpOworCisgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7Cit9CisK
IHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRSZXNpemVNYWluRnJhbWUoRnJhbWUqKQogewog
ICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5k
ZXggZGZjMDM4YWU4NTVjYTMzNzdmNDE1OGMwZmRlNTcyNzI5MjVlNmQ3Ni4uNjFmMjk5NDQ2NTNk
YzA4NzYxZWRmNDYxNmJhYjI0YmM4M2VmZGY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CkBAIC01Niw4ICs1NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9w
ZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJp
ZGU7CisgICAgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCogb3Blbkluc3BlY3Rvck92ZXJsYXko
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7CisgICAgCiAgICAgdm9p
ZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDYyYWZjYTE3MTAwMDE5ODM1YmY2MzU2
MGZjYmUxMzliZTdiYjljNzcuLjhjMmQ5NjY5OWI0ZWRkZmJkN2ZkOTExYWZiMDU3YzhlMWQ2MGVm
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yT3Zl
cmxheU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CkBAIC0xMDQsNiArMTA1LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmQoKQog
ICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9mcm9udGVuZENv
bm5lY3Rpb24gPSBudWxscHRyOwogCisgICAgbV9vdmVybGF5Q29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOworICAgIG1fb3ZlcmxheUNvbm5lY3Rpb24gPSBudWxscHRyOworCiAgICAgbV9hdHRhY2hl
ZCA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBmYWxzZTsKIH0KQEAgLTExMyw2
ICsxMTcsMzIgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0K
IAordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZU92ZXJsYXlQYWdlKCkKK3sKKyAgICBpZiAoIW1f
cGFnZSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgT1MoREFSV0lOKQorICAgIG1hY2hfcG9ydF90
IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisKKyAgICBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCk7
CisgICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25DbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQs
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQorICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoc29ja2V0UGFpci5zZXJ2ZXIpOworICAg
IElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChzb2NrZXRQYWlyLmNsaWVudCk7
CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuOworI2VuZGlmCisKKyAg
ICBtX292ZXJsYXlDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25u
ZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAg
ICBtX292ZXJsYXlDb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6Q3JlYXRlT3ZlcmxheVBhZ2UoY29ubmVjdGlvbkNsaWVudFBvcnQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKK30KKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBX
ZWJJbnNwZWN0b3I6OnNob3coKQogewpAQCAtMjI1LDYgKzI1NSwxMiBAQCBib29sIFdlYkluc3Bl
Y3Rvcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9PdmVybGF5
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX292ZXJsYXlDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JPdmVybGF5OjpTZW5kTWVzc2FnZVRvT3ZlcmxheShtZXNz
YWdlKSwgMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NF
UlZFUikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5k
ZXggMWYzOWIwMWIxNmY3YzcyYmM2YzBiYzQwNjVkN2VlMTllZDJjNGJmNS4uMDcyYTM2ZTYyOTVj
NDQzM2ViYTlkOGQ1MDZhMzczMjk5ZjllYjE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PdmVybGF5Q2hhbm5lbC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zOSw3ICs0MCwxMSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiwgcHVi
bGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsIHsKK2NsYXNzIFdlYkluc3BlY3RvcgorICAgIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPgorICAgICwgcHVibGlj
IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVs
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShX
ZWJQYWdlKik7CiAKQEAgLTQ3LDggKzUyLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRl
RG9ja2luZ0F2YWlsYWJpbGl0eSgpOwogCisgICAgLy8gSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKKyAgICAvLyBJbnNwZWN0b3I6Ok92ZXJsYXlD
aGFubmVsCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9PdmVybGF5KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CisKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQg
V2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCkBA
IC05NCw2ICsxMDMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVj
dG9yQ2xpZW50CiAgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KTsK
KyAgICB2b2lkIGNyZWF0ZU92ZXJsYXlQYWdlKCk7CiAKICAgICB2b2lkIGNsb3NlRnJvbnRlbmQo
KTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwpAQCAtMTAxLDYgKzExMSw3IEBAIHByaXZhdGU6
CiAgICAgV2ViUGFnZSogbV9wYWdlOwogCiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9m
cm9udGVuZENvbm5lY3Rpb247CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9vdmVybGF5
Q29ubmVjdGlvbjsKIAogICAgIGJvb2wgbV9hdHRhY2hlZDsKICAgICBib29sIG1fcHJldmlvdXND
YW5BdHRhY2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAxOWRiOWNlZWM3NjhiNTM3
MDFkMGY2ZGEyYmQ4YzhhYTljZTc1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMCwwICsxLDI3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JPdmVybGF5LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1ZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdEdsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0U3RhdGUuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8
V2ViSW5zcGVjdG9yT3ZlcmxheT4gV2ViSW5zcGVjdG9yT3ZlcmxheTo6Y3JlYXRlKFdlYlBhZ2Uq
IHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW5zcGVjdG9yT3ZlcmxheShw
YWdlKSk7Cit9CisKK1dlYkluc3BlY3Rvck92ZXJsYXk6OldlYkluc3BlY3Rvck92ZXJsYXkoV2Vi
UGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFdlYkluc3BlY3Rv
ck92ZXJsYXk6OmVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wg
dW5kZXJUZXN0KQoreworI2lmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBv
cnQoKSk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVu
dGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlmIChJUEM6OkNvbm5lY3Rpb246Omlk
ZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7
CisKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCh0aGlzKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24gPSBJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZp
ZXIsICp0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9w
ZW4oKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5Ojp3aW5kb3dPYmplY3RDbGVhcmVk
KCkKK3sKKyAgICBpZiAobV9mcm9udGVuZEhvc3QpCisgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5k
aXNjb25uZWN0Q2xpZW50KCk7CisKKyAgICBtX2Zyb250ZW5kSG9zdCA9IEluc3BlY3RvckZyb250
ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIG1fcGFnZS0+Y29yZVBhZ2UoKSk7CisgICAgU2NyaXB0R2xv
YmFsT2JqZWN0OjpzZXQoZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCks
IG1fcGFnZS0+Y29yZVBhZ2UoKSksIEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9yRnJvbnRlbmRIb3N0
IiksIG1fZnJvbnRlbmRIb3N0LmdldCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5
Ojpmcm9udGVuZExvYWRlZCgpCit7CisgICAgbV9mcm9udGVuZExvYWRlZCA9IHRydWU7CisKKyAg
ICBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworICAgIGJyaW5nVG9Gcm9udCgpOworfQor
Cit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5
KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPmNocm9t
ZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5KTsKKyAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoZnJhbWVSZWN0KTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpicmluZ1RvRnJvbnQoKQoreworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2xvc2VXaW5kb3coKQoreworICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX2Jh
Y2tlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIgPSAwOworICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
T3ZlcmxheTo6cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7CisgICAgc3dpdGNo
IChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6CisgICAgICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JPdmVybGF5OjpzZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIGNvbnN0IGNo
YXIqIHNpZGVTdHJpbmc7CisKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBjYXNlIERvY2tTaWRl
OjpVbmRvY2tlZDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJ1bmRvY2tlZCI7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIHNpZGVTdHJpbmcgPSAi
cmlnaHQiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKKyAg
ICAgICAgc2lkZVN0cmluZyA9ICJib3R0b20iOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBtX2RvY2tTaWRlID0gc2lkZTsKKworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxp
dGVyYWwoInNldERvY2tTaWRlIiksIEFTQ0lJTGl0ZXJhbChzaWRlU3RyaW5nKSk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWdu
ZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdp
bmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
IHdpZHRoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yT3ZlcmxheTo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBoZWlnaHQpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQoaGVpZ2h0KSwgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6
b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmIChtX2JhY2tlbmRDb25u
ZWN0aW9uKQorICAgICAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6Ok9wZW5Jbk5ld1RhYih1cmwpLCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JP
dmVybGF5OjpzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0
RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjphcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6aW5zcGVjdGVkVVJMQ2hhbmdl
ZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzaG93Q29uc29sZSgpCit7Cisg
ICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd0NvbnNvbGUiKSk7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd1Jlc291cmNlcygpCit7CisgICAgZXZh
bHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd1Jlc291cmNlcyIpKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoU3RyaW5n
IGZyYW1lSWRlbnRpZmllcikKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRl
cmFsKCJzaG93TWFpblJlc291cmNlRm9yRnJhbWUiKSwgZnJhbWVJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzdGFydFBhZ2VQcm9maWxpbmcoKQoreworICAgIGV2
YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldFRpbWVsaW5lUHJvZmlsaW5nRW5h
YmxlZCIpLCB0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzdG9wUGFnZVBy
b2ZpbGluZygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2V0
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIiksIGZhbHNlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JPdmVybGF5OjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGV2YWx1YXRlQ29t
bWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNhdmVkVVJMIiksIHVybCk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yT3ZlcmxheTo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGV2
YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoImFwcGVuZGVkVG9VUkwiKSwgdXJsKTsK
K30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChtYWtl
U3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaE1lc3NhZ2VBc3luYygiLCBtZXNz
YWdlLCAiKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fYmFja2VuZENvbm5l
Y3Rpb24pCisgICAgICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIDApOworfQorCit2b2lkIFdl
Ykluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNv
bW1hbmQsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCit7CisgICAgaWYgKGFyZ3VtZW50LmlzTnVs
bCgpKQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVj
dG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiXSkiKSk7CisgICAgZWxz
ZQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVjdG9y
RnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiLCBcIiIsIGFyZ3VtZW50LCAi
XCJdKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUNvbW1hbmRP
bkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KQoreworICAgIGV2YWx1
YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBBU0NJSUxpdGVyYWwoYXJndW1lbnQgPyAidHJ1ZSIg
OiAiZmFsc2UiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVFeHBy
ZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKK3sKKyAgICBpZiAobV9mcm9u
dGVuZExvYWRlZCkgeworICAgICAgICBBU1NFUlQobV9xdWV1ZS5pc0VtcHR5KCkpOworICAgICAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQo
ZXhwcmVzc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3F1ZXVlLmFwcGVu
ZChleHByZXNzaW9uKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZVBl
bmRpbmdFeHByZXNzaW9ucygpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRMb2FkZWQpOworCisg
ICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1ZXVlKQorICAgICAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoZXhwcmVz
c2lvbik7CisKKyAgICBtX3F1ZXVlLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkMTQ2ZTQ1ZGQxMjU0MWJkN2NjNzg2OWEzMjQ0MDY5OWQ1MTRmMWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3Zlcmxh
eS5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZlcnNp
dHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJJbnNwZWN0b3JPdmVybGF5X2gKKyNkZWZpbmUgV2ViSW5zcGVjdG9yT3ZlcmxheV9oCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZTsKKworY2xhc3MgV2ViSW5zcGVjdG9yT3ZlcmxheQorICAgIDogcHVibGljIElQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9yT3ZlcmxheT4g
Y3JlYXRlKFdlYlBhZ2UqKTsKKworICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2U7IH0KKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JP
dmVybGF5TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CisKKyAgICAvLyBDYWxs
ZWQgYnkgV2ViSW5zcGVjdG9yT3ZlcmxheSBtZXNzYWdlcworICAgIHZvaWQgZXN0YWJsaXNoQ29u
bmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGlu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCk7CisKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9PdmVybGF5KGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQKKy8qCisgICAgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBt
b3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgbG9j
YWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBicmluZ1RvRnJvbnQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2luZG93KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJl
cXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRh
Y2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFuZ2VBdHRh
Y2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9vbGJh
ckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG9wZW5Jbk5ld1RhYihjb25z
dCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGNhblNhdmUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcm
IGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykgb3ZlcnJpZGU7
CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyovCisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2Vi
SW5zcGVjdG9yT3ZlcmxheShXZWJQYWdlKik7CisKKy8qCisgICAgdm9pZCBldmFsdWF0ZUNvbW1h
bmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0g
U3RyaW5nKCkpOworICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0cmluZyYg
Y29tbWFuZCwgY29uc3QgQVNDSUlMaXRlcmFsJiBhcmd1bWVudCkgeyBldmFsdWF0ZUNvbW1hbmRP
bkxvYWQoY29tbWFuZCwgU3RyaW5nKGFyZ3VtZW50KSk7IH0KKyAgICB2b2lkIGV2YWx1YXRlQ29t
bWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpOworICAgIHZv
aWQgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7Cisg
ICAgdm9pZCBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworKi8KKyAgICBXZWJQYWdlKiBt
X3BhZ2U7CisKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2JhY2tlbmRDb25uZWN0aW9u
OworICAgIHVpbnQ2NF90IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CisKKy8qCisgICAgYm9v
bCBtX2Zyb250ZW5kTG9hZGVkOworICAgIERlcXVlPFN0cmluZz4gbV9xdWV1ZTsKKworICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OworCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgbXV0YWJsZSBTdHJpbmcgbV9sb2NhbGl6ZWRTdHJpbmdz
VVJMOworICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2FsaXplZFN0cmluZ3NVUkw7CisjZW5kaWYK
KyovCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JPdmVybGF5X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvck92
ZXJsYXkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThhYTc3OGVhMzQ3OGJkN2YwZGE2OTJlNTcy
NGYxMmU1ZGI1MTIxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3Rvck92ZXJs
YXkgeworICAgIEVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcikKKworICAgIFNlbmRN
ZXNzYWdlVG9PdmVybGF5KFN0cmluZyBtZXNzYWdlKQorfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245844</attachid>
            <date>2015-02-01 14:28:52 -0800</date>
            <delta_ts>2015-02-05 07:46:00 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-126923-20150201142901.patch</filename>
            <type>text/plain</type>
            <size>144267</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmE0ZDNjNjlkNzM2NDE2NGQ5NTY5MDJjOTBiZmE1MGUzMzgwOGIwLi42YzkwMGMzZWI5NzI0NWM0
MDA3NjIzYmQ3MGIzMWMwM2ZlNGY0NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNS0wMS0zMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBl
dmVudHMgb24gdGhlIGluc3BlY3RvciBwYWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvT3ZlcmxheUNoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Ok92ZXJsYXlD
aGFubmVsOjp+T3ZlcmxheUNoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50Lmg6CisKIDIwMTUtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW5hbWUgc2hhcmVkKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgdG8gc2lu
Z2xldG9uKCkgZm9yIHNpbmdsZXRvbiBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNhMzk2MDk1ZmFm
ZmY1OGRmODA1OTgyZDRhOWQ4ZTc5MDE1MGY0ZWMuLjY4YzE5NWExZTcwODRkOTRhMGIwN2RlMTMw
OTU2Y2UwNDgzY2ZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNS0wMS0zMCAg
QnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIElu
c3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBldmVudHMgb24gdGhlIGluc3BlY3RvciBw
YWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlDaGFubmVsLmg6IEFkZGVkLgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29u
bmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNo
b3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXlDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5Q2xpZW50Ojp+SW5zcGVjdG9yT3ZlcmxheUNsaWVudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JPdmVybGF5KToKKwogMjAxNS0wMS0zMCAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE3OTQwMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4ZDkwM2Y4MTBjY2M2Njdh
OTFjZjU5Zjg5OGVmZDUxNTg1ZmRjMDkuLjlmZjIwMDVkNThmN2Y0MWI2NmE0OGE1YzU1MDMxZGMz
ZmRlNzI3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE1
LTAxLTMwICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBvbiB0aGUgaW5z
cGVjdG9yIHBhZ2Ugb3ZlcmxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvT3ZlcmxheS5qczogQWRkZWQuCisgICAg
ICAgIChJbnNwZWN0b3JPdmVybGF5LmxvYWRlZCk6CisgICAgICAgIChkcmF3UGF1c2VkSW5EZWJ1
Z2dlck1lc3NhZ2UpOgorICAgICAgICAoX2RyYXdSZWdpb25OdW1iZXIpOgorICAgICAgICAocXVh
ZFRvUGF0aCk6CisgICAgICAgIChkcmF3T3V0bGluZWRRdWFkKToKKyAgICAgICAgKHBhdGhDb21t
YW5kKToKKyAgICAgICAgKGRyYXdQYXRoKToKKyAgICAgICAgKGRyYXdPdXRsaW5lZFF1YWRXaXRo
Q2xpcCk6CisgICAgICAgIChxdWFkRXF1YWxzKToKKyAgICAgICAgKGRyYXdHdXR0ZXIpOgorICAg
ICAgICAodXBkYXRlUGFpbnRSZWN0cyk6CisgICAgICAgIChyZXNldCk6CisgICAgICAgIChET01C
dWlsZGVyKToKKyAgICAgICAgKERPTUJ1aWxkZXIucHJvdG90eXBlLmFwcGVuZFRleHROb2RlKToK
KyAgICAgICAgKERPTUJ1aWxkZXIucHJvdG90eXBlLmFwcGVuZFNwYW4pOgorICAgICAgICAoRE9N
QnVpbGRlci5wcm90b3R5cGUuYXBwZW5kU3BhbklmTm90TnVsbCk6CisgICAgICAgIChET01CdWls
ZGVyLnByb3RvdHlwZS5hcHBlbmRQcm9wZXJ0eSk6CisgICAgICAgIChET01CdWlsZGVyLnByb3Rv
dHlwZS5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCk6CisgICAgICAgIChfdHJ1bmNhdGVTdHJpbmcp
OgorICAgICAgICAoX2NyZWF0ZUVsZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0VsZW1lbnRU
aXRsZSk6CisgICAgICAgIChfcXVhZE1pZFBvaW50KToKKyAgICAgICAgKF9kcmF3UmVnaW9uTGlu
ayk6CisgICAgICAgIChfZHJhd1JlZ2lvbnNIaWdobGlnaHQpOgorICAgICAgICAoX2RyYXdTaGFw
ZUhpZ2hsaWdodCk6CisgICAgICAgIChfZHJhd0ZyYWdtZW50SGlnaGxpZ2h0KToKKyAgICAgICAg
KHNob3dQYWdlSW5kaWNhdGlvbik6CisgICAgICAgIChoaWRlUGFnZUluZGljYXRpb24pOgorICAg
ICAgICAoZHJhd05vZGVIaWdobGlnaHQpOgorICAgICAgICAoZHJhd1F1YWRIaWdobGlnaHQpOgor
ICAgICAgICAoc2V0UGxhdGZvcm0pOgorICAgICAgICAoZGlzcGF0Y2gpOgorICAgICAgICAobG9n
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL092ZXJsYXkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9PdmVybGF5LmNzczogQWRkZWQuCisgICAgICAgIChib2R5
KToKKyAgICAgICAgKGJvZHkucGxhdGZvcm0tbWFjKToKKyAgICAgICAgKGJvZHkucGxhdGZvcm0t
d2luZG93cyk6CisgICAgICAgIChib2R5LnBsYXRmb3JtLWxpbnV4KToKKyAgICAgICAgKC5maWxs
KToKKyAgICAgICAgKC5pbmRpY2F0ZSk6CisgICAgICAgICguZGltbWVkKToKKyAgICAgICAgKC5t
ZXNzYWdlLWxpbmUpOgorICAgICAgICAoLm1lc3NhZ2UtYm94KToKKyAgICAgICAgKC5weCk6Cisg
ICAgICAgICguZWxlbWVudC10aXRsZS1jb250YWluZXIpOgorICAgICAgICAoLmVsZW1lbnQtdGl0
bGUpOgorICAgICAgICAoLnRhZy1uYW1lKToKKyAgICAgICAgKC5ub2RlLWlkKToKKyAgICAgICAg
KC5jbGFzcy1uYW1lKToKKyAgICAgICAgKC5jc3MtcHJvcGVydHkpOgorICAgICAgICAoI3JpZ2h0
LWd1dHRlcik6CisgICAgICAgICgjYm90dG9tLWd1dHRlcik6CisKIDIwMTUtMDEtMjkgIFNhYW0g
QmFyYXRpICA8c2FhbWJhcmF0aTFAZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEFsbG93IHRleHQgc2VsZWN0aW9uIHdoZW4gdGhlIEJhc2ljQmxvY2tBbm5vdGF0b3IgaXMgZW5h
YmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDEzZTkxMjViMTdkYjQ5YjhhMWI0YTNlNDA2NzIyM2Nl
ODUxZjI0MmIuLmJmMmYwYmZhZWJjZGEwYTY3ODk4MTY3ZmIzOGZlMDczZmNlMDhmODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wMS0zMCAgQnJpYW4gSi4gQnVyZyAg
PGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9y
dCBoYW5kbGluZyBtb3VzZSBldmVudHMgb24gdGhlIGluc3BlY3RvciBwYWdlIG92ZXJsYXkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjkyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5z
cGVjdG9yT3ZlcmxheSk6CisKIDIwMTUtMDEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW5hbWUgc2hhcmVkKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMg
dG8gc2luZ2xldG9uKCkgZm9yIHNpbmdsZXRvbiBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFhM2Nk
Yjk1Y2M1ZjJkZGY4NDY2ZGM5OWViMDRjOGZmNWZhM2UwZTIuLjNiZTNiNDYwMTFiOTg4ZGM1Mzdm
OGQzNTFiMWEzNWY2M2IzMjBkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxNS0w
MS0zMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAg
V2ViIEluc3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBldmVudHMgb24gdGhlIGluc3Bl
Y3RvciBwYWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
ZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmlzSW5z
cGVjdG9yT3ZlcmxheVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25PdmVybGF5UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlT3ZlcmxheVBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGVPdmVybGF5UGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVPdmVybGF5UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JPdmVybGF5VVJMKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JPdmVybGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3Nl
RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNyZWF0ZU92ZXJsYXlQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvT3Zlcmxh
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OldlYkluc3BlY3Rvck92ZXJsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5Ojplc3RhYmxpc2hDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6d2luZG93T2JqZWN0Q2xlYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmZyb250ZW5kTG9hZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6bW92ZVdpbmRvd0J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6YnJpbmdUb0Zyb250KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpyZXF1ZXN0U2V0RG9ja1NpZGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpzZXREb2NrU2lkZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2hhbmdlQXR0YWNoZWRXaW5k
b3dXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNldFRvb2xi
YXJIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpvcGVuSW5O
ZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpzYXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd1Jlc291cmNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnN0YXJ0UGFnZVByb2ZpbGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnN0b3BQYWdlUHJvZmlsaW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZGlkU2F2ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmRpZEFwcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVDb21tYW5kT25Mb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVFeHByZXNz
aW9uT25Mb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVh
dGVQZW5kaW5nRXhwcmVzc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JPdmVybGF5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JP
dmVybGF5OjpwYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
T3ZlcmxheS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluLgorCiAyMDE1LTAxLTMwICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNoYXJlZCgpIHN0YXRpYyBt
ZW1iZXIgZnVuY3Rpb25zIHRvIHNpbmdsZXRvbigpIGZvciBzaW5nbGV0b24gY2xhc3Nlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE3MWZkMmY5Mjk0YzFlZTk3OGE4MGUwMmYz
Yjg4N2MxM2VjMzMxZS4uMTA4ZThhNmZkNWE3N2IyZjg1ZmQzZmFlYTljMjgyNGFmYzliZTJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1ODEsNiArMTU4MSw3IEBACiAJCUM0
NzAzQ0Q1MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQ0ExOTI4NDRDQzAw
MTNGQkVBIC8qIGdlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzQ3MDNDRDYxOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRvci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM0NzAzQ0NCMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3IucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNG
QkVBIC8qIG1vZGVscy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM0NzAzQ0NDMTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRCMkJBNDQxQTZGMEEyQTAw
OTAxMkVFIC8qIE92ZXJsYXlDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNEIyQkE0MzFBNkYwQTJBMDA5MDEyRUUgLyogT3ZlcmxheUNoYW5u
ZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
NEY0QjZGMzFBMDVDOTQ0MDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY0QjZDRjFBMDVD
NzZGMDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzRGNEI2RjQxQTA1Qzk0NDAwNUNB
Qjc2IC8qIGNwcF9nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNEY0QjZEMDFBMDVDNzZGMDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvci5w
eSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNEY0
QjZGNTFBMDVDOTg0MDA1Q0FCNzYgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM0RjRCNkQ3MUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5
cGVzX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zMjY1LDYgKzMyNjYsNyBAQAogCQlDNDcwM0NDQTE5Mjg0NENDMDAx
M0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGdlbmVyYXRvcl90ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM0NzAzQ0NCMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3IucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0b3IucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM0NzAzQ0NDMTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBtb2RlbHMucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0QjJCQTQzMUE2RjBBMkEwMDkwMTJFRSAvKiBPdmVybGF5
Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGF5Q2hhbm5l
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNEY0QjZDRjFBMDVDNzZGMDA1Q0FC
NzYgLyogY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
eXRob247IHBhdGggPSBjcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzRGNEI2RDAxQTA1Qzc2RjAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3Iu
cHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBjcHBfZ2VuZXJhdG9yLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNEY0QjZEMTFBMDVDNzZGMDA1Q0FCNzYg
LyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNTgsNiArNTI2MCw3
IEBACiAJCQkJQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oICovLAogCQkJCUE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuY3BwICovLAogCQkJCUE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLywKKwkJCQlDNEIyQkE0MzFBNkYwQTJB
MDA5MDEyRUUgLyogT3ZlcmxheUNoYW5uZWwuaCAqLywKIAkJCQlBNUZEMDA2NTE4OUFGRTlDMDA2
MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCAqLywKIAkJCQlBNUZEMDA2NjE4OUFGRTlDMDA2
MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggKi8sCiAJCQkJQTUwM0ZBMUYxODhFRkY2ODAwMTEw
RjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLywKQEAgLTU3NzksNiArNTc4Miw3IEBACiAJCQkJ
MTQyRTMxMzQxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzI4MzE5MDAxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMjgzMTkwMjE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDNEIyQkE0NDFBNkYwQTJBMDA5MDEyRUUgLyogT3ZlcmxheUNoYW5u
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5k
bGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5IC8q
IFR5cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxMzYxMzRGRjBBNjAw
QUZBREI1IC8qIEhhbmRsZVNldC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCA2MzlkMDQ4
YjI3YWVmOTdlZDNmYzJkMmUwODhmNWViNjMzMDlhNWE2Li41N2U3M2UzYzdhM2U3MTE4OGVhNjZj
MjE1MDRlNGM3YmE2MDhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgT3ZlcmxheUNoYW5uZWw7CiAKIGVudW0g
Y2xhc3MgSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiB7CiAgICAgSW5zcGVjdGVkVGFyZ2V0RGVz
dHJveWVkLApAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZG9tYWluTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3Zlcmxh
eUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbiByZWFzb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDQwMTA4ZWI0OWI0ZTliZGQ0ODMzZjVhOGZhZDM1Mzdl
YmJkYmFiNGMuLjE4N2RkNjZkMTJlZjNiZmQxMmM3NTFhMzQ4MjliMTMwYWMzYWFjMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIHZvaWQgSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRC
YXNlCiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlD
aGFubmVsKiBvdmVybGF5Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6
ZSgpOyBpKyspCi0gICAgICAgIG1fYWdlbnRzW2ldLT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoZnJvbnRlbmRDaGFubmVsLCBiYWNrZW5kRGlzcGF0Y2hlcik7CisgICAgICAgIG1fYWdlbnRz
W2ldLT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBvdmVybGF5
Q2hhbm5lbCwgYmFja2VuZERpc3BhdGNoZXIpOwogfQogCiB2b2lkIEluc3BlY3RvckFnZW50UmVn
aXN0cnk6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24gcmVhc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuaAppbmRleCA4Yjc3NTdmOGNhNTViOTIzM2Y1ZWRj
Y2M4YzNiYjI5ZjdkZjY2Y2VlLi5hOWNhNTc0NTMwY2UyMTQwMmQ1ODFmMWYyODM2YTA3ZDBkMDZk
MWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50UmVnaXN0cnkuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIGNsYXNzIEluc3BlY3RvckFnZW50QmFzZTsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgT3Zlcmxh
eUNoYW5uZWw7CiBlbnVtIGNsYXNzIEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb247CiAKIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50UmVnaXN0cnkgewpAQCAtNDMsNyArNDQs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
QWdlbnRCYXNlPik7CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOworICAg
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopOwogICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbiByZWFzb24pOwogICAgIHZvaWQgZGlzY2FyZEFnZW50cygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNjU1M2Q1NmFjZmViNjU5
NjMwMmFlZjYzYzYxY2E0NWZhOWMyNTVhMC4uNjc3YWZlYTYxYTA0MjRmNTU1YWNmNGJhY2IwYTE3
MTIxZWMyNGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsCiAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5uZWw7CiAgICAgbV9pbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRl
bmRDaGFubmVsKTsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChm
cm9udGVuZENoYW5uZWwsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAg
IG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG51
bGxwdHIsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgbV9pbnNwZWN0b3JBZ2VudC0+
YWN0aXZhdGVFeHRyYURvbWFpbnMobV9hZ2VudHMuZXh0cmFEb21haW5zKCkpOwpAQCAtMjMyLDcg
KzIzMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRF
eHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0CiAgICAgU3RyaW5nIGRvbWFpbk5hbWUg
PSBhZ2VudC0+ZG9tYWluTmFtZSgpOwogCiAgICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKQotICAgICAgICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsK
KyAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCwgbnVsbHB0ciwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KSk7CiAKICAgICBtX2FnZW50cy5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhZ2VudCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL092ZXJsYXlDaGFu
bmVsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL092ZXJsYXlDaGFubmVsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODBhMTkwZTYyNDFhYzA3MDdjMzdmOGY3YzBmNjRlZWI4YThhYzkyNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvT3ZlcmxheUNo
YW5uZWwuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYg
T3ZlcmxheUNoYW5uZWxfaAorI2RlZmluZSBPdmVybGF5Q2hhbm5lbF9oCisKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIE92
ZXJsYXlDaGFubmVsIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5PdmVybGF5Q2hhbm5lbCgpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvT3ZlcmxheShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8g
IWRlZmluZWQoT3ZlcmxheUNoYW5uZWxfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBlNjJlYzJl
YzA0YjBhOGIzYjZhY2FmMjEwZDk4ODY4N2VmZTQxOGEwLi40YmJmY2VjM2E3M2UyMDJlZDg4Zjlh
MjI1M2IzNmE1ZjVlMTBmYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IEluc3BlY3RvckFnZW50Ojp+SW5zcGVjdG9yQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3Rv
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
OjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCmluZGV4
IDM4YzllZWYyNzczMWE2OGRmMDA4OTVhNzVkNzVlNmY1ODViMWQzNGMuLjgzYjVjODYyMjVlOTJj
ZGY2ZmI2MzFhYzg4ODAxMDY4NDE5OWI1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQWdlbnQoSW5zcGVjdG9yRW52aXJvbm1lbnQmKTsK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCmluZGV4IDA1MDUxMTkzMTdlM2EyMTRkYjg4OTFlOTkyN2I3NmQxNzQyNTdhZmUuLjAyNGFk
OWMyODk1Y2YyMTQyYjIwZmU0NmMxNGU3NTFlMzU3MmZhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6On5J
bnNwZWN0b3JDb25zb2xlQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
Q29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCA3MjYyYzA3NWFkMjAyMTIxYjUzYzBi
NWI2MzgyYWJmOGFjMTZmZjFkLi4yZDcxYjlkOWNhYTFjZmNlOTQwMzliOGMyYTdiMTE3NTI3YzJk
NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciopOwog
ICAgIHZpcnR1YWwgfkluc3BlY3RvckNvbnNvbGVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCAzYWU3NjA5Y2FlMjBiN2FmMGFmMzYzNzM2OWI3ZjQyYzc0ODJmZDIwLi5kZGRl
MTA3OGMyMjRiOWZkYjIzODM5OTU4NWViNGRiMDA3ZWM2MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
Ojp+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRlYnVnZ2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggOWJlMzIzMzE1MTA5NDU1ODc4YjAxYzM0YjA2MThjNTYz
ODE0NDUyYy4uMTVjOTFjZWYwYTU2ZWRhZDEyZjU0NWYzZTYzYjZlOTRjMzc0MWQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5jcHAKaW5kZXggZGM0NGNjN2ZmNjEyMTFiNjc3MjZiMzBjYmI0ZjRhMGNiMzg4MTdm
MS4uMGE5ZDgwMTI4YzYyNGU1ZTkyZWNmNTBhYWQ2M2MxZWEwZWJhYTVjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbgogewogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKK3ZvaWQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50LmgKaW5kZXggYzY1MDY4ZTY4OWVjNDUzYTNjMjU0M2E2ZjhkNDg1
N2VlMDhjZjc5Ny4uMDMzYTI3MGJmYjhlNzk4MzQxYTEzYmUwZmI3MmIzMTg5MDNjYTEwMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvclJ1
bnRpbWVBZ2VudCB7CiBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBK
U0M6OlZNJiBnbG9iYWxWTSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eUNoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTkyMmRjMjRjMGU3NjdiNjE2NTA5NTk2YTNhMGQ5ODBl
ODczOGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlDaGFubmVsLmgKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX092ZXJsYXlDaGFubmVsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
T3ZlcmxheUNoYW5uZWxfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL092ZXJsYXlDaGFubmVs
Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA4YmVjODJhNjY2MGFmOTk3NzA5Njg5MjU2MzBkY2Y4ZjZkMmY5MzYy
Li4wMzg3ZGY1ZjVmN2Y4ODYwZDY4MjNiMzM2NmE0MzA0ZDhmZDU2NzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTYwLDYg
KzU1NjAsNyBAQAogCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
Y3BwICovOyB9OwogCQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzQwMEQx
MDkxOEYxQzhGNjAwOTBEODYzIC8qIEV2ZW50TG9vcElucHV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0MDBEMTA4MThGMUM4RjYwMDkwRDg2MyAv
KiBFdmVudExvb3BJbnB1dC5jcHAgKi87IH07CisJCUM0QjJCQTQ5MUE2RjUyNEYwMDkwMTJFRSAv
KiBJbnNwZWN0b3JPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNEIyQkE0ODFBNkY1MjRGMDA5MDEyRUUgLyogSW5zcGVjdG9yT3Zl
cmxheUNsaWVudC5oICovOyB9OwogCQlDNENENjI5QTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCAq
LzsgfTsKIAkJQzRDRDYyOUIxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5OTE4
MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQg
LyogU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzUwRDBFODEwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMw
MTIsNiArMTMwMTMsNyBAQAogCQlDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0U2
MUM2NTNBNjQ4MDdBODNFNzZGQjggLyogTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0MDBEMTA4MThGMUM4RjYwMDkwRDg2MyAv
KiBFdmVudExvb3BJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFdmVudExvb3BJbnB1dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0QjJC
QTQ4MUE2RjUyNEYwMDkwMTJFRSAvKiBJbnNwZWN0b3JPdmVybGF5Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1l
U25hcHNob3R0aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZy
YW1lU25hcHNob3R0aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRDRDYy
OTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25hcHNob3R0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1MEQwRTgxMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VOYW1lc3BhY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Mjg0LDYgKzE1Mjg2LDcgQEAKIAkJCQk1
MDRBQUNDQzE4MzQ0NTU5MDBFM0Q5QkMgLyogSW5zcGVjdG9yTm9kZUZpbmRlci5oICovLAogCQkJ
CTdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLywKIAkJ
CQk3QzUyMkQ0QTE1QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5oICovLAorCQkJ
CUM0QjJCQTQ4MUE2RjUyNEYwMDkwMTJFRSAvKiBJbnNwZWN0b3JPdmVybGF5Q2xpZW50LmggKi8s
CiAJCQkJQTUxODIyNTQxN0UyQTBENDAwQTlCQTFEIC8qIEluc3BlY3Rvck92ZXJsYXlQYWdlLmNz
cyAqLywKIAkJCQk3QTcyNTZCOTE1RUI5RjVCMDA3MzIzQTcgLyogSW5zcGVjdG9yT3ZlcmxheVBh
Z2UuaHRtbCAqLywKIAkJCQlBNTE4MjI1NTE3RTJBMEQ0MDBBOUJBMUQgLyogSW5zcGVjdG9yT3Zl
cmxheVBhZ2UuanMgKi8sCkBAIC0yNDk1Nyw2ICsyNDk2MCw3IEBACiAJCQkJMUFFMkFCMjIwQTFD
RTYzQjAwQjQyQjI1IC8qIEpTSFRNTExhYmVsRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFMkFCMjQwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBRTJBQjI2MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUM0QjJCQTQ5MUE2RjUyNEYwMDkwMTJFRSAvKiBJbnNwZWN0
b3JPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0IwRDBBMTlENjA2MDA3
RkI4QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjI4
MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNYXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzQ5MUI3OTBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNzA0Y2Q5ODRlYThkMzhlZjBm
MWM1ZWUyOTBkYzUzODZhOGI1ZjBjLi4xNDAwNzVjNDljZTdiNGU4MDg2ZmZhNjQxMDdiMzU5OTdl
YTEzNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDksNyArNDksNyBAQCBJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbgogewogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDBi
ODEzMzVmNTFjZTBhNmM4ZjUwYjZjZDM3NDRhZDY3ZTAzYzkzM2QuLmRjODI4ZTJkODc3YTBjZWE2
NDFmOTEyMzk1OWUxOWIzNzQwODM0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAppbmRleCBkZTExN2MxMGJhNGYzNDRiYzczMWExZDlmNDc5MDEwZDhkODU5
MGJjLi4zZDY4ZGFiNjY4YzQ0YzJmODIzN2JjYjI4YTM2NThiMmFkZTdhZTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTM1MSw3ICsz
NTEsNyBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNl
dCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3Zl
cmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oCmluZGV4IDg4NjY0Yzg5NjBlM2ZjYmZmYzI4NmJjYzU5Zjk0MjFiZWJlNTBh
YzMuLjEwYmZkNTRmMmZhYjQ3OThjMzlhYmFjMGRlNWJmZDE2MjVmYWQwN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBDU1NTdHlsZVJ1bGUqIGFzQ1NTU3R5bGVSdWxlKENTU1J1
bGUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCBlZTdkOGZhYzQ2NWQxZTVjZWRlMjBlMmMxOGVk
ZTVkNWY4MTA2MTFlLi5jMjAyNDI3MTVkMzk0MTUxNTg0NDA2ODRmOGNlMWZlMDk3ZGQ5MDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC0zMiw2ICsz
MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KIAorbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBPdmVybGF5Q2hhbm5lbDsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC00Niw4ICs1MCwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpID0gMDsKIAog
ICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoSW5zcGVjdG9yQ29udHJvbGxlciopID0gMDsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6T3Zl
cmxheUNoYW5uZWwqIG9wZW5JbnNwZWN0b3JPdmVybGF5KCkgPSAwOworCiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJyaW5n
RnJvbnRlbmRUb0Zyb250KCkgPSAwOworICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVN
YWluRnJhbWUoRnJhbWUqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggNzJmMjk0NjhjZWFkYjRlZDc1ZjNkZDZhZTMzODc4Yjk0M2M0ZWEzMC4uMDAzZmMyMmNm
Mzg5YjRjOWJlZTU1NWJlNTM2NDZhNmUwMGRlMzIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjQxLDEwICsyNDEsMTIgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW4KIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0g
aXNBdXRvbWF0aWNJbnNwZWN0aW9uOwogCisgICAgCiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwgPSBmcm9udGVuZENoYW5uZWw7CiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsK
KyAgICBtX292ZXJsYXlDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JP
dmVybGF5KCk7CiAKLSAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJv
bnRlbmRDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBt
X2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBtX292
ZXJsYXlDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKCpt
X2luc3RydW1lbnRpbmdBZ2VudHMpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJv
bnRlbmRDcmVhdGVkKCk7CkBAIC0yNjUsNiArMjY3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24p
CiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJGcm9udGVuZCgpOwogICAg
IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKICAgICBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CisgICAgbV9vdmVybGF5Q2hhbm5lbCA9IG51bGxwdHI7
CiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwogCkBAIC0yODYsMTMgKzI4
OSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQogICAgIGlmICghZW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwpCisgICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7CiAgICAgICAgIG1faW5z
cGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwotICAgIGVsc2UgewotICAgICAg
ICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3Bl
Y3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKSB7Ci0gICAgICAgICAgICBi
b29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNlOwotICAgICAgICAgICAgY29ubmVjdEZy
b250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKLSAgICAgICAg
fQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JG
cm9udGVuZCh0aGlzKSkgeworICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZh
bHNlOworICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsLCBpc0F1dG9tYXRp
Y0luc3BlY3Rpb24pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYjI2NDIyYjc3NTNlMGM0MjZmNTA5OTUxNTZjZGYw
M2Q1NDlmM2UyMS4uZDhjMjFjOTc1MzI1YjdhMGI3ZTAyZjQyMDIwZGU3Nzg1Zjc1NjM3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00
Niw2ICs0Niw3IEBAIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CitjbGFzcyBPdmVybGF5Q2hhbm5lbDsKIAogbmFtZXNwYWNlIFByb3RvY29s
IHsKIG5hbWVzcGFjZSBPdmVybGF5VHlwZXMgewpAQCAtMTU0LDYgKzE1NSw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9p
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgSW5zcGVjdG9yOjpP
dmVybGF5Q2hhbm5lbCogbV9vdmVybGF5Q2hhbm5lbDsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+
IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JD
bGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTdlYjY4MTgxOTEwMzM4NGY1MGYxZmUyMjU5ZTAw
MmRjNjMyOWM4Yy4uNWQ2ODgyMDYyMmJiYjYzODBkM2FmNmFiODA2MzRkNjFkOGJjYjc3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0y
MjEsNyArMjIxLDcgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAg
ICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
OjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yRE9NRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKaW5kZXggZjgzOTc5MmJiMjVjOWE1YjM3ZjcwNTQ3MmZjNDY4YTM3
MTYxNjAxOC4uODliYTkzMmI2YTBhZDhhZmMzOTI2ZmE1NmZmMGI0MWNlZjg0YzBiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEwOSw3ICsx
MDksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvRXJyb3JTdHJpbmcoY29uc3Qg
RXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IDNkMGJiYWM1NjFiOGViMTQ0NzQ3MjgyZTA4ODRkNzA0YTViY2NiMjcuLjk0NTI4
MjVlMzUxM2QzZWMxOWJjZjE4NDc3YTA1OWRlNWJmOWFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEw
Miw3ICsxMDIsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQog
ICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXgg
NDY2ZjAzZTU3MWNmODY3MDQzZGJjYjViZTg0YjY1ZmFjN2RhZDM5MS4uOWIzMzMzOTI3MmQ4OThj
YTY1NDc0ODU4OGU5YjBiYjM5OTliNDFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC03OCw3ICs3OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBj
b25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cyk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBmYjA4OWEzOGY4MzIyNmQ1
OWNlNTI4NmZiZTBhNTI4OGI5MDU3OTE4Li5kNDc0YzQxMDZkYTllMWE5OTA4NjY0MWY1YmY1OTUx
MzA4YzM2MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6On5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cyA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmgKaW5kZXggMzYxYjYxM2NjMWQ3NTdkNDQ2NmRmMjg5ZjdlOTZmYWVkMGEyYWM1
ZC4uOTE5YWVmNjMwZjZmYWM4OTk1NzZmNDNiODEzY2MyOWQwMzQwYjg1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwCmluZGV4IDQ0ZGFhODY1NzY3ZTNjYjcyNGRhOTc0YTAyOGNiOWRlMjZkZjgyNTMuLjhkMDQy
OThmZGZiMDhiMDhiMzJmZTE0NDZlNDVkMTc2MWYwMzQ4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIyMiw3ICsy
MjIsNyBAQCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgp
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KG51
bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
Cit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFu
bmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDJlODY4
OTc1ZjE2ZmNiMTY3OGRiZGIzZGFjZjIxZTE3Y2VkMThjY2UuLmY2MDU4YzM0MGYxMjY2Y2ZjMGQ3
M2RhMDk0ZTY0MzMzYjJiN2U3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJj
ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCmluZGV4IDdhNjQ5NWYxMzQ0MTc2ZjQxMTQ4MTExYWE0YTA2ZWE2Zjg0M2Jk
OWUuLjVmNzFhYjNlZTIyOThlYTI0ZmM1MDM1NjJiYWVhZDRlNzMxYTFiN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApA
QCAtNTc1LDcgKzU3NSw3IEBAIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp+SW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggNzcyMGIz
YTlhYWVjOTlkYjIwN2U5YzkzNDQ5NWM2OWY1NzdmMTMyMS4uYTQwNmRlYjU2OTg3MmU1YjI4ZGFl
NWYwYTBiZjQzZWMxZDkxN2IwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IEluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1
YWwgfkluc3BlY3RvckluZGV4ZWREQkFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250
LWVuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCmluZGV4IGM1OTAyYmE3NzdiMDM2MGUxMDFiN2E1ZjAxZWJhMjgyODU1NmMz
OWEuLmExNGY3MjQ2YTMyMmQ5ZDc0MDJkNmFiYWI3YTA3ODEwMGVlMTU4NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApA
QCAtNTYsNyArNTYsNyBAQCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fkluc3BlY3RvckxheWVy
VHJlZUFnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oCmluZGV4IDE2NmU5YTYxOGYxNWMzNTFhMDkyYTJmMGFjZmMzZDQwM2EwYjdj
Y2EuLjUzMWM4ZDRjYzYyZGNmODVmYmRmNGI3Y2E0Mzk5OGQzMWVhNWRlMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZXNldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXlDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjQ5YTRmZjM2ZjFiMjZjNTA0
MmZiMzkwNjVkODk2NzM5MDgxOTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlDbGllbnQuaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JPdmVybGF5Q2xpZW50X2gK
KyNkZWZpbmUgSW5zcGVjdG9yT3ZlcmxheUNsaWVudF9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3Rvck92ZXJsYXlDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3Rvck92ZXJsYXlDbGllbnQoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBvdmVybGF5TG9hZGVkKCkgPSAwOworCisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGY5MWY3ZWVhMWY1
MmRlMzMyYWFjOGNhMjk5ZDdhZDg4NWU1YTQyZWUuLjBlODJiYzJiMDk2YWY0M2I5ODE5ZmVkNDQz
MmE1ODYwZmMyM2RjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgSW5zcGVjdG9yUGFnZUFnZW50OjpJ
bnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6
T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvclBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiZmQ1Nzc1MTc3MGNlNzYwYmQ3Y2NkMzg5YWEyYmNk
ZDU0MDU3ZTE4Li4zNGJiM2NiOGIxMjJkOGZiOTg4ZTc0ZWNjNGQyYTkwODhlYmY0YmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xMzks
NyArMTM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpOwogCiAgICAgLy8gSW5zcGVjdG9yIENvbnRyb2xsZXIgQVBJCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
Y3BwCmluZGV4IDZlY2Q3YzBmYmVmYjUyZDYwYmViMTJlZDFiYzIyOWIwOWYwZmY5ZGYuLjZkYTcy
YWI2YTVhNmYxYzYyOGQ2MDczM2I3MTU4OGQ1NTQ0ZmQ2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcApAQCAtMTY3LDcgKzE2Nyw3
IEBAIFdlYkNvcmU6OlNlc3Npb25TdGF0ZSBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c2Vzc2lvblN0
YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5zZXNzaW9u
U3RhdGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwq
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJlcGxheUZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yUmVwbGF5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXBsYXlBZ2VudC5oCmluZGV4IDM2MzJjNGY0MTNlNGNmMmQwYzM0OWUyZmMyZTIzN2I1MWQwYzEy
MzUuLmY5YTBkY2M1NWM0M2FjZDYwNDViMmMxNzc3MjMyY2RmZTZkYTA5YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JSZXBsYXlBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVwbGF5
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IGIzOWRjNGI4YmJkMjUzZjliMzRjMjg0OTc2NjU0MzdlODY4OTE3ODIuLjE3MTg3NDZkMzAx
MDAxMDQxNGExYTBiZDI1M2Q2MjFhNjQ4NDQyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBA
QCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogewogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuaAppbmRleCBlODQ2NTkxYjFkNGY1MjkxMjMwMjdjMGNhYTVjNjc3OTU5N2QzZDE1Li40
YTQxMDY4YmQzODYwODFmOTljZmQ3NmM0NTUxMGIyODFiNmE3ZDMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCopOwogICAgIHZpcnR1
YWwgfkluc3BlY3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24gY2FsbGJhY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDgwZGIxOWQzNDk2M2ZiYWYzODYzNGIwOTMxN2VkYTI2
MTQzYTU4YjUuLmU4MjViNjhiNWRhMmRhNWM0MjA0OGQwMjc0NTU2NmVkODlmNmZhMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yVGltZWxp
bmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmlu
ZGV4IGVhNDQ4NWIzMmQzMmNkNjNhNzllMmFmYTNmZjc4NWZkMWFkOWM2MzQuLjEyZTQwMzFlNjM3
OWE0NzljNWZjZWViMTcwODA5MDg4MjRmNjUyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1
YmxpYzoKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JUeXBlLCBJbnNwZWN0b3JDbGllbnQqKTsKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCA9IG51bGxwdHIpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHAKaW5kZXggM2JiMTQwM2ViMGJlNjc1Zjk4OTQyZTQwYzg5ZTU1MjlhNDdiMDE3Mi4u
YWNiOTM0Yjc3NDU3NWFjZDBkMTExYTA0OTExYmRiNmMwMWFkYmFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0xMTQsNyAr
MTE0LDcgQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudChudWxscHRy
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6
Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCA2ODY5ZDVhNjgwNGY3Mjk4MGIwNjcy
YjA5YjZjYTNjYjg4MDJmYWZiLi5lOWE5MGFkZGE4MDRiMWJjMTEwMmY3Mzk3YTY5NTZiNjZjOTAw
OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdG9yV29y
a2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHZpcnR1YWwgfkluc3BlY3Rvcldv
cmtlckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92
ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggN2E3
Yjc2MjQyNTlmYmNiNjI2OWYxMjVlOTZhZTVlMmE2ZDZiZTY1NC4uZDFhYWViMmFjMGNkZWViOTAy
Yjk2YzViYTUyYzk2NDY3YjliODJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmNwcApAQCAtNTksNyArNTksNyBAQCBQYWdlUnVudGltZUFnZW50OjpQ
YWdlUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLAogewogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92
ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCBmODJjZmMwMTBjNzI2OTIzY2QzOTNjOTZiODAzM2Zm
OTcyODkzODhiLi4yYTU0YjQ1MDFkMDEzZTE5NTg2MzFkYjBiOTkxOGZmZTc1MzZiYjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgIFBhZ2VSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXIqLCBQYWdlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+
UGFnZVJ1bnRpbWVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcAppbmRleCA3NzdjZjcyMzNhZDcyZTQyNmYxOGI0ODBmZmJlN2QyOThkMTRl
Y2VjLi45YTUyMzIzOTFjNjI1YzJjN2I4NTJlY2U1Yjk3YWVhZDdkZDUxNGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpj
b25uZWN0RnJvbnRlbmQoKQogICAgIEFTU0VSVCghbV9mcm9udGVuZENoYW5uZWwpOwogICAgIG1f
ZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlSW5zcGVjdG9yUHJveHk+KG1f
d29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKLSAgICBt
X2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0
KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbnVsbHB0ciwgbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRl
eCA3NjkwNDllMzIyZjVhNjU5OTQzYWE2NzBiMDJiZDkyNTMyZDNiNzhjLi4zZWIzMjYyNmI4NDRk
YTYxMmJkNDMxZDI4YzEzZGVmNTJmMjk5ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYQogewogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA4MTRjNjZkNmJjOWQ0NjE4MzE5MTRhOWJmYjQx
ZTI4ODJlMWMwZDM3Li43MTI4MWJmYTBkMjI4OTM1MzU1NWRlMDJjMjg2OThiZWUyMDlmZTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBXb3JrZXJHbG9iYWxTY29wZSopOwogICAgIHZpcnR1YWwg
fldvcmtlclJ1bnRpbWVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBkY2MzNGRk
YzNmMTU5ZTYyOGQ2NTc5ZmE0NGYzZjBhNjFjOWFmNDNhLi5iNjQ2ZDRkMWJjMzcxOGJiMDgwNGVj
NzU2MDJkMmZkM2IyYzExODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBA
IC01OTQsNyArNTk0LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRl
c3Ryb3llZCgpIG92ZXJyaWRlIHsgfQogICAgIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVs
KiBvcGVuSW5zcGVjdG9yT3ZlcmxheSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGUgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT3ZlcmxheS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT3ZlcmxheS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNjAwODRjMTQyY2FkZGExNmRjNTgyYjQ4NzNlYTBhNTc1N2YxYTkxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9PdmVybGF5
LmpzCkBAIC0wLDAgKzEsNTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworSW5zcGVjdG9yT3ZlcmxheSA9IHt9Owor
CitJbnNwZWN0b3JPdmVybGF5LmxvYWRlZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb2N1bWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiSEVMTyBXT1JMRCIpKTsKK30KKwor
Y29uc3QgbGlnaHRHcmlkQ29sb3IgPSAicmdiYSgwLDAsMCwwLjIpIjsKK2NvbnN0IGRhcmtHcmlk
Q29sb3IgPSAicmdiYSgwLDAsMCwwLjUpIjsKK2NvbnN0IHRyYW5zcGFyZW50Q29sb3IgPSAicmdi
YSgwLCAwLCAwLCAwKSI7Citjb25zdCBncmlkQmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LCAy
NTUsIDI1NSwgMC42KSI7CisKKy8vIENTUyBSZWdpb25zIGhpZ2hsaWdodCBjb2xvcnMuCitjb25z
dCBoaWdobGlnaHRlZFJlZ2lvbkJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDEyNywgMjExLCAyNDgs
IDAuMSkiOworY29uc3QgcmVnaW9uQmFja2dyb3VuZENvbG9yID0gInJnYmEoMTI3LCAyMTEsIDI0
OCwgMC40NSkiOworY29uc3QgcmVnaW9uU3Ryb2tlQ29sb3IgPSAicmdiYSg5OCwgMjA3LCAyNTUs
IDAuODUpIjsKKworLy8gQ1NTIFJlZ2lvbnMgY2hhaW4gaGlnaGxpZ2h0IGNvbG9ycy4KK2NvbnN0
IHJlZ2lvbkxpbmtCb3hCYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcx
KSI7Citjb25zdCByZWdpb25MaW5rQm94U3Ryb2tlQ29sb3IgPSAicmdiYSg5OCwgMjA3LCAyNTUs
IDAuODUpIjsKK2NvbnN0IHJlZ2lvbkNoYWluU3Ryb2tlQ29sb3IgPSAicmdiYSg5OCwgMjA3LCAy
NTUsIDAuODUpIjsKKworLy8gQ1NTIFJlZ2lvbiBudW1iZXIgc3R5bGUuCitjb25zdCByZWdpb25O
dW1iZXJGb250ID0gImJvbGQgNDBwdCBzYW5zLXNlcmlmIjsKK2NvbnN0IHJlZ2lvbk51bWJlckZp
bGxDb2xvciA9ICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkiOworY29uc3QgcmVnaW9uTnVtYmVy
U3Ryb2tlQ29sb3IgPSAicmdiKDYxLCAxMjcsIDIwNCkiOworCisvLyBDU1MgU2hhcGVzIGhpZ2hs
aWdodCBjb2xvcnMKK2NvbnN0IHNoYXBlSGlnaGxpZ2h0Q29sb3IgPSAicmdiYSg5NiwgODIsIDEy
NywgMC44KSI7Citjb25zdCBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9yID0gInJnYmEoOTYsIDgy
LCAxMjcsIDAuNikiOworCitjb25zdCBwYWludFJlY3RGaWxsQ29sb3IgPSAicmdiYSgyNTUsIDAs
IDAsIDAuNSkiOworCitmdW5jdGlvbiBkcmF3UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UobWVzc2Fn
ZSkKK3sKKyAgICB2YXIgcGF1c2VkSW5EZWJ1Z2dlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwYXVzZWQtaW4tZGVidWdnZXIiKTsKKyAgICBwYXVzZWRJbkRlYnVnZ2VyLnRleHRDb250ZW50
ID0gbWVzc2FnZTsKKyAgICBwYXVzZWRJbkRlYnVnZ2VyLnN0eWxlLnZpc2liaWxpdHkgPSAidmlz
aWJsZSI7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJkaW1tZWQiKTsKK30KKwor
ZnVuY3Rpb24gX2RyYXdSZWdpb25OdW1iZXIocXVhZCwgbnVtYmVyKQoreworICAgIGNvbnRleHQu
c2F2ZSgpOworICAgIHZhciBtaWRQb2ludCA9IF9xdWFkTWlkUG9pbnQocXVhZCk7CisgICAgY29u
dGV4dC5mb250ID0gcmVnaW9uTnVtYmVyRm9udDsKKyAgICBjb250ZXh0LnRleHRBbGlnbiA9ICJj
ZW50ZXIiOworICAgIGNvbnRleHQudGV4dEJhc2VsaW5lID0gIm1pZGRsZSI7CisgICAgY29udGV4
dC5maWxsU3R5bGUgPSByZWdpb25OdW1iZXJGaWxsQ29sb3I7CisgICAgY29udGV4dC5maWxsVGV4
dChudW1iZXIsIG1pZFBvaW50LngsIG1pZFBvaW50LnkpOworICAgIGNvbnRleHQuc3Ryb2tlV2lk
dGggPSA0OworICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSByZWdpb25OdW1iZXJTdHJva2VDb2xv
cjsKKyAgICBjb250ZXh0LnN0cm9rZVRleHQobnVtYmVyLCBtaWRQb2ludC54LCBtaWRQb2ludC55
KTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rpb24gcXVhZFRvUGF0aChxdWFk
KQoreworICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY29udGV4dC5tb3ZlVG8ocXVhZFsw
XS54LCBxdWFkWzBdLnkpOworICAgIGNvbnRleHQubGluZVRvKHF1YWRbMV0ueCwgcXVhZFsxXS55
KTsKKyAgICBjb250ZXh0LmxpbmVUbyhxdWFkWzJdLngsIHF1YWRbMl0ueSk7CisgICAgY29udGV4
dC5saW5lVG8ocXVhZFszXS54LCBxdWFkWzNdLnkpOworICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7
CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKK2Z1bmN0aW9uIGRyYXdPdXRsaW5lZFF1YWQocXVh
ZCwgZmlsbENvbG9yLCBvdXRsaW5lQ29sb3IpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAg
Y29udGV4dC5saW5lV2lkdGggPSAyOworICAgIHF1YWRUb1BhdGgocXVhZCkuY2xpcCgpOworICAg
IGNvbnRleHQuZmlsbFN0eWxlID0gZmlsbENvbG9yOworICAgIGNvbnRleHQuZmlsbCgpOworICAg
IGlmIChvdXRsaW5lQ29sb3IpIHsKKyAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IG91dGxp
bmVDb2xvcjsKKyAgICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICB9CisgICAgY29udGV4dC5y
ZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCBu
YW1lLCBpbmRleCwgbGVuZ3RoKSB7CisgICAgY29udGV4dFtuYW1lXS5hcHBseShjb250ZXh0LCBj
b21tYW5kcy5zbGljZShpbmRleCArIDEsIGluZGV4ICsgbGVuZ3RoICsgMSkpOworICAgIHJldHVy
biBpbmRleCArIGxlbmd0aCArIDE7Cit9CisKK2Z1bmN0aW9uIGRyYXdQYXRoKGNvbnRleHQsIGNv
bW1hbmRzLCBmaWxsQ29sb3IsIG91dGxpbmVDb2xvcikKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsK
KyAgICBjb250ZXh0LmJlZ2luUGF0aCgpOworCisgICAgdmFyIGNvbW1hbmRzSW5kZXggPSAwOwor
ICAgIHZhciBjb21tYW5kc0xlbmd0aCA9IGNvbW1hbmRzLmxlbmd0aDsKKyAgICB3aGlsZShjb21t
YW5kc0luZGV4IDwgY29tbWFuZHNMZW5ndGgpIHsKKyAgICAgICAgc3dpdGNoKGNvbW1hbmRzW2Nv
bW1hbmRzSW5kZXhdKSB7CisgICAgICAgIC8vIDEgcG9pbnQKKyAgICAgICAgY2FzZSAnTSc6Cisg
ICAgICAgICAgICBjb21tYW5kc0luZGV4ID0gcGF0aENvbW1hbmQoY29udGV4dCwgY29tbWFuZHMs
ICJtb3ZlVG8iLCBjb21tYW5kc0luZGV4LCAyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAvLyAxIHBvaW50CisgICAgICAgIGNhc2UgJ0wnOgorICAgICAgICAgICAgY29tbWFuZHNJbmRl
eCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCAibGluZVRvIiwgY29tbWFuZHNJbmRl
eCwgMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gMyBwb2ludHMKKyAgICAgICAg
Y2FzZSAnQyc6CisgICAgICAgICAgICBjb21tYW5kc0luZGV4ID0gcGF0aENvbW1hbmQoY29udGV4
dCwgY29tbWFuZHMsICJiZXppZXJDdXJ2ZVRvIiwgY29tbWFuZHNJbmRleCwgNik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgLy8gMiBwb2ludHMKKyAgICAgICAgY2FzZSAnUSc6CisgICAg
ICAgICAgICBjb21tYW5kc0luZGV4ID0gcGF0aENvbW1hbmQoY29udGV4dCwgY29tbWFuZHMsICJx
dWFkcmF0aWNDdXJ2ZVRvIiwgY29tbWFuZHNJbmRleCwgMik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgLy8gMCBwb2ludHMKKyAgICAgICAgY2FzZSAnWic6CisgICAgICAgICAgICBjb21t
YW5kc0luZGV4ID0gcGF0aENvbW1hbmQoY29udGV4dCwgY29tbWFuZHMsICJjbG9zZVBhdGgiLCBj
b21tYW5kc0luZGV4LCAwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgY29tbWFuZHNJbmRleCsrOworICAgICAgICB9CisgICAgfQorCisgICAgY29u
dGV4dC5jbG9zZVBhdGgoKTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGZpbGxDb2xvcjsKKyAg
ICBjb250ZXh0LmZpbGwoKTsKKworICAgIGlmIChvdXRsaW5lQ29sb3IpIHsKKyAgICAgICAgY29u
dGV4dC5saW5lV2lkdGggPSAyOworICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gb3V0bGlu
ZUNvbG9yOworICAgICAgICBjb250ZXh0LnN0cm9rZSgpOworICAgIH0KKworICAgIGNvbnRleHQu
cmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAocXVhZCwg
Y2xpcFF1YWQsIGZpbGxDb2xvcikKK3sKKyAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOworICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZmlsbENvbG9yOwor
ICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQubGluZVdpZHRoID0gMDsKKyAgICBxdWFk
VG9QYXRoKHF1YWQpLmZpbGwoKTsKKyAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlv
biA9ICJkZXN0aW5hdGlvbi1vdXQiOworICAgIGNvbnRleHQuZmlsbFN0eWxlID0gInJlZCI7Cisg
ICAgcXVhZFRvUGF0aChjbGlwUXVhZCkuZmlsbCgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwor
fQorCitmdW5jdGlvbiBxdWFkRXF1YWxzKHF1YWQxLCBxdWFkMikKK3sKKyAgICByZXR1cm4gcXVh
ZDFbMF0ueCA9PT0gcXVhZDJbMF0ueCAmJiBxdWFkMVswXS55ID09PSBxdWFkMlswXS55ICYmCisg
ICAgICAgIHF1YWQxWzFdLnggPT09IHF1YWQyWzFdLnggJiYgcXVhZDFbMV0ueSA9PT0gcXVhZDJb
MV0ueSAmJgorICAgICAgICBxdWFkMVsyXS54ID09PSBxdWFkMlsyXS54ICYmIHF1YWQxWzJdLnkg
PT09IHF1YWQyWzJdLnkgJiYKKyAgICAgICAgcXVhZDFbM10ueCA9PT0gcXVhZDJbM10ueCAmJiBx
dWFkMVszXS55ID09PSBxdWFkMlszXS55OworfQorCitmdW5jdGlvbiBkcmF3R3V0dGVyKCkKK3sK
KyAgICB2YXIgZnJhbWVXaWR0aCA9IGZyYW1lVmlld0Z1bGxTaXplLndpZHRoOworICAgIHZhciBm
cmFtZUhlaWdodCA9IGZyYW1lVmlld0Z1bGxTaXplLmhlaWdodDsKKworICAgIGlmICghZnJhbWVX
aWR0aCB8fCBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIDw9IGZyYW1lV2lkdGgpCisgICAgICAg
IHJpZ2h0R3V0dGVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJkaXNwbGF5Iik7CisgICAgZWxzZSB7
CisgICAgICAgIHJpZ2h0R3V0dGVyLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworICAgICAgICBy
aWdodEd1dHRlci5zdHlsZS5sZWZ0ID0gZnJhbWVXaWR0aCArICJweCI7CisgICAgfQorCisgICAg
aWYgKCFmcmFtZUhlaWdodCB8fCBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCA8PSBmcmFtZUhl
aWdodCkKKyAgICAgICAgYm90dG9tR3V0dGVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJkaXNwbGF5
Iik7CisgICAgZWxzZSB7CisgICAgICAgIGJvdHRvbUd1dHRlci5zdHlsZS5kaXNwbGF5ID0gImJs
b2NrIjsKKyAgICAgICAgYm90dG9tR3V0dGVyLnN0eWxlLnRvcCA9IGZyYW1lSGVpZ2h0ICsgInB4
IjsKKyAgICB9Cit9CisKK3ZhciB1cGRhdGVQYWludFJlY3RzSW50ZXJ2YWxJRDsKKworZnVuY3Rp
b24gdXBkYXRlUGFpbnRSZWN0cyhwYWludFJlY3RMaXN0KQoreworICAgIHZhciBjb250ZXh0ID0g
cGFpbnRSZWN0c0NhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgIGNvbnRleHQuc2F2ZSgpOwor
ICAgIGNvbnRleHQuc2NhbGUod2luZG93LmRldmljZVBpeGVsUmF0aW8sIHdpbmRvdy5kZXZpY2VQ
aXhlbFJhdGlvKTsKKworICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHBhaW50UmVjdHNDYW52
YXMud2lkdGgsIHBhaW50UmVjdHNDYW52YXMuaGVpZ2h0KTsKKworICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gcGFpbnRSZWN0RmlsbENvbG9yOworCisgICAgZm9yICh2YXIgcmVjdE9iamVjdCBvZiBw
YWludFJlY3RMaXN0KQorICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHJlY3RPYmplY3QueCwgcmVj
dE9iamVjdC55LCByZWN0T2JqZWN0LndpZHRoLCByZWN0T2JqZWN0LmhlaWdodCk7CisKKyAgICBj
b250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rpb24gcmVzZXQocmVzZXREYXRhKQoreworICAg
IHZhciBkZXZpY2VTY2FsZUZhY3RvciA9IHJlc2V0RGF0YS5kZXZpY2VTY2FsZUZhY3RvcjsKKyAg
ICB2YXIgdmlld3BvcnRTaXplID0gcmVzZXREYXRhLnZpZXdwb3J0U2l6ZTsKKyAgICB3aW5kb3cu
ZnJhbWVWaWV3RnVsbFNpemUgPSByZXNldERhdGEuZnJhbWVWaWV3RnVsbFNpemU7CisKKyAgICB3
aW5kb3cuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworICAgIHdp
bmRvdy5wYWludFJlY3RzQ2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhaW50cmVj
dHMtY2FudmFzIik7CisKKyAgICB3aW5kb3cuY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIy
ZCIpOworICAgIHdpbmRvdy5yaWdodEd1dHRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
aWdodC1ndXR0ZXIiKTsKKyAgICB3aW5kb3cuYm90dG9tR3V0dGVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImJvdHRvbS1ndXR0ZXIiKTsKKworICAgIGNhbnZhcy53aWR0aCA9IGRldmljZVNj
YWxlRmFjdG9yICogdmlld3BvcnRTaXplLndpZHRoOworICAgIGNhbnZhcy5oZWlnaHQgPSBkZXZp
Y2VTY2FsZUZhY3RvciAqIHZpZXdwb3J0U2l6ZS5oZWlnaHQ7CisgICAgY2FudmFzLnN0eWxlLndp
ZHRoID0gdmlld3BvcnRTaXplLndpZHRoICsgInB4IjsKKyAgICBjYW52YXMuc3R5bGUuaGVpZ2h0
ID0gdmlld3BvcnRTaXplLmhlaWdodCArICJweCI7CisgICAgY29udGV4dC5zY2FsZShkZXZpY2VT
Y2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgLy8gV2UgYXZvaWQgZ2V0dGlu
ZyB0aGUgdGhlIGNvbnRleHQgZm9yIHRoZSBwYWludCByZWN0cyBjYW52YXMgdW50aWwgd2UgbmVl
ZCB0byBwYWludCwgdG8gYXZvaWQgYmFja2luZyBzdG9yZSBhbGxvY2F0aW9uLgorICAgIHBhaW50
UmVjdHNDYW52YXMud2lkdGggPSBkZXZpY2VTY2FsZUZhY3RvciAqIHZpZXdwb3J0U2l6ZS53aWR0
aDsKKyAgICBwYWludFJlY3RzQ2FudmFzLmhlaWdodCA9IGRldmljZVNjYWxlRmFjdG9yICogdmll
d3BvcnRTaXplLmhlaWdodDsKKyAgICBwYWludFJlY3RzQ2FudmFzLnN0eWxlLndpZHRoID0gdmll
d3BvcnRTaXplLndpZHRoICsgInB4IjsKKyAgICBwYWludFJlY3RzQ2FudmFzLnN0eWxlLmhlaWdo
dCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQgKyAicHgiOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInBhdXNlZC1pbi1kZWJ1Z2dlciIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxlbWVudC10aXRsZS1jb250YWluZXIiKS5p
bm5lckhUTUwgPSAiIjsKKyAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImRpbW1l
ZCIpOworfQorCitmdW5jdGlvbiBET01CdWlsZGVyKHRhZ05hbWUsIGNsYXNzTmFtZSkKK3sKKyAg
ICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpOworICAgIHRo
aXMuZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Cit9CisKK0RPTUJ1aWxkZXIucHJvdG90
eXBlLmFwcGVuZFRleHROb2RlID0gZnVuY3Rpb24oY29udGVudCkKK3sKKyAgICB2YXIgbm9kZSA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCk7CisgICAgbm9kZS50ZXh0Q29udGVudCA9IGNvbnRl
bnQ7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG5vZGUpOworICAgIHJldHVybiBub2Rl
OworfQorCitET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRTcGFuID0gZnVuY3Rpb24oY2xhc3NO
YW1lLCB2YWx1ZSkKK3sKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICBzcGFuLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKKyAgICBzcGFuLnRleHRDb250
ZW50ID0gdmFsdWU7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOworICAgIHJl
dHVybiBzcGFuOworfQorCitET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRTcGFuSWZOb3ROdWxs
ID0gZnVuY3Rpb24oY2xhc3NOYW1lLCB2YWx1ZSwgcHJlZml4KQoreworICAgIHJldHVybiB2YWx1
ZSA/IHRoaXMuYXBwZW5kU3BhbihjbGFzc05hbWUsIChwcmVmaXggPyBwcmVmaXggOiAiIikgKyB2
YWx1ZSkgOiBudWxsOworfQorCitET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRQcm9wZXJ0eSA9
IGZ1bmN0aW9uKGNsYXNzTmFtZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkKK3sKKyAgICB2YXIgYnVp
bGRlciA9IG5ldyBET01CdWlsZGVyKCJkaXYiLCBjbGFzc05hbWUpOworICAgIGJ1aWxkZXIuYXBw
ZW5kU3BhbigiY3NzLXByb3BlcnR5IiwgcHJvcGVydHlOYW1lKTsKKyAgICBidWlsZGVyLmFwcGVu
ZFRleHROb2RlKCIgIik7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJ2YWx1ZSIsIHZhbHVlKTsK
KyAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoYnVpbGRlci5lbGVtZW50KTsKKyAgICByZXR1
cm4gYnVpbGRlci5lbGVtZW50OworfQorCitET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRQcm9w
ZXJ0eUlmTm90TnVsbCA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmFwcGVuZFByb3BlcnR5KGNsYXNzTmFtZSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSkgOiBudWxsOworfQorCitmdW5jdGlvbiBfdHJ1bmNhdGVTdHJpbmco
dmFsdWUsIG1heExlbmd0aCkKK3sKKyAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUubGVuZ3RoID4g
bWF4TGVuZ3RoID8gdmFsdWUuc3Vic3RyaW5nKDAsIDUwKSArICJcdTIwMjYiIDogdmFsdWU7Cit9
CisKK2Z1bmN0aW9uIF9jcmVhdGVFbGVtZW50VGl0bGUoZWxlbWVudERhdGEpCit7CisgICAgdmFy
IGJ1aWxkZXIgPSBuZXcgRE9NQnVpbGRlcigiZGl2IiwgImVsZW1lbnQtdGl0bGUiKTsKKyAgICAK
KyAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwoInRhZy1uYW1lIiwgZWxlbWVudERhdGEu
dGFnTmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJub2RlLWlkIiwgZWxl
bWVudERhdGEuaWRWYWx1ZSwgIiMiKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW5JZk5vdE51bGwo
ImNsYXNzLW5hbWUiLCBfdHJ1bmNhdGVTdHJpbmcoZWxlbWVudERhdGEuY2xhc3NOYW1lLCA1MCkp
OworCisgICAgYnVpbGRlci5hcHBlbmRUZXh0Tm9kZSgiICIpOworICAgIGJ1aWxkZXIuYXBwZW5k
U3Bhbigibm9kZS13aWR0aCIsIGVsZW1lbnREYXRhLnNpemUud2lkdGgpOworICAgIC8vIFx4ZDcg
aXMgdGhlIGNvZGUgZm9yIHRoZSAmdGltZXM7IEhUTUwgZW50aXR5LgorICAgIGJ1aWxkZXIuYXBw
ZW5kU3BhbigicHgiLCAicHggXHhkNyAiKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oIm5vZGUt
aGVpZ2h0IiwgZWxlbWVudERhdGEuc2l6ZS5oZWlnaHQpOworICAgIGJ1aWxkZXIuYXBwZW5kU3Bh
bigicHgiLCAicHgiKTsKKworICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5vdE51bGwoInJv
bGUtbmFtZSIsICJSb2xlIiwgZWxlbWVudERhdGEucm9sZSk7CisgICAgYnVpbGRlci5hcHBlbmRQ
cm9wZXJ0eUlmTm90TnVsbCgicmVnaW9uLWZsb3ctbmFtZSIsICJSZWdpb24gRmxvdyIsIGVsZW1l
bnREYXRhLnJlZ2lvbkZsb3dEYXRhID8gZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEubmFtZSA6
IG51bGwpOworICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5vdE51bGwoImNvbnRlbnQtZmxv
dy1uYW1lIiwgIkNvbnRlbnQgRmxvdyIsIGVsZW1lbnREYXRhLmNvbnRlbnRGbG93RGF0YSA/IGVs
ZW1lbnREYXRhLmNvbnRlbnRGbG93RGF0YS5uYW1lIDogbnVsbCk7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZWxlbWVudC10aXRsZS1jb250YWluZXIiKS5hcHBlbmRDaGlsZChidWls
ZGVyLmVsZW1lbnQpOworCisgICAgcmV0dXJuIGJ1aWxkZXIuZWxlbWVudDsKK30KKworZnVuY3Rp
b24gX2RyYXdFbGVtZW50VGl0bGUoZWxlbWVudERhdGEsIGZyYWdtZW50SGlnaGxpZ2h0LCBzY3Jv
bGwpCit7CisgICAgaWYgKCFlbGVtZW50RGF0YSB8fCAhZnJhZ21lbnRIaWdobGlnaHQucXVhZHMu
bGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICB2YXIgZWxlbWVudFRpdGxlID0gX2NyZWF0
ZUVsZW1lbnRUaXRsZShlbGVtZW50RGF0YSk7CisKKyAgICB2YXIgbWFyZ2luUXVhZCA9IGZyYWdt
ZW50SGlnaGxpZ2h0LnF1YWRzWzBdOworCisgICAgdmFyIHRpdGxlV2lkdGggPSBlbGVtZW50VGl0
bGUub2Zmc2V0V2lkdGggKyA2OworICAgIHZhciB0aXRsZUhlaWdodCA9IGVsZW1lbnRUaXRsZS5v
ZmZzZXRIZWlnaHQgKyA0OworCisgICAgdmFyIGFuY2hvclRvcCA9IG1hcmdpblF1YWRbMF0ueTsK
KyAgICB2YXIgYW5jaG9yQm90dG9tID0gbWFyZ2luUXVhZFszXS55OworCisgICAgY29uc3QgYXJy
b3dIZWlnaHQgPSA3OworICAgIHZhciByZW5kZXJBcnJvd1VwID0gZmFsc2U7CisgICAgdmFyIHJl
bmRlckFycm93RG93biA9IGZhbHNlOworCisgICAgdmFyIGJveFggPSBtYXJnaW5RdWFkWzBdLng7
CisKKyAgICB2YXIgY2xpcFF1YWQgPSBmcmFnbWVudEhpZ2hsaWdodC5yZWdpb25DbGlwcGluZ0Fy
ZWE7CisgICAgaWYgKGNsaXBRdWFkKSB7CisgICAgICAgIC8vIFJlc3RyaWN0IHRoZSBwb3NpdGlv
biBvZiB0aGUgdGl0bGUgYm94IHRvIHRoZSBhcmVhIG9mIHRoZSBjb250YWluaW5nIHJlZ2lvbi4K
KyAgICAgICAgYW5jaG9yVG9wID0gTWF0aC5tYXgoYW5jaG9yVG9wLCBNYXRoLm1pbihjbGlwUXVh
ZFswXS55LCBjbGlwUXVhZFsxXS55LCBjbGlwUXVhZFsyXS55LCBjbGlwUXVhZFszXS55KSk7Cisg
ICAgICAgIGFuY2hvckJvdHRvbSA9IE1hdGgubWluKGFuY2hvckJvdHRvbSwgTWF0aC5tYXgoY2xp
cFF1YWRbMF0ueSwgY2xpcFF1YWRbMV0ueSwgY2xpcFF1YWRbMl0ueSwgY2xpcFF1YWRbM10ueSkp
OworICAgICAgICBib3hYID0gTWF0aC5tYXgoYm94WCwgTWF0aC5taW4oY2xpcFF1YWRbMF0ueCwg
Y2xpcFF1YWRbMV0ueCwgY2xpcFF1YWRbMl0ueCwgY2xpcFF1YWRbM10ueCkpOworICAgICAgICBi
b3hYID0gTWF0aC5taW4oYm94WCwgTWF0aC5tYXgoY2xpcFF1YWRbMF0ueCwgY2xpcFF1YWRbMV0u
eCwgY2xpcFF1YWRbMl0ueCwgY2xpcFF1YWRbM10ueCkpOworICAgIH0KKworICAgIGJveFggPSBN
YXRoLm1heCgyLCBib3hYIC0gc2Nyb2xsLngpOworICAgIGFuY2hvclRvcCAtPSBzY3JvbGwueTsK
KyAgICBhbmNob3JCb3R0b20gLT0gc2Nyb2xsLnk7CisKKyAgICBpZiAoYm94WCArIHRpdGxlV2lk
dGggPiBjYW52YXMud2lkdGgpCisgICAgICAgIGJveFggPSBjYW52YXMud2lkdGggLSB0aXRsZVdp
ZHRoIC0gMjsKKworICAgIHZhciBib3hZOworICAgIGlmIChhbmNob3JUb3AgPiBjYW52YXMuaGVp
Z2h0KSB7CisgICAgICAgIGJveFkgPSBjYW52YXMuaGVpZ2h0IC0gdGl0bGVIZWlnaHQgLSBhcnJv
d0hlaWdodDsKKyAgICAgICAgcmVuZGVyQXJyb3dEb3duID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYg
KGFuY2hvckJvdHRvbSA8IDApIHsKKyAgICAgICAgYm94WSA9IGFycm93SGVpZ2h0OworICAgICAg
ICByZW5kZXJBcnJvd1VwID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGFuY2hvckJvdHRvbSArIHRp
dGxlSGVpZ2h0ICsgYXJyb3dIZWlnaHQgPCBjYW52YXMuaGVpZ2h0KSB7CisgICAgICAgIGJveFkg
PSBhbmNob3JCb3R0b20gKyBhcnJvd0hlaWdodCAtIDQ7CisgICAgICAgIHJlbmRlckFycm93VXAg
PSB0cnVlOworICAgIH0gZWxzZSBpZiAoYW5jaG9yVG9wIC0gdGl0bGVIZWlnaHQgLSBhcnJvd0hl
aWdodCA+IDApIHsKKyAgICAgICAgYm94WSA9IGFuY2hvclRvcCAtIHRpdGxlSGVpZ2h0IC0gYXJy
b3dIZWlnaHQgKyAzOworICAgICAgICByZW5kZXJBcnJvd0Rvd24gPSB0cnVlOworICAgIH0gZWxz
ZQorICAgICAgICBib3hZID0gYXJyb3dIZWlnaHQ7CisKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgwLjUsIDAuNSk7CisgICAgY29udGV4dC5iZWdpblBhdGgoKTsK
KyAgICBjb250ZXh0Lm1vdmVUbyhib3hYLCBib3hZKTsKKyAgICBpZiAocmVuZGVyQXJyb3dVcCkg
eworICAgICAgICBjb250ZXh0LmxpbmVUbyhib3hYICsgMiAqIGFycm93SGVpZ2h0LCBib3hZKTsK
KyAgICAgICAgY29udGV4dC5saW5lVG8oYm94WCArIDMgKiBhcnJvd0hlaWdodCwgYm94WSAtIGFy
cm93SGVpZ2h0KTsKKyAgICAgICAgY29udGV4dC5saW5lVG8oYm94WCArIDQgKiBhcnJvd0hlaWdo
dCwgYm94WSk7CisgICAgfQorICAgIGNvbnRleHQubGluZVRvKGJveFggKyB0aXRsZVdpZHRoLCBi
b3hZKTsKKyAgICBjb250ZXh0LmxpbmVUbyhib3hYICsgdGl0bGVXaWR0aCwgYm94WSArIHRpdGxl
SGVpZ2h0KTsKKyAgICBpZiAocmVuZGVyQXJyb3dEb3duKSB7CisgICAgICAgIGNvbnRleHQubGlu
ZVRvKGJveFggKyA0ICogYXJyb3dIZWlnaHQsIGJveFkgKyB0aXRsZUhlaWdodCk7CisgICAgICAg
IGNvbnRleHQubGluZVRvKGJveFggKyAzICogYXJyb3dIZWlnaHQsIGJveFkgKyB0aXRsZUhlaWdo
dCArIGFycm93SGVpZ2h0KTsKKyAgICAgICAgY29udGV4dC5saW5lVG8oYm94WCArIDIgKiBhcnJv
d0hlaWdodCwgYm94WSArIHRpdGxlSGVpZ2h0KTsKKyAgICB9CisgICAgY29udGV4dC5saW5lVG8o
Ym94WCwgYm94WSArIHRpdGxlSGVpZ2h0KTsKKyAgICBjb250ZXh0LmNsb3NlUGF0aCgpOworICAg
IGNvbnRleHQuZmlsbFN0eWxlID0gInJnYigyNTUsIDI1NSwgMTk0KSI7CisgICAgY29udGV4dC5m
aWxsKCk7CisgICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICJyZ2IoMTI4LCAxMjgsIDEyOCkiOwor
ICAgIGNvbnRleHQuc3Ryb2tlKCk7CisKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKKworICAgIGVs
ZW1lbnRUaXRsZS5zdHlsZS50b3AgPSAoYm94WSArIDMpICsgInB4IjsKKyAgICBlbGVtZW50VGl0
bGUuc3R5bGUubGVmdCA9IChib3hYICsgMykgKyAicHgiOworfQorCitmdW5jdGlvbiBfcXVhZE1p
ZFBvaW50KHF1YWQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgeDogKHF1YWRbMF0ueCArIHF1
YWRbMV0ueCArIHF1YWRbMl0ueCArIHF1YWRbM10ueCkgLyA0LAorICAgICAgICB5OiAocXVhZFsw
XS55ICsgcXVhZFsxXS55ICsgcXVhZFsyXS55ICsgcXVhZFszXS55KSAvIDQsCisgICAgfTsKK30K
KworZnVuY3Rpb24gX2RyYXdSZWdpb25MaW5rKHBvaW50QSwgcG9pbnRCKQoreworICAgIGNvbnRl
eHQuc2F2ZSgpOworICAgIGNvbnRleHQubGluZVdpZHRoID0gMjsKKyAgICBjb250ZXh0LnN0cm9r
ZVN0eWxlID0gcmVnaW9uQ2hhaW5TdHJva2VDb2xvcjsKKyAgICBjb250ZXh0LmJlZ2luUGF0aCgp
OworICAgIGNvbnRleHQubW92ZVRvKHBvaW50QS54LCBwb2ludEEueSk7CisgICAgY29udGV4dC5s
aW5lVG8ocG9pbnRCLngsIHBvaW50Qi55KTsKKyAgICBjb250ZXh0LnN0cm9rZSgpOworICAgIGNv
bnRleHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBfZHJhd1JlZ2lvbnNIaWdobGlnaHQocmVn
aW9ucykKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlZ2lvbnMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdmFyIHJlZ2lvbiA9IHJlZ2lvbnNbaV07CisgICAgICAgIGRyYXdPdXRsaW5lZFF1
YWQocmVnaW9uLmJvcmRlclF1YWQsIHJlZ2lvbi5pc0hpZ2hsaWdodGVkID8gaGlnaGxpZ2h0ZWRS
ZWdpb25CYWNrZ3JvdW5kQ29sb3IgOiByZWdpb25CYWNrZ3JvdW5kQ29sb3IsIHJlZ2lvblN0cm9r
ZUNvbG9yKTsKKyAgICAgICAgX2RyYXdSZWdpb25OdW1iZXIocmVnaW9uLmJvcmRlclF1YWQsIGkg
KyAxKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IHJlZ2lvbnMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgdmFyIHJlZ2lvbkEgPSByZWdpb25zW2kgLSAxXSwKKyAgICAgICAgICAg
IHJlZ2lvbkIgPSByZWdpb25zW2ldOworICAgICAgICBfZHJhd1JlZ2lvbkxpbmsoX3F1YWRNaWRQ
b2ludChyZWdpb25BLm91dGdvaW5nUXVhZCksIF9xdWFkTWlkUG9pbnQocmVnaW9uQi5pbmNvbWlu
Z1F1YWQpKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlZ2lvbnMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdmFyIHJlZ2lvbiA9IHJlZ2lvbnNbaV07CisgICAgICAgIGlmIChp
ID4gMCkKKyAgICAgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQocmVnaW9uLmluY29taW5nUXVhZCwg
cmVnaW9uTGlua0JveEJhY2tncm91bmRDb2xvciwgcmVnaW9uTGlua0JveFN0cm9rZUNvbG9yKTsK
KyAgICAgICAgaWYgKGkgIT09IHJlZ2lvbnMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgIGRyYXdP
dXRsaW5lZFF1YWQocmVnaW9uLm91dGdvaW5nUXVhZCwgcmVnaW9uTGlua0JveEJhY2tncm91bmRD
b2xvciwgcmVnaW9uTGlua0JveFN0cm9rZUNvbG9yKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIF9k
cmF3U2hhcGVIaWdobGlnaHQoc2hhcGVJbmZvKQoreworICAgIGlmIChzaGFwZUluZm8ubWFyZ2lu
U2hhcGUpCisgICAgICAgIGRyYXdQYXRoKGNvbnRleHQsIHNoYXBlSW5mby5tYXJnaW5TaGFwZSwg
c2hhcGVNYXJnaW5IaWdobGlnaHRDb2xvcik7CisKKyAgICBpZiAoc2hhcGVJbmZvLnNoYXBlKQor
ICAgICAgICBkcmF3UGF0aChjb250ZXh0LCBzaGFwZUluZm8uc2hhcGUsIHNoYXBlSGlnaGxpZ2h0
Q29sb3IpOworCisgICAgaWYgKCEoc2hhcGVJbmZvLnNoYXBlIHx8IHNoYXBlSW5mby5tYXJnaW5T
aGFwZSkpCisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoc2hhcGVJbmZvLmJvdW5kcywgc2hhcGVI
aWdobGlnaHRDb2xvciwgc2hhcGVIaWdobGlnaHRDb2xvcik7Cit9CisKK2Z1bmN0aW9uIF9kcmF3
RnJhZ21lbnRIaWdobGlnaHQoaGlnaGxpZ2h0KQoreworICAgIGlmICghaGlnaGxpZ2h0LnF1YWRz
Lmxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dC5zYXZlKCk7CisKKyAgICBp
ZiAoaGlnaGxpZ2h0LnJlZ2lvbkNsaXBwaW5nQXJlYSkgeworICAgICAgICAvLyBDbGlwIHRvIHRo
ZSBjb250YWluaW5nIHJlZ2lvbiB0byBhdm9pZCBzaG93aW5nIGZyYWdtZW50cyB0aGF0IGFyZSBu
b3QgcmVuZGVyZWQgYnkgdGhpcyByZWdpb24uCisgICAgICAgIHF1YWRUb1BhdGgoaGlnaGxpZ2h0
LnJlZ2lvbkNsaXBwaW5nQXJlYSkuY2xpcCgpOworICAgIH0KKworICAgIHZhciBxdWFkcyA9IGhp
Z2hsaWdodC5xdWFkcy5zbGljZSgpOworICAgIHZhciBjb250ZW50UXVhZCA9IHF1YWRzLnBvcCgp
OworICAgIHZhciBwYWRkaW5nUXVhZCA9IHF1YWRzLnBvcCgpOworICAgIHZhciBib3JkZXJRdWFk
ID0gcXVhZHMucG9wKCk7CisgICAgdmFyIG1hcmdpblF1YWQgPSBxdWFkcy5wb3AoKTsKKworICAg
IHZhciBoYXNDb250ZW50ID0gY29udGVudFF1YWQgJiYgaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciAh
PT0gdHJhbnNwYXJlbnRDb2xvciB8fCBoaWdobGlnaHQuY29udGVudE91dGxpbmVDb2xvciAhPT0g
dHJhbnNwYXJlbnRDb2xvcjsKKyAgICB2YXIgaGFzUGFkZGluZyA9IHBhZGRpbmdRdWFkICYmIGhp
Z2hsaWdodC5wYWRkaW5nQ29sb3IgIT09IHRyYW5zcGFyZW50Q29sb3I7CisgICAgdmFyIGhhc0Jv
cmRlciA9IGJvcmRlclF1YWQgJiYgaGlnaGxpZ2h0LmJvcmRlckNvbG9yICE9PSB0cmFuc3BhcmVu
dENvbG9yOworICAgIHZhciBoYXNNYXJnaW4gPSBtYXJnaW5RdWFkICYmIGhpZ2hsaWdodC5tYXJn
aW5Db2xvciAhPT0gdHJhbnNwYXJlbnRDb2xvcjsKKworICAgIHZhciBjbGlwUXVhZDsKKyAgICBp
ZiAoaGFzTWFyZ2luICYmICghaGFzQm9yZGVyIHx8ICFxdWFkRXF1YWxzKG1hcmdpblF1YWQsIGJv
cmRlclF1YWQpKSkgeworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAobWFyZ2luUXVh
ZCwgYm9yZGVyUXVhZCwgaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yKTsKKyAgICAgICAgY2xpcFF1YWQg
PSBib3JkZXJRdWFkOworICAgIH0KKyAgICBpZiAoaGFzQm9yZGVyICYmICghaGFzUGFkZGluZyB8
fCAhcXVhZEVxdWFscyhib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCkpKSB7CisgICAgICAgIGRyYXdP
dXRsaW5lZFF1YWRXaXRoQ2xpcChib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgaGlnaGxpZ2h0LmJv
cmRlckNvbG9yKTsKKyAgICAgICAgY2xpcFF1YWQgPSBwYWRkaW5nUXVhZDsKKyAgICB9CisgICAg
aWYgKGhhc1BhZGRpbmcgJiYgKCFoYXNDb250ZW50IHx8ICFxdWFkRXF1YWxzKHBhZGRpbmdRdWFk
LCBjb250ZW50UXVhZCkpKSB7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChwYWRk
aW5nUXVhZCwgY29udGVudFF1YWQsIGhpZ2hsaWdodC5wYWRkaW5nQ29sb3IpOworICAgICAgICBj
bGlwUXVhZCA9IGNvbnRlbnRRdWFkOworICAgIH0KKyAgICBpZiAoaGFzQ29udGVudCkKKyAgICAg
ICAgZHJhd091dGxpbmVkUXVhZChjb250ZW50UXVhZCwgaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwg
aGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3IpOworCisgICAgdmFyIHdpZHRoID0gY2FudmFz
LndpZHRoOworICAgIHZhciBoZWlnaHQgPSBjYW52YXMuaGVpZ2h0OworICAgIHZhciBtaW5YID0g
TnVtYmVyLk1BWF9WQUxVRSwgbWluWSA9IE51bWJlci5NQVhfVkFMVUUsIG1heFggPSBOdW1iZXIu
TUlOX1ZBTFVFOyBtYXhZID0gTnVtYmVyLk1JTl9WQUxVRTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGhpZ2hsaWdodC5xdWFkcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcXVhZCA9IGhp
Z2hsaWdodC5xdWFkc1tpXTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBxdWFkLmxlbmd0
aDsgKytqKSB7CisgICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgcXVhZFtqXS54KTsK
KyAgICAgICAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCBxdWFkW2pdLngpOworICAgICAgICAg
ICAgbWluWSA9IE1hdGgubWluKG1pblksIHF1YWRbal0ueSk7CisgICAgICAgICAgICBtYXhZID0g
TWF0aC5tYXgobWF4WSwgcXVhZFtqXS55KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRl
eHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBzaG93UGFnZUluZGljYXRpb24oKQoreworICAg
IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiaW5kaWNhdGUiKTsKK30KKworZnVuY3Rpb24g
aGlkZVBhZ2VJbmRpY2F0aW9uKCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1v
dmUoImluZGljYXRlIik7Cit9CisKK2Z1bmN0aW9uIGRyYXdOb2RlSGlnaGxpZ2h0KGhpZ2hsaWdo
dCkKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtaGlnaGxp
Z2h0LnNjcm9sbE9mZnNldC54LCAtaGlnaGxpZ2h0LnNjcm9sbE9mZnNldC55KTsKKworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaGlnaGxpZ2h0LmZyYWdtZW50cy5sZW5ndGg7ICsraSkKKyAgICAg
ICAgX2RyYXdGcmFnbWVudEhpZ2hsaWdodChoaWdobGlnaHQuZnJhZ21lbnRzW2ldKTsKKworICAg
IGlmIChoaWdobGlnaHQuZWxlbWVudERhdGEgJiYgaGlnaGxpZ2h0LmVsZW1lbnREYXRhLnJlZ2lv
bkZsb3dEYXRhKQorICAgICAgICBfZHJhd1JlZ2lvbnNIaWdobGlnaHQoaGlnaGxpZ2h0LmVsZW1l
bnREYXRhLnJlZ2lvbkZsb3dEYXRhLnJlZ2lvbnMpOworCisgICAgaWYgKGhpZ2hsaWdodC5lbGVt
ZW50RGF0YSAmJiBoaWdobGlnaHQuZWxlbWVudERhdGEuc2hhcGVPdXRzaWRlRGF0YSkKKyAgICAg
ICAgX2RyYXdTaGFwZUhpZ2hsaWdodChoaWdobGlnaHQuZWxlbWVudERhdGEuc2hhcGVPdXRzaWRl
RGF0YSk7CisKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKKworICAgIHZhciBlbGVtZW50VGl0bGVD
b250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxlbWVudC10aXRsZS1jb250YWlu
ZXIiKTsKKyAgICBlbGVtZW50VGl0bGVDb250YWluZXIuaW5uZXJIVE1MID0gIiI7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBoaWdobGlnaHQuZnJhZ21lbnRzLmxlbmd0aDsgKytpKQorICAgICAg
ICBfZHJhd0VsZW1lbnRUaXRsZShoaWdobGlnaHQuZWxlbWVudERhdGEsIGhpZ2hsaWdodC5mcmFn
bWVudHNbaV0sIGhpZ2hsaWdodC5zY3JvbGxPZmZzZXQpOworfQorCitmdW5jdGlvbiBkcmF3UXVh
ZEhpZ2hsaWdodChoaWdobGlnaHQpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgZHJhd091
dGxpbmVkUXVhZChoaWdobGlnaHQucXVhZHNbMF0sIGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIGhp
Z2hsaWdodC5jb250ZW50T3V0bGluZUNvbG9yKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30K
KworZnVuY3Rpb24gc2V0UGxhdGZvcm0ocGxhdGZvcm0pCit7CisgICAgZG9jdW1lbnQuYm9keS5j
bGFzc0xpc3QuYWRkKCJwbGF0Zm9ybS0iICsgcGxhdGZvcm0pOworfQorCitmdW5jdGlvbiBkaXNw
YXRjaChtZXNzYWdlKQoreworICAgIHZhciBmdW5jdGlvbk5hbWUgPSBtZXNzYWdlLnNoaWZ0KCk7
CisgICAgd2luZG93W2Z1bmN0aW9uTmFtZV0uYXBwbHkobnVsbCwgbWVzc2FnZSk7Cit9CisKK2Z1
bmN0aW9uIGxvZyh0ZXh0KQoreworICAgIHZhciBsb2dFbnRyeSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIGxvZ0VudHJ5LnRleHRDb250ZW50ID0gdGV4dDsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBwZW5kQ2hpbGQobG9nRW50cnkpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvT3ZlcmxheS5odG1s
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvT3ZlcmxheS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI5ZGNhMmJlZTkzYjdmNDAxZTU0M2Y2NDczZTk5ODQzNmY3MzkyODkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9PdmVybGF5Lmh0
bWwKQEAgLTAsMCArMSw0OCBAQAorPCEtLQorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2Vj
dXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAnc2VsZic7IGltZy1zcmMgKjsgY29u
bmVjdC1zcmMgKjsgbWVkaWEtc3JjICo7IGZvbnQtc3JjICo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vu
c2FmZS1pbmxpbmUnOyBzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSciPgorCisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9PdmVybGF5LmNzcyI+CisKKyAgICA8
c2NyaXB0IHNyYz0iQmFzZS9PdmVybGF5LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBJbnNwZWN0b3JPdmVybGF5LmxvYWRlZCgpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgY2xhc3M9ImZpbGwiPgorPGRpdiBjbGFzcz0ibWVzc2FnZS1saW5lIj48c3BhbiBjbGFz
cz0ibWVzc2FnZS1ib3giIGlkPSJwYXVzZWQtaW4tZGVidWdnZXIiPjwvc3Bhbj48L2Rpdj4KKzxj
YW52YXMgaWQ9ImNhbnZhcyIgY2xhc3M9ImZpbGwiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0icGFp
bnRyZWN0cy1jYW52YXMiIGNsYXNzPSJmaWxsIj48L2NhbnZhcz4KKzxkaXYgaWQ9ImVsZW1lbnQt
dGl0bGUtY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9InJpZ2h0LWd1dHRlciI+PC9kaXY+Cis8
ZGl2IGlkPSJib3R0b20tZ3V0dGVyIj48L2Rpdj4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9PdmVybGF5LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL092ZXJsYXkuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiOWIzMzJhODZlNzE1NWU4NTFmMDBl
MjZkYTQ5MGFhNTJlNWMxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVybGF5LmNzcwpAQCAtMCwwICsxLDk4IEBACitib2R5
IHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2JhKDEwMCwgMCwgMCwgMC4xKTsKK30KKworYm9keS5wbGF0Zm9ybS1tYWMgeworICAgIGZv
bnQtc2l6ZTogMTFweDsKKyAgICBmb250LWZhbWlseTogTWVubG8sIE1vbmFjbzsKK30KKworYm9k
eS5wbGF0Zm9ybS13aW5kb3dzIHsKKyAgICBmb250LXNpemU6IDEycHg7CisgICAgZm9udC1mYW1p
bHk6IENvbnNvbGFzLCBMdWNpZGEgQ29uc29sZTsKK30KKworYm9keS5wbGF0Zm9ybS1saW51eCB7
CisgICAgZm9udC1zaXplOiAxMXB4OworICAgIGZvbnQtZmFtaWx5OiBkZWphdnUgc2FucyBtb25v
OworfQorCisuZmlsbCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAg
ICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogMDsKK30KKworLmluZGljYXRl
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDExMSwgMTY4LCAyMjAsIDAuNjYpICFpbXBv
cnRhbnQ7Cit9CisKKy5kaW1tZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwg
MCwgMC4zMSk7Cit9CisKKy5tZXNzYWdlLWxpbmUgeworICAgIG1hcmdpbjogMTBweCAwOworICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworLm1lc3NhZ2UtYm94IHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjU1LCAyNTUsIDE5NCk7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDEy
OCwgMTI4LCAxMjgpOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBwYWRkaW5nOiAy
cHggNHB4OworfQorCisucHggeworICAgIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7Cit9CisK
Ky5lbGVtZW50LXRpdGxlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHotaW5kZXg6IDEwOworfQorCisuZWxlbWVudC10aXRsZSB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworfQorCisudGFnLW5hbWUgeworICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1M
Vmlld2VyLmNzcyAoLnRhZykgKi8KKyAgICBjb2xvcjogcmdiKDEzNiwgMTgsIDEyOCk7Cit9CisK
Ky5ub2RlLWlkIHsKKyAgICAvKiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3Mg
KC5hdHRyaWJ1dGUtdmFsdWUpICovCisgICAgY29sb3I6IHJnYigyNiwgMjYsIDE2Nik7Cit9CisK
Ky5jbGFzcy1uYW1lIHsKKyAgICAvKiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5j
c3MgKC5hdHRyaWJ1dGUtbmFtZSkgKi8KKyAgICBjb2xvcjogcmdiKDE1MywgNjksIDApOworfQor
CisuY3NzLXByb3BlcnR5IHsKKyAgICBjb2xvcjogcmdiKDE3MCwgMTMsIDE0NSk7Cit9CisKKyNy
aWdodC1ndXR0ZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcmlnaHQ6IDA7CisgICAgdG9w
OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogZGFya2dyYXk7Cit9CisKKyNib3R0b20tZ3V0dGVyIHsKKyAgICBkaXNwbGF5
OiBub25lOworICAgIGxlZnQ6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZ3JheTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKaW5kZXggZTZlZGU0OWZjOTIwYTljYTRmNmE5ZGRiMTY5MjFlMjcxNGU5NGZkYy4u
ZDViMTMwMzQ5MDBkOWY4MGY3Y2VhZjJhYzg2ZDRiN2ZlYzQyY2U3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAg
LTY2LDggKzY2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJv
eWVkKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXIqKSBvdmVycmlkZTsKKyAgICBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiBvcGVuSW5zcGVj
dG9yT3ZlcmxheSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZy
b250ZW5kKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250
KCkgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNv
cmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KaW5kZXggNzg5M2Y4YjIzYTg5NGY3MjVmOTE5NzQ5MmEwN2ZkZmI3
ZTNiNDQwZi4uMWRiODEyYmEwNTE5NDdjMTI0NDEzZmQ1MDExOTIxYTBiMjRkZWRhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQpAQCAtMTcwLDYgKzE3MCwxMSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJp
bmdGcm9udGVuZFRvRnJvbnQoKQogICAgIG1fZnJvbnRlbmRDbGllbnQtPmJyaW5nVG9Gcm9udCgp
OwogfQogCitJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9w
ZW5JbnNwZWN0b3JPdmVybGF5KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFJlc2l6ZU1haW5GcmFtZShGcmFtZSopCiB7CiAgICAgaWYg
KG1fZnJvbnRlbmRDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBiMzFi
MTRmOTA4MDdiOWIzODUwZDA3YmIxZjYzOWEwZjg4NTA1OTQ5Li45YjU1MzFmMGI0M2YxNWI4N2Q1
YzU1ZTI2NmJmZDdlZWI0NzliOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTExOSw2ICsxMTksNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJJY29uRGF0YWJh
c2UgXAogICAgIFdlYkljb25EYXRhYmFzZVByb3h5IFwKICAgICBXZWJJbnNwZWN0b3IgXAorICAg
IFdlYkluc3BlY3Rvck92ZXJsYXkgXAogICAgIFdlYkluc3BlY3RvclByb3h5IFwKICAgICBXZWJJ
bnNwZWN0b3JVSSBcCiAgICAgV2ViTWVkaWFDYWNoZU1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCmluZGV4IDZmNGNm
NzgxYzk2NGM5NGNjMzZhOTliYjc1ZTcwMWQ4NDY3OGUyNmUuLjlhNmM1MjZiNjgxZTVkOTYyYWFl
MmM5ZjdkOGNhMThjYjg4Y2E4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTI0Nyw2ICsyNDcsMjYgQEAgLSAodm9p
ZClfc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDooQk9PTClkZXZlbG9wZXJFeHRyYXNFbmFibGVk
CiAgICAgX3ByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGRldmVsb3BlckV4
dHJhc0VuYWJsZWQpOwogfQogCistIChCT09MKV9sb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25z
b2xlRW5hYmxlZAoreworcmV0dXJuIF9wcmVmZXJlbmNlcy0+bG9nc1BhZ2VNZXNzYWdlc1RvU3lz
dGVtQ29uc29sZUVuYWJsZWQoKTsKK30KKworLSAodm9pZClfc2V0TG9nc1BhZ2VNZXNzYWdlc1Rv
U3lzdGVtQ29uc29sZUVuYWJsZWQ6KEJPT0wpbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29s
ZUVuYWJsZWQKK3sKK19wcmVmZXJlbmNlcy0+c2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29u
c29sZUVuYWJsZWQobG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQpOworfQor
CistIChCT09MKV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMKK3sKK3JldHVybiBfcHJlZmVy
ZW5jZXMtPmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygpOworfQorCistICh2b2lkKV9zZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6KEJPT0wpYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzCit7CitfcHJlZmVyZW5jZXMtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhhbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpOworfQorCiAtIChCT09MKV9pc1N0YW5kYWxvbmUKIHsK
ICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zdGFuZGFsb25lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgK
aW5kZXggZTRlMjAzZGM3NjEzNzZlOTI2M2VlNzJkZDBiZjA2MmM5OTFlMzJiMi4uMDVhZjliZjUz
MGNiZDhmZjg2OWQzMjAyNGIxMzQ1OGRhMmEyNzhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAt
NTUsNiArNTUsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLRGVidWdPdmVy
bGF5UmVnaW9ucykgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2ltcGxlTGlu
ZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQ6KSBCT09MIF9zaW1wbGVMaW5lTGF5b3V0RGVidWdC
b3JkZXJzRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldERldmVsb3BlckV4dHJhc0VuYWJsZWQ6KSBC
T09MIF9kZXZlbG9wZXJFeHRyYXNFbmFibGVkIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19J
T1NfVEJBKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExvZ3NQYWdlTWVzc2Fn
ZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkOikgQk9PTCBfbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVt
Q29uc29sZUVuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
OikgQk9PTCBfYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIFdLX0FWQUlMQUJMRShXS19NQUNf
VEJBLCBXS19JT1NfVEJBKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U3Rh
bmRhbG9uZTosIGdldHRlcj1faXNTdGFuZGFsb25lKSBCT09MIF9zdGFuZGFsb25lIFdLX0FWQUlM
QUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggYmZkN2FkNTVkOTlkYWUwYzZmOThkNGFl
NDIyOGQ5ZDRhNjczZjIyNi4uMTQ5ZTBmN2IwMzJjYWY0ZmZhOTllOTk4NjRmOTEwZmVmYTdjZDJk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yT3ZlcmxheU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rv
clVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTI0Miw3ICsyNDMs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRSZWxhdW5jaEluc3BlY3RvclBhZ2VQcm9j
ZXNzKCkKICAgICAvLyBXaGVuIGRpZFJlbGF1bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3MgaXMgY2Fs
bGVkIHdlIGNhbiBhc3N1bWUgaXQgaXMgZHVyaW5nIGEgbG9hZCByZXF1ZXN0LgogICAgIC8vIEFu
eSBtZXNzYWdlcyB3ZSB3b3VsZCBoYXZlIHNlbnQgdG8gYSB0ZXJtaW5hdGVkIHByb2Nlc3MgbmVl
ZCB0byBiZSByZS1zZW50LgogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9jb25uZWN0aW9u
SWRlbnRpZmllciwgbV9wYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RvckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29u
c29sZSgpCkBAIC0zOTUsNiArMzk2LDE4IEBAIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3Bl
Y3RvclBhZ2UoY29uc3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5CiAgICAg
cmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhyZXF1ZXN0VVJMLnBhdGgoKSkgPT0gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKHRlc3RQYWdlVVJMLnBhdGgoKSk7CiB9CiAKK3N0YXRpYyBi
b29sIGlzSW5zcGVjdG9yT3ZlcmxheVBhZ2UoY29uc3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYklu
c3BlY3RvclByb3h5LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKK3sKKyAgICBVUkwgcmVx
dWVzdFVSTChVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwo
KSk7CisgICAgaWYgKCFXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0xvY2FsKHJlcXVlc3RVUkwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIFVzZSBVUkwgc28gd2UgY2FuIGNvbXBhcmUganVzdCB0aGUgcGF0aHMuCisgICAg
VVJMIG92ZXJsYXlQYWdlVVJMKFVSTCgpLCB3ZWJJbnNwZWN0b3JQcm94eS0+aW5zcGVjdG9yT3Zl
cmxheVVSTCgpKTsKKyAgICBBU1NFUlQoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRy
ZWF0VVJMU2NoZW1lQXNMb2NhbChvdmVybGF5UGFnZVVSTC5wcm90b2NvbCgpKSk7CisgICAgcmV0
dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhyZXF1ZXN0VVJMLnBhdGgoKSkgPT0gZGVjb2Rl
VVJMRXNjYXBlU2VxdWVuY2VzKG92ZXJsYXlQYWdlVVJMLnBhdGgoKSk7Cit9CisKIHN0YXRpYyB2
b2lkIHByb2Nlc3NEaWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
CiAgICAgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5ID0gc3RhdGljX2Nhc3Q8
V2ViSW5zcGVjdG9yUHJveHkqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC00
MDIsNyArNDE1LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB3ZWJJbnNwZWN0b3JQcm94eS0+Y2xvc2UoKTsKIH0K
IAotc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlm
aWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBXS0ZyYW1lUmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVx
dWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uSW5zcGVjdG9yUGFnZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYs
IFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0
dG9uLCBXS0ZyYW1lUmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7CiAgICAgLy8gQWxsb3cgbm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRlIGFueXdoZXJl
LgogICAgIGlmICghdG9JbXBsKGZyYW1lUmVmKS0+aXNNYWluRnJhbWUoKSkgewpAQCAtNDI2LDYg
KzQzOSwyOCBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAgIHdlYkluc3BlY3RvclByb3h5
LT5wYWdlKCktPmxvYWRSZXF1ZXN0KHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0
KCkpOwogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uT3Zl
cmxheVBhZ2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyYW1lTmF2aWdhdGlv
blR5cGUsIFdLRXZlbnRNb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiwgV0tGcmFtZVJlZiwg
V0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0
ZW5lclJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIC8vIEFs
bG93IG5vbi1tYWluIGZyYW1lcyB0byBuYXZpZ2F0ZSBhbnl3aGVyZS4KKyAgICBpZiAoIXRvSW1w
bChmcmFtZVJlZiktPmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgdG9JbXBsKGxpc3RlbmVyUmVm
KS0+dXNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBXZWJJbnNwZWN0
b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHkgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJJbnNwZWN0
b3JQcm94eSo+KGNsaWVudEluZm8pOworICAgIEFTU0VSVCh3ZWJJbnNwZWN0b3JQcm94eSk7CisK
KyAgICAvLyBBbGxvdyBsb2FkaW5nIG9mIHRoZSBtYWluIGluc3BlY3RvciBvdmVybGF5IGZpbGUu
CisgICAgaWYgKGlzSW5zcGVjdG9yT3ZlcmxheVBhZ2Uod2ViSW5zcGVjdG9yUHJveHksIHJlcXVl
c3RSZWYpKSB7CisgICAgICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPnVzZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gUHJldmVudCBldmVyeXRoaW5nIGVsc2UgZnJvbSBsb2Fk
aW5nIGluIHRoZSBvdmVybGF5IHBhZ2UuCisgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+aWdub3Jl
KCk7Cit9CisKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbigpCiB7CkBAIC00NjUsNyArNTAwLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogICAg
ICAgICBudWxscHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24KICAgICAgICAg
bnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MAogICAgICAgICBudWxscHRyLCAvLyB1bmFibGVUb0ltcGxlbWVudFBvbGljeQotICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uSW5zcGVjdG9yUGFnZSwKICAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UKICAgICB9OwogCkBAIC01MTksNiArNTU0LDc2IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJh
c2VVUkwoKSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVPdmVy
bGF5UGFnZSgpCit7CisgICAgaWYgKG1fb3ZlcmxheVBhZ2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fb3ZlcmxheVBhZ2UgPSBwbGF0Zm9ybUNyZWF0ZU92ZXJsYXlQYWdlKCk7CisgICAgQVNT
RVJUKG1fb3ZlcmxheVBhZ2UpOworICAgIGlmICghbV9vdmVybGF5UGFnZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xpZW50ID0geworICAgICAg
ICB7IDEsIHRoaXMgfSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIs
IC8vIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5CisgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25PdmVybGF5UGFnZSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UKKyAgICB9OworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjUgbG9hZGVyQ2xp
ZW50ID0geworICAgICAgICB7IDUsIHRoaXMgfSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAgICBudWxscHRy
LCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkQ29tbWl0TG9hZEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaExv
YWRGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQorICAgICAgICBu
dWxscHRyLCAvLyBkaWRGaXJzdExheW91dEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQorICAgICAgICBudWxscHRyLCAvLyBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUnVuSW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQorICAgICAgICBudWxscHRyLCAvLyBk
aWRTdGFydFByb2dyZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZENoYW5nZVByb2dyZXNzCisg
ICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaFByb2dyZXNzCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZEJlY29tZVVucmVzcG9uc2l2ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRCZWNvbWVSZXNw
b25zaXZlCisgICAgICAgIHByb2Nlc3NEaWRDcmFzaCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0CisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW5fZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBkaWREZXRl
Y3RYU1NGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRfdW5hdmFpbGFibGUKKyAgICAgICAgbnVsbHB0ciwgLy8gd2lsbEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtCisgICAgICAgIG51bGxwdHIsIC8vIGludGVyYWN0aW9uT2NjdXJyZWRX
aGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUKKyAgICAgICAgbnVsbHB0ciwgLy8gcGx1Z2luRGlkRmFp
bF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY2VpdmVJ
bnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICBudWxscHRyLCAvLyByZWdpc3Rlcklu
dGVudFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICBudWxscHRyLCAvLyBkaWRM
YXlvdXQKKyAgICAgICAgbnVsbHB0ciwgLy8gcGx1Z2luTG9hZFBvbGljeV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYyCisgICAgICAgIG51bGxwdHIsIC8vIHBsdWdpbkRpZEZhaWwKKyAgICAgICAgbnVs
bHB0ciwgLy8gcGx1Z2luTG9hZFBvbGljeQorICAgICAgICBudWxscHRyLCAvLyB3ZWJHTExvYWRQ
b2xpY3kKKyAgICAgICAgbnVsbHB0ciwgLy8gcmVzb2x2ZVdlYkdMTG9hZFBvbGljeQorICAgICAg
ICBudWxscHRyLCAvLyBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QK
KyAgICB9OworCisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShtX292ZXJsYXlQ
YWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KHRvQVBJKG1fb3ZlcmxheVBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgbV9vdmVy
bGF5UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMp
OworICAgIG1fb3ZlcmxheVBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KGluc3BlY3RvckJhc2VVUkwoKSk7Cit9CisKIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94
eSBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJ
UEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29s
IHVuZGVyVGVzdCkKIHsKQEAgLTUzMiw5ICs2MzcsOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmll
cgogICAgICAgICByZXR1cm47CiAKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKLSAgICBt
X2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgbV9pbnNw
ZWN0b3JDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb25JZGVudGlmaWVyOwogCi0gICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkVzdGFibGlzaENvbm5lY3Rpb24obV9jb25uZWN0aW9uSWRlbnRpZmllciwgbV9wYWdlLT5wYWdl
SUQoKSwgbV91bmRlclRlc3QpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0
YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RvckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCiAg
ICAgaWYgKCFtX3VuZGVyVGVzdCkgewogICAgICAgICBtX2NhbkF0dGFjaCA9IGNhbkF0dGFjaDsK
QEAgLTU2MCw2ICs2NjUsMjQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVj
dG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBtX2luc3Bl
Y3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRlc3QgPyBpbnNwZWN0b3JU
ZXN0UGFnZVVSTCgpIDogaW5zcGVjdG9yUGFnZVVSTCgpKSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmNyZWF0ZU92ZXJsYXlQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRl
bnRpZmllcikKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZWFn
ZXJseUNyZWF0ZU92ZXJsYXlQYWdlKCk7CisKKyAgICBBU1NFUlQobV9vdmVybGF5UGFnZSk7Cisg
ICAgaWYgKCFtX292ZXJsYXlQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX292ZXJsYXlD
b25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb25JZGVudGlmaWVyOworCisgICAgbV9vdmVy
bGF5UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvck92ZXJsYXk6OkVz
dGFibGlzaENvbm5lY3Rpb24obV9vdmVybGF5Q29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+
cGFnZUlEKCkpLCBtX292ZXJsYXlQYWdlLT5wYWdlSUQoKSk7CisKKyAgICBtX2luc3BlY3RvclBh
Z2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5zcGVjdG9yT3ZlcmxheVVSTCgpKSk7Cit9CisK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQogewogICAgIGlmIChtX3VuZGVyVGVzdCkK
QEAgLTU3MiwxMiArNjk1LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSgpCiB7Ci0gICAgaWYgKCFtX2luc3BlY3Rv
clBhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UgfHwgIW1fb3ZlcmxheVBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsK
IAorICAgIG1fb3ZlcmxheVBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fb3ZlcmxheVBhZ2UgPSBudWxscHRyOworCiAgICAgbV9pc1Zpc2li
bGUgPSBmYWxzZTsKICAgICBtX2lzUHJvZmlsaW5nUGFnZSA9IGZhbHNlOwogICAgIG1fc2hvd01l
c3NhZ2VTZW50ID0gZmFsc2U7CkBAIC01ODgsNyArNzE0LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6ZGlkQ2xvc2UoKQogICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOwogICAgIG1fY2FuQXR0
YWNoID0gZmFsc2U7CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKLSAgICBtX2Nvbm5lY3Rpb25J
ZGVudGlmaWVyID0gSVBDOjpBdHRhY2htZW50KCk7CisgICAgbV9pbnNwZWN0b3JDb25uZWN0aW9u
SWRlbnRpZmllciA9IElQQzo6QXR0YWNobWVudCgpOworICAgIG1fb3ZlcmxheUNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gSVBDOjpBdHRhY2htZW50KCk7CiAKICAgICBwbGF0Zm9ybURpZENsb3NlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4
IDE3ZTBjYzVmZTFhOWEzMTc1ODljNzlkY2QyZTAyNDliOWNlOTVmNGEuLmIwM2QwYjMyMjdjNjZj
YWUxNDhjMjUxZWMwNmFlNTE1MmM0NGY3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorT0JKQ19DTEFTUyBXS1dlYlZpZXc7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1B
QykKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTEzMSwxMiArMTM1LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2dsZVBhZ2VQcm9maWxpbmco
KTsKIAogICAgIHN0YXRpYyBib29sIGlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmKTsKKyAg
ICBzdGF0aWMgYm9vbCBpc092ZXJsYXlQYWdlKFdlYlBhZ2VQcm94eSYpOwogICAgIHN0YXRpYyBX
ZWJQcm9jZXNzUG9vbCYgaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKTsKIAogICAgIC8vIFByb3ZpZGVk
IGJ5IHBsYXRmb3JtIFdlYkluc3BlY3RvclByb3h5IGltcGxlbWVudGF0aW9ucy4KICAgICBTdHJp
bmcgaW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0OwogICAgIFN0cmluZyBpbnNwZWN0b3JUZXN0UGFn
ZVVSTCgpIGNvbnN0OwogICAgIFN0cmluZyBpbnNwZWN0b3JCYXNlVVJMKCkgY29uc3Q7CisgICAg
U3RyaW5nIGluc3BlY3Rvck92ZXJsYXlVUkwoKSBjb25zdDsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1JfU0VSVkVSKQogICAgIHZvaWQgZW5hYmxlUmVtb3RlSW5zcGVjdGlvbigpOwpAQCAtMTUwLDEx
ICsxNTYsMTMgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JQcm94eShXZWJQ
YWdlUHJveHkqKTsKIAogICAgIHZvaWQgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKyAg
ICB2b2lkIGVhZ2VybHlDcmVhdGVPdmVybGF5UGFnZSgpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZVByb3h5
KiBwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBsYXRm
b3JtQ3JlYXRlT3ZlcmxheVBhZ2UoKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlbigpOwogICAgIHZv
aWQgcGxhdGZvcm1EaWRDbG9zZSgpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CkBA
IC0xNzIsMTEgKzE4MCwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXRUb29sYmFy
SGVpZ2h0KHVuc2lnbmVkKTsKICAgICB2b2lkIHBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBm
b3JjZVNhdmVBcyk7CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworICAgIHZvaWQgcGxhdGZvcm1BdHRhY2hPdmVy
bGF5KCk7CisgICAgdm9pZCBwbGF0Zm9ybURldGFjaE92ZXJsYXkoKTsKIAogICAgIC8vIENhbGxl
ZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwogICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9y
UGFnZShJUEM6OkF0dGFjaG1lbnQsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCk7CiAg
ICAgdm9pZCBkaWRDbG9zZSgpOwogICAgIHZvaWQgYnJpbmdUb0Zyb250KCk7CisKKyAgICB2b2lk
IGNyZWF0ZU92ZXJsYXlQYWdlKElQQzo6QXR0YWNobWVudCk7CisKICAgICB2b2lkIGF0dGFjaEF2
YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNv
bnN0IFN0cmluZyYpOwogCkBAIC0yMTEsNiArMjI0LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlBh
Z2VQcm94eSogbV9wYWdlOwogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdlOworICAg
IFdlYlBhZ2VQcm94eSogbV9vdmVybGF5UGFnZTsKIAogICAgIGJvb2wgbV91bmRlclRlc3Q7CiAg
ICAgYm9vbCBtX2lzVmlzaWJsZTsKQEAgLTIyNCwxMSArMjM4LDE2IEBAIHByaXZhdGU6CiAgICAg
Ly8gYWxsIHRoZSBpbnNwZWN0b3JzIGluIHRoZSBzYW1lIGdyb3VwIHdpbGwgbWFrZSBpdCBpbXBv
c3NpYmxlIHRvIGRlYnVnCiAgICAgLy8gdGhlIGluc3BlY3RvciBjb2RlLCBzbyB3ZSB1c2UgdGhl
IGxldmVsIHRvIG1ha2UgZGlmZmVyZW50IHBhZ2UgZ3JvdXBzLgogICAgIHVuc2lnbmVkIG1fbGV2
ZWw7Ci0gICAgCi0gICAgSVBDOjpBdHRhY2htZW50IG1fY29ubmVjdGlvbklkZW50aWZpZXI7CisK
KyAgICBJUEM6OkF0dGFjaG1lbnQgbV9pbnNwZWN0b3JDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAg
ICBJUEM6OkF0dGFjaG1lbnQgbV9vdmVybGF5Q29ubmVjdGlvbklkZW50aWZpZXI7CiAKICAgICBB
dHRhY2htZW50U2lkZSBtX2F0dGFjaG1lbnRTaWRlOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gbV9vdmVybGF5VmlldzsKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvcldLVmlldz4gbV9pbnNwZWN0
b3JWaWV3OwogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gbV9pbnNwZWN0b3JXaW5kb3c7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggODgyODFjNjdjYTFlMDJhYjdlMTkxMmEwNjYyZDUxYjgwOWMwMWZhOC4uNDUz
ODhmNWZmZjYwMTgzOGUxMmM5OTFhMDQ5YzRhMDZhY2FhY2RhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjIsNiArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgQ3Jl
YXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJv
b2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkKKyAgICBDcmVhdGVPdmVybGF5UGFnZShJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAKICAgICBEaWRDbG9zZSgpCiAgICAg
QnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDg5YjBhOWY1MzM0MjllMDYxZTY0ZGRlMWY5NTlj
YjZkZmNjNzI0NjYuLjUxZjE5ODU0M2QwMDgxNmQwNWQxMmM4OGFlNDI3YWY3NGUwN2M5ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQpAQCAtMzYsNiArMzYsMTAgQEAKICNpbXBvcnQgIldLUmV0YWluUHRyLmgiCiAjaW1w
b3J0ICJXS1VSTENGLmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tQ
cmVmZXJlbmNlc1ByaXZhdGUuaCIKKyNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgor
I2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJJ
bnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKQEAgLTU1MCw2
ICs1NTQsODQgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKCkKICAgICByZXR1cm4gaW5zcGVjdG9yUGFnZTsKIH0KIAorV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVPdmVybGF5UGFnZSgpCit7
CisgICAgQVNTRVJUKG1fcGFnZSk7CisKKyAgICBpZiAobV9vdmVybGF5VmlldykKKyAgICAgICAg
cmV0dXJuIG1fb3ZlcmxheVZpZXctPl9wYWdlLmdldCgpOworCisgICAgTlNSZWN0IGluc3BlY3Rl
ZFZpZXdGcmFtZSA9IG1fcGFnZS0+d2tWaWV3KCkuZnJhbWU7CisKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFdLUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmVmZXJlbmNlcy5fbG9nc1BhZ2VNZXNzYWdlc1Rv
U3lzdGVtQ29uc29sZUVuYWJsZWQgPSBZRVM7CisjZW5kaWYKKyAgICBwcmVmZXJlbmNlcy5fYWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gWUVTOworICAgIFtjb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NQb29sOiA6OldlYktpdDo6d3JhcHBlcihpbnNwZWN0b3JQcm9jZXNzUG9vbCgpKV07Cisg
ICAgCisgICAgbV9vdmVybGF5VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6aW5zcGVjdGVkVmlld0ZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIEFTU0VSVChtX292ZXJsYXlWaWV3KTsKKworICAgIFdlYlBhZ2VQcm94eSog
b3ZlcmxheVBhZ2UgPSBtX292ZXJsYXlWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICBBU1NFUlQob3Zl
cmxheVBhZ2UpOworCisgICAgV0tQYWdlVUlDbGllbnRWMiB1aUNsaWVudCA9IHsKKyAgICAgICAg
eyAyLCB0aGlzIH0sCisgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMAorICAgICAgICAwLCAvLyBzaG93UGFnZQorICAgICAgICAwLCAvLyBjbG9zZVBhZ2UK
KyAgICAgICAgMCwgLy8gdGFrZUZvY3VzCisgICAgICAgIDAsIC8vIGZvY3VzCisgICAgICAgIDAs
IC8vIHVuZm9jdXMKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CisgICAgICAgIDAs
IC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCisgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9t
cHQKKyAgICAgICAgMCwgLy8gc2V0U3RhdHVzVGV4dAorICAgICAgICAwLCAvLyBtb3VzZURpZE1v
dmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIDAsIC8vIG1pc3Np
bmdQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgMCwg
Ly8gZGlkTm90SGFuZGxlS2V5RXZlbnQKKyAgICAgICAgMCwgLy8gZGlkTm90SGFuZGxlV2hlZWxF
dmVudAorICAgICAgICAwLCAvLyBhcmVUb29sYmFyc1Zpc2libGUKKyAgICAgICAgMCwgLy8gc2V0
VG9vbGJhcnNWaXNpYmxlCisgICAgICAgIDAsIC8vIGlzTWVudUJhclZpc2libGUKKyAgICAgICAg
MCwgLy8gc2V0TWVudUJhclZpc2libGUKKyAgICAgICAgMCwgLy8gaXNTdGF0dXNCYXJWaXNpYmxl
CisgICAgICAgIDAsIC8vIHNldFN0YXR1c0JhclZpc2libGUKKyAgICAgICAgMCwgLy8gaXNSZXNp
emFibGUKKyAgICAgICAgMCwgLy8gc2V0UmVzaXphYmxlCisgICAgICAgIGdldFdpbmRvd0ZyYW1l
LAorICAgICAgICBzZXRXaW5kb3dGcmFtZSwKKyAgICAgICAgMCwgLy8gcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsCisgICAgICAgIDAsIC8vIGRpZERyYXcKKyAgICAgICAgMCwgLy8gcGFnZURp
ZFNjcm9sbAorICAgICAgICBleGNlZWRlZERhdGFiYXNlUXVvdGEsCisgICAgICAgIHJ1bk9wZW5Q
YW5lbCwKKyAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdAorICAgICAgICAwLCAvLyBoZWFkZXJIZWlnaHQKKyAgICAgICAgMCwgLy8gZm9vdGVy
SGVpZ2h0CisgICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKKyAgICAgICAgMCwgLy8gZHJhd0Zvb3Rl
cgorICAgICAgICAwLCAvLyBwcmludEZyYW1lCisgICAgICAgIDAsIC8vIHJ1bk1vZGFsCisgICAg
ICAgIDAsIC8vIHVudXNlZAorICAgICAgICAwLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyCisgICAgICAgIDAsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKKyAgICAgICAg
MCwgLy8gY3JlYXRlUGFnZQorICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudAor
ICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dAorICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMQorICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKKyAgICAgICAgMCwg
Ly8gaGlkZUNvbG9yUGlja2VyCisgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZAorICAgIH07CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQodG9BUEkob3Zlcmxh
eVBhZ2UpLCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICByZXR1cm4gb3ZlcmxheVBhZ2U7Cit9CisK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbigpCiB7CiAgICAgaWYgKG1faXNB
dHRhY2hlZCkKQEAgLTU1Nyw2ICs2MzksOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybU9wZW4oKQogICAgIGVsc2UKICAgICAgICAgY3JlYXRlSW5zcGVjdG9yV2luZG93KCk7CiAK
KyAgICAvLyBYWFg6IG5lZWQgdG8gYWRkIGNvZGUgdGhhdCBhdHRhY2hlcyBhbmQgZGV0YWNoZXMg
dGhlIG92ZXJsYXkuCisgICAgcGxhdGZvcm1BdHRhY2hPdmVybGF5KCk7CisKICAgICBwbGF0Zm9y
bUJyaW5nVG9Gcm9udCgpOwogfQogCkBAIC03NTcsOCArODQyLDEwIEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1l
bnNpb24pCiAKICAgICAvLyBEaXNhYmxlIHNjcmVlbiB1cGRhdGVzIHRvIG1ha2Ugc3VyZSB0aGUg
bGF5ZXJzIGZvciBib3RoIHZpZXdzIHJlc2l6ZSBpbiBzeW5jLgogICAgIFtbbV9pbnNwZWN0b3JW
aWV3IHdpbmRvd10gZGlzYWJsZVNjcmVlblVwZGF0ZXNVbnRpbEZsdXNoXTsKLQorICAgIFtbbV9v
dmVybGF5VmlldyB3aW5kb3ddIGRpc2FibGVTY3JlZW5VcGRhdGVzVW50aWxGbHVzaF07CisgICAg
CiAgICAgW21faW5zcGVjdG9yVmlldyBzZXRGcmFtZTppbnNwZWN0b3JGcmFtZV07CisgICAgW21f
b3ZlcmxheVZpZXcgc2V0RnJhbWU6aW5zcGVjdGVkVmlld0ZyYW1lXTsKICAgICBbaW5zcGVjdGVk
VmlldyBzZXRGcmFtZTppbnNwZWN0ZWRWaWV3RnJhbWVdOwogfQogCkBAIC04NzksNiArOTY2LDE3
IEBAIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSBjb25z
dAogICAgIHJldHVybiBbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoXSBhYnNvbHV0ZVN0cmlu
Z107CiB9CiAKK1N0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yT3ZlcmxheVVSTCgp
IGNvbnN0Cit7CisgICAgLy8gQ2FsbCB0aGUgc29mdCBsaW5rIGZyYW1ld29yayBmdW5jdGlvbiB0
byBkbG9wZW4gaXQsIHRoZW4gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOl0gd2lsbCB3
b3JrLgorICAgIFdlYkluc3BlY3RvclVJTGlicmFyeSgpOworCisgICAgTlNTdHJpbmcgKnBhdGgg
PSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkluc3BlY3Rv
clVJIl0gcGF0aEZvclJlc291cmNlOkAiT3ZlcmxheSIgb2ZUeXBlOkAiaHRtbCJdOworICAgIEFT
U0VSVChbcGF0aCBsZW5ndGhdKTsKKworICAgIHJldHVybiBbW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpwYXRoXSBhYnNvbHV0ZVN0cmluZ107Cit9CisKIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6
aW5zcGVjdG9yQmFzZVVSTCgpIGNvbnN0CiB7CiAgICAgLy8gQ2FsbCB0aGUgc29mdCBsaW5rIGZy
YW1ld29yayBmdW5jdGlvbiB0byBkbG9wZW4gaXQsIHRoZW4gW05TQnVuZGxlIGJ1bmRsZVdpdGhJ
ZGVudGlmaWVyOl0gd2lsbCB3b3JrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3YzRlMDQ1ODE3Y2I1ZWRlYTVlY2NlNGU0MzJi
NTE4Yjg1NThjN2QuLmI5MjI3ODFjYzkwNjMxZjkxYWNjMmQzMzc2MmI0MGE2OTdiMDQzNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE2MDgsNiArMTYwOCw3IEBACiAJCUMwRTNBQTdBMTIwOUU4MzAwMEE0OUQwMSAvKiBNb2R1
bGVDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MEUzQUE0ODEyMDlFNDUwMDBBNDlEMDEgLyogTW9kdWxlQ0YuY3BwICovOyB9OwogCQlDMEUzQUE3
QjEyMDlFODM1MDBBNDlEMDEgLyogTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTNBQTQ1MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUu
Y3BwICovOyB9OwogCQlDMEUzQUE3QzEyMDlFODNDMDBBNDlEMDEgLyogTW9kdWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUzQUE0NDEyMDlFMkJB
MDBBNDlEMDEgLyogTW9kdWxlLmggKi87IH07CisJCUM0QjJCQTQ3MUE2RjRFQjkwMDkwMTJFRSAv
KiBXZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3NhZ2VzLmluIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEIyQkE0NjFBNkY0RUI5MDA5MDEyRUUgLyogV2Vi
SW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbiAqLzsgfTsKIAkJQzUxNzM4ODExMkRGOEY0RjAw
RUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKIAkJQzUyMzdGNjAxMjQ0MUNBMzAwNzgwNDcyIC8qIFdl
YkVkaXRvckNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMu
bW0gKi87IH07CiAJCUM1NDI1NkI1MThCRUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRy
b2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NDI1
NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLzsgfTsKQEAgLTM4
MDksNiArMzgxMCw4IEBACiAJCUMwRTNBQTQ0MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMwRTNBQTQ1MTIwOUUyQkEwMEE0OUQwMSAvKiBNb2R1bGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFM0FBNDgxMjA5RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZUNG
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUNGLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRCMkJBNDUxQTZGM0ZDNjAwOTAxMkVFIC8q
IFdlYkluc3BlY3Rvck92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViSW5zcGVjdG9yT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNEIy
QkE0NjFBNkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUy
MzdGNUYxMjQ0MUNBMzAwNzgwNDcyIC8qIFdlYkVkaXRvckNsaWVudE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MjU2QUYxOEJFQzE4QjAwREU0MTc5IC8qIFdL
Rm9ybUlucHV0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Zv
cm1JbnB1dENvbnRyb2wuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS0Zvcm1JbnB1dENvbnRyb2wuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5NzQsNiArNTk3Nyw4IEBACiAJCQkJMUM4
RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgKi8sCiAJCQkJMUM4RTI4
MUUxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oICovLAogCQkJCTFDOEUyQTFDMTI3
NzgzM0YwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gKi8sCisJCQkJQzRCMkJB
NDUxQTZGM0ZDNjAwOTAxMkVFIC8qIFdlYkluc3BlY3Rvck92ZXJsYXkuaCAqLywKKwkJCQlDNEIy
QkE0NjFBNkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbiAq
LywKIAkJCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICov
LAogCQkJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovLAog
CQkJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5p
biAqLywKQEAgLTg2NzUsNiArODY4MCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlFMUQyNkE1MTE3
NTk2NEQ3MDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliIGluIFJlc291cmNlcyAqLywK
IAkJCQlFMTMzRkQ4QTE0MjNERDdGMDBGQzdCRkIgLyogV2ViS2l0LmljbnMgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCUM0QjJCQTQ3MUE2RjRFQjkwMDkwMTJFRSAvKiBXZWJJbnNwZWN0b3JPdmVybGF5
Lm1lc3NhZ2VzLmluIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCA1YTdmMTcwMGJkMTlhYmNhYTdmNzg1NmRhMmEwM2ViNmNlMjZmMWIwLi5hZDIxOTc2
YzUyYjNjZWY1N2EwMTA1NjJkYjBiMmI5ZDU2YzlmYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCkBAIC0xMDEsNiArMTAxLDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpi
cmluZ0Zyb250ZW5kVG9Gcm9udCgpCiAgICAgICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmJyaW5n
VG9Gcm9udCgpOwogfQogCitJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiBXZWJJbnNwZWN0b3JD
bGllbnQ6Om9wZW5JbnNwZWN0b3JPdmVybGF5KCkKK3sKKyAgICBtX3BhZ2UtPmluc3BlY3Rvcigp
LT5jcmVhdGVPdmVybGF5UGFnZSgpOworCisgICAgcmV0dXJuIG1fcGFnZS0+aW5zcGVjdG9yKCk7
Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRSZXNpemVNYWluRnJhbWUoRnJhbWUq
KQogewogICAgIGlmIChtX3BhZ2UtPmluc3BlY3RvcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKaW5kZXggOWE0NDAwYmU1YWJhNmI5OTUxNWY2ZDg5MWY2ZTlhODE1Njc4YTQxNS4uNGFiMmFl
YjcyNmE2NTE1NDY5ZGVmMDBhMWI2NjM4OTg5OGMwNTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCkBAIC01NCw4ICs1NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zcGVjdG9yRGVz
dHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikg
b3ZlcnJpZGU7CisgICAgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCogb3Blbkluc3BlY3Rvck92
ZXJsYXkoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7CisgICAgCiAg
ICAgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgaGlnaGxpZ2h0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDQ1NzBmOTEzNDdjZmUwNTgx
MzllMDc1OGM2MjBhOTM4NTA4NjA5OTUuLjVhN2Y4ZjExMTRlMDhhNDI4MTRjNTI2MWRiZWU5NWNj
ZGEwYjMwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yT3ZlcmxheU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCkBAIC0xMDIsNiArMTAzLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRl
bmQoKQogICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9mcm9u
dGVuZENvbm5lY3Rpb24gPSBudWxscHRyOwogCisgICAgbV9vdmVybGF5Q29ubmVjdGlvbi0+aW52
YWxpZGF0ZSgpOworICAgIG1fb3ZlcmxheUNvbm5lY3Rpb24gPSBudWxscHRyOworCiAgICAgbV9h
dHRhY2hlZCA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBmYWxzZTsKIH0KQEAg
LTExMSw2ICsxMTUsMzIgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3I6OmNyZWF0ZU92ZXJsYXlQYWdlKCkKK3sKKyAg
ICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgT1MoREFSV0lOKQorICAgIG1h
Y2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFz
a19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIobGlzdGVu
aW5nUG9ydCk7CisgICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25DbGllbnRQb3J0KGxpc3Rl
bmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQorICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoc29ja2V0UGFpci5zZXJ2
ZXIpOworICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChzb2NrZXRQYWly
LmNsaWVudCk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuOworI2Vu
ZGlmCisKKyAgICBtX292ZXJsYXlDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcywgUnVuTG9vcDo6bWFp
bigpKTsKKyAgICBtX292ZXJsYXlDb25uZWN0aW9uLT5vcGVuKCk7CisKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6Q3JlYXRlT3ZlcmxheVBhZ2UoY29ubmVjdGlvbkNsaWVudFBvcnQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKK30KKwogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvciBtZXNz
YWdlcwogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3coKQogewpAQCAtMjU2LDYgKzI4NiwxMiBAQCBi
b29sIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9PdmVybGF5KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX292ZXJsYXlDb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JPdmVybGF5OjpTZW5kTWVzc2FnZVRv
T3ZlcmxheShtZXNzYWdlKSwgMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmgKaW5kZXggZWQ4NWM5MDliMjkyYWFmYTljOTQzZmVjNGE0ZTRlMWI0NDI1YmMyOS4u
ODQwZGQ2YzRjNTkwM2YyMzViZGI3NTlhZjVhZmFiZmE0MzY1ZTcxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9PdmVybGF5Q2hhbm5lbC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNyw3ICszOCwxMSBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVj
dG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5z
cGVjdG9yPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKK2NsYXNzIFdlYkluc3BlY3RvcgorICAgIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPgor
ICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgLCBwdWJsaWMgSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBJbnNwZWN0b3I6Ok92
ZXJsYXlDaGFubmVsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0
b3I+IGNyZWF0ZShXZWJQYWdlKik7CiAKQEAgLTQ1LDggKzUwLDEyIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOwogCisgICAgLy8gSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKKyAgICAvLyBJbnNwZWN0
b3I6Ok92ZXJsYXlDaGFubmVsCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9PdmVybGF5
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CisKICAgICAvLyBJbXBsZW1lbnRlZCBp
biBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92
ZXJyaWRlOwogCkBAIC05Niw2ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ2FsbGVkIGZy
b20gV2ViSW5zcGVjdG9yQ2xpZW50CiAgICAgdm9pZCBjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wg
dW5kZXJUZXN0KTsKKyAgICB2b2lkIGNyZWF0ZU92ZXJsYXlQYWdlKCk7CiAKICAgICB2b2lkIGNs
b3NlRnJvbnRlbmQoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOwpAQCAtMTAzLDYgKzExMyw3
IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSogbV9wYWdlOwogCiAgICAgUmVmUHRyPElQQzo6Q29u
bmVjdGlvbj4gbV9mcm9udGVuZENvbm5lY3Rpb247CisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlv
bj4gbV9vdmVybGF5Q29ubmVjdGlvbjsKIAogICAgIGJvb2wgbV9hdHRhY2hlZDsKICAgICBib29s
IG1fcHJldmlvdXNDYW5BdHRhY2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAxOWRi
OWNlZWM3NjhiNTM3MDFkMGY2ZGEyYmQ4YzhhYTljZTc1NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5LmNwcApA
QCAtMCwwICsxLDI3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9m
IFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JPdmVybGF5LmgiCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRWYWx1
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01X
cmFwcGVyV29ybGQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NjcmlwdEdsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0U3RhdGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitSZWY8V2ViSW5zcGVjdG9yT3ZlcmxheT4gV2ViSW5zcGVjdG9yT3ZlcmxheTo6Y3Jl
YXRlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW5zcGVj
dG9yT3ZlcmxheShwYWdlKSk7Cit9CisKK1dlYkluc3BlY3Rvck92ZXJsYXk6OldlYkluc3BlY3Rv
ck92ZXJsYXkoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lk
IFdlYkluc3BlY3Rvck92ZXJsYXk6OmVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50
IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIsIGJvb2wgdW5kZXJUZXN0KQoreworI2lmIE9TKERBUldJTikKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25J
ZGVudGlmaWVyLnBvcnQoKSk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpKTsKKyNlbHNlCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlmIChJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXI7CisKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudCh0aGlzKTsKKworICAgIG1fYmFja2VuZENv
bm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVj
dGlvbklkZW50aWZpZXIsICp0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fYmFja2VuZENv
bm5lY3Rpb24tPm9wZW4oKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5Ojp3aW5kb3dP
YmplY3RDbGVhcmVkKCkKK3sKKyAgICBpZiAobV9mcm9udGVuZEhvc3QpCisgICAgICAgIG1fZnJv
bnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CisKKyAgICBtX2Zyb250ZW5kSG9zdCA9IElu
c3BlY3RvckZyb250ZW5kSG9zdDo6Y3JlYXRlKHRoaXMsIG1fcGFnZS0+Y29yZVBhZ2UoKSk7Cisg
ICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoZXhlY1N0YXRlRnJvbVBhZ2UobWFpblRocmVhZE5v
cm1hbFdvcmxkKCksIG1fcGFnZS0+Y29yZVBhZ2UoKSksIEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdG9y
RnJvbnRlbmRIb3N0IiksIG1fZnJvbnRlbmRIb3N0LmdldCgpKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JPdmVybGF5Ojpmcm9udGVuZExvYWRlZCgpCit7CisgICAgbV9mcm9udGVuZExvYWRlZCA9
IHRydWU7CisKKyAgICBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworICAgIGJyaW5nVG9G
cm9udCgpOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6Om1vdmVXaW5kb3dCeShmbG9h
dCB4LCBmbG9hdCB5KQoreworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX3BhZ2UtPmNvcmVQ
YWdlKCktPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBmcmFtZVJlY3QubW92ZSh4LCB5KTsK
KyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoZnJhbWVSZWN0
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpicmluZ1RvRnJvbnQoKQoreworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2xvc2VXaW5kb3co
KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKKworICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUo
KTsKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIgPSAwOworICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Cit9CisKK3ZvaWQg
V2ViSW5zcGVjdG9yT3ZlcmxheTo6cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCit7
CisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgpLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpC
b3R0b206CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQorewor
ICAgIGNvbnN0IGNoYXIqIHNpZGVTdHJpbmc7CisKKyAgICBzd2l0Y2ggKHNpZGUpIHsKKyAgICBj
YXNlIERvY2tTaWRlOjpVbmRvY2tlZDoKKyAgICAgICAgc2lkZVN0cmluZyA9ICJ1bmRvY2tlZCI7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6CisgICAgICAgIHNp
ZGVTdHJpbmcgPSAicmlnaHQiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6
OkJvdHRvbToKKyAgICAgICAgc2lkZVN0cmluZyA9ICJib3R0b20iOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBtX2RvY2tTaWRlID0gc2lkZTsKKworICAgIGV2YWx1YXRlQ29tbWFuZE9u
TG9hZChBU0NJSUxpdGVyYWwoInNldERvY2tTaWRlIiksIEFTQ0lJTGl0ZXJhbChzaWRlU3RyaW5n
KSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCBo
ZWlnaHQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldFRvb2xiYXJIZWlnaHQo
aGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yT3ZlcmxheTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmICht
X2JhY2tlbmRDb25uZWN0aW9uKQorICAgICAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6Ok9wZW5Jbk5ld1RhYih1cmwpLCAwKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JPdmVybGF5OjpzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNh
dmVBcykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29u
dGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjphcHBlbmQoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCkKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6aW5zcGVj
dGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzaG93Q29u
c29sZSgpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd0Nv
bnNvbGUiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd1Jlc291cmNlcygp
Cit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd1Jlc291cmNl
cyIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzaG93TWFpblJlc291cmNlRm9y
RnJhbWUoU3RyaW5nIGZyYW1lSWRlbnRpZmllcikKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxv
YWQoQVNDSUlMaXRlcmFsKCJzaG93TWFpblJlc291cmNlRm9yRnJhbWUiKSwgZnJhbWVJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzdGFydFBhZ2VQcm9maWxpbmco
KQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldFRpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZCIpLCB0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5
OjpzdG9wUGFnZVByb2ZpbGluZygpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJ
TGl0ZXJhbCgic2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIiksIGZhbHNlKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAg
IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNhdmVkVVJMIiksIHVybCk7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJs
KQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoImFwcGVuZGVkVG9V
UkwiKSwgdXJsKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGV2YWx1YXRlRXhwcmVzc2lv
bk9uTG9hZChtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaE1lc3NhZ2VB
c3luYygiLCBtZXNzYWdlLCAiKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5Ojpz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1f
YmFja2VuZENvbm5lY3Rpb24pCisgICAgICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIDApOwor
fQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25z
dCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCit7CisgICAgaWYgKGFy
Z3VtZW50LmlzTnVsbCgpKQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0
cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiXSki
KSk7CisgICAgZWxzZQorICAgICAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmlu
ZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiLCBcIiIs
IGFyZ3VtZW50LCAiXCJdKSIpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5OjpldmFs
dWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KQor
eworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb21tYW5kLCBBU0NJSUxpdGVyYWwoYXJndW1l
bnQgPyAidHJ1ZSIgOiAiZmFsc2UiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6
ZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKK3sKKyAg
ICBpZiAobV9mcm9udGVuZExvYWRlZCkgeworICAgICAgICBBU1NFUlQobV9xdWV1ZS5pc0VtcHR5
KCkpOworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHQoZXhwcmVzc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X3F1ZXVlLmFwcGVuZChleHByZXNzaW9uKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5
OjpldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRM
b2FkZWQpOworCisgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1ZXVlKQor
ICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV4ZWN1dGVT
Y3JpcHQoZXhwcmVzc2lvbik7CisKKyAgICBtX3F1ZXVlLmNsZWFyKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRkMTQ2ZTQ1ZGQxMjU0MWJkN2NjNzg2OWEzMjQ0MDY5OWQ1MTRmMWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yT3ZlcmxheS5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJJbnNwZWN0b3JPdmVybGF5X2gKKyNkZWZpbmUgV2ViSW5zcGVjdG9y
T3ZlcmxheV9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViSW5zcGVjdG9yT3ZlcmxheQorICAgIDog
cHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVj
dG9yT3ZlcmxheT4gY3JlYXRlKFdlYlBhZ2UqKTsKKworICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2U7IH0KKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBX
ZWJJbnNwZWN0b3JPdmVybGF5TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRl
OworCisgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CisK
KyAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yT3ZlcmxheSBtZXNzYWdlcworICAgIHZvaWQg
ZXN0YWJsaXNoQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCk7CisKKyAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9PdmVybGF5KGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQKKy8qCisgICAgdm9pZCB3aW5kb3dPYmplY3RD
bGVhcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGU7CisKKyAg
ICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBicmlu
Z1RvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2luZG93KCkgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIHJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIG9wZW5J
bk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGNhblNhdmUo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVB
cykgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOworCisgICAgdm9pZCBpbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyovCisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgV2ViSW5zcGVjdG9yT3ZlcmxheShXZWJQYWdlKik7CisKKy8qCisgICAgdm9pZCBl
dmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcm
IGFyZ3VtZW50ID0gU3RyaW5nKCkpOworICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNv
bnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgQVNDSUlMaXRlcmFsJiBhcmd1bWVudCkgeyBldmFs
dWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgU3RyaW5nKGFyZ3VtZW50KSk7IH0KKyAgICB2b2lk
IGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1l
bnQpOworICAgIHZvaWQgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbik7CisgICAgdm9pZCBldmFsdWF0ZVBlbmRpbmdFeHByZXNzaW9ucygpOworKi8KKyAg
ICBXZWJQYWdlKiBtX3BhZ2U7CisKKyAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2JhY2tl
bmRDb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CisK
Ky8qCisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkOworICAgIERlcXVlPFN0cmluZz4gbV9xdWV1
ZTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRl
bmRIb3N0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbXV0YWJsZSBTdHJpbmcgbV9sb2Nh
bGl6ZWRTdHJpbmdzVVJMOworICAgIG11dGFibGUgYm9vbCBtX2hhc0xvY2FsaXplZFN0cmluZ3NV
Ukw7CisjZW5kaWYKKyovCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JPdmVybGF5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JP
dmVybGF5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvck92ZXJsYXkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThhYTc3OGVhMzQ3OGJk
N2YwZGE2OTJlNTcyNGYxMmU1ZGI1MTIxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3NhZ2VzLmluCkBA
IC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZlcnNpdHkgb2YgV2FzaGlu
Z3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK21lc3NhZ2VzIC0+IFdlYklu
c3BlY3Rvck92ZXJsYXkgeworICAgIEVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcikK
KworICAgIFNlbmRNZXNzYWdlVG9PdmVybGF5KFN0cmluZyBtZXNzYWdlKQorfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246101</attachid>
            <date>2015-02-05 07:46:03 -0800</date>
            <delta_ts>2015-02-11 06:52:15 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-126923-20150205074603.patch</filename>
            <type>text/plain</type>
            <size>182959</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY2YjE1Yzc0YjMzYTE1ODBkZTE5OTE5Y2NiMjAxMTNjNWNlNjRmLi5mZjQwMzA1MjU3MjkxMzc4
MzhiN2Y4Y2I4YmJhZmQ2OTQyNzJiYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNS0wMi0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBl
dmVudHMgb24gdGhlIGluc3BlY3RvciBwYWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvT3ZlcmxheUNoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Ok92ZXJsYXlD
aGFubmVsOjp+T3ZlcmxheUNoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50Lmg6CisKIDIwMTUtMDItMDMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFdvcmthcm91bmQgYSB0aHJlYWQgbGlicmFyeSBidWcgd2hlcmUgdGhyZWFkIGRl
c3RydWN0b3JzIG1heSBub3QgZ2V0IGNhbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YzNmMjY2Y2VkMWJm
YWIwMDRlZTBjNTkxNjM3OTA2MGU2MDUwZGFmLi4yZWFiMDVjNzU0YzMwZTg3ZGI1ODA1MDg1ZGNi
NjkxZmQyYjBiMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTUtMDItMDMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHN1cHBvcnQgaGFuZGxpbmcgbW91c2UgZXZlbnRzIG9uIHRoZSBpbnNwZWN0b3IgcGFn
ZSBvdmVybGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjY5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZy
b250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5l
Y3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheUNsaWVudDo6fkluc3BlY3Rvck92ZXJsYXlDbGllbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVw
bGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50
OjpvcGVuSW5zcGVjdG9yT3ZlcmxheSk6CisKIDIwMTUtMDItMDMgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNv
bHZlZCByZXNvdXJjZSBsb2FkIHByaW9yaXR5IGFuZCB1c2UgT3B0aW9uYWw8PiBpbnN0ZWFkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2MDk5N2FkNjU3ZmI0NWM4NmYzYWUxOGIzNGJlNjMw
ZmUzMDExMjYzLi44MTU2MWViNTk5YzY2YTZmY2Y3OGQyZjc0NzlhZGUwZTI5OGZmMmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxNS0wMi0wMyAgQnJpYW4g
Si4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBldmVudHMgb24gdGhlIGluc3BlY3RvciBwYWdlIG92
ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NjkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9CYXNlL092ZXJsYXkuanM6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
T3ZlcmxheS5sb2FkZWQpOgorICAgICAgICAoZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKToK
KyAgICAgICAgKF9kcmF3UmVnaW9uTnVtYmVyKToKKyAgICAgICAgKHF1YWRUb1BhdGgpOgorICAg
ICAgICAoZHJhd091dGxpbmVkUXVhZCk6CisgICAgICAgIChwYXRoQ29tbWFuZCk6CisgICAgICAg
IChkcmF3UGF0aCk6CisgICAgICAgIChkcmF3T3V0bGluZWRRdWFkV2l0aENsaXApOgorICAgICAg
ICAocXVhZEVxdWFscyk6CisgICAgICAgIChkcmF3R3V0dGVyKToKKyAgICAgICAgKHVwZGF0ZVBh
aW50UmVjdHMpOgorICAgICAgICAocmVzZXQpOgorICAgICAgICAoRE9NQnVpbGRlcik6CisgICAg
ICAgIChET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRUZXh0Tm9kZSk6CisgICAgICAgIChET01C
dWlsZGVyLnByb3RvdHlwZS5hcHBlbmRTcGFuKToKKyAgICAgICAgKERPTUJ1aWxkZXIucHJvdG90
eXBlLmFwcGVuZFNwYW5JZk5vdE51bGwpOgorICAgICAgICAoRE9NQnVpbGRlci5wcm90b3R5cGUu
YXBwZW5kUHJvcGVydHkpOgorICAgICAgICAoRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kUHJv
cGVydHlJZk5vdE51bGwpOgorICAgICAgICAoX3RydW5jYXRlU3RyaW5nKToKKyAgICAgICAgKF9j
cmVhdGVFbGVtZW50VGl0bGUpOgorICAgICAgICAoX2RyYXdFbGVtZW50VGl0bGUpOgorICAgICAg
ICAoX3F1YWRNaWRQb2ludCk6CisgICAgICAgIChfZHJhd1JlZ2lvbkxpbmspOgorICAgICAgICAo
X2RyYXdSZWdpb25zSGlnaGxpZ2h0KToKKyAgICAgICAgKF9kcmF3U2hhcGVIaWdobGlnaHQpOgor
ICAgICAgICAoX2RyYXdGcmFnbWVudEhpZ2hsaWdodCk6CisgICAgICAgIChzaG93UGFnZUluZGlj
YXRpb24pOgorICAgICAgICAoaGlkZVBhZ2VJbmRpY2F0aW9uKToKKyAgICAgICAgKGRyYXdOb2Rl
SGlnaGxpZ2h0KToKKyAgICAgICAgKGRyYXdRdWFkSGlnaGxpZ2h0KToKKyAgICAgICAgKHNldFBs
YXRmb3JtKToKKyAgICAgICAgKGRpc3BhdGNoKToKKyAgICAgICAgKGxvZyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9PdmVybGF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvT3ZlcmxheS5jc3M6IEFkZGVkLgorICAgICAgICAoYm9keSk6CisgICAgICAgIChi
b2R5LnBsYXRmb3JtLW1hYyk6CisgICAgICAgIChib2R5LnBsYXRmb3JtLXdpbmRvd3MpOgorICAg
ICAgICAoYm9keS5wbGF0Zm9ybS1saW51eCk6CisgICAgICAgICguZmlsbCk6CisgICAgICAgICgu
aW5kaWNhdGUpOgorICAgICAgICAoLmRpbW1lZCk6CisgICAgICAgICgubWVzc2FnZS1saW5lKToK
KyAgICAgICAgKC5tZXNzYWdlLWJveCk6CisgICAgICAgICgucHgpOgorICAgICAgICAoLmVsZW1l
bnQtdGl0bGUtY29udGFpbmVyKToKKyAgICAgICAgKC5lbGVtZW50LXRpdGxlKToKKyAgICAgICAg
KC50YWctbmFtZSk6CisgICAgICAgICgubm9kZS1pZCk6CisgICAgICAgICguY2xhc3MtbmFtZSk6
CisgICAgICAgICguY3NzLXByb3BlcnR5KToKKyAgICAgICAgKCNyaWdodC1ndXR0ZXIpOgorICAg
ICAgICAoI2JvdHRvbS1ndXR0ZXIpOgorCiAyMDE1LTAyLTAyICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIEF1dG9jb21w
bGV0aW9uOiBBdXRvZGV0ZWN0IG1hbnkgY29sb3Igc3VwcG9ydGluZyBwcm9wZXJ0aWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggOTQ4NzRhMjRlNDhjMDk0YjNhZWQzYjM3N2ZkYzVhNWU0OGU0YmJlMC4u
ZTc2NGNlY2QyODE3NjkwYTlkY2NiM2U2ZWQwNmMwY2Y1N2Y3ZGY2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTAyLTAzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53
YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGhhbmRsaW5n
IG1vdXNlIGV2ZW50cyBvbiB0aGUgaW5zcGVjdG9yIHBhZ2Ugb3ZlcmxheQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2OTIzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JPdmVy
bGF5KToKKwogMjAxNS0wMi0wMyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBkZWxldGVGcm9tSW5wdXRXaXRoRmxhZ3Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggNTlkMzUzNTFlZGYxZGFhNWFlYmY2NjUyNDJjNDZjYjNmMDg1OTZlNi4u
OGIxYWMzNjgwYjQ1MzcxM2Y3NzE1MTk1MGEyZGY1NTgzMzE4NWY3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2OCBAQAorMjAxNS0wMi0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGlu
Z3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3Vz
ZSBldmVudHMgb24gdGhlIGluc3BlY3RvciBwYWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OmlzSW5zcGVjdG9yT3ZlcmxheVBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uSW5zcGVjdG9yUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25PdmVybGF5UGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9y
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRl
T3ZlcmxheVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVPdmVybGF5UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaWRD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVPdmVybGF5UGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JPdmVybGF5VVJMKToKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JPdmVybGF5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3I6OmNyZWF0ZU92ZXJsYXlQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpzZW5kTWVzc2FnZVRvT3ZlcmxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JP
dmVybGF5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OldlYkluc3Bl
Y3Rvck92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5Ojplc3Rh
Ymxpc2hDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6
d2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJs
YXk6OmZyb250ZW5kTG9hZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3Zlcmxh
eTo6bW92ZVdpbmRvd0J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6
YnJpbmdUb0Zyb250KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2xv
c2VXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpyZXF1ZXN0
U2V0RG9ja1NpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpzZXRE
b2NrU2lkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmNoYW5nZUF0
dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3Zlcmxh
eTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3Rvck92ZXJsYXk6OnNldFRvb2xiYXJIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JPdmVybGF5OjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JPdmVybGF5OjpzYXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6aW5zcGVjdGVk
VVJMQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNob3dD
b25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd1Jlc291
cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNob3dNYWluUmVz
b3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnN0
YXJ0UGFnZVByb2ZpbGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6
OnN0b3BQYWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3Zlcmxh
eTo6ZGlkU2F2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmRpZEFw
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNlbmRN
ZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6
ZXZhbHVhdGVDb21tYW5kT25Mb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3Zl
cmxheTo6ZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpwYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluLgorCisy
MDE1LTAyLTAzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAg
ICAgICBDbGVhbiB1cCBXZWJJbnNwZWN0b3JQcm94eSBhbmQgdXNlIHNpbXBsZXIgaW5zcGVjdG9y
IGxldmVscyBkZXNpZ24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTEzNQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKwor
ICAgICAgICBJbnNwZWN0b3IgbGV2ZWxzIHVzZWQgdG8gYmUgbWFuYWdlZCBieSBrZWVwaW5nIGEg
c2V0IG9mIFdlYlBhZ2VHcm91cAorICAgICAgICBpbnN0YW5jZXMgYW5kIGRvaW5nIHBvaW50ZXIg
Y29tcGFyaXNvbnMgdG8gY2hlY2sgd2hldGhlciB0aGUgaW5zcGVjdGVkCisgICAgICAgIHZpZXcg
aXMgaXRzZWxmIGEgd2ViIGluc3BlY3RvciBpbnN0YW5jZS4gVGhpcyBpcyB1bm5lY2Vzc2FyeSwg
YXMgd2UKKyAgICAgICAgY2FuIG1haW50YWluIGEgbWFwcGluZyBmcm9tIFdlYlBhZ2VQcm94eSog
dG8gaXRzIGNvcnJlc3BvbmRpbmcgbGV2ZWwuCisKKyAgICAgICAgV2hlbiBhbiBpbnNwZWN0b3Ig
aW5zdGFuY2UgaXMgY3JlYXRlZCwgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgbWFwcGluZworICAg
ICAgICBhbG9uZyB3aXRoIGl0cyBsZXZlbC4gQW4gaW5zcGVjdG9yJ3MgbGV2ZWwgaXMgMSB1bmxl
c3MgaXRzIGluc3BlY3RlZCBwYWdlCisgICAgICAgIGlzIGluIHRoZSBtYXBwaW5nLCB0aGVuIGl0
IGlzIG9uZSBncmVhdGVyIHRoYXQgdGhlIGluc3BlY3RlZCBwYWdlJ3MgbGV2ZWwuCisKKyAgICAg
ICAgVGhlIGxldmVsIGlzIHByb3ZpZGVkIG15IGluc3BlY3RvckxldmVsKCksIHJhdGhlciB0aGFu
IGEgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICBXZWJJbnNwZWN0b3JQcm94eSBpcyBjcmVhdGVk
IGluIHRoZSBjb25zdHJ1Y3RvciBvZiBXZWJQYWdlUHJveHkuIFRodXMsIHRoZXJlCisgICAgICAg
IHdvdWxkIGJlIG5vIGNoYW5jZSB0byBhZGQgdGhlIGluc3BlY3RvciBwYWdlJ3MgbGV2ZWwgdG8g
dGhlIG1hcHBpbmcgYmVmb3JlIHRoZQorICAgICAgICBuZXh0IGxldmVsIGluc3BlY3RvciB0cmll
cyB0byBsb29rIGl0IHVwIHdoZW4gaW5pdGlhbGl6aW5nIGl0cyBtZW1iZXJzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyAgb3RoZXIgbWlzY2VsbGFuZW91cyBjbGVhbnVwcywgc3Vj
aCBhcyBuYW1pbmcgbV9wYWdlCisgICAgICAgIHRvIG1faW5zcGVjdGVkUGFnZSwgdXNpbmcgUmVm
IGFuZCB1c2luZyBhbiBlbnVtIGNsYXNzIGZvciB0aGUgYXR0YWNobWVudCBzaWRlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdLSW5zcGVj
dG9yR2V0UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwOgorICAgICAgICAocmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6cGFnZUxldmVsTWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OldlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
Omluc3BlY3RvckxldmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6aXNGcm9udCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpj
b25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3cpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aGlkZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpkaWRSZWxhdW5jaEluc3BlY3RvclBhZ2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjphdHRhY2hSaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGV0
YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9m
aWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVu
ZERpc2Nvbm5lY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclBhZ2VHcm91cHM6OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclBhZ2VHcm91cHM6Omluc3BlY3RvckxldmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6aXNJbnNwZWN0b3JQYWdlR3JvdXAp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNw
ZWN0b3JQYWdlR3JvdXBMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclBhZ2VHcm91cHM6Omluc3BlY3RvclBhZ2VHcm91cEZvckxldmVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6Y3JlYXRlSW5zcGVjdG9yUGFn
ZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6On5X
ZWJJbnNwZWN0b3JQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JQYWdlR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5Ojpkb2NrQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JXaW5kb3cpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dX
aWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFj
aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQcm94eU9iakNB
ZGFwdGVyIGF0dGFjaFJpZ2h0Ol0pOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXIgYXR0YWNoQm90dG9tOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9udCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5k
b3dIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1J
bnNwZWN0ZWRXaW5kb3dXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUF0dGFjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybURldGFjaCk6CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRl
ciBjbG9zZV0pOiBEZWxldGVkLgorCiAyMDE1LTAyLTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50IGFz
IEMgU1BJIGFyb3VuZCBBUEk6Ok5hdmlnYXRpb25DbGllbnQsIGFuZCBhZG9wdCBpbiBXS1RSCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmYWExODk5NDQxZjAwMzczOWUyYmY4NWNh
YWFkY2IxZmQ5ZTQ0OGYuLjRmMzg3NzIzMTU5ZjUxNWFkMGNmNWY5NDZlMmI4NjdkMjM5ZTZjM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTgxLDYgKzE1ODEsNyBAQAogCQlD
NDcwM0NENTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0NBMTkyODQ0Q0Mw
MDEzRkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0NzAzQ0Q2MTkyODQ0Q0MwMDEzRkJFQSAvKiBn
ZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNDcwM0NDQjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEz
RkJFQSAvKiBtb2RlbHMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5ICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0QjJCQTQ0MUE2RjBBMkEw
MDkwMTJFRSAvKiBPdmVybGF5Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzRCMkJBNDMxQTZGMEEyQTAwOTAxMkVFIC8qIE92ZXJsYXlDaGFu
bmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzRGNEI2RjMxQTA1Qzk0NDAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGNEI2Q0YxQTA1
Qzc2RjAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0RjRCNkY0MUEwNUM5NDQwMDVD
QUI3NiAvKiBjcHBfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzRGNEI2RDAxQTA1Qzc2RjAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3Iu
cHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzRG
NEI2RjUxQTA1Qzk4NDAwNUNBQjc2IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1w
bGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNEY0QjZENzFBMDVDNzZGMDA1Q0FCNzYgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90
eXBlc19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzI2NSw2ICszMjY2LDcgQEAKIAkJQzQ3MDNDQ0ExOTI4NDRDQzAw
MTNGQkVBIC8qIGdlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
eXRob247IHBhdGggPSBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNDcwM0NDQjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdG9yLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gbW9kZWxzLnB5OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDNEIyQkE0MzFBNkYwQTJBMDA5MDEyRUUgLyogT3Zlcmxh
eUNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxheUNoYW5u
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGNEI2Q0YxQTA1Qzc2RjAwNUNB
Qjc2IC8qIGNwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUM0RjRCNkQwMUEwNUM3NkYwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9y
LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gY3BwX2dlbmVyYXRvci5w
eTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGNEI2RDExQTA1Qzc2RjAwNUNBQjc2
IC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hl
cl9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjU4LDYgKzUyNjAs
NyBAQAogCQkJCUE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWUuaCAqLywKIAkJCQlBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmNwcCAqLywKIAkJCQlBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi8sCisJCQkJQzRCMkJBNDMxQTZGMEEy
QTAwOTAxMkVFIC8qIE92ZXJsYXlDaGFubmVsLmggKi8sCiAJCQkJQTVGRDAwNjUxODlBRkU5QzAw
NjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJQTVGRDAwNjYxODlBRkU5QzAw
NjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAogCQkJCUE1MDNGQTFGMTg4RUZGNjgwMDEx
MEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8sCkBAIC01Nzc4LDYgKzU3ODEsNyBAQAogCQkJ
CTE0MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzRCMkJBNDQxQTZGMEEyQTAwOTAxMkVFIC8qIE92ZXJsYXlDaGFu
bmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFu
ZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAv
KiBUeXBlUHJvZmlsZXJMb2cuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTM2MTM0RkYwQTYw
MEFGQURCNSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKaW5kZXggNjM5ZDA0
OGIyN2FlZjk3ZWQzZmMyZDJlMDg4ZjVlYjYzMzA5YTVhNi4uNTdlNzNlM2M3YTNlNzExODhlYTY2
YzIxNTA0ZTRjN2JhNjA4ZmNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIE92ZXJsYXlDaGFubmVsOwogCiBlbnVt
IGNsYXNzIEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gewogICAgIEluc3BlY3RlZFRhcmdldERl
c3Ryb3llZCwKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRvbWFpbk5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJs
YXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24gcmVhc29uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcAppbmRleCA0MDEwOGViNDliNGU5YmRkNDgzM2Y1YThmYWQzNTM3
ZWJiZGJhYjRjLi4xODdkZDY2ZDEyZWYzYmZkMTJjNzUxYTM0ODI5YjEzMGFjM2FhYzMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQCB2b2lkIEluc3BlY3RvckFnZW50
UmVnaXN0cnk6OmFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50
QmFzZQogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5
Q2hhbm5lbCogb3ZlcmxheUNoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWdlbnRzLnNp
emUoKTsgaSsrKQotICAgICAgICBtX2FnZW50c1tpXS0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKGZyb250ZW5kQ2hhbm5lbCwgYmFja2VuZERpc3BhdGNoZXIpOworICAgICAgICBtX2FnZW50
c1tpXS0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgb3Zlcmxh
eUNoYW5uZWwsIGJhY2tlbmREaXNwYXRjaGVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKaW5kZXggOGI3NzU3ZjhjYTU1YjkyMzNmNWVk
Y2NjOGMzYmIyOWY3ZGY2NmNlZS4uYTljYTU3NDUzMGNlMjE0MDJkNTgxZjFmMjgzNmEwN2QwZDA2
ZDFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2U7CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIE92ZXJs
YXlDaGFubmVsOwogZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOwogCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKQEAgLTQzLDcgKzQ0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckFnZW50QmFzZT4pOwogCi0gICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsKKyAg
ICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24gcmVhc29uKTsKICAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDY1NTNkNTZhY2ZlYjY1
OTYzMDJhZWY2M2M2MWNhNDVmYTljMjU1YTAuLjY3N2FmZWE2MWEwNDI0ZjU1NWFjZjRiYWNiMGEx
NzEyMWVjMjRlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogICAgIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwogICAgIG1faW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250
ZW5kQ2hhbm5lbCk7CiAKLSAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
ZnJvbnRlbmRDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAg
ICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBu
dWxscHRyLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIG1faW5zcGVjdG9yQWdlbnQt
PmFjdGl2YXRlRXh0cmFEb21haW5zKG1fYWdlbnRzLmV4dHJhRG9tYWlucygpKTsKQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6YXBwZW5k
RXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogICAgIFN0cmluZyBkb21haW5OYW1l
ID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgICAgIGFnZW50LT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwsIG51bGxwdHIsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0
KCkpOwogCiAgICAgbV9hZ2VudHMuYXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWdlbnQpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9PdmVybGF5Q2hh
bm5lbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9PdmVybGF5Q2hhbm5lbC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgwYTE5MGU2MjQxYWMwNzA3YzM3ZjhmN2MwZjY0ZWViOGE4YWM5MjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL092ZXJsYXlD
aGFubmVsLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVm
IE92ZXJsYXlDaGFubmVsX2gKKyNkZWZpbmUgT3ZlcmxheUNoYW5uZWxfaAorCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBP
dmVybGF5Q2hhbm5lbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+T3ZlcmxheUNoYW5uZWwoKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb092ZXJsYXkoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8v
ICFkZWZpbmVkKE92ZXJsYXlDaGFubmVsX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZTYyZWMy
ZWMwNGIwYThiM2I2YWNhZjIxMGQ5ODg2ODdlZmU0MThhMC4uNGJiZmNlYzNhNzNlMjAyZWQ4OGY5
YTIyNTNiMzZhNWY1ZTEwZmMzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDgsNyArNDgsNyBA
QCBJbnNwZWN0b3JBZ2VudDo6fkluc3BlY3RvckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
cjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAppbmRl
eCAzOGM5ZWVmMjc3MzFhNjhkZjAwODk1YTc1ZDc1ZTZmNTg1YjFkMzRjLi44M2I1Yzg2MjI1ZTky
Y2RmNmZiNjMxYWM4ODgwMTA2ODQxOTliNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIEluc3BlY3RvckFnZW50KEluc3BlY3RvckVudmlyb25tZW50Jik7
CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
cjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcAppbmRleCAwNTA1MTE5MzE3ZTNhMjE0ZGI4ODkxZTk5MjdiNzZkMTc0MjU3YWZlLi4wMjRh
ZDljMjg5NWNmMjE0MmIyMGZlNDZjMTRlNzUxZTM1NzJmYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp+
SW5zcGVjdG9yQ29uc29sZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
ckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNzI2MmMwNzVhZDIwMjEyMWI1M2Mw
YjViNjM4MmFiZjhhYzE2ZmYxZC4uMmQ3MWI5ZDljYWExY2ZjZTk0MDM5YjhjMmE3YjExNzUyN2My
ZDcxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggM2FlNzYwOWNhZTIwYjdhZjBhZjM2MzczNjliN2Y0MmM3NDgyZmQyMC4uZGRk
ZTEwNzhjMjI0YjlmZGIyMzgzOTk1ODVlYjRkYjAwN2VjNjI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6fkluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDliZTMyMzMxNTEwOTQ1NTg3OGIwMWMzNGIwNjE4YzU2
MzgxNDQ1MmMuLjE1YzkxY2VmMGE1NmVkYWQxMmY1NDVmM2U2M2I2ZTk0YzM3NDFkNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQuY3BwCmluZGV4IGRjNDRjYzdmZjYxMjExYjY3NzI2YjMwY2JiNGY0YTBjYjM4ODE3
ZjEuLjBhOWQ4MDEyOGM2MjRlNWU5MmVjZjUwYWFkNjNjMWVhMGViYWE1YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW4KIHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5l
bCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudC5oCmluZGV4IGM2NTA2OGU2ODllYzQ1M2EzYzI1NDNhNmY4ZDQ4
NTdlZTA4Y2Y3OTcuLjAzM2EyNzBiZmI4ZTc5ODM0MWExM2JlMGZiNzJiMzE4OTAzY2ExMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtMzgsNyArMzgsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JS
dW50aW1lQWdlbnQgewogcHVibGljOgogICAgIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KElu
amVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
SlNDOjpWTSYgZ2xvYmFsVk0oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXlDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU5MjJkYzI0YzBlNzY3YjYxNjUwOTU5NmEzYTBkOTgw
ZTg3MzhjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2hhbm5lbC5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9PdmVybGF5Q2hhbm5lbF9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X092ZXJsYXlDaGFubmVsX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PdmVybGF5Q2hhbm5l
bC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZWMyZDhjNWNlOTgxNGJlZjJjOTA4YmFiZDRhMGY1OGY5Nzg1OTJm
OC4uNmI0ZjBhNTEyMjJkOTY1NjgxMDY1M2NkYzNlOGRjZTA0OTJlNzAyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTU1OCw2
ICs1NTU4LDcgQEAKIAkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcCAqLzsgfTsKIAkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0MDBE
MTA5MThGMUM4RjYwMDkwRDg2MyAvKiBFdmVudExvb3BJbnB1dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDAwRDEwODE4RjFDOEY2MDA5MEQ4NjMg
LyogRXZlbnRMb29wSW5wdXQuY3BwICovOyB9OworCQlDNEIyQkE0OTFBNkY1MjRGMDA5MDEyRUUg
LyogSW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzRCMkJBNDgxQTZGNTI0RjAwOTAxMkVFIC8qIEluc3BlY3Rvck92
ZXJsYXlDbGllbnQuaCAqLzsgfTsKIAkJQzRDRDYyOUExODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1l
U25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAg
Ki87IH07CiAJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRDRDYyOTkx
ODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwRDBFODMwRkY0MjcyOTAwQUMyNjQ0
IC8qIFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM1MEQwRTgxMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEz
MDA4LDYgKzEzMDA5LDcgQEAKIAkJQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNF
NjFDNjUzQTY0ODA3QTgzRTc2RkI4IC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNDAwRDEwODE4RjFDOEY2MDA5MEQ4NjMg
LyogRXZlbnRMb29wSW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXZlbnRMb29wSW5wdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNEIy
QkE0ODFBNkY1MjRGMDA5MDEyRUUgLyogSW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5Q2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
cmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0Q0Q2
Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTBEMEU4MTBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI4MCw2ICsxNTI4Miw3IEBACiAJCQkJ
NTA0QUFDQ0MxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5kZXIuaCAqLywKIAkJ
CQk3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8sCiAJ
CQkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuaCAqLywKKwkJ
CQlDNEIyQkE0ODFBNkY1MjRGMDA5MDEyRUUgLyogSW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oICov
LAogCQkJCUE1MTgyMjU0MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5j
c3MgKi8sCiAJCQkJN0E3MjU2QjkxNUVCOUY1QjAwNzMyM0E3IC8qIEluc3BlY3Rvck92ZXJsYXlQ
YWdlLmh0bWwgKi8sCiAJCQkJQTUxODIyNTUxN0UyQTBENDAwQTlCQTFEIC8qIEluc3BlY3Rvck92
ZXJsYXlQYWdlLmpzICovLApAQCAtMjQ5NTEsNiArMjQ5NTQsNyBAQAogCQkJCTFBRTJBQjIyMEEx
Q0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBRTJBQjI0MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMZWdlbmRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUUyQUIyNjBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNEIyQkE0OTFBNkY1MjRGMDA5MDEyRUUgLyogSW5zcGVj
dG9yT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdCMEQwQTE5RDYwNjAw
N0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUIy
ODBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTWFwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM0OTFCNzkwQzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYTcwNGNkOTg0ZWE4ZDM4ZWYw
ZjFjNWVlMjkwZGM1Mzg2YThiNWYwYy4uMTQwMDc1YzQ5Y2U3YjRlODA4NmZmYTY0MTA3YjM1OTk3
ZWExMzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW4KIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCAw
YjgxMzM1ZjUxY2UwYTZjOGY1MGI2Y2QzNzQ0YWQ2N2UwM2M5MzNkLi5kYzgyOGUyZDg3N2EwY2Vh
NjQxZjkxMjM5NTllMTliMzc0MDgzNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25D
YWNoZVN0YXR1cyhGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKaW5kZXggZGUxMTdjMTBiYTRmMzQ0YmM3MzFhMWQ5ZjQ3OTAxMGQ4ZDg1
OTBiYy4uM2Q2OGRhYjY2OGM0NGMyZjgyMzdiY2IyOGEzNjU4YjJhZGU3YWU1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0zNTEsNyAr
MzUxLDcgQEAgSW5zcGVjdG9yQ1NTQWdlbnQ6On5JbnNwZWN0b3JDU1NBZ2VudCgpCiAgICAgcmVz
ZXQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92
ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaAppbmRleCA4ODY2NGM4OTYwZTNmY2JmZmMyODZiY2M1OWY5NDIxYmViZTUw
YWMzLi4xMGJmZDU0ZjJmYWI0Nzk4YzM5YWJhYzBkZTViZmQxNjI1ZmFkMDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtOTEsNyArOTEsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NS
dWxlJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWU3ZDhmYWM0NjVkMWU1Y2VkZTIwZTJjMThl
ZGU1ZDVmODEwNjExZS4uYzIwMjQyNzE1ZDM5NDE1MTU4NDQwNjg0ZjhjZTFmZTA5N2RkOTAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtMzIsNiAr
MzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgT3ZlcmxheUNoYW5uZWw7Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwpAQCAtNDYsOCArNTAsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6Ok92
ZXJsYXlDaGFubmVsKiBvcGVuSW5zcGVjdG9yT3ZlcmxheSgpID0gMDsKKwogICAgIHZpcnR1YWwg
dm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpID0gMDsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXpl
TWFpbkZyYW1lKEZyYW1lKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDcyZjI5NDY4Y2VhZGI0ZWQ3NWYzZGQ2YWUzMzg3OGI5NDNjNGVhMzAuLjAwM2ZjMjJj
ZjM4OWI0YzliZWU1NTViZTUzNjQ2YTZlMDBkZTMyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTI0MSwxMCArMjQxLDEyIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFuCiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9
IGlzQXV0b21hdGljSW5zcGVjdGlvbjsKIAorICAgIAogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwogICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250ZW5kQ2hhbm5lbCk7
CisgICAgbV9vdmVybGF5Q2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9y
T3ZlcmxheSgpOwogCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZy
b250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAg
bV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9v
dmVybGF5Q2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygq
bV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZy
b250ZW5kQ3JlYXRlZCgpOwpAQCAtMjY1LDYgKzI2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29u
KQogICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKICAg
ICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAgICAgbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAgIG1fb3ZlcmxheUNoYW5uZWwgPSBudWxscHRy
OwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMjg2LDEzICsy
ODksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKQorICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgewogICAgICAgICBtX2lu
c3BlY3RvckNsaWVudC0+YnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNw
ZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkgewotICAgICAgICAgICAg
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbm5lY3RG
cm9udGVuZChmcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgICAg
IH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9y
RnJvbnRlbmQodGhpcykpIHsKKyAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBm
YWxzZTsKKyAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGIyNjQyMmI3NzUzZTBjNDI2ZjUwOTk1MTU2Y2Rm
MDNkNTQ5ZjNlMjEuLmQ4YzIxYzk3NTMyNWI3YTBiN2UwMmY0MjAyMGRlNzc4NWY3NTYzNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAt
NDYsNiArNDYsNyBAQCBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OworY2xhc3MgT3ZlcmxheUNoYW5uZWw7CiAKIG5hbWVzcGFjZSBQcm90b2Nv
bCB7CiBuYW1lc3BhY2UgT3ZlcmxheVR5cGVzIHsKQEAgLTE1NCw2ICsxNTUsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworICAgIEluc3BlY3Rvcjo6
T3ZlcmxheUNoYW5uZWwqIG1fb3ZlcmxheUNoYW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNo
PiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9y
Q2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDE3ZWI2ODE4MTkxMDMzODRmNTBmMWZlMjI1OWUw
MDJkYzYzMjljOGMuLjVkNjg4MjA2MjJiYmI2MzgwZDNhZjZhYjgwNjM0ZDYxZDhiY2I3NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
MjIxLDcgKzIyMSw3IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQog
ICAgIEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
cjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGY4Mzk3OTJiYjI1YzlhNWIzN2Y3MDU0NzJmYzQ2OGEz
NzE2MTYwMTguLjg5YmE5MzJiNmEwYWQ4YWZjMzkyNmZhNTZmZjBiNDFjZWY4NGMwYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMDksNyAr
MTA5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0
IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcAppbmRleCAzZDBiYmFjNTYxYjhlYjE0NDc0NzI4MmUwODg0ZDcwNGE1YmNjYjI3Li45NDUy
ODI1ZTM1MTNkM2VjMTliY2YxODQ3N2EwNTlkZTViZjlhZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0x
MDIsNyArMTAyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkK
ICAgICBjbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4
IDQ2NmYwM2U1NzFjZjg2NzA0M2RiY2I1YmU4NGI2NWZhYzdkYWQzOTEuLjliMzMzMzkyNzJkODk4
Y2E2NTQ3NDg1ODhlOWIwYmIzOTk5YjQxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNzgsNyArNzgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJs
KTsKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwg
Y29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzY2FyZEFnZW50KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZmIwODlhMzhmODMyMjZk
NTljZTUyODZmYmUwYTUyODhiOTA1NzkxOC4uZDQ3NGM0MTA2ZGE5ZTFhOTkwODY2NDFmNWJmNTk1
MTMwOGMzNjA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMgPSBudWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oCmluZGV4IDM2MWI2MTNjYzFkNzU3ZDQ0NjZkZjI4OWY3ZTk2ZmFlZDBhMmFj
NWQuLjkxOWFlZjYzMGY2ZmFjODk5NTc2ZjQzYjgxM2NjMjlkMDM0MGI4NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcAppbmRleCA0NGRhYTg2NTc2N2UzY2I3MjRkYTk3NGEwMjhjYjlkZTI2ZGY4MjUzLi44ZDA0
Mjk4ZmRmYjA4YjA4YjMyZmUxNDQ2ZTQ1ZDE3NjFmMDM0OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0yMjIsNyAr
MjIyLDcgQEAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQo
KQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChu
dWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCAyZTg2
ODk3NWYxNmZjYjE2NzhkYmRiM2RhY2YyMWUxN2NlZDE4Y2NlLi5mNjA1OGMzNDBmMTI2NmNmYzBk
NzNkYTA5NGU2NDMzM2IyYjdlNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwog
ICAgIHZpcnR1YWwgfkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3Vy
Y2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAppbmRleCA3YTY0OTVmMTM0NDE3NmY0MTE0ODExMWFhNGEwNmVhNmY4NDNi
ZDllLi41ZjcxYWIzZWUyMjk4ZWEyNGZjNTAzNTYyYmFlYWQ0ZTczMWExYjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
QEAgLTU3NSw3ICs1NzUsNyBAQCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6fkluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IDc3MjBi
M2E5YWFlYzk5ZGIyMDdlOWM5MzQ0OTVjNjlmNTc3ZjEzMjEuLmE0MDZkZWI1Njk4NzJlNWIyOGRh
ZTVmMGEwYmY0M2VjMWQ5MTdiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9u
dC1lbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVy
VHJlZUFnZW50LmNwcAppbmRleCBjNTkwMmJhNzc3YjAzNjBlMTAxYjdhNWYwMWViYTI4Mjg1NTZj
MzlhLi5hMTRmNzI0NmEzMjJkOWQ3NDAyZDZhYmFiN2EwNzgxMDBlZTE1ODc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNwZWN0b3JMYXll
clRyZWVBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaAppbmRleCAxNjZlOWE2MThmMTVjMzUxYTA5MmEyZjBhY2ZjM2Q0MDNhMGI3
Y2NhLi41MzFjOGQ0Y2M2MmRjZjg1ZmJkZjRiN2NhNDM5OThkMzFlYTVkZTIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJl
ZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVzZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXlDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI0OWE0ZmYzNmYxYjI2YzUw
NDJmYjM5MDY1ZDg5NjczOTA4MTk1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2xpZW50LmgKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yT3ZlcmxheUNsaWVudF9o
CisjZGVmaW5lIEluc3BlY3Rvck92ZXJsYXlDbGllbnRfaAorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JPdmVybGF5Q2xp
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JPdmVybGF5Q2xpZW50KCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgb3ZlcmxheUxvYWRlZCgpID0gMDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSA9
IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA5MWM3MzgwMmY1
ZTcwNDAzMDg0ZjAzZDRmM2Y5MmFhMzlmNGJlOGI2Li4zYTU0NmM1NmI5NTBjNzdmMjliN2NmNzMz
NTE0MTAyMzQzZDRlNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6
SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6
Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYmZkNTc3NTE3NzBjZTc2MGJkN2NjZDM4OWFhMmJj
ZGQ1NDA1N2UxOC4uMzRiYjNjYjhiMTIyZDhmYjk4OGU3NGVjYzRkMmE5MDg4ZWJmNGJlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTM5
LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDcm9zcy1hZ2VudHMg
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmNwcAppbmRleCA2ZWNkN2MwZmJlZmI1MmQ2MGJlYjEyZWQxYmMyMjliMDlmMGZmOWRmLi42ZGE3
MmFiNmE1YTZmMWM2MjhkNjA3MzNiNzE1ODhkNTU0NGZkNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTE2Nyw3ICsxNjcs
NyBAQCBXZWJDb3JlOjpTZXNzaW9uU3RhdGUgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnNlc3Npb25T
dGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc2Vzc2lv
blN0YXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXBsYXlG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3RvclJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlcGxheUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuaAppbmRleCAzNjMyYzRmNDEzZTRjZjJkMGMzNDllMmZjMmUyMzdiNTFkMGMx
MjM1Li5mOWEwZGNjNTVjNDNhY2Q2MDQ1YjJjMTc3NzIzMmNkZmU2ZGEwOWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvclJlcGxh
eUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApp
bmRleCA0OTIyZjMxODk5NmM1ODg0NmU2ZWZkYjRkNDE2MTYwODhmZmFhMmQwLi40Yzk3OTk5ZmM1
ZWY0MTE4NjQ1ZTIzNTg3NWQyZjM3NDQzNmQ4NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0xNzMsNyArMTczLDcg
QEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKaW5kZXggZTg0NjU5MWIxZDRmNTI5MTIzMDI3YzBjYWE1YzY3Nzk1OTdkM2QxNS4u
NGE0MTA2OGJkMzg2MDgxZjk5Y2ZkNzZjNDU1MTBiMjgxYjZhN2QzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03OSw3ICs3
OSw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIGNhbGxiYWNrcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBiOTIyYzc4Y2ZmOTZlYTQzZmQzOTkwYmI2YjhkN2Yw
Mjg1NTkyNmI5Li44NTA3NjlkMjhkZWFkZTFiNDdjZTkxYmJiNjAxMWFjMDJiODFmMGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclRpbWVs
aW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApp
bmRleCBlYTQ0ODViMzJkMzJjZDYzYTc5ZTJhZmEzZmY3ODVmZDFhZDljNjM0Li4xMmU0MDMxZTYz
NzlhNDc5YzVmY2VlYjE3MDgwOTA4ODI0ZjY1MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
SW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFy
dChFcnJvclN0cmluZyYsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCmluZGV4IDNiYjE0MDNlYjBiZTY3NWY5ODk0MmU0MGM4OWU1NTI5YTQ3YjAxNzIu
LmFjYjkzNGI3NzQ1NzVhY2QwZDExMWEwNDkxMWJkYjZjMDFhZGJhYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIEluc3BlY3RvcldvcmtlckFnZW50Ojp+SW5zcGVjdG9yV29ya2VyQWdlbnQoKQog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yV29ya2VyQWdlbnQobnVsbHB0
cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9y
OjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNjg2OWQ1YTY4MDRmNzI5ODBiMDY3
MmIwOWI2Y2EzY2I4ODAyZmFmYi4uZTlhOTBhZGRhODA0YjFiYzExMDJmNzM5N2E2OTU2YjY2Yzkw
MDhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3Rvcldv
cmtlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JX
b3JrZXJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDdh
N2I3NjI0MjU5ZmJjYjYyNjlmMTI1ZTk2YWU1ZTJhNmQ2YmU2NTQuLmQxYWFlYjJhYzBjZGVlYjkw
MmI5NmM1YmE1MmM5NjQ2N2I5YjgyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6
UGFnZVJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlciwKIHsKIH0KIAotdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpP
dmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggZjgyY2ZjMDEwYzcyNjkyM2NkMzkzYzk2YjgwMzNm
Zjk3Mjg5Mzg4Yi4uMmE1NGI0NTAxZDAxM2UxOTU4NjMxZGIwYjk5MThmZmU3NTM2YmI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICBQYWdlUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgUGFnZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwg
flBhZ2VSdW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggNzc3Y2Y3MjMzYWQ3MmU0MjZmMThiNDgwZmZiZTdkMjk4ZDE0
ZWNlYy4uOWE1MjMyMzkxYzYyNWMyYzdiODUyZWNlNWI5N2FlYWQ3ZGQ1MTRjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKCkKICAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKICAgICBt
X2Zyb250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUluc3BlY3RvclByb3h5Piht
X3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7Ci0gICAg
bV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdl
dCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBtX2FnZW50cy5kaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCksIG51bGxwdHIsIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5k
ZXggNzY5MDQ5ZTMyMmY1YTY1OTk0M2FhNjcwYjAyYmQ5MjUzMmQzYjc4Yy4uM2ViMzI2MjZiODQ0
ZGE2MTJiZDQzMWQyOGMxM2RlZjUyZjI5OWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV29ya2VyUnVu
dGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmpl
Y3RlZFNjcmlwdE1hbmEKIHsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgV29y
a2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggODE0YzY2ZDZiYzlkNDYxODMxOTE0YTliZmI0
MWUyODgyZTFjMGQzNy4uNzEyODFiZmEwZDIyODkzNTM1NTVkZTAyYzI4Njk4YmVlMjA5ZmUxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyUnVudGltZUFnZW50KEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgV29ya2VyR2xvYmFsU2NvcGUqKTsKICAgICB2aXJ0dWFs
IH5Xb3JrZXJSdW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggZGNjMzRk
ZGMzZjE1OWU2MjhkNjU3OWZhNDRmM2YwYTYxYzlhZjQzYS4uYjY0NmQ0ZDFiYzM3MThiYjA4MDRl
Yzc1NjAyZDJmZDNiMmMxMTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApA
QCAtNTk0LDcgKzU5NCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JE
ZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSBv
dmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5l
bCogb3Blbkluc3BlY3Rvck92ZXJsYXkoKSB7IHJldHVybiBudWxscHRyOyB9CisKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL092ZXJsYXkuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL092ZXJsYXkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWEwMGYxODU0MDhhNTA0Y2ExZjRlZTM4YzNlYzZlNzUzMjI2OGYxNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT3Zlcmxh
eS5qcwpAQCAtMCwwICsxLDU2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK0luc3BlY3Rvck92ZXJsYXkgPSB7fTsK
KworSW5zcGVjdG9yT3ZlcmxheS5sb2FkZWQgPSBmdW5jdGlvbigpCit7Cit9CisKK2NvbnN0IGxp
Z2h0R3JpZENvbG9yID0gInJnYmEoMCwwLDAsMC4yKSI7Citjb25zdCBkYXJrR3JpZENvbG9yID0g
InJnYmEoMCwwLDAsMC41KSI7Citjb25zdCB0cmFuc3BhcmVudENvbG9yID0gInJnYmEoMCwgMCwg
MCwgMCkiOworY29uc3QgZ3JpZEJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDI1NSwgMjU1LCAyNTUs
IDAuNikiOworCisvLyBDU1MgUmVnaW9ucyBoaWdobGlnaHQgY29sb3JzLgorY29uc3QgaGlnaGxp
Z2h0ZWRSZWdpb25CYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgxMjcsIDIxMSwgMjQ4LCAwLjEpIjsK
K2NvbnN0IHJlZ2lvbkJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDEyNywgMjExLCAyNDgsIDAuNDUp
IjsKK2NvbnN0IHJlZ2lvblN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1LCAwLjg1KSI7
CisKKy8vIENTUyBSZWdpb25zIGNoYWluIGhpZ2hsaWdodCBjb2xvcnMuCitjb25zdCByZWdpb25M
aW5rQm94QmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43MSkiOworY29u
c3QgcmVnaW9uTGlua0JveFN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1LCAwLjg1KSI7
Citjb25zdCByZWdpb25DaGFpblN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1LCAwLjg1
KSI7CisKKy8vIENTUyBSZWdpb24gbnVtYmVyIHN0eWxlLgorY29uc3QgcmVnaW9uTnVtYmVyRm9u
dCA9ICJib2xkIDQwcHQgc2Fucy1zZXJpZiI7Citjb25zdCByZWdpb25OdW1iZXJGaWxsQ29sb3Ig
PSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpIjsKK2NvbnN0IHJlZ2lvbk51bWJlclN0cm9rZUNv
bG9yID0gInJnYig2MSwgMTI3LCAyMDQpIjsKKworLy8gQ1NTIFNoYXBlcyBoaWdobGlnaHQgY29s
b3JzCitjb25zdCBzaGFwZUhpZ2hsaWdodENvbG9yID0gInJnYmEoOTYsIDgyLCAxMjcsIDAuOCki
OworY29uc3Qgc2hhcGVNYXJnaW5IaWdobGlnaHRDb2xvciA9ICJyZ2JhKDk2LCA4MiwgMTI3LCAw
LjYpIjsKKworY29uc3QgcGFpbnRSZWN0RmlsbENvbG9yID0gInJnYmEoMjU1LCAwLCAwLCAwLjUp
IjsKKworZnVuY3Rpb24gZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKG1lc3NhZ2UpCit7Cisg
ICAgdmFyIHBhdXNlZEluRGVidWdnZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGF1c2Vk
LWluLWRlYnVnZ2VyIik7CisgICAgcGF1c2VkSW5EZWJ1Z2dlci50ZXh0Q29udGVudCA9IG1lc3Nh
Z2U7CisgICAgcGF1c2VkSW5EZWJ1Z2dlci5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwor
ICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiZGltbWVkIik7Cit9CisKK2Z1bmN0aW9u
IF9kcmF3UmVnaW9uTnVtYmVyKHF1YWQsIG51bWJlcikKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsK
KyAgICB2YXIgbWlkUG9pbnQgPSBfcXVhZE1pZFBvaW50KHF1YWQpOworICAgIGNvbnRleHQuZm9u
dCA9IHJlZ2lvbk51bWJlckZvbnQ7CisgICAgY29udGV4dC50ZXh0QWxpZ24gPSAiY2VudGVyIjsK
KyAgICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICJtaWRkbGUiOworICAgIGNvbnRleHQuZmlsbFN0
eWxlID0gcmVnaW9uTnVtYmVyRmlsbENvbG9yOworICAgIGNvbnRleHQuZmlsbFRleHQobnVtYmVy
LCBtaWRQb2ludC54LCBtaWRQb2ludC55KTsKKyAgICBjb250ZXh0LnN0cm9rZVdpZHRoID0gNDsK
KyAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gcmVnaW9uTnVtYmVyU3Ryb2tlQ29sb3I7CisgICAg
Y29udGV4dC5zdHJva2VUZXh0KG51bWJlciwgbWlkUG9pbnQueCwgbWlkUG9pbnQueSk7CisgICAg
Y29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIHF1YWRUb1BhdGgocXVhZCkKK3sKKyAg
ICBjb250ZXh0LmJlZ2luUGF0aCgpOworICAgIGNvbnRleHQubW92ZVRvKHF1YWRbMF0ueCwgcXVh
ZFswXS55KTsKKyAgICBjb250ZXh0LmxpbmVUbyhxdWFkWzFdLngsIHF1YWRbMV0ueSk7CisgICAg
Y29udGV4dC5saW5lVG8ocXVhZFsyXS54LCBxdWFkWzJdLnkpOworICAgIGNvbnRleHQubGluZVRv
KHF1YWRbM10ueCwgcXVhZFszXS55KTsKKyAgICBjb250ZXh0LmNsb3NlUGF0aCgpOworICAgIHJl
dHVybiBjb250ZXh0OworfQorCitmdW5jdGlvbiBkcmF3T3V0bGluZWRRdWFkKHF1YWQsIGZpbGxD
b2xvciwgb3V0bGluZUNvbG9yKQoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQu
bGluZVdpZHRoID0gMjsKKyAgICBxdWFkVG9QYXRoKHF1YWQpLmNsaXAoKTsKKyAgICBjb250ZXh0
LmZpbGxTdHlsZSA9IGZpbGxDb2xvcjsKKyAgICBjb250ZXh0LmZpbGwoKTsKKyAgICBpZiAob3V0
bGluZUNvbG9yKSB7CisgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvdXRsaW5lQ29sb3I7
CisgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CisgICAgfQorICAgIGNvbnRleHQucmVzdG9yZSgp
OworfQorCitmdW5jdGlvbiBwYXRoQ29tbWFuZChjb250ZXh0LCBjb21tYW5kcywgbmFtZSwgaW5k
ZXgsIGxlbmd0aCkgeworICAgIGNvbnRleHRbbmFtZV0uYXBwbHkoY29udGV4dCwgY29tbWFuZHMu
c2xpY2UoaW5kZXggKyAxLCBpbmRleCArIGxlbmd0aCArIDEpKTsKKyAgICByZXR1cm4gaW5kZXgg
KyBsZW5ndGggKyAxOworfQorCitmdW5jdGlvbiBkcmF3UGF0aChjb250ZXh0LCBjb21tYW5kcywg
ZmlsbENvbG9yLCBvdXRsaW5lQ29sb3IpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29u
dGV4dC5iZWdpblBhdGgoKTsKKworICAgIHZhciBjb21tYW5kc0luZGV4ID0gMDsKKyAgICB2YXIg
Y29tbWFuZHNMZW5ndGggPSBjb21tYW5kcy5sZW5ndGg7CisgICAgd2hpbGUoY29tbWFuZHNJbmRl
eCA8IGNvbW1hbmRzTGVuZ3RoKSB7CisgICAgICAgIHN3aXRjaChjb21tYW5kc1tjb21tYW5kc0lu
ZGV4XSkgeworICAgICAgICAvLyAxIHBvaW50CisgICAgICAgIGNhc2UgJ00nOgorICAgICAgICAg
ICAgY29tbWFuZHNJbmRleCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCAibW92ZVRv
IiwgY29tbWFuZHNJbmRleCwgMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gMSBw
b2ludAorICAgICAgICBjYXNlICdMJzoKKyAgICAgICAgICAgIGNvbW1hbmRzSW5kZXggPSBwYXRo
Q29tbWFuZChjb250ZXh0LCBjb21tYW5kcywgImxpbmVUbyIsIGNvbW1hbmRzSW5kZXgsIDIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIDMgcG9pbnRzCisgICAgICAgIGNhc2UgJ0Mn
OgorICAgICAgICAgICAgY29tbWFuZHNJbmRleCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1h
bmRzLCAiYmV6aWVyQ3VydmVUbyIsIGNvbW1hbmRzSW5kZXgsIDYpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIC8vIDIgcG9pbnRzCisgICAgICAgIGNhc2UgJ1EnOgorICAgICAgICAgICAg
Y29tbWFuZHNJbmRleCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCAicXVhZHJhdGlj
Q3VydmVUbyIsIGNvbW1hbmRzSW5kZXgsIDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IC8vIDAgcG9pbnRzCisgICAgICAgIGNhc2UgJ1onOgorICAgICAgICAgICAgY29tbWFuZHNJbmRl
eCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCAiY2xvc2VQYXRoIiwgY29tbWFuZHNJ
bmRleCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGNvbW1hbmRzSW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRleHQuY2xv
c2VQYXRoKCk7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSBmaWxsQ29sb3I7CisgICAgY29udGV4
dC5maWxsKCk7CisKKyAgICBpZiAob3V0bGluZUNvbG9yKSB7CisgICAgICAgIGNvbnRleHQubGlu
ZVdpZHRoID0gMjsKKyAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IG91dGxpbmVDb2xvcjsK
KyAgICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICB9CisKKyAgICBjb250ZXh0LnJlc3RvcmUo
KTsKK30KKworZnVuY3Rpb24gZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKHF1YWQsIGNsaXBRdWFk
LCBmaWxsQ29sb3IpCit7CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGZpbGxDb2xvcjsKKyAgICBjb250
ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDA7CisgICAgcXVhZFRvUGF0aChx
dWFkKS5maWxsKCk7CisgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAiZGVz
dGluYXRpb24tb3V0IjsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJyZWQiOworICAgIHF1YWRU
b1BhdGgoY2xpcFF1YWQpLmZpbGwoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVu
Y3Rpb24gcXVhZEVxdWFscyhxdWFkMSwgcXVhZDIpCit7CisgICAgcmV0dXJuIHF1YWQxWzBdLngg
PT09IHF1YWQyWzBdLnggJiYgcXVhZDFbMF0ueSA9PT0gcXVhZDJbMF0ueSAmJgorICAgICAgICBx
dWFkMVsxXS54ID09PSBxdWFkMlsxXS54ICYmIHF1YWQxWzFdLnkgPT09IHF1YWQyWzFdLnkgJiYK
KyAgICAgICAgcXVhZDFbMl0ueCA9PT0gcXVhZDJbMl0ueCAmJiBxdWFkMVsyXS55ID09PSBxdWFk
MlsyXS55ICYmCisgICAgICAgIHF1YWQxWzNdLnggPT09IHF1YWQyWzNdLnggJiYgcXVhZDFbM10u
eSA9PT0gcXVhZDJbM10ueTsKK30KKworZnVuY3Rpb24gZHJhd0d1dHRlcigpCit7CisgICAgdmFy
IGZyYW1lV2lkdGggPSBmcmFtZVZpZXdGdWxsU2l6ZS53aWR0aDsKKyAgICB2YXIgZnJhbWVIZWln
aHQgPSBmcmFtZVZpZXdGdWxsU2l6ZS5oZWlnaHQ7CisKKyAgICBpZiAoIWZyYW1lV2lkdGggfHwg
ZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCA8PSBmcmFtZVdpZHRoKQorICAgICAgICByaWdodEd1
dHRlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpOworICAgIGVsc2UgeworICAgICAg
ICByaWdodEd1dHRlci5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKKyAgICAgICAgcmlnaHRHdXR0
ZXIuc3R5bGUubGVmdCA9IGZyYW1lV2lkdGggKyAicHgiOworICAgIH0KKworICAgIGlmICghZnJh
bWVIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgPD0gZnJhbWVIZWlnaHQpCisg
ICAgICAgIGJvdHRvbUd1dHRlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpOworICAg
IGVsc2UgeworICAgICAgICBib3R0b21HdXR0ZXIuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cisg
ICAgICAgIGJvdHRvbUd1dHRlci5zdHlsZS50b3AgPSBmcmFtZUhlaWdodCArICJweCI7CisgICAg
fQorfQorCit2YXIgdXBkYXRlUGFpbnRSZWN0c0ludGVydmFsSUQ7CisKK2Z1bmN0aW9uIHVwZGF0
ZVBhaW50UmVjdHMocGFpbnRSZWN0TGlzdCkKK3sKKyAgICB2YXIgY29udGV4dCA9IHBhaW50UmVj
dHNDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250
ZXh0LnNjYWxlKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRp
byk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBwYWludFJlY3RzQ2FudmFzLndpZHRo
LCBwYWludFJlY3RzQ2FudmFzLmhlaWdodCk7CisKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHBh
aW50UmVjdEZpbGxDb2xvcjsKKworICAgIGZvciAodmFyIHJlY3RPYmplY3Qgb2YgcGFpbnRSZWN0
TGlzdCkKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChyZWN0T2JqZWN0LngsIHJlY3RPYmplY3Qu
eSwgcmVjdE9iamVjdC53aWR0aCwgcmVjdE9iamVjdC5oZWlnaHQpOworCisgICAgY29udGV4dC5y
ZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0KHJlc2V0RGF0YSkKK3sKKyAgICB2YXIgZGV2
aWNlU2NhbGVGYWN0b3IgPSByZXNldERhdGEuZGV2aWNlU2NhbGVGYWN0b3I7CisgICAgdmFyIHZp
ZXdwb3J0U2l6ZSA9IHJlc2V0RGF0YS52aWV3cG9ydFNpemU7CisgICAgd2luZG93LmZyYW1lVmll
d0Z1bGxTaXplID0gcmVzZXREYXRhLmZyYW1lVmlld0Z1bGxTaXplOworCisgICAgd2luZG93LmNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgICB3aW5kb3cucGFp
bnRSZWN0c0NhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWludHJlY3RzLWNhbnZh
cyIpOworCisgICAgd2luZG93LmNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAg
ICB3aW5kb3cucmlnaHRHdXR0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmlnaHQtZ3V0
dGVyIik7CisgICAgd2luZG93LmJvdHRvbUd1dHRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJib3R0b20tZ3V0dGVyIik7CisKKyAgICBjYW52YXMud2lkdGggPSBkZXZpY2VTY2FsZUZhY3Rv
ciAqIHZpZXdwb3J0U2l6ZS53aWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gZGV2aWNlU2NhbGVG
YWN0b3IgKiB2aWV3cG9ydFNpemUuaGVpZ2h0OworICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHZp
ZXdwb3J0U2l6ZS53aWR0aCArICJweCI7CisgICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IHZpZXdw
b3J0U2l6ZS5oZWlnaHQgKyAicHgiOworICAgIGNvbnRleHQuc2NhbGUoZGV2aWNlU2NhbGVGYWN0
b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIC8vIFdlIGF2b2lkIGdldHRpbmcgdGhlIHRo
ZSBjb250ZXh0IGZvciB0aGUgcGFpbnQgcmVjdHMgY2FudmFzIHVudGlsIHdlIG5lZWQgdG8gcGFp
bnQsIHRvIGF2b2lkIGJhY2tpbmcgc3RvcmUgYWxsb2NhdGlvbi4KKyAgICBwYWludFJlY3RzQ2Fu
dmFzLndpZHRoID0gZGV2aWNlU2NhbGVGYWN0b3IgKiB2aWV3cG9ydFNpemUud2lkdGg7CisgICAg
cGFpbnRSZWN0c0NhbnZhcy5oZWlnaHQgPSBkZXZpY2VTY2FsZUZhY3RvciAqIHZpZXdwb3J0U2l6
ZS5oZWlnaHQ7CisgICAgcGFpbnRSZWN0c0NhbnZhcy5zdHlsZS53aWR0aCA9IHZpZXdwb3J0U2l6
ZS53aWR0aCArICJweCI7CisgICAgcGFpbnRSZWN0c0NhbnZhcy5zdHlsZS5oZWlnaHQgPSB2aWV3
cG9ydFNpemUuaGVpZ2h0ICsgInB4IjsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
YXVzZWQtaW4tZGVidWdnZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIikuaW5uZXJIVE1M
ID0gIiI7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJkaW1tZWQiKTsKK30K
KworZnVuY3Rpb24gRE9NQnVpbGRlcih0YWdOYW1lLCBjbGFzc05hbWUpCit7CisgICAgdGhpcy5l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKKyAgICB0aGlzLmVsZW1l
bnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOworfQorCitET01CdWlsZGVyLnByb3RvdHlwZS5hcHBl
bmRUZXh0Tm9kZSA9IGZ1bmN0aW9uKGNvbnRlbnQpCit7CisgICAgdmFyIG5vZGUgPSBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgpOworICAgIG5vZGUudGV4dENvbnRlbnQgPSBjb250ZW50OworICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKTsKKyAgICByZXR1cm4gbm9kZTsKK30KKwor
RE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kU3BhbiA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgdmFs
dWUpCit7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgc3Bhbi5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgc3Bhbi50ZXh0Q29udGVudCA9IHZh
bHVlOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICByZXR1cm4gc3Bh
bjsKK30KKworRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kU3BhbklmTm90TnVsbCA9IGZ1bmN0
aW9uKGNsYXNzTmFtZSwgdmFsdWUsIHByZWZpeCkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyB0aGlz
LmFwcGVuZFNwYW4oY2xhc3NOYW1lLCAocHJlZml4ID8gcHJlZml4IDogIiIpICsgdmFsdWUpIDog
bnVsbDsKK30KKworRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kUHJvcGVydHkgPSBmdW5jdGlv
bihjbGFzc05hbWUsIHByb3BlcnR5TmFtZSwgdmFsdWUpCit7CisgICAgdmFyIGJ1aWxkZXIgPSBu
ZXcgRE9NQnVpbGRlcigiZGl2IiwgY2xhc3NOYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4o
ImNzcy1wcm9wZXJ0eSIsIHByb3BlcnR5TmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRUZXh0Tm9k
ZSgiICIpOworICAgIGJ1aWxkZXIuYXBwZW5kU3BhbigidmFsdWUiLCB2YWx1ZSk7CisgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKGJ1aWxkZXIuZWxlbWVudCk7CisgICAgcmV0dXJuIGJ1aWxk
ZXIuZWxlbWVudDsKK30KKworRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kUHJvcGVydHlJZk5v
dE51bGwgPSBmdW5jdGlvbihjbGFzc05hbWUsIHByb3BlcnR5TmFtZSwgdmFsdWUpCit7CisgICAg
cmV0dXJuIHZhbHVlID8gdGhpcy5hcHBlbmRQcm9wZXJ0eShjbGFzc05hbWUsIHByb3BlcnR5TmFt
ZSwgdmFsdWUpIDogbnVsbDsKK30KKworZnVuY3Rpb24gX3RydW5jYXRlU3RyaW5nKHZhbHVlLCBt
YXhMZW5ndGgpCit7CisgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0
aCA/IHZhbHVlLnN1YnN0cmluZygwLCA1MCkgKyAiXHUyMDI2IiA6IHZhbHVlOworfQorCitmdW5j
dGlvbiBfY3JlYXRlRWxlbWVudFRpdGxlKGVsZW1lbnREYXRhKQoreworICAgIHZhciBidWlsZGVy
ID0gbmV3IERPTUJ1aWxkZXIoImRpdiIsICJlbGVtZW50LXRpdGxlIik7CisgICAgCisgICAgYnVp
bGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJ0YWctbmFtZSIsIGVsZW1lbnREYXRhLnRhZ05hbWUp
OworICAgIGJ1aWxkZXIuYXBwZW5kU3BhbklmTm90TnVsbCgibm9kZS1pZCIsIGVsZW1lbnREYXRh
LmlkVmFsdWUsICIjIik7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJjbGFzcy1u
YW1lIiwgX3RydW5jYXRlU3RyaW5nKGVsZW1lbnREYXRhLmNsYXNzTmFtZSwgNTApKTsKKworICAg
IGJ1aWxkZXIuYXBwZW5kVGV4dE5vZGUoIiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oIm5v
ZGUtd2lkdGgiLCBlbGVtZW50RGF0YS5zaXplLndpZHRoKTsKKyAgICAvLyBceGQ3IGlzIHRoZSBj
b2RlIGZvciB0aGUgJnRpbWVzOyBIVE1MIGVudGl0eS4KKyAgICBidWlsZGVyLmFwcGVuZFNwYW4o
InB4IiwgInB4IFx4ZDcgIik7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLWhlaWdodCIs
IGVsZW1lbnREYXRhLnNpemUuaGVpZ2h0KTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oInB4Iiwg
InB4Iik7CisKKyAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJyb2xlLW5hbWUi
LCAiUm9sZSIsIGVsZW1lbnREYXRhLnJvbGUpOworICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJ
Zk5vdE51bGwoInJlZ2lvbi1mbG93LW5hbWUiLCAiUmVnaW9uIEZsb3ciLCBlbGVtZW50RGF0YS5y
ZWdpb25GbG93RGF0YSA/IGVsZW1lbnREYXRhLnJlZ2lvbkZsb3dEYXRhLm5hbWUgOiBudWxsKTsK
KyAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJjb250ZW50LWZsb3ctbmFtZSIs
ICJDb250ZW50IEZsb3ciLCBlbGVtZW50RGF0YS5jb250ZW50Rmxvd0RhdGEgPyBlbGVtZW50RGF0
YS5jb250ZW50Rmxvd0RhdGEubmFtZSA6IG51bGwpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIikuYXBwZW5kQ2hpbGQoYnVpbGRlci5lbGVt
ZW50KTsKKworICAgIHJldHVybiBidWlsZGVyLmVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIF9kcmF3
RWxlbWVudFRpdGxlKGVsZW1lbnREYXRhLCBmcmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQorewor
ICAgIGlmICghZWxlbWVudERhdGEgfHwgIWZyYWdtZW50SGlnaGxpZ2h0LnF1YWRzLmxlbmd0aCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIGVsZW1lbnRUaXRsZSA9IF9jcmVhdGVFbGVtZW50
VGl0bGUoZWxlbWVudERhdGEpOworCisgICAgdmFyIG1hcmdpblF1YWQgPSBmcmFnbWVudEhpZ2hs
aWdodC5xdWFkc1swXTsKKworICAgIHZhciB0aXRsZVdpZHRoID0gZWxlbWVudFRpdGxlLm9mZnNl
dFdpZHRoICsgNjsKKyAgICB2YXIgdGl0bGVIZWlnaHQgPSBlbGVtZW50VGl0bGUub2Zmc2V0SGVp
Z2h0ICsgNDsKKworICAgIHZhciBhbmNob3JUb3AgPSBtYXJnaW5RdWFkWzBdLnk7CisgICAgdmFy
IGFuY2hvckJvdHRvbSA9IG1hcmdpblF1YWRbM10ueTsKKworICAgIGNvbnN0IGFycm93SGVpZ2h0
ID0gNzsKKyAgICB2YXIgcmVuZGVyQXJyb3dVcCA9IGZhbHNlOworICAgIHZhciByZW5kZXJBcnJv
d0Rvd24gPSBmYWxzZTsKKworICAgIHZhciBib3hYID0gbWFyZ2luUXVhZFswXS54OworCisgICAg
dmFyIGNsaXBRdWFkID0gZnJhZ21lbnRIaWdobGlnaHQucmVnaW9uQ2xpcHBpbmdBcmVhOworICAg
IGlmIChjbGlwUXVhZCkgeworICAgICAgICAvLyBSZXN0cmljdCB0aGUgcG9zaXRpb24gb2YgdGhl
IHRpdGxlIGJveCB0byB0aGUgYXJlYSBvZiB0aGUgY29udGFpbmluZyByZWdpb24uCisgICAgICAg
IGFuY2hvclRvcCA9IE1hdGgubWF4KGFuY2hvclRvcCwgTWF0aC5taW4oY2xpcFF1YWRbMF0ueSwg
Y2xpcFF1YWRbMV0ueSwgY2xpcFF1YWRbMl0ueSwgY2xpcFF1YWRbM10ueSkpOworICAgICAgICBh
bmNob3JCb3R0b20gPSBNYXRoLm1pbihhbmNob3JCb3R0b20sIE1hdGgubWF4KGNsaXBRdWFkWzBd
LnksIGNsaXBRdWFkWzFdLnksIGNsaXBRdWFkWzJdLnksIGNsaXBRdWFkWzNdLnkpKTsKKyAgICAg
ICAgYm94WCA9IE1hdGgubWF4KGJveFgsIE1hdGgubWluKGNsaXBRdWFkWzBdLngsIGNsaXBRdWFk
WzFdLngsIGNsaXBRdWFkWzJdLngsIGNsaXBRdWFkWzNdLngpKTsKKyAgICAgICAgYm94WCA9IE1h
dGgubWluKGJveFgsIE1hdGgubWF4KGNsaXBRdWFkWzBdLngsIGNsaXBRdWFkWzFdLngsIGNsaXBR
dWFkWzJdLngsIGNsaXBRdWFkWzNdLngpKTsKKyAgICB9CisKKyAgICBib3hYID0gTWF0aC5tYXgo
MiwgYm94WCAtIHNjcm9sbC54KTsKKyAgICBhbmNob3JUb3AgLT0gc2Nyb2xsLnk7CisgICAgYW5j
aG9yQm90dG9tIC09IHNjcm9sbC55OworCisgICAgaWYgKGJveFggKyB0aXRsZVdpZHRoID4gY2Fu
dmFzLndpZHRoKQorICAgICAgICBib3hYID0gY2FudmFzLndpZHRoIC0gdGl0bGVXaWR0aCAtIDI7
CisKKyAgICB2YXIgYm94WTsKKyAgICBpZiAoYW5jaG9yVG9wID4gY2FudmFzLmhlaWdodCkgewor
ICAgICAgICBib3hZID0gY2FudmFzLmhlaWdodCAtIHRpdGxlSGVpZ2h0IC0gYXJyb3dIZWlnaHQ7
CisgICAgICAgIHJlbmRlckFycm93RG93biA9IHRydWU7CisgICAgfSBlbHNlIGlmIChhbmNob3JC
b3R0b20gPCAwKSB7CisgICAgICAgIGJveFkgPSBhcnJvd0hlaWdodDsKKyAgICAgICAgcmVuZGVy
QXJyb3dVcCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChhbmNob3JCb3R0b20gKyB0aXRsZUhlaWdo
dCArIGFycm93SGVpZ2h0IDwgY2FudmFzLmhlaWdodCkgeworICAgICAgICBib3hZID0gYW5jaG9y
Qm90dG9tICsgYXJyb3dIZWlnaHQgLSA0OworICAgICAgICByZW5kZXJBcnJvd1VwID0gdHJ1ZTsK
KyAgICB9IGVsc2UgaWYgKGFuY2hvclRvcCAtIHRpdGxlSGVpZ2h0IC0gYXJyb3dIZWlnaHQgPiAw
KSB7CisgICAgICAgIGJveFkgPSBhbmNob3JUb3AgLSB0aXRsZUhlaWdodCAtIGFycm93SGVpZ2h0
ICsgMzsKKyAgICAgICAgcmVuZGVyQXJyb3dEb3duID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgYm94WSA9IGFycm93SGVpZ2h0OworCisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoMC41LCAwLjUpOworICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY29u
dGV4dC5tb3ZlVG8oYm94WCwgYm94WSk7CisgICAgaWYgKHJlbmRlckFycm93VXApIHsKKyAgICAg
ICAgY29udGV4dC5saW5lVG8oYm94WCArIDIgKiBhcnJvd0hlaWdodCwgYm94WSk7CisgICAgICAg
IGNvbnRleHQubGluZVRvKGJveFggKyAzICogYXJyb3dIZWlnaHQsIGJveFkgLSBhcnJvd0hlaWdo
dCk7CisgICAgICAgIGNvbnRleHQubGluZVRvKGJveFggKyA0ICogYXJyb3dIZWlnaHQsIGJveFkp
OworICAgIH0KKyAgICBjb250ZXh0LmxpbmVUbyhib3hYICsgdGl0bGVXaWR0aCwgYm94WSk7Cisg
ICAgY29udGV4dC5saW5lVG8oYm94WCArIHRpdGxlV2lkdGgsIGJveFkgKyB0aXRsZUhlaWdodCk7
CisgICAgaWYgKHJlbmRlckFycm93RG93bikgeworICAgICAgICBjb250ZXh0LmxpbmVUbyhib3hY
ICsgNCAqIGFycm93SGVpZ2h0LCBib3hZICsgdGl0bGVIZWlnaHQpOworICAgICAgICBjb250ZXh0
LmxpbmVUbyhib3hYICsgMyAqIGFycm93SGVpZ2h0LCBib3hZICsgdGl0bGVIZWlnaHQgKyBhcnJv
d0hlaWdodCk7CisgICAgICAgIGNvbnRleHQubGluZVRvKGJveFggKyAyICogYXJyb3dIZWlnaHQs
IGJveFkgKyB0aXRsZUhlaWdodCk7CisgICAgfQorICAgIGNvbnRleHQubGluZVRvKGJveFgsIGJv
eFkgKyB0aXRsZUhlaWdodCk7CisgICAgY29udGV4dC5jbG9zZVBhdGgoKTsKKyAgICBjb250ZXh0
LmZpbGxTdHlsZSA9ICJyZ2IoMjU1LCAyNTUsIDE5NCkiOworICAgIGNvbnRleHQuZmlsbCgpOwor
ICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSAicmdiKDEyOCwgMTI4LCAxMjgpIjsKKyAgICBjb250
ZXh0LnN0cm9rZSgpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7CisKKyAgICBlbGVtZW50VGl0
bGUuc3R5bGUudG9wID0gKGJveFkgKyAzKSArICJweCI7CisgICAgZWxlbWVudFRpdGxlLnN0eWxl
LmxlZnQgPSAoYm94WCArIDMpICsgInB4IjsKK30KKworZnVuY3Rpb24gX3F1YWRNaWRQb2ludChx
dWFkKQoreworICAgIHJldHVybiB7CisgICAgICAgIHg6IChxdWFkWzBdLnggKyBxdWFkWzFdLngg
KyBxdWFkWzJdLnggKyBxdWFkWzNdLngpIC8gNCwKKyAgICAgICAgeTogKHF1YWRbMF0ueSArIHF1
YWRbMV0ueSArIHF1YWRbMl0ueSArIHF1YWRbM10ueSkgLyA0LAorICAgIH07Cit9CisKK2Z1bmN0
aW9uIF9kcmF3UmVnaW9uTGluayhwb2ludEEsIHBvaW50QikKK3sKKyAgICBjb250ZXh0LnNhdmUo
KTsKKyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDI7CisgICAgY29udGV4dC5zdHJva2VTdHlsZSA9
IHJlZ2lvbkNoYWluU3Ryb2tlQ29sb3I7CisgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICBj
b250ZXh0Lm1vdmVUbyhwb2ludEEueCwgcG9pbnRBLnkpOworICAgIGNvbnRleHQubGluZVRvKHBv
aW50Qi54LCBwb2ludEIueSk7CisgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICBjb250ZXh0LnJl
c3RvcmUoKTsKK30KKworZnVuY3Rpb24gX2RyYXdSZWdpb25zSGlnaGxpZ2h0KHJlZ2lvbnMpCit7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWdpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHZhciByZWdpb24gPSByZWdpb25zW2ldOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKHJlZ2lv
bi5ib3JkZXJRdWFkLCByZWdpb24uaXNIaWdobGlnaHRlZCA/IGhpZ2hsaWdodGVkUmVnaW9uQmFj
a2dyb3VuZENvbG9yIDogcmVnaW9uQmFja2dyb3VuZENvbG9yLCByZWdpb25TdHJva2VDb2xvcik7
CisgICAgICAgIF9kcmF3UmVnaW9uTnVtYmVyKHJlZ2lvbi5ib3JkZXJRdWFkLCBpICsgMSk7Cisg
ICAgfQorCisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCByZWdpb25zLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIHZhciByZWdpb25BID0gcmVnaW9uc1tpIC0gMV0sCisgICAgICAgICAgICByZWdpb25C
ID0gcmVnaW9uc1tpXTsKKyAgICAgICAgX2RyYXdSZWdpb25MaW5rKF9xdWFkTWlkUG9pbnQocmVn
aW9uQS5vdXRnb2luZ1F1YWQpLCBfcXVhZE1pZFBvaW50KHJlZ2lvbkIuaW5jb21pbmdRdWFkKSk7
CisgICAgfQorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWdpb25zLmxlbmd0aDsgKytpKSB7
CisgICAgICAgIHZhciByZWdpb24gPSByZWdpb25zW2ldOworICAgICAgICBpZiAoaSA+IDApCisg
ICAgICAgICAgICBkcmF3T3V0bGluZWRRdWFkKHJlZ2lvbi5pbmNvbWluZ1F1YWQsIHJlZ2lvbkxp
bmtCb3hCYWNrZ3JvdW5kQ29sb3IsIHJlZ2lvbkxpbmtCb3hTdHJva2VDb2xvcik7CisgICAgICAg
IGlmIChpICE9PSByZWdpb25zLmxlbmd0aCAtIDEpCisgICAgICAgICAgICBkcmF3T3V0bGluZWRR
dWFkKHJlZ2lvbi5vdXRnb2luZ1F1YWQsIHJlZ2lvbkxpbmtCb3hCYWNrZ3JvdW5kQ29sb3IsIHJl
Z2lvbkxpbmtCb3hTdHJva2VDb2xvcik7CisgICAgfQorfQorCitmdW5jdGlvbiBfZHJhd1NoYXBl
SGlnaGxpZ2h0KHNoYXBlSW5mbykKK3sKKyAgICBpZiAoc2hhcGVJbmZvLm1hcmdpblNoYXBlKQor
ICAgICAgICBkcmF3UGF0aChjb250ZXh0LCBzaGFwZUluZm8ubWFyZ2luU2hhcGUsIHNoYXBlTWFy
Z2luSGlnaGxpZ2h0Q29sb3IpOworCisgICAgaWYgKHNoYXBlSW5mby5zaGFwZSkKKyAgICAgICAg
ZHJhd1BhdGgoY29udGV4dCwgc2hhcGVJbmZvLnNoYXBlLCBzaGFwZUhpZ2hsaWdodENvbG9yKTsK
KworICAgIGlmICghKHNoYXBlSW5mby5zaGFwZSB8fCBzaGFwZUluZm8ubWFyZ2luU2hhcGUpKQor
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkKHNoYXBlSW5mby5ib3VuZHMsIHNoYXBlSGlnaGxpZ2h0
Q29sb3IsIHNoYXBlSGlnaGxpZ2h0Q29sb3IpOworfQorCitmdW5jdGlvbiBfZHJhd0ZyYWdtZW50
SGlnaGxpZ2h0KGhpZ2hsaWdodCkKK3sKKyAgICBpZiAoIWhpZ2hsaWdodC5xdWFkcy5sZW5ndGgp
CisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQuc2F2ZSgpOworCisgICAgaWYgKGhpZ2hs
aWdodC5yZWdpb25DbGlwcGluZ0FyZWEpIHsKKyAgICAgICAgLy8gQ2xpcCB0byB0aGUgY29udGFp
bmluZyByZWdpb24gdG8gYXZvaWQgc2hvd2luZyBmcmFnbWVudHMgdGhhdCBhcmUgbm90IHJlbmRl
cmVkIGJ5IHRoaXMgcmVnaW9uLgorICAgICAgICBxdWFkVG9QYXRoKGhpZ2hsaWdodC5yZWdpb25D
bGlwcGluZ0FyZWEpLmNsaXAoKTsKKyAgICB9CisKKyAgICB2YXIgcXVhZHMgPSBoaWdobGlnaHQu
cXVhZHMuc2xpY2UoKTsKKyAgICB2YXIgY29udGVudFF1YWQgPSBxdWFkcy5wb3AoKTsKKyAgICB2
YXIgcGFkZGluZ1F1YWQgPSBxdWFkcy5wb3AoKTsKKyAgICB2YXIgYm9yZGVyUXVhZCA9IHF1YWRz
LnBvcCgpOworICAgIHZhciBtYXJnaW5RdWFkID0gcXVhZHMucG9wKCk7CisKKyAgICB2YXIgaGFz
Q29udGVudCA9IGNvbnRlbnRRdWFkICYmIGhpZ2hsaWdodC5jb250ZW50Q29sb3IgIT09IHRyYW5z
cGFyZW50Q29sb3IgfHwgaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3IgIT09IHRyYW5zcGFy
ZW50Q29sb3I7CisgICAgdmFyIGhhc1BhZGRpbmcgPSBwYWRkaW5nUXVhZCAmJiBoaWdobGlnaHQu
cGFkZGluZ0NvbG9yICE9PSB0cmFuc3BhcmVudENvbG9yOworICAgIHZhciBoYXNCb3JkZXIgPSBi
b3JkZXJRdWFkICYmIGhpZ2hsaWdodC5ib3JkZXJDb2xvciAhPT0gdHJhbnNwYXJlbnRDb2xvcjsK
KyAgICB2YXIgaGFzTWFyZ2luID0gbWFyZ2luUXVhZCAmJiBoaWdobGlnaHQubWFyZ2luQ29sb3Ig
IT09IHRyYW5zcGFyZW50Q29sb3I7CisKKyAgICB2YXIgY2xpcFF1YWQ7CisgICAgaWYgKGhhc01h
cmdpbiAmJiAoIWhhc0JvcmRlciB8fCAhcXVhZEVxdWFscyhtYXJnaW5RdWFkLCBib3JkZXJRdWFk
KSkpIHsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKG1hcmdpblF1YWQsIGJvcmRl
clF1YWQsIGhpZ2hsaWdodC5tYXJnaW5Db2xvcik7CisgICAgICAgIGNsaXBRdWFkID0gYm9yZGVy
UXVhZDsKKyAgICB9CisgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1BhZGRpbmcgfHwgIXF1YWRF
cXVhbHMoYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQpKSkgeworICAgICAgICBkcmF3T3V0bGluZWRR
dWFkV2l0aENsaXAoYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hsaWdodC5ib3JkZXJDb2xv
cik7CisgICAgICAgIGNsaXBRdWFkID0gcGFkZGluZ1F1YWQ7CisgICAgfQorICAgIGlmIChoYXNQ
YWRkaW5nICYmICghaGFzQ29udGVudCB8fCAhcXVhZEVxdWFscyhwYWRkaW5nUXVhZCwgY29udGVu
dFF1YWQpKSkgeworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAocGFkZGluZ1F1YWQs
IGNvbnRlbnRRdWFkLCBoaWdobGlnaHQucGFkZGluZ0NvbG9yKTsKKyAgICAgICAgY2xpcFF1YWQg
PSBjb250ZW50UXVhZDsKKyAgICB9CisgICAgaWYgKGhhc0NvbnRlbnQpCisgICAgICAgIGRyYXdP
dXRsaW5lZFF1YWQoY29udGVudFF1YWQsIGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIGhpZ2hsaWdo
dC5jb250ZW50T3V0bGluZUNvbG9yKTsKKworICAgIHZhciB3aWR0aCA9IGNhbnZhcy53aWR0aDsK
KyAgICB2YXIgaGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKKyAgICB2YXIgbWluWCA9IE51bWJlci5N
QVhfVkFMVUUsIG1pblkgPSBOdW1iZXIuTUFYX1ZBTFVFLCBtYXhYID0gTnVtYmVyLk1JTl9WQUxV
RTsgbWF4WSA9IE51bWJlci5NSU5fVkFMVUU7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoaWdo
bGlnaHQucXVhZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHF1YWQgPSBoaWdobGlnaHQu
cXVhZHNbaV07CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcXVhZC5sZW5ndGg7ICsraikg
eworICAgICAgICAgICAgbWluWCA9IE1hdGgubWluKG1pblgsIHF1YWRbal0ueCk7CisgICAgICAg
ICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgcXVhZFtqXS54KTsKKyAgICAgICAgICAgIG1pblkg
PSBNYXRoLm1pbihtaW5ZLCBxdWFkW2pdLnkpOworICAgICAgICAgICAgbWF4WSA9IE1hdGgubWF4
KG1heFksIHF1YWRbal0ueSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKK30KKworZnVuY3Rpb24gc2hvd1BhZ2VJbmRpY2F0aW9uKCkKK3sKKyAgICBkb2N1bWVu
dC5ib2R5LmNsYXNzTGlzdC5hZGQoImluZGljYXRlIik7Cit9CisKK2Z1bmN0aW9uIGhpZGVQYWdl
SW5kaWNhdGlvbigpCit7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJpbmRp
Y2F0ZSIpOworfQorCitmdW5jdGlvbiBkcmF3Tm9kZUhpZ2hsaWdodChoaWdobGlnaHQpCit7Cisg
ICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLWhpZ2hsaWdodC5zY3Jv
bGxPZmZzZXQueCwgLWhpZ2hsaWdodC5zY3JvbGxPZmZzZXQueSk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGhpZ2hsaWdodC5mcmFnbWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIF9kcmF3
RnJhZ21lbnRIaWdobGlnaHQoaGlnaGxpZ2h0LmZyYWdtZW50c1tpXSk7CisKKyAgICBpZiAoaGln
aGxpZ2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdodC5lbGVtZW50RGF0YS5yZWdpb25GbG93RGF0
YSkKKyAgICAgICAgX2RyYXdSZWdpb25zSGlnaGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50RGF0YS5y
ZWdpb25GbG93RGF0YS5yZWdpb25zKTsKKworICAgIGlmIChoaWdobGlnaHQuZWxlbWVudERhdGEg
JiYgaGlnaGxpZ2h0LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpCisgICAgICAgIF9kcmF3
U2hhcGVIaWdobGlnaHQoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpOwor
CisgICAgY29udGV4dC5yZXN0b3JlKCk7CisKKyAgICB2YXIgZWxlbWVudFRpdGxlQ29udGFpbmVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIik7Cisg
ICAgZWxlbWVudFRpdGxlQ29udGFpbmVyLmlubmVySFRNTCA9ICIiOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgaGlnaGxpZ2h0LmZyYWdtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgX2RyYXdF
bGVtZW50VGl0bGUoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLCBoaWdobGlnaHQuZnJhZ21lbnRzW2ld
LCBoaWdobGlnaHQuc2Nyb2xsT2Zmc2V0KTsKK30KKworZnVuY3Rpb24gZHJhd1F1YWRIaWdobGln
aHQoaGlnaGxpZ2h0KQoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGRyYXdPdXRsaW5lZFF1
YWQoaGlnaGxpZ2h0LnF1YWRzWzBdLCBoaWdobGlnaHQuY29udGVudENvbG9yLCBoaWdobGlnaHQu
Y29udGVudE91dGxpbmVDb2xvcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0
aW9uIHNldFBsYXRmb3JtKHBsYXRmb3JtKQoreworICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0
LmFkZCgicGxhdGZvcm0tIiArIHBsYXRmb3JtKTsKK30KKworZnVuY3Rpb24gZGlzcGF0Y2gobWVz
c2FnZSkKK3sKKyAgICB2YXIgZnVuY3Rpb25OYW1lID0gbWVzc2FnZS5zaGlmdCgpOworICAgIHdp
bmRvd1tmdW5jdGlvbk5hbWVdLmFwcGx5KG51bGwsIG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBs
b2codGV4dCkKK3sKKyAgICB2YXIgbG9nRW50cnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICBsb2dFbnRyeS50ZXh0Q29udGVudCA9IHRleHQ7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGxvZ0VudHJ5KTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL092ZXJsYXkuaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL092ZXJsYXkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MTllMDllOGRhNzEzYzk2NzRlZjA3ZmQ1YzIyMTgxNWFlZTQ0ODRkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvT3ZlcmxheS5odG1sCkBAIC0w
LDAgKzEsNDkgQEAKKzwhLS0KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBv
ZiBXYXNoaW5ndG9uLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBv
bGljeSIgY29udGVudD0iZGVmYXVsdC1zcmMgJ3NlbGYnOyBpbWctc3JjICo7IGNvbm5lY3Qtc3Jj
ICo7IG1lZGlhLXNyYyAqOyBmb250LXNyYyAqOyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5s
aW5lJzsgc2NyaXB0LXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnIj4KKworICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvT3ZlcmxheS5jc3MiPgorCisgICAgPHNjcmlwdCBz
cmM9IkJhc2UvT3ZlcmxheS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgLy8g
V2FpdCBmb3IgdGhlIHJlc3Qgb2YgcGFyc2luZyB0byBmaW5pc2guCisgICAgICAgIHdpbmRvdy5z
ZXRUaW1lb3V0KEluc3BlY3Rvck92ZXJsYXkubG9hZGVkLCAwKTsKKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IGNsYXNzPSJmaWxsIj4KKzxkaXYgY2xhc3M9Im1lc3NhZ2UtbGluZSI+PHNw
YW4gY2xhc3M9Im1lc3NhZ2UtYm94IiBpZD0icGF1c2VkLWluLWRlYnVnZ2VyIj48L3NwYW4+PC9k
aXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIGNsYXNzPSJmaWxsIj48L2NhbnZhcz4KKzxjYW52YXMg
aWQ9InBhaW50cmVjdHMtY2FudmFzIiBjbGFzcz0iZmlsbCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJl
bGVtZW50LXRpdGxlLWNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJyaWdodC1ndXR0ZXIiPjwv
ZGl2PgorPGRpdiBpZD0iYm90dG9tLWd1dHRlciI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT3ZlcmxheS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9PdmVybGF5LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDA5ODgwYjE0NWE5M2M0
MDVjZjg4MWNjYWNkMzIxNzFmNGI0NTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcmxheS5jc3MKQEAgLTAsMCArMSw5OCBA
QAorYm9keSB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisKK2JvZHkucGxh
dGZvcm0tbWFjIHsKKyAgICBmb250LXNpemU6IDExcHg7CisgICAgZm9udC1mYW1pbHk6IE1lbmxv
LCBNb25hY287Cit9CisKK2JvZHkucGxhdGZvcm0td2luZG93cyB7CisgICAgZm9udC1zaXplOiAx
MnB4OworICAgIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgTHVjaWRhIENvbnNvbGU7Cit9CisKK2Jv
ZHkucGxhdGZvcm0tbGludXggeworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBmb250LWZhbWls
eTogZGVqYXZ1IHNhbnMgbW9ubzsKK30KKworLmZpbGwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6
IDA7Cit9CisKKy5pbmRpY2F0ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMTEsIDE2
OCwgMjIwLCAwLjY2KSAhaW1wb3J0YW50OworfQorCisuZGltbWVkIHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzEpOworfQorCisubWVzc2FnZS1saW5lIHsKKyAgICBt
YXJnaW46IDEwcHggMDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5tZXNzYWdlLWJv
eCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAxOTQpOworICAgIGJvcmRl
cjogMXB4IHNvbGlkIHJnYigxMjgsIDEyOCwgMTI4KTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgcGFkZGluZzogMnB4IDRweDsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cit9CisK
Ky5weCB7CisgICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKK30KKworLmVsZW1lbnQtdGl0
bGUtY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgei1pbmRleDogMTA7
Cit9CisKKy5lbGVtZW50LXRpdGxlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CisKKy50
YWctbmFtZSB7CisgICAgLyogS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICgu
dGFnKSAqLworICAgIGNvbG9yOiByZ2IoMTM2LCAxOCwgMTI4KTsKK30KKworLm5vZGUtaWQgewor
ICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS12
YWx1ZSkgKi8KKyAgICBjb2xvcjogcmdiKDI2LCAyNiwgMTY2KTsKK30KKworLmNsYXNzLW5hbWUg
eworICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0
ZS1uYW1lKSAqLworICAgIGNvbG9yOiByZ2IoMTUzLCA2OSwgMCk7Cit9CisKKy5jc3MtcHJvcGVy
dHkgeworICAgIGNvbG9yOiByZ2IoMTcwLCAxMywgMTQ1KTsKK30KKworI3JpZ2h0LWd1dHRlciB7
CisgICAgZGlzcGxheTogbm9uZTsKKyAgICByaWdodDogMDsKKyAgICB0b3A6IDA7CisgICAgYm90
dG9tOiAwOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBk
YXJrZ3JheTsKK30KKworI2JvdHRvbS1ndXR0ZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
bGVmdDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtncmF5OworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRl
eCBlNmVkZTQ5ZmM5MjBhOWNhNGY2YTlkZGIxNjkyMWUyNzE0ZTk0ZmRjLi5kNWIxMzAzNDkwMGQ5
ZjgwZjdjZWFmMmFjODZkNGI3ZmVjNDJjZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNjYsOCArNjYsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRl
OworICAgIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqIG9wZW5JbnNwZWN0b3JPdmVybGF5KCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsK
KwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQppbmRleCA3ODkzZjhiMjNhODk0ZjcyNWY5MTk3NDkyYTA3ZmRmYjdlM2I0NDBmLi4xZGI4
MTJiYTA1MTk0N2MxMjQ0MTNmZDUwMTE5MjFhMGIyNGRlZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0x
NzAsNiArMTcwLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9G
cm9udCgpCiAgICAgbV9mcm9udGVuZENsaWVudC0+YnJpbmdUb0Zyb250KCk7CiB9CiAKK0luc3Bl
Y3Rvcjo6T3ZlcmxheUNoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3Rvck92
ZXJsYXkoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKIHsKICAgICBpZiAobV9mcm9udGVuZENs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGIzMWIxNGY5MDgwN2I5YjM4
NTBkMDdiYjFmNjM5YTBmODg1MDU5NDkuLjliNTUzMWYwYjQzZjE1Yjg3ZDVjNTVlMjY2YmZkN2Vl
YjQ3OWI5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTE5LDYgKzExOSw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZSBcCiAgICAgV2Vi
SWNvbkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCisgICAgV2ViSW5zcGVjdG9y
T3ZlcmxheSBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXAogICAgIFdlYkluc3BlY3RvclVJIFwK
ICAgICBXZWJNZWRpYUNhY2hlTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLSW5zcGVjdG9yLmNwcAppbmRleCA3NWExY2Q0ODA3ZTYzNTliYjZhYjI5OWM5OWZl
OTAyMTNkMzFmN2NlLi42YjAyMmUyOTQ5NWYyMGQwMGUwMGNlNjZmMWQ2NGFlMDU3ZDMwNGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tJbnNwZWN0b3JHZXRUeXBlSUQoKQogCiBXS1BhZ2VS
ZWYgV0tJbnNwZWN0b3JHZXRQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKIHsKLSAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKGluc3BlY3RvclJlZiktPnBhZ2UoKSk7CisgICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pbnNwZWN0ZWRQYWdlKCkpOwogfQogCiBib29s
IFdLSW5zcGVjdG9ySXNDb25uZWN0ZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCmluZGV4IGZlMDQ3YTBmOGE5ZDZhNGI0MjVkYzFjMDcyYzMwNjZkNGExYjli
MGIuLjA1YWY5YmY1MzBjYmQ4ZmY4NjlkMzIwMjRiMTM0NThkYTJhMjc4YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmgKQEAgLTU1LDkgKzU1LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS0RlYnVnT3ZlcmxheVJlZ2lvbnMpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkOikgQk9PTCBfc2ltcGxlTGlu
ZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lP
U19UQkEpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZXZlbG9wZXJFeHRy
YXNFbmFibGVkOikgQk9PTCBfZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tf
TUFDX1RCQSwgV0tfSU9TX1RCQSk7Ci0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkOikgQk9PTCBfbG9nc1BhZ2VN
ZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdL
X0lPU19UQkEpOwotCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHM6KSBCT09MIF9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgV0tf
QVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRTdGFuZGFsb25lOiwgZ2V0dGVyPV9pc1N0YW5kYWxvbmUpIEJPT0wgX3N0
YW5kYWxvbmUgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CmluZGV4IGE3OTMzZTcxZWI4YjQ5MmU5ZTIwMjE2MzNiZjIyYTMyODY2MDAwM2QuLmUwMWI3MzYw
ZjE0OTg1YTlkZTdlN2M0YjM0NTI5ODEyNTgyZjg4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTU5MSw3
ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0
aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogICAgIGlmIChwcml2LT5pbnNwZWN0
b3JWaWV3KSB7CiAgICAgICAgIEd0a0FsbG9jYXRpb24gY2hpbGRBbGxvY2F0aW9uID0gdmlld1Jl
Y3Q7CiAKLSAgICAgICAgaWYgKHByaXYtPmluc3BlY3RvckF0dGFjaG1lbnRTaWRlID09IEF0dGFj
aG1lbnRTaWRlQm90dG9tKSB7CisgICAgICAgIGlmIChwcml2LT5pbnNwZWN0b3JBdHRhY2htZW50
U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAgICAgICAgICBpbnQgaW5zcGVj
dG9yVmlld0hlaWdodCA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PGludD4ocHJpdi0+aW5zcGVjdG9y
Vmlld1NpemUpLCBhbGxvY2F0aW9uLT5oZWlnaHQpOwogICAgICAgICAgICAgY2hpbGRBbGxvY2F0
aW9uLnggPSAwOwogICAgICAgICAgICAgY2hpbGRBbGxvY2F0aW9uLnkgPSBhbGxvY2F0aW9uLT5o
ZWlnaHQgLSBpbnNwZWN0b3JWaWV3SGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggM2IwOGU3MDNmYmM0YzJkMjg4ZWZhOTc0Nzdi
MTVkNWZlMzZlOWMwZS4uNTRiMTMwOWY0ZjdjYjFiMzFiOWJiMTdkNGZjNTZlNjgzNmNkYjY2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yT3ZlcmxheU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTQxLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC01OCw5MCArNjAsNDUgQEAgY29uc3Qg
dW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Om1pbmltdW1XaW5kb3dIZWlnaHQgPSA0MDA7CiBj
b25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd1dpZHRoID0gMTAw
MDsKIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93SGVpZ2h0
ID0gNjUwOwogCi1jbGFzcyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgV2ViSW5zcGVjdG9yUGFnZUdyb3VwcyYgc2luZ2xldG9uKCkKLSAgICB7Ci0gICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJJbnNwZWN0b3JQYWdlR3JvdXBzPiBpbnN0YW5jZTsK
LSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGluc3BlY3Rv
ckxldmVsKFdlYlBhZ2VHcm91cCYgaW5zcGVjdGVkUGFnZUdyb3VwKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGlzSW5zcGVjdG9yUGFnZUdyb3VwKGluc3BlY3RlZFBhZ2VHcm91cCkgPyBpbnNwZWN0
b3JQYWdlR3JvdXBMZXZlbChpbnNwZWN0ZWRQYWdlR3JvdXApICsgMSA6IDE7Ci0gICAgfQotCi0g
ICAgYm9vbCBpc0luc3BlY3RvclBhZ2VHcm91cChXZWJQYWdlR3JvdXAmIGdyb3VwKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fcGFnZUdyb3VwTGV2ZWwuY29udGFpbnMoJmdyb3VwKTsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBpbnNwZWN0b3JQYWdlR3JvdXBMZXZlbChXZWJQYWdlR3JvdXAmIGdy
b3VwKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzSW5zcGVjdG9yUGFnZUdyb3VwKGdyb3VwKSk7
Ci0gICAgICAgIHJldHVybiBtX3BhZ2VHcm91cExldmVsLmdldCgmZ3JvdXApOwotICAgIH0KLQot
ICAgIFdlYlBhZ2VHcm91cCogaW5zcGVjdG9yUGFnZUdyb3VwRm9yTGV2ZWwodW5zaWduZWQgbGV2
ZWwpCi0gICAgewotICAgICAgICAvLyBUaGUgbGV2ZWwgaXMgdGhlIGtleSBvZiB0aGUgSGFzaE1h
cCwgc28gaXQgY2Fubm90IGJlIDAuCi0gICAgICAgIEFTU0VSVChsZXZlbCk7Ci0KLSAgICAgICAg
YXV0byBpdGVyYXRvciA9IG1fcGFnZUdyb3VwQnlMZXZlbC5maW5kKGxldmVsKTsKLSAgICAgICAg
aWYgKGl0ZXJhdG9yICE9IG1fcGFnZUdyb3VwQnlMZXZlbC5lbmQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBpdGVyYXRvci0+dmFsdWUuZ2V0KCk7Ci0KLSAgICAgICAgUmVmUHRyPFdlYlBhZ2VHcm91
cD4gZ3JvdXAgPSBjcmVhdGVJbnNwZWN0b3JQYWdlR3JvdXAobGV2ZWwpOwotICAgICAgICBtX3Bh
Z2VHcm91cEJ5TGV2ZWwuc2V0KGxldmVsLCBncm91cC5nZXQoKSk7Ci0gICAgICAgIG1fcGFnZUdy
b3VwTGV2ZWwuc2V0KGdyb3VwLmdldCgpLCBsZXZlbCk7Ci0gICAgICAgIHJldHVybiBncm91cC5n
ZXQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZUdy
b3VwPiBjcmVhdGVJbnNwZWN0b3JQYWdlR3JvdXAodW5zaWduZWQgbGV2ZWwpCi0gICAgewotICAg
ICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0
ZShTdHJpbmc6OmZvcm1hdCgiX19XZWJJbnNwZWN0b3JQYWdlR3JvdXBMZXZlbCV1X18iLCBsZXZl
bCksIGZhbHNlLCBmYWxzZSk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIC8vIEFsbG93IGRl
dmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0
aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
LnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7Ci0gICAgICAgIHBhZ2VHcm91cC0+cHJl
ZmVyZW5jZXMoKS5zZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCh0cnVl
KTsKLSNlbmRpZgotCi0gICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXRBbGxvd0Zp
bGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHBhZ2VHcm91cC5y
ZWxlYXNlKCk7Ci0gICAgfQordHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIHVuc2lnbmVk
PiBQYWdlTGV2ZWxNYXA7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxX
ZWJQYWdlR3JvdXA+ID4gUGFnZUdyb3VwQnlMZXZlbE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
V2ViUGFnZUdyb3VwKiwgdW5zaWduZWQ+IFBhZ2VHcm91cExldmVsTWFwOwotCi0gICAgUGFnZUdy
b3VwQnlMZXZlbE1hcCBtX3BhZ2VHcm91cEJ5TGV2ZWw7Ci0gICAgUGFnZUdyb3VwTGV2ZWxNYXAg
bV9wYWdlR3JvdXBMZXZlbDsKLX07CitzdGF0aWMgUGFnZUxldmVsTWFwJiBwYWdlTGV2ZWxNYXAo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYWdlTGV2ZWxNYXA+IG1hcDsKKyAgICBy
ZXR1cm4gbWFwOworfQogCi1XZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkoV2Vi
UGFnZVByb3h5KiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCitXZWJJbnNwZWN0b3JQcm94eTo6
V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5KiBpbnNwZWN0ZWRQYWdlKQorICAgIDogbV9p
bnNwZWN0ZWRQYWdlKGluc3BlY3RlZFBhZ2UpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElf
RU5BQkxFRAogICAgICwgbV9jbG9zZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYklu
c3BlY3RvclByb3h5OjpjbG9zZVRpbWVyRmlyZWQpCiAjZW5kaWYKIHsKLSAgICBtX2xldmVsID0g
V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6c2luZ2xldG9uKCkuaW5zcGVjdG9yTGV2ZWwobV9wYWdl
LT5wYWdlR3JvdXAoKSk7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFdlYklu
c3BlY3RvclByb3h5Ojp+V2ViSW5zcGVjdG9yUHJveHkoKQogewogfQogCi1XZWJQYWdlR3JvdXAq
IFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlR3JvdXAoKSBjb25zdAordW5zaWduZWQg
V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckxldmVsKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6c2luZ2xldG9uKCkuaW5zcGVjdG9yUGFnZUdyb3VwRm9y
TGV2ZWwobV9sZXZlbCk7CisgICAgYXV0byBmaW5kUmVzdWx0ID0gcGFnZUxldmVsTWFwKCkuZmlu
ZChpbnNwZWN0ZWRQYWdlKCkpOworICAgIGlmIChmaW5kUmVzdWx0ICE9IHBhZ2VMZXZlbE1hcCgp
LmVuZCgpKQorICAgICAgICByZXR1cm4gZmluZFJlc3VsdC0+dmFsdWUgKyAxOworCisgICAgcmV0
dXJuIDE7Cit9CisKK1N0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZUdyb3Vw
SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJfX1dlYklu
c3BlY3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGluc3BlY3RvckxldmVsKCkpOwogfQogCiBXZWJQ
cmVmZXJlbmNlcyYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
OworICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIHJldHVybiBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmludmFsaWRhdGUoKQpAQCAtMTUxLDE4ICsxMDgsMTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6aW52YWxpZGF0ZSgpCiAgICAgICAgIFdlYkluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9u
KCkudW5yZWdpc3RlclBhZ2UobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkKTsKICNlbmRpZgogCi0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgZGlkQ2xvc2UoKTsKICAgICBwbGF0Zm9ybUludmFs
aWRhdGUoKTsKIAotICAgIG1fcGFnZSA9IG51bGxwdHI7CisgICAgcGFnZUxldmVsTWFwKCkucmVt
b3ZlKG1faW5zcGVjdGVkUGFnZSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlID0gbnVsbHB0cjsKIH0K
IAogLy8gUHVibGljIEFQSXMKIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzRnJvbnQoKQogewot
ICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXR1cm4gcGxhdGZvcm1Jc0Zyb250KCk7CkBAIC0xNzAsNyArMTI4
LDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNGcm9udCgpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmNvbm5lY3QoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNw
ZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zaG93TWVzc2FnZVNlbnQp
CkBAIC0xODEsMTIgKzEzOSwxMiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpjb25uZWN0KCkK
IAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTaG93KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93KCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1f
aW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzQ29ubmVjdGVkKCkp
IHsKQEAgLTIwMiw3ICsxNjAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93KCkKIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aGlkZSgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAg
aWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNWaXNpYmxl
ID0gZmFsc2U7CkBAIC0yMTIsODYgKzE3MCw4NiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpo
aWRlKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2UoKQogewotICAgIGlmICghbV9w
YWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkNsb3NlKCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7
CiAKICAgICBkaWRDbG9zZSgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRSZWxh
dW5jaEluc3BlY3RvclBhZ2VQcm9jZXNzKCkKIHsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CiAKICAgICAvLyBXaGVuIGRpZFJlbGF1
bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3MgaXMgY2FsbGVkIHdlIGNhbiBhc3N1bWUgaXQgaXMgZHVy
aW5nIGEgbG9hZCByZXF1ZXN0LgogICAgIC8vIEFueSBtZXNzYWdlcyB3ZSB3b3VsZCBoYXZlIHNl
bnQgdG8gYSB0ZXJtaW5hdGVkIHByb2Nlc3MgbmVlZCB0byBiZSByZS1zZW50LgogCi0gICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVz
dGFibGlzaENvbm5lY3Rpb24obV9jb25uZWN0aW9uSWRlbnRpZmllciwgbV9wYWdlLT5wYWdlSUQo
KSwgbV91bmRlclRlc3QpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJs
aXNoQ29ubmVjdGlvbihtX2luc3BlY3RvckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCiB7Ci0gICAgaWYg
KCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMoKQogewotICAgIGlmICgh
bV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdl
YkZyYW1lUHJveHkqIGZyYW1lKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNw
ZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9y
UGFnZSgpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCkp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6YXR0YWNoQm90dG9tKCkKIHsKLSAgICBhdHRhY2goQXR0YWNobWVudFNpZGVCb3R0b20pOwor
ICAgIGF0dGFjaChBdHRhY2htZW50U2lkZTo6Qm90dG9tKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6YXR0YWNoUmlnaHQoKQogewotICAgIGF0dGFjaChBdHRhY2htZW50U2lkZVJpZ2h0
KTsKKyAgICBhdHRhY2goQXR0YWNobWVudFNpZGU6OlJpZ2h0KTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUpCiB7Ci0gICAgaWYgKCFtX3Bh
Z2UgfHwgIWNhbkF0dGFjaCgpKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlIHx8ICFjYW5BdHRh
Y2goKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0F0dGFjaGVkID0gdHJ1ZTsKICAgICBt
X2F0dGFjaG1lbnRTaWRlID0gc2lkZTsKIAotICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygp
LnNldEluc3BlY3RvckF0dGFjaG1lbnRTaWRlKHNpZGUpOworICAgIGluc3BlY3RvclBhZ2VQcmVm
ZXJlbmNlcygpLnNldEluc3BlY3RvckF0dGFjaG1lbnRTaWRlKHN0YXRpY19jYXN0PHVpbnQzMl90
PihzaWRlKSk7CiAKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQ
cmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCi0gICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0
cnVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9pbnNwZWN0
ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAg
ICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJv
dHRvbToKICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAg
ICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMw
MSw3ICsyNTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNp
ZGUgc2lkZSkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKIHsKLSAgICBpZiAo
IW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CkBAIC0zMDksNyArMjY3LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3Bl
Y3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsK
IAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0
QXR0YWNoZWQoZmFsc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNl
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgcGxhdGZvcm1EZXRhY2goKTsKQEAgLTMyOSwyMyAr
Mjg3LDE4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93V2lkdGgo
dW5zaWduZWQgd2lkdGgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9m
aWxpbmcoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc1Byb2ZpbGluZ1BhZ2UpCi0gICAgICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9m
aWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSwg
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2Vz
cyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KICAgICBtX2lzUHJvZmlsaW5nUGFnZSA9ICFt
X2lzUHJvZmlsaW5nUGFnZTsKIH0KIAotYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0
b3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKLXsKLSAgICByZXR1cm4gV2ViSW5zcGVjdG9yUGFn
ZUdyb3Vwczo6c2luZ2xldG9uKCkuaXNJbnNwZWN0b3JQYWdlR3JvdXAocGFnZS5wYWdlR3JvdXAo
KSk7Ci19Ci0KIFdlYlByb2Nlc3NQb29sJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUHJv
Y2Vzc1Bvb2woKQogewogICAgIC8vIEhhdmluZyBvdXIgb3duIHByb2Nlc3MgcG9vbCByZW1vdmVz
IHVzIGZyb20gdGhlIG1haW4gcHJvY2VzcyBwb29sIGFuZApAQCAtMzU5LDYgKzMxMiwxMSBAQCBX
ZWJQcm9jZXNzUG9vbCYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKCkK
ICAgICByZXR1cm4gKnByb2Nlc3NQb29sOwogfQogCitib29sIFdlYkluc3BlY3RvclByb3h5Ojpp
c0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIHJldHVybiBwYWdl
TGV2ZWxNYXAoKS5jb250YWlucygmd2ViUGFnZSk7Cit9CisKIHN0YXRpYyBib29sIGlzTWFpbk9y
VGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclBy
b3h5LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKICAgICBVUkwgcmVxdWVzdFVSTChV
UkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CkBAIC0z
ODEsNiArMzM5LDE4IEBAIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29u
c3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5CiAgICAgcmV0dXJuIGRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyhyZXF1ZXN0VVJMLnBhdGgoKSkgPT0gZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKHRlc3RQYWdlVVJMLnBhdGgoKSk7CiB9CiAKK3N0YXRpYyBib29sIGlzSW5zcGVj
dG9yT3ZlcmxheVBhZ2UoY29uc3QgV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKK3sKKyAgICBVUkwgcmVxdWVzdFVSTChVUkwo
KSwgdG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CisgICAgaWYg
KCFXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHJl
cXVlc3RVUkwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFVz
ZSBVUkwgc28gd2UgY2FuIGNvbXBhcmUganVzdCB0aGUgcGF0aHMuCisgICAgVVJMIG92ZXJsYXlQ
YWdlVVJMKFVSTCgpLCB3ZWJJbnNwZWN0b3JQcm94eS0+aW5zcGVjdG9yT3ZlcmxheVVSTCgpKTsK
KyAgICBBU1NFUlQoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbChvdmVybGF5UGFnZVVSTC5wcm90b2NvbCgpKSk7CisgICAgcmV0dXJuIGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyhyZXF1ZXN0VVJMLnBhdGgoKSkgPT0gZGVjb2RlVVJMRXNjYXBlU2Vx
dWVuY2VzKG92ZXJsYXlQYWdlVVJMLnBhdGgoKSk7Cit9CisKIHN0YXRpYyB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgV2ViSW5z
cGVjdG9yUHJveHkqIHdlYkluc3BlY3RvclByb3h5ID0gc3RhdGljX2Nhc3Q8V2ViSW5zcGVjdG9y
UHJveHkqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC0zODgsNyArMzU4LDcg
QEAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKICAgICB3ZWJJbnNwZWN0b3JQcm94eS0+Y2xvc2UoKTsKIH0KIAotc3RhdGljIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYg
ZnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVu
dE1vdXNlQnV0dG9uLCBXS0ZyYW1lUmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
SW5zcGVjdG9yUGFnZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLRnJhbWVOYXZp
Z2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBXS0ZyYW1l
UmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVm
IGxpc3RlbmVyUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAg
Ly8gQWxsb3cgbm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRlIGFueXdoZXJlLgogICAgIGlmICgh
dG9JbXBsKGZyYW1lUmVmKS0+aXNNYWluRnJhbWUoKSkgewpAQCAtNDA5LDkgKzM3OSwzMSBAQCBz
dGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmlnbm9yZSgp
OwogCiAgICAgLy8gQW5kIGluc3RlYWQgbG9hZCBpdCBpbiB0aGUgaW5zcGVjdGVkIHBhZ2UuCi0g
ICAgd2ViSW5zcGVjdG9yUHJveHktPnBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RS
ZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgd2ViSW5zcGVjdG9yUHJveHktPmluc3BlY3Rl
ZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3Qo
KSk7Cit9CisKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25PdmVy
bGF5UGFnZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9u
VHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBXS0ZyYW1lUmVmLCBX
S1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3Rl
bmVyUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgLy8gQWxs
b3cgbm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRlIGFueXdoZXJlLgorICAgIGlmICghdG9JbXBs
KGZyYW1lUmVmKS0+aXNNYWluRnJhbWUoKSkgeworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYp
LT51c2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFdlYkluc3BlY3Rv
clByb3h5KiB3ZWJJbnNwZWN0b3JQcm94eSA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYkluc3BlY3Rv
clByb3h5Kj4oY2xpZW50SW5mbyk7CisgICAgQVNTRVJUKHdlYkluc3BlY3RvclByb3h5KTsKKwor
ICAgIC8vIEFsbG93IGxvYWRpbmcgb2YgdGhlIG1haW4gaW5zcGVjdG9yIG92ZXJsYXkgZmlsZS4K
KyAgICBpZiAoaXNJbnNwZWN0b3JPdmVybGF5UGFnZSh3ZWJJbnNwZWN0b3JQcm94eSwgcmVxdWVz
dFJlZikpIHsKKyAgICAgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+dXNlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBQcmV2ZW50IGV2ZXJ5dGhpbmcgZWxzZSBmcm9tIGxvYWRp
bmcgaW4gdGhlIG92ZXJsYXkgcGFnZS4KKyAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5pZ25vcmUo
KTsKIH0KIAorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjplbmFibGVSZW1vdGVJbnNwZWN0aW9uKCkKIHsKQEAgLTQyMSwxNyArNDEzLDE3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0gICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVu
ZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kQ29ubmVj
dGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZERpc2Nvbm5l
Y3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVk
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkp
OwogfQogI2VuZGlmCiAKQEAgLTQ0NSwxMyArNDM3LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgcGFnZUxldmVsTWFwKCkuc2V0KG1faW5zcGVjdG9y
UGFnZSwgaW5zcGVjdG9yTGV2ZWwoKSk7CisKICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xp
Y3lDbGllbnQgPSB7CiAgICAgICAgIHsgMSwgdGhpcyB9LAogICAgICAgICBudWxscHRyLCAvLyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKICAg
ICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uCiAgICAgICAg
IG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAKICAgICAgICAgbnVsbHB0ciwgLy8gdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kKLSAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkluc3BlY3RvclBhZ2UsCiAgICAgICAgIG51bGxwdHIsIC8vIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlCiAgICAgfTsKIApAQCAtNTAxLDE0ICs0OTUsODQgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgIFdLUGFn
ZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJnBvbGljeUNsaWVu
dC5iYXNlKTsKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHRvQVBJKG1faW5zcGVjdG9y
UGFnZSksICZsb2FkZXJDbGllbnQuYmFzZSk7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmVhZ2VybHlDcmVhdGVPdmVybGF5UGFnZSgpCit7CisgICAgaWYgKG1fb3ZlcmxheVBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3ZlcmxheVBhZ2UgPSBwbGF0Zm9ybUNyZWF0
ZU92ZXJsYXlQYWdlKCk7CisgICAgQVNTRVJUKG1fb3ZlcmxheVBhZ2UpOworICAgIGlmICghbV9v
dmVybGF5UGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEg
cG9saWN5Q2xpZW50ID0geworICAgICAgICB7IDEsIHRoaXMgfSwKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
CisgICAgICAgIG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbgorICAg
ICAgICBudWxscHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZV9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5CisgICAg
ICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25PdmVybGF5UGFnZSwKKyAgICAgICAg
bnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UKKyAgICB9OworCisgICAgV0tQYWdl
TG9hZGVyQ2xpZW50VjUgbG9hZGVyQ2xpZW50ID0geworICAgICAgICB7IDUsIHRoaXMgfSwKKyAg
ICAgICAgbnVsbHB0ciwgLy8gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorICAgICAg
ICBudWxscHRyLCAvLyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ29tbWl0TG9hZEZvckZyYW1lCisg
ICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGaXJzdExheW91dEZvckZyYW1l
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZy
YW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQorICAg
ICAgICBudWxscHRyLCAvLyBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAgbnVs
bHB0ciwgLy8gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKKyAg
ICAgICAgbnVsbHB0ciwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFt
ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRTdGFydFByb2dyZXNzCisgICAgICAgIG51bGxwdHIs
IC8vIGRpZENoYW5nZVByb2dyZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaFByb2dy
ZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEJlY29tZVVucmVzcG9uc2l2ZQorICAgICAgICBu
dWxscHRyLCAvLyBkaWRCZWNvbWVSZXNwb25zaXZlCisgICAgICAgIHByb2Nlc3NEaWRDcmFzaCwK
KyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0CisgICAgICAgIG51
bGxwdHIsIC8vIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCisgICAgICAgIG51bGxwdHIs
IC8vIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW5fZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAg
ICAgICBudWxscHRyLCAvLyBkaWREZXRlY3RYU1NGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAv
LyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfdW5hdmFpbGFibGUKKyAgICAgICAg
bnVsbHB0ciwgLy8gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCisgICAgICAgIG51bGxwdHIs
IC8vIGludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUKKyAgICAgICAg
bnVsbHB0ciwgLy8gcGx1Z2luRGlkRmFpbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAg
ICBudWxscHRyLCAvLyByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJsZQor
ICAgICAgICBudWxscHRyLCAvLyBkaWRMYXlvdXQKKyAgICAgICAgbnVsbHB0ciwgLy8gcGx1Z2lu
TG9hZFBvbGljeV9kZXByZWNhdGVkRm9yVXNlV2l0aFYyCisgICAgICAgIG51bGxwdHIsIC8vIHBs
dWdpbkRpZEZhaWwKKyAgICAgICAgbnVsbHB0ciwgLy8gcGx1Z2luTG9hZFBvbGljeQorICAgICAg
ICBudWxscHRyLCAvLyB3ZWJHTExvYWRQb2xpY3kKKyAgICAgICAgbnVsbHB0ciwgLy8gcmVzb2x2
ZVdlYkdMTG9hZFBvbGljeQorICAgICAgICBudWxscHRyLCAvLyBzaG91bGRLZWVwQ3VycmVudEJh
Y2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QKKyAgICB9OworCisgICAgV0tQYWdlU2V0UGFnZVBvbGlj
eUNsaWVudCh0b0FQSShtX292ZXJsYXlQYWdlKSwgJnBvbGljeUNsaWVudC5iYXNlKTsKKyAgICBX
S1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHRvQVBJKG1fb3ZlcmxheVBhZ2UpLCAmbG9hZGVyQ2xp
ZW50LmJhc2UpOworCisgICAgbV9vdmVybGF5UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fb3ZlcmxheVBhZ2UtPnBy
b2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7Cit9
CisKIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlv
bklkZW50aWZpZXIsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkKIHsKLSAgICBpZiAo
IW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKQEAgLTUxOCwyNCArNTgyLDI0IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50
IGNvbm5lY3Rpb25JZGVudGlmaWVyCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdW5kZXJUZXN0
ID0gdW5kZXJUZXN0OwotICAgIG1fY29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uSWRl
bnRpZmllcjsKKyAgICBtX2luc3BlY3RvckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlv
bklkZW50aWZpZXI7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1faW5zcGVjdG9yQ29ubmVjdGlv
bklkZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CiAgICAg
ICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91
bGRPcGVuQXR0YWNoZWQoKTsKICAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0
PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRh
Y2htZW50U2lkZSgpKTsKIAotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+
cGFnZUlEKCkpOwogCiAgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3
aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lk
ZUJvdHRvbToKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAg
ICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNp
ZGVSaWdodDoKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAg
ICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTQ2LDYgKzYxMCwyNCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNo
bWVudCBjb25uZWN0aW9uSWRlbnRpZmllcgogICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVl
c3QoVVJMKFVSTCgpLCBtX3VuZGVyVGVzdCA/IGluc3BlY3RvclRlc3RQYWdlVVJMKCkgOiBpbnNw
ZWN0b3JQYWdlVVJMKCkpKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlT3Zl
cmxheVBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAgIGlm
ICghbV9pbnNwZWN0ZWRQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBlYWdlcmx5Q3JlYXRl
T3ZlcmxheVBhZ2UoKTsKKworICAgIEFTU0VSVChtX292ZXJsYXlQYWdlKTsKKyAgICBpZiAoIW1f
b3ZlcmxheVBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3ZlcmxheUNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CisKKyAgICBtX292ZXJsYXlQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6RXN0YWJsaXNoQ29u
bmVjdGlvbihtX292ZXJsYXlDb25uZWN0aW9uSWRlbnRpZmllciwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSksIG1fb3ZlcmxheVBhZ2UtPnBhZ2VJRCgpKTsKKworICAgIG1fb3ZlcmxheVBhZ2Ut
PmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5zcGVjdG9yT3ZlcmxheVVSTCgpKSk7Cit9CisKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQogewogICAgIGlmIChtX3VuZGVyVGVzdCkKQEAg
LTU1Myw2ICs2MzUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIAogICAgIG1f
aXNWaXNpYmxlID0gdHJ1ZTsKIAorICAgIHBsYXRmb3JtQXR0YWNoT3ZlcmxheSgpOwogICAgIHBs
YXRmb3JtT3BlbigpOwogfQogCkBAIC01NjEsNyArNjQ0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6ZGlkQ2xvc2UoKQogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdl
ID0gbnVsbHB0cjsKIAogICAgIG1faXNWaXNpYmxlID0gZmFsc2U7CkBAIC01NzQsOCArNjU3LDEw
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkKICAgICBtX2lzQXR0YWNoZWQg
PSBmYWxzZTsKICAgICBtX2NhbkF0dGFjaCA9IGZhbHNlOwogICAgIG1fdW5kZXJUZXN0ID0gZmFs
c2U7Ci0gICAgbV9jb25uZWN0aW9uSWRlbnRpZmllciA9IElQQzo6QXR0YWNobWVudCgpOworICAg
IG1faW5zcGVjdG9yQ29ubmVjdGlvbklkZW50aWZpZXIgPSBJUEM6OkF0dGFjaG1lbnQoKTsKKyAg
ICBtX292ZXJsYXlDb25uZWN0aW9uSWRlbnRpZmllciA9IElQQzo6QXR0YWNobWVudCgpOwogCisg
ICAgcGxhdGZvcm1EZXRhY2hPdmVybGF5KCk7CiAgICAgcGxhdGZvcm1EaWRDbG9zZSgpOwogfQog
CkBAIC03NDgsNCArODMzLDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0
YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiAhV0tfQVBJX0VOQUJMRUQpCiAKKyNpZiAhKFBMQVRGT1JNKE1B
QykgJiYgV0tfQVBJX0VOQUJMRUQpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0
dGFjaE92ZXJsYXkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoT3ZlcmxheSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKyNlbmRpZiAvLyAhKFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQpCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaAppbmRleCAyZDgyMmY1MmEyOTE2ZDRiOGRmYjUxYTNhNTlhNjIwMjEwYzBj
NWYyLi4wNGUwMmI3ZGNlY2JjZTUwOWY2MzVjZTA4N2NiY2QxYjIxMjNlZmRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMzQsNiArMzQsMTAg
QEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgV0tXZWJWaWV3OworI2VuZGlm
CisKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC00NSw2ICs0OSw3IEBAIE9CSkNfQ0xBU1MgTlNVUkw7CiBPQkpD
X0NMQVNTIE5TV2luZG93OwogT0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0
ZXI7CiBPQkpDX0NMQVNTIFdLV2ViSW5zcGVjdG9yV0tXZWJWaWV3OworT0JKQ19DTEFTUyBXS1dl
YlZpZXc7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTY0LDE2ICs2OSwxNiBAQCBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogCi1lbnVtIEF0dGFjaG1lbnRTaWRlIHsKLSAgICBBdHRhY2htZW50U2lkZUJvdHRv
bSwKLSAgICBBdHRhY2htZW50U2lkZVJpZ2h0CitlbnVtIGNsYXNzIEF0dGFjaG1lbnRTaWRlIHsK
KyAgICBCb3R0b20sCisgICAgUmlnaHQKIH07CiAKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5IDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yPiwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJJbnNwZWN0b3JQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICBzdGF0
aWMgUmVmPFdlYkluc3BlY3RvclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBpbnNwZWN0ZWRQ
YWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JQcm94
eShwYWdlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkluc3BlY3RvclByb3h5
KGluc3BlY3RlZFBhZ2UpKTsKICAgICB9CiAKICAgICB+V2ViSW5zcGVjdG9yUHJveHkoKTsKQEAg
LTgxLDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgLy8g
UHVibGljIEFQSXMKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2U7IH0KKyAgICBXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2luc3BlY3RlZFBhZ2U7IH0KIAogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVy
biAhIW1faW5zcGVjdG9yUGFnZTsgfQogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1Zpc2libGU7IH0KQEAgLTEyMCw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9CiAgICAgdm9pZCBhdHRh
Y2hSaWdodCgpOwogICAgIHZvaWQgYXR0YWNoQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2goQXR0
YWNobWVudFNpZGUgPSBBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgdm9pZCBhdHRhY2goQXR0
YWNobWVudFNpZGUgPSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKTsKICAgICB2b2lkIGRldGFjaCgp
OwogCiAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7CkBAIC0xMzAs
MTMgKzEzNSwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7
IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGlu
ZygpOwogCi0gICAgc3RhdGljIGJvb2wgaXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYpOwog
ICAgIHN0YXRpYyBXZWJQcm9jZXNzUG9vbCYgaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKTsKKyAgICBz
dGF0aWMgYm9vbCBpc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKICAgICAvLyBQcm92
aWRlZCBieSBwbGF0Zm9ybSBXZWJJbnNwZWN0b3JQcm94eSBpbXBsZW1lbnRhdGlvbnMuCiAgICAg
U3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKICAgICBTdHJpbmcgaW5zcGVjdG9yVGVz
dFBhZ2VVUkwoKSBjb25zdDsKICAgICBTdHJpbmcgaW5zcGVjdG9yQmFzZVVSTCgpIGNvbnN0Owor
ICAgIFN0cmluZyBpbnNwZWN0b3JPdmVybGF5VVJMKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKICAgICB2b2lkIGVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKQEAgLTE1
MCwxMSArMTU2LDEzIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHko
V2ViUGFnZVByb3h5Kik7CiAKICAgICB2b2lkIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7
CisgICAgdm9pZCBlYWdlcmx5Q3JlYXRlT3ZlcmxheVBhZ2UoKTsKIAogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQ
cm94eSogcGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisgICAgV2ViUGFnZVByb3h5KiBw
bGF0Zm9ybUNyZWF0ZU92ZXJsYXlQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW4oKTsKICAg
ICB2b2lkIHBsYXRmb3JtRGlkQ2xvc2UoKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgp
OwpAQCAtMTcyLDExICsxODAsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0VG9v
bGJhckhlaWdodCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJv
b2wgZm9yY2VTYXZlQXMpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKyAgICB2b2lkIHBsYXRmb3JtQXR0YWNo
T3ZlcmxheSgpOworICAgIHZvaWQgcGxhdGZvcm1EZXRhY2hPdmVybGF5KCk7CiAKICAgICAvLyBD
YWxsZWQgYnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKICAgICB2b2lkIGNyZWF0ZUluc3Bl
Y3RvclBhZ2UoSVBDOjpBdHRhY2htZW50LCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3Qp
OwogICAgIHZvaWQgZGlkQ2xvc2UoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOworCisgICAg
dm9pZCBjcmVhdGVPdmVybGF5UGFnZShJUEM6OkF0dGFjaG1lbnQpOworCiAgICAgdm9pZCBhdHRh
Y2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdl
ZChjb25zdCBTdHJpbmcmKTsKIApAQCAtMTkyLDkgKzIwNSwxMCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBvcGVuKCk7CiAKLSAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcmV0dXJuIHRoZSBwYWdl
IGdyb3VwIGlkZW50aWZpZXIsIG5vdCBhbiBpbnN0YW5jZS4gVGhlIE1hYyBwb3J0IGNhbm5vdAot
ICAgIC8vIGRpcmVjdGx5IHByb3ZpZGUgYSBwYWdlIGdyb3VwIGluc3RhbmNlLCBhbmQgaW5zdGFu
Y2VzIGFyZSBub3QgbmVjZXNzYXJ5IHRvIGNvbXB1dGUgbGV2ZWxzLgotICAgIFdlYlBhZ2VHcm91
cCogaW5zcGVjdG9yUGFnZUdyb3VwKCkgY29uc3Q7CisgICAgLy8gVGhlIGluc3BlY3RvciBsZXZl
bCBpcyB1c2VkIHRvIGdpdmUgZGlmZmVyZW50IHByZWZlcmVuY2VzIHRvIGVhY2ggaW5zcGVjdG9y
CisgICAgLy8gbGV2ZWwgYnkgc2V0dGluZyBhIHBlci1sZXZlbCBwYWdlIGdyb3VwIGlkZW50aWZp
ZXIuCisgICAgdW5zaWduZWQgaW5zcGVjdG9yTGV2ZWwoKSBjb25zdDsKKyAgICBTdHJpbmcgaW5z
cGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllcigpIGNvbnN0OwogICAgIFdlYlByZWZlcmVuY2VzJiBp
bnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oRUZMKQpAQCAtMjEyLDggKzIyNiw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGluaXRpYWxXaW5kb3dXaWR0aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaW5pdGlhbFdpbmRvd0hlaWdodDsKIAotICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlIHtudWxs
cHRyfTsKKyAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdGVkUGFnZSB7bnVsbHB0cn07CiAgICAg
V2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2Uge251bGxwdHJ9OworICAgIFdlYlBhZ2VQcm94
eSogbV9vdmVybGF5UGFnZSB7bnVsbHB0cn07CiAKICAgICBib29sIG1fdW5kZXJUZXN0IHtmYWxz
ZX07CiAgICAgYm9vbCBtX2lzVmlzaWJsZSB7ZmFsc2V9OwpAQCAtMjIzLDE3ICsyMzgsMTQgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fc2hvd01lc3NhZ2VTZW50IHtmYWxzZX07CiAgICAgYm9vbCBt
X2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250IHtmYWxzZX07CiAKLSAgICAvLyBUaGUgZGVidWdnZXIg
c3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUgc2FtZSBQYWdlR3JvdXAuIEhhdmluZwotICAgIC8v
IGFsbCB0aGUgaW5zcGVjdG9ycyBpbiB0aGUgc2FtZSBncm91cCB3aWxsIG1ha2UgaXQgaW1wb3Nz
aWJsZSB0byBkZWJ1ZwotICAgIC8vIHRoZSBpbnNwZWN0b3IgY29kZSwgc28gd2UgdXNlIHRoZSBs
ZXZlbCB0byBtYWtlIGRpZmZlcmVudCBwYWdlIGdyb3Vwcy4KLSAgICB1bnNpZ25lZCBtX2xldmVs
OwotICAgIAotICAgIElQQzo6QXR0YWNobWVudCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOworICAg
IElQQzo6QXR0YWNobWVudCBtX2luc3BlY3RvckNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIElQ
Qzo6QXR0YWNobWVudCBtX292ZXJsYXlDb25uZWN0aW9uSWRlbnRpZmllcjsKIAotICAgIEF0dGFj
aG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFjaG1lbnRTaWRlQm90dG9tfTsKKyAgICBB
dHRhY2htZW50U2lkZSBtX2F0dGFjaG1lbnRTaWRlIHtBdHRhY2htZW50U2lkZTo6Qm90dG9tfTsK
IAogI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKICAgICBSZXRhaW5QdHI8V0tX
ZWJJbnNwZWN0b3JXS1dlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKKyAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiBtX292ZXJsYXlWaWV3OwogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gbV9pbnNwZWN0
b3JXaW5kb3c7CiAgICAgUmV0YWluUHRyPE5TQnV0dG9uPiBtX2RvY2tCb3R0b21CdXR0b247CiAg
ICAgUmV0YWluUHRyPE5TQnV0dG9uPiBtX2RvY2tSaWdodEJ1dHRvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA4ODI4MWM2N2NhMWUwMmFiN2UxOTEyYTA2NjJkNTFiODA5YzAxZmE4Li40NTM4OGY1ZmZmNjAx
ODM4ZTEyYzk5MWEwNDljNGEwNmFjYWFjZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw2ICsyMiw3
IEBACiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBDcmVhdGVJbnNwZWN0
b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRh
Y2gsIGJvb2wgdW5kZXJUZXN0KQorICAgIENyZWF0ZU92ZXJsYXlQYWdlKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllcikKIAogICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJv
bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0
b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3Rv
clByb3h5RWZsLmNwcAppbmRleCBiZGQxMGEzOTM4OTM3NTgxNGFjYWJhNTMwOWM4YjYzMmE5M2Vj
OGVjLi44MzBlYjRjYTdkYTRjODA1OGU4ZDg1ODZjYzg1NzUxZWIyMDllZDZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNw
cApAQCAtODksNyArODksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0
b3JXaW5kb3coKQogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2UpOworICAgIEFTU0VSVCht
X2luc3BlY3RlZFBhZ2UpOwogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgY29uc3QgY2hhciog
ZW5naW5lID0gIm9wZW5nbF94MTEiOwpAQCAtMTAzLDcgKzEwMyw4IEBAIFdlYlBhZ2VQcm94eSog
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZpbnNwZWN0
b3JQcm9jZXNzUG9vbCgpKTsKLSAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9IHRvQVBJ
KGluc3BlY3RvclBhZ2VHcm91cCgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tH
cm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGlu
c3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgV0tQYWdl
R3JvdXBSZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHdr
R3JvdXBJZGVudGlmaWVyLmdldCgpKTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IEVXS1ZpZXdD
cmVhdGUod2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0b3JX
aW5kb3cpLCAvKiBzbWFydCAqLyAwKTsKICAgICBXS1ZpZXdSZWYgd2tWaWV3ID0gRVdLVmlld0dl
dFdLVmlldyhtX2luc3BlY3RvclZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBlZTY3MjcxMmQ4YjU2YmFh
OWM1NzA0NDNhMzA2NDJlMWZiODczMjA5Li43MGIxY2ExNmRkN2U3NzNkZTE2ZjBhY2FjNzA2NDZi
ZjM0ZGIxMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
Ykluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNTgsOSArNTgsMTAgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6aW5pdGlhbGl6ZUluc3BlY3RvckNsaWVudEd0ayhjb25zdCBXS0luc3BlY3RvckNs
aWVudEd0a0IKIAogV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQoaW5z
cGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAgbV9pbnNw
ZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9y
UHJvY2Vzc1Bvb2woKSwgbnVsbHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG51
bGxwdHIpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3Bl
Y3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX2luc3BlY3Rv
clZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZpbnNwZWN0b3JQcm9j
ZXNzUG9vbCgpLCBudWxscHRyLCBwYWdlR3JvdXAsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBn
X29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgcmV0dXJuIHdlYmtp
dFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2luc3BlY3RvclZpZXcp
KTsKIH0KQEAgLTY4LDkgKzY5LDkgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRv
Y2tCdXR0b25DbGlja2VkKEd0a1dpZGdldCogYnV0dG9uLCBXZWJJbnNwZWN0b3JQcm94eSogaW5z
cGVjdG9yKQogewogICAgIGlmIChidXR0b24gPT0gaW5zcGVjdG9yLT5tX2RvY2tCb3R0b21CdXR0
b24pCi0gICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAg
ICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNpZGU6OkJvdHRvbSk7CiAgICAgZWxz
ZSBpZiAoYnV0dG9uID09IGluc3BlY3Rvci0+bV9kb2NrUmlnaHRCdXR0b24pCi0gICAgICAgIGlu
c3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAgICAgICBpbnNwZWN0b3It
PmF0dGFjaChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmNyZWF0ZUluc3BlY3RvcldpbmRvdygpCiAgICAgQVNTRVJUKCFtX2luc3BlY3RvcldpbmRv
dyk7CiAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RP
UExFVkVMKTsKIAotICAgIEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKG1fcGFnZS0+dmlld1dpZGdldCgpKTsKKyAgICBHdGtXaWRnZXQqIGlu
c3BlY3RlZFZpZXdQYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChpbnNwZWN0ZWRQYWdl
KCktPnZpZXdXaWRnZXQoKSk7CiAgICAgaWYgKFdlYkNvcmU6OndpZGdldElzT25zY3JlZW5Ub3Bs
ZXZlbFdpbmRvdyhpbnNwZWN0ZWRWaWV3UGFyZW50KSkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRf
dHJhbnNpZW50X2ZvcihHVEtfV0lORE9XKG1faW5zcGVjdG9yV2luZG93KSwgR1RLX1dJTkRPVyhp
bnNwZWN0ZWRWaWV3UGFyZW50KSk7CiAKQEAgLTIxOSwxMiArMjIwLDEyIEBAIFN0cmluZyBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpIGNvbnN0CiAKIHVuc2lnbmVkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAgcmV0
dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9oZWlnaHQobV9wYWdlLT52aWV3V2lkZ2V0KCkp
OworICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfaGVpZ2h0KGluc3BlY3RlZFBh
Z2UoKS0+dmlld1dpZGdldCgpKTsKIH0KIAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKQogewotICAgIHJldHVybiBndGtfd2lkZ2V0X2dl
dF9hbGxvY2F0ZWRfd2lkdGgobV9wYWdlLT52aWV3V2lkZ2V0KCkpOworICAgIHJldHVybiBndGtf
d2lkZ2V0X2dldF9hbGxvY2F0ZWRfd2lkdGgoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCkBAIC0yNDEs
NyArMjQyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOwogCi0gICAg
aWYgKG1fYXR0YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGVCb3R0b20pIHsKKyAgICBpZiAo
bV9hdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAgICAgIHVu
c2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVp
Z2h0KCkgKiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodChz
dGQ6Om1heChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6bWluKGRlZmF1bHRBdHRhY2hlZFNp
emUsIG1heGltdW1BdHRhY2hlZEhlaWdodCkpKTsKICAgICB9IGVsc2UgewpAQCAtMjUyLDEzICsy
NTMsMTMgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIGlm
IChtX2NsaWVudC5hdHRhY2godGhpcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYmtpdFdl
YlZpZXdCYXNlQWRkV2ViSW5zcGVjdG9yKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+dmll
d1dpZGdldCgpKSwgbV9pbnNwZWN0b3JWaWV3LCBtX2F0dGFjaG1lbnRTaWRlKTsKKyAgICB3ZWJr
aXRXZWJWaWV3QmFzZUFkZFdlYkluc3BlY3RvcihXRUJLSVRfV0VCX1ZJRVdfQkFTRShpbnNwZWN0
ZWRQYWdlKCktPnZpZXdXaWRnZXQoKSksIG1faW5zcGVjdG9yVmlldywgbV9hdHRhY2htZW50U2lk
ZSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KG1faW5zcGVjdG9yVmlldyk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKIHsKLSAgICBpZiAoIW1fcGFnZS0+aXNW
YWxpZCgpKQorICAgIGlmICghaW5zcGVjdGVkUGFnZSgpLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBpbnNwZWN0b3JWaWV3ID0gbV9pbnNwZWN0
b3JWaWV3OwpAQCAtMjgwLDcgKzI4MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBdHRhY2hlZEhlaWdodCh0aGlzLCBoZWlnaHQp
OwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9W
SUVXX0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOworICAgIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVk
UGFnZSgpLT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCkBAIC0y
ODksNyArMjkwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hl
ZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VBdHRhY2hlZFdpZHRoKHRoaXMsIHdpZHRoKTsKLSAgICB3ZWJraXRXZWJW
aWV3QmFzZVNldEluc3BlY3RvclZpZXdTaXplKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+
dmlld1dpZGdldCgpKSwgd2lkdGgpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9y
Vmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0
KCkpLCB3aWR0aCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0VG9v
bGJhckhlaWdodCh1bnNpZ25lZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDA1MTIzNzdiNWZkNmNiNTExYTViOTRk
ZDdhNDMyNTc5MmM1N2U1YTIuLjZjOGI2Zjk2ZjUzNjA0MjJlN2NiMWUxZDNlYjNiYjFmNDNiOGE2
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0
b3JQcm94eU1hYy5tbQpAQCAtMTE0LDEyICsxMTQsMTIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHdlYlZpZXdDbG9zZVRpbWVvdXQgPSA2MDsKIAogLSAoSUJBY3Rpb24pYXR0YWNoUmlnaHQ6KGlk
KXNlbmRlcgogewotICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3Rv
clByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAgIHN0YXRpY19jYXN0PFdl
Ykluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRl
OjpSaWdodCk7CiB9CiAKIC0gKElCQWN0aW9uKWF0dGFjaEJvdHRvbTooaWQpc2VuZGVyCiB7Ci0g
ICAgc3RhdGljX2Nhc3Q8V2ViSW5zcGVjdG9yUHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRh
Y2goQXR0YWNobWVudFNpZGVCb3R0b20pOworICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclBy
b3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwog
fQogCiAtICh2b2lkKWNsb3NlCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcnVuT3Bl
blBhbmVsKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFt
ZXRlcnMKICAgICAgICAgICAgIFdLUmVsZWFzZShmaWxlVVJMcyk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbChsaXN0ZW5lcik7Ci0g
ICAgICAgIAorCiAgICAgICAgIFdLUmVsZWFzZShsaXN0ZW5lcik7CiAgICAgfV07CiB9CkBAIC0z
MDgsNyArMzA4LDkgQEAgV0tSZWN0IFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JXaW5kb3dG
cmFtZSgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCgpCiB7Ci0g
ICAgQVNTRVJUKCFtX2lzQXR0YWNoZWQgfHwgIW1faW5zcGVjdG9yV2luZG93KTsKKyAgICAvLyBB
dCB0aGlzIHBvaW50LCB3ZSBzaG91bGQgaGF2ZSBjYWxsZWQgcGxhdGZvcm1EZXRhY2goKSwgcGxh
dGZvcm1EZXRhY2hPdmVybGF5KCksCisgICAgLy8gcGxhdGZvcm1EaWRDbG9zZSgpLCBhbmQgcG9z
c2libHkgcGxhdGZvcm1JbnZhbGlkYXRlKCkgdG8gc3BlZWQgdXAgZGVzdHJ1Y3Rpb24uCisgICAg
QVNTRVJUKCFtX2lzQXR0YWNoZWQgJiYgIW1faW5zcGVjdG9yV2luZG93KTsKICAgICBpZiAobV9p
c0F0dGFjaGVkIHx8IG1faW5zcGVjdG9yV2luZG93KQogICAgICAgICByZXR1cm47CiAKQEAgLTMx
OCw2ICszMjAsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VUaW1lckZpcmVkKCkK
ICAgICAgICAgbV9pbnNwZWN0b3JWaWV3ID0gbmlsOwogICAgIH0KIAorICAgIGlmIChtX292ZXJs
YXlQYWdlKSB7CisgICAgICAgIG1fb3ZlcmxheVBhZ2UtPmNsb3NlKCk7CisgICAgICAgIG1fb3Zl
cmxheVBhZ2UgPSBuaWw7CisgICAgfQorCiAgICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRl
ciBjbG9zZV07CiAgICAgbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyID0gbmlsOwogfQpAQCAt
MzQ4LDcgKzM1NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3Rvcldp
bmRvdygpCiAgICAgTlNSZWN0IHdpbmRvd0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBpbml0aWFs
V2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUg
c2F2ZWQgd2luZG93IGZyYW1lLCBpZiB0aGVyZSB3YXMgb25lLgotICAgIE5TU3RyaW5nICpzYXZl
ZFdpbmRvd0ZyYW1lU3RyaW5nID0gcGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLmlu
c3BlY3RvcldpbmRvd0ZyYW1lKCk7CisgICAgTlNTdHJpbmcgKnNhdmVkV2luZG93RnJhbWVTdHJp
bmcgPSBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9y
V2luZG93RnJhbWUoKTsKICAgICBOU1JlY3Qgc2F2ZWRXaW5kb3dGcmFtZSA9IE5TUmVjdEZyb21T
dHJpbmcoc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyk7CiAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KHNh
dmVkV2luZG93RnJhbWUpKQogICAgICAgICB3aW5kb3dGcmFtZSA9IHNhdmVkV2luZG93RnJhbWU7
CkBAIC00NDcsNyArNDU0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dXBkYXRlSW5zcGVj
dG9yV2luZG93VGl0bGUoKSBjb25zdAogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2UpOwor
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCiAgICAgbV9jbG9zZVRpbWVyLnN0b3AoKTsK
IApAQCAtNDYxLDIwICs0NjgsMjAgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIAogICAgIE5TUmVjdCBpbml0aWFsUmVjdDsK
ICAgICBpZiAobV9pc0F0dGFjaGVkKSB7Ci0gICAgICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3RnJh
bWUgPSBtX3BhZ2UtPndrVmlldygpLmZyYW1lOworICAgICAgICBOU1JlY3QgaW5zcGVjdGVkVmll
d0ZyYW1lID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKS5mcmFtZTsKIAogICAgICAgICBzd2l0
Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRv
bToKKyAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgogICAgICAgICAgICAgaW5p
dGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgoaW5zcGVjdGVkVmlld0ZyYW1lKSwg
aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQoKSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAg
ICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAgICAgIGluaXRpYWxSZWN0
ID0gTlNNYWtlUmVjdCgwLCAwLCBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JB
dHRhY2hlZFdpZHRoKCksIE5TSGVpZ2h0KGluc3BlY3RlZFZpZXdGcmFtZSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpbml0aWFsUmVjdCA9
IE5TTWFrZVJlY3QoMCwgMCwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVpZ2h0
KTsKIAotICAgICAgICBOU1N0cmluZyAqd2luZG93RnJhbWVTdHJpbmcgPSBwYWdlKCktPnBhZ2VH
cm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsKKyAgICAgICAgTlNT
dHJpbmcgKndpbmRvd0ZyYW1lU3RyaW5nID0gaW5zcGVjdGVkUGFnZSgpLT5wYWdlR3JvdXAoKS5w
cmVmZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CiAgICAgICAgIE5TUmVjdCB3aW5k
b3dGcmFtZSA9IE5TUmVjdEZyb21TdHJpbmcod2luZG93RnJhbWVTdHJpbmcpOwogICAgICAgICBp
ZiAoIU5TSXNFbXB0eVJlY3Qod2luZG93RnJhbWUpKQogICAgICAgICAgICAgaW5pdGlhbFJlY3Qg
PSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93RnJhbWUgc3R5bGVNYXNr
OndpbmRvd1N0eWxlTWFza107CkBAIC00ODksNyArNDk2LDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKICNlbmRpZgogICAg
IHByZWZlcmVuY2VzLl9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBZRVM7CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6IDo6V2ViS2l0Ojp3cmFwcGVyKGluc3BlY3RvclBy
b2Nlc3NQb29sKCkpXTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0R3JvdXBJZGVudGlmaWVyOmlu
c3BlY3RvclBhZ2VHcm91cCgpLT5pZGVudGlmaWVyKCldOworICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRHcm91cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllcigpXTsKIAogICAg
IG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKQEAgLTU2Myw2ICs1NzAsODYg
QEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0
b3JQYWdlKCkKICAgICByZXR1cm4gaW5zcGVjdG9yUGFnZTsKIH0KIAorV2ViUGFnZVByb3h5KiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVPdmVybGF5UGFnZSgpCit7CisgICAgQVNT
RVJUKG1faW5zcGVjdGVkUGFnZSk7CisKKyAgICBpZiAobV9vdmVybGF5VmlldykKKyAgICAgICAg
cmV0dXJuIG1fb3ZlcmxheVZpZXctPl9wYWdlLmdldCgpOworCisgICAgTlNSZWN0IGluc3BlY3Rl
ZFZpZXdGcmFtZSA9IG1faW5zcGVjdGVkUGFnZS0+d2tWaWV3KCkuZnJhbWU7CisKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFdLUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmVmZXJlbmNlcy5fbG9nc1BhZ2VN
ZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQgPSBZRVM7CisjZW5kaWYKKyAgICBwcmVmZXJl
bmNlcy5fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gWUVTOworICAgIFtjb25maWd1cmF0
aW9uIHNldFByb2Nlc3NQb29sOiA6OldlYktpdDo6d3JhcHBlcihpbnNwZWN0b3JQcm9jZXNzUG9v
bCgpKV07CisKKyAgICBtX292ZXJsYXlWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTppbnNwZWN0ZWRWaWV3RnJhbWUgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgQVNTRVJUKG1fb3ZlcmxheVZpZXcpOworCisgICAgW21fb3Zlcmxh
eVZpZXcgX3NldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOllFU107CisKKyAgICBXZWJQYWdl
UHJveHkqIG92ZXJsYXlQYWdlID0gbV9vdmVybGF5Vmlldy0+X3BhZ2UuZ2V0KCk7CisgICAgQVNT
RVJUKG92ZXJsYXlQYWdlKTsKKworICAgIFdLUGFnZVVJQ2xpZW50VjIgdWlDbGllbnQgPSB7Cisg
ICAgICAgIHsgMiwgdGhpcyB9LAorICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgMCwgLy8gc2hvd1BhZ2UKKyAgICAgICAgMCwgLy8gY2xv
c2VQYWdlCisgICAgICAgIDAsIC8vIHRha2VGb2N1cworICAgICAgICAwLCAvLyBmb2N1cworICAg
ICAgICAwLCAvLyB1bmZvY3VzCisgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAorICAg
ICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQorICAgICAgICAwLCAvLyBydW5KYXZhU2Ny
aXB0UHJvbXB0CisgICAgICAgIDAsIC8vIHNldFN0YXR1c1RleHQKKyAgICAgICAgMCwgLy8gbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICAwLCAv
LyBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAg
ICAgIDAsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50CisgICAgICAgIDAsIC8vIGRpZE5vdEhhbmRs
ZVdoZWVsRXZlbnQKKyAgICAgICAgMCwgLy8gYXJlVG9vbGJhcnNWaXNpYmxlCisgICAgICAgIDAs
IC8vIHNldFRvb2xiYXJzVmlzaWJsZQorICAgICAgICAwLCAvLyBpc01lbnVCYXJWaXNpYmxlCisg
ICAgICAgIDAsIC8vIHNldE1lbnVCYXJWaXNpYmxlCisgICAgICAgIDAsIC8vIGlzU3RhdHVzQmFy
VmlzaWJsZQorICAgICAgICAwLCAvLyBzZXRTdGF0dXNCYXJWaXNpYmxlCisgICAgICAgIDAsIC8v
IGlzUmVzaXphYmxlCisgICAgICAgIDAsIC8vIHNldFJlc2l6YWJsZQorICAgICAgICBnZXRXaW5k
b3dGcmFtZSwKKyAgICAgICAgc2V0V2luZG93RnJhbWUsCisgICAgICAgIDAsIC8vIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbAorICAgICAgICAwLCAvLyBkaWREcmF3CisgICAgICAgIDAsIC8v
IHBhZ2VEaWRTY3JvbGwKKyAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhLAorICAg
ICAgICAwLCAvLyBydW5PcGVuUGFuZWwsCisgICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAgICAgICAgMCwgLy8gaGVhZGVySGVpZ2h0Cisg
ICAgICAgIDAsIC8vIGZvb3RlckhlaWdodAorICAgICAgICAwLCAvLyBkcmF3SGVhZGVyCisgICAg
ICAgIDAsIC8vIGRyYXdGb290ZXIKKyAgICAgICAgMCwgLy8gcHJpbnRGcmFtZQorICAgICAgICAw
LCAvLyBydW5Nb2RhbAorICAgICAgICAwLCAvLyB1bnVzZWQKKyAgICAgICAgMCwgLy8gc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcgorICAgICAgICAwLCAvLyBzaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0CisgICAgICAgIDAsIC8vIGNyZWF0ZVBhZ2UKKyAgICAgICAgMCwgLy8gbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQKKyAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QKKyAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKKyAgICAgICAgMCwgLy8gc2hvd0NvbG9y
UGlja2VyCisgICAgICAgIDAsIC8vIGhpZGVDb2xvclBpY2tlcgorICAgICAgICAwLCAvLyB1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKKyAgICB9OworCisgICAgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KHRvQVBJKG92ZXJsYXlQYWdlKSwgJnVpQ2xpZW50LmJhc2UpOworCisgICAgcmV0dXJu
IG92ZXJsYXlQYWdlOworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW4o
KQogewogICAgIGlmIChtX2lzQXR0YWNoZWQpCkBAIC02MTAsNyArNjk3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQoKQogICAgIC8vIElmIHRoZSBXZWIg
SW5zcGVjdG9yIGlzIG5vIGxvbmdlciBpbiB0aGUgc2FtZSB3aW5kb3cgYXMgdGhlIGluc3BlY3Rl
ZCB2aWV3LAogICAgIC8vIHRoZW4gd2UgbmVlZCB0byByZW9wZW4gdGhlIEluc3BlY3RvciB0byBn
ZXQgaXQgYXR0YWNoZWQgdG8gdGhlIHJpZ2h0IHdpbmRvdy4KICAgICAvLyBUaGlzIGNhbiBoYXBw
ZW4gd2hlbiBkcmFnZ2luZyB0YWJzIHRvIGFub3RoZXIgd2luZG93IGluIFNhZmFyaS4KLSAgICBp
ZiAobV9pc0F0dGFjaGVkICYmIG1faW5zcGVjdG9yVmlldy5nZXQoKS53aW5kb3cgIT0gbV9wYWdl
LT53a1ZpZXcoKS53aW5kb3cpIHsKKyAgICBpZiAobV9pc0F0dGFjaGVkICYmIG1faW5zcGVjdG9y
Vmlldy5nZXQoKS53aW5kb3cgIT0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKS53aW5kb3cpIHsK
ICAgICAgICAgcGxhdGZvcm1PcGVuKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03MTks
MjIgKzgwNiwyNCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5n
ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5nICpmcmFtZVN0cmluZyA9IE5TU3Ry
aW5nRnJvbVJlY3QoW21faW5zcGVjdG9yV2luZG93IGZyYW1lXSk7Ci0gICAgcGFnZSgpLT5wYWdl
R3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvcldpbmRvd0ZyYW1lKGZyYW1lU3RyaW5n
KTsKKyAgICBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuc2V0SW5z
cGVjdG9yV2luZG93RnJhbWUoZnJhbWVTdHJpbmcpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoQ0dGbG9hdCBjdXJyZW50RGltZW5zaW9u
KQogewotICAgIGlmICghbV9pc0F0dGFjaGVkIHx8ICFtX2lzVmlzaWJsZSkKKyAgICBpZiAoIW1f
aXNWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcg
PSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3Rl
ZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgTlNSZWN0IGluc3BlY3RlZFZpZXdGcmFtZSA9IFtpbnNw
ZWN0ZWRWaWV3IGZyYW1lXTsKLSAgICBOU1JlY3QgaW5zcGVjdG9yRnJhbWUgPSBOU1plcm9SZWN0
OwotICAgIE5TUmVjdCBwYXJlbnRCb3VuZHMgPSBbW2luc3BlY3RlZFZpZXcgc3VwZXJ2aWV3XSBi
b3VuZHNdOwotICAgIENHRmxvYXQgaW5zcGVjdGVkVmlld1RvcCA9IE5TTWF4WShpbnNwZWN0ZWRW
aWV3RnJhbWUpOwogCi0gICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGVCb3R0b206IHsKKyAgICBpZiAobV9pc0F0dGFjaGVkKSB7CisgICAg
ICAgIE5TUmVjdCBwYXJlbnRCb3VuZHMgPSBbW2luc3BlY3RlZFZpZXcgc3VwZXJ2aWV3XSBib3Vu
ZHNdOworICAgICAgICBOU1JlY3QgaW5zcGVjdG9yRnJhbWUgPSBOU1plcm9SZWN0OworICAgICAg
ICBDR0Zsb2F0IGluc3BlY3RlZFZpZXdUb3AgPSBOU01heFkoaW5zcGVjdGVkVmlld0ZyYW1lKTsK
KworICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKKyAgICAgICAgY2FzZSBBdHRh
Y2htZW50U2lkZTo6Qm90dG9tOiB7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnREaW1lbnNpb24p
CiAgICAgICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TSGVpZ2h0KFttX2luc3BlY3Rv
clZpZXcgZnJhbWVdKTsKIApAQCAtNzQ3LDcgKzgzNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6Omluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb24p
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQXR0YWNobWVu
dFNpZGVSaWdodDogeworICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDogewogICAg
ICAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQogICAgICAgICAgICAgICAgIGN1cnJlbnRE
aW1lbnNpb24gPSBOU1dpZHRoKFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKIApAQCAtNzYxLDM3
ICs4NTAsNDQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlk
Q2hhbmdlKENHRmxvYXQgY3VycmVudERpbWVuc2lvbikKICAgICAgICAgICAgIGluc3BlY3RvckZy
YW1lID0gTlNNYWtlUmVjdChwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCAwLCBpbnNwZWN0
b3JXaWR0aCwgTlNIZWlnaHQocGFyZW50Qm91bmRzKSAtIGluc2V0RXhjbHVkaW5nQmFubmVycyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0KKyAgICAgICAgfQogCi0gICAg
aWYgKE5TRXF1YWxSZWN0cyhbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSwgaW5zcGVjdG9yRnJhbWUp
ICYmIE5TRXF1YWxSZWN0cyhbaW5zcGVjdGVkVmlldyBmcmFtZV0sIGluc3BlY3RlZFZpZXdGcmFt
ZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFOU0VxdWFsUmVjdHMoW21faW5zcGVj
dG9yVmlldyBmcmFtZV0sIGluc3BlY3RvckZyYW1lKSAmJiAhTlNFcXVhbFJlY3RzKFtpbnNwZWN0
ZWRWaWV3IGZyYW1lXSwgaW5zcGVjdGVkVmlld0ZyYW1lKSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IGlmIHRoaXMgaXMgYSBzeW5jaHJvbm91cyBldmVudCwgdGhlbiB3ZSBjYW4gdXNlIFRlbXBv
cmFyeUNoYW5nZTxUPiBoZXJlLgorICAgICAgICAgICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRh
cHRlciBpZ25vcmVOZXh0SW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlXTsKIAotICAgIFttX2lu
c3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgaWdub3JlTmV4dEluc3BlY3RlZFZpZXdGcmFtZURpZENo
YW5nZV07CisgICAgICAgICAgICAvLyBEaXNhYmxlIHNjcmVlbiB1cGRhdGVzIHRvIG1ha2Ugc3Vy
ZSB0aGUgbGF5ZXJzIGZvciBib3RoIHZpZXdzIHJlc2l6ZSBpbiBzeW5jLgorICAgICAgICAgICAg
W1ttX2luc3BlY3RvclZpZXcgd2luZG93XSBkaXNhYmxlU2NyZWVuVXBkYXRlc1VudGlsRmx1c2hd
OwogCi0gICAgLy8gRGlzYWJsZSBzY3JlZW4gdXBkYXRlcyB0byBtYWtlIHN1cmUgdGhlIGxheWVy
cyBmb3IgYm90aCB2aWV3cyByZXNpemUgaW4gc3luYy4KLSAgICBbW21faW5zcGVjdG9yVmlldyB3
aW5kb3ddIGRpc2FibGVTY3JlZW5VcGRhdGVzVW50aWxGbHVzaF07CisgICAgICAgICAgICBbbV9p
bnNwZWN0b3JWaWV3IHNldEZyYW1lOmluc3BlY3RvckZyYW1lXTsKKyAgICAgICAgICAgIFtpbnNw
ZWN0ZWRWaWV3IHNldEZyYW1lOmluc3BlY3RlZFZpZXdGcmFtZV07CisgICAgICAgIH0KKyAgICB9
CiAKLSAgICBbbV9pbnNwZWN0b3JWaWV3IHNldEZyYW1lOmluc3BlY3RvckZyYW1lXTsKLSAgICBb
aW5zcGVjdGVkVmlldyBzZXRGcmFtZTppbnNwZWN0ZWRWaWV3RnJhbWVdOworICAgIGlmICghTlNF
cXVhbFJlY3RzKFttX292ZXJsYXlWaWV3IGZyYW1lXSwgaW5zcGVjdGVkVmlld0ZyYW1lKSkgewor
ICAgICAgICAvLyBBZGp1c3QgdGhlIG92ZXJsYXkgbGFzdCwgc2luY2UgYW4gYXR0YWNoZWQgaW5z
cGVjdG9yIG1heSBjaGFuZ2UgdGhlIGluc3BlY3RlZCBwYWdlJ3Mgc2l6ZS4KKyAgICAgICAgW1tt
X292ZXJsYXlWaWV3IHdpbmRvd10gZGlzYWJsZVNjcmVlblVwZGF0ZXNVbnRpbEZsdXNoXTsKKyAg
ICAgICAgW21fb3ZlcmxheVZpZXcgc2V0RnJhbWU6aW5zcGVjdGVkVmlld0ZyYW1lXTsKKyAgICB9
CiB9CiAKIHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRv
d0hlaWdodCgpCiB7Ci0gICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXco
KTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygp
OwogICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3UmVjdCA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluc3BlY3RlZFZpZXdSZWN0LnNpemUu
aGVpZ2h0KTsKIH0KIAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVj
dGVkV2luZG93V2lkdGgoKQogewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+
d2tWaWV3KCk7CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53
a1ZpZXcoKTsKICAgICBOU1JlY3QgaW5zcGVjdGVkVmlld1JlY3QgPSBbaW5zcGVjdGVkVmlldyBm
cmFtZV07CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnNwZWN0ZWRWaWV3UmVj
dC5zaXplLndpZHRoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRh
Y2goKQogewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7Cisg
ICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1faW5z
cGVjdG9yUHJveHlPYmpDQWRhcHRlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdGVk
Vmlld0ZyYW1lRGlkQ2hhbmdlOikgbmFtZTpOU1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlv
biBvYmplY3Q6aW5zcGVjdGVkVmlld107CiAKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsK
QEAgLTgwNSwxMSArOTAxLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0
YWNoKCkKICAgICBDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb247CiAKICAgICBzd2l0Y2ggKG1fYXR0
YWNobWVudFNpZGUpIHsKLSAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgIGNhc2Ug
QXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAgW21faW5zcGVjdG9yVmlldyBzZXRBdXRv
cmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld01heFlNYXJnaW5dOwogICAg
ICAgICBjdXJyZW50RGltZW5zaW9uID0gaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVj
dG9yQXR0YWNoZWRIZWlnaHQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdHRhY2htZW50
U2lkZVJpZ2h0OgorICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBbbV9p
bnNwZWN0b3JWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3SGVpZ2h0U2l6YWJsZSB8IE5T
Vmlld01pblhNYXJnaW5dOwogICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gaW5zcGVjdG9yUGFn
ZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNoZWRXaWR0aCgpOwogICAgICAgICBicmVhazsK
QEAgLTgyNCw3ICs5MjAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFj
aCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKIHsKLSAgICBX
S1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5z
cGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2luc3BlY3RvclByb3h5
T2JqQ0FkYXB0ZXIuZ2V0KCkgbmFtZTpOU1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBv
YmplY3Q6aW5zcGVjdGVkVmlld107CiAKICAgICBbbV9pbnNwZWN0b3JWaWV3IHJlbW92ZUZyb21T
dXBlcnZpZXddOwpAQCAtODQ0LDYgKzk0MCwyNSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybURldGFjaCgpCiAgICAgcGxhdGZvcm1CcmluZ1RvRnJvbnQoKTsKIH0KIAordm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2hPdmVybGF5KCkKK3sKKyAgICAvLyBXZSBt
YXkgaGF2ZSBhZGRlZCB0aGlzIG9ic2VydmVyIHR3aWNlLCBzaW5jZSB0aGUgZG9ja2VkIGluc3Bl
Y3RvciB1c2VzIGl0IHRvby4KKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQ
YWdlKCktPndrVmlldygpOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyLmdldCgpIHNlbGVjdG9y
OkBzZWxlY3RvcihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBuYW1lOk5TVmlld0ZyYW1l
RGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsKKworICAgIFtbaW5z
cGVjdGVkVmlldyBzdXBlcnZpZXddIGFkZFN1YnZpZXc6bV9vdmVybGF5Vmlldy5nZXQoKSBwb3Np
dGlvbmVkOk5TV2luZG93QWJvdmUgcmVsYXRpdmVUbzppbnNwZWN0ZWRWaWV3XTsKKyAgICAvLyBG
SVhNRTogd2hlbiB0aGUgb3ZlcmxheSBpcyByZWFkeSB0byBoYW5kbGUgdXNlciBpbnB1dCwgbWFr
ZSBmaXJzdCByZXNwb25kZXIgaGVyZS4KK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1EZXRhY2hPdmVybGF5KCkKK3sKKyAgICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCB0aGlzIG9i
c2VydmVyIHR3aWNlLCBzaW5jZSB0aGUgZG9ja2VkIGluc3BlY3RvciB1c2VzIGl0IHRvby4KKyAg
ICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOworICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9p
bnNwZWN0b3JQcm94eU9iakNBZGFwdGVyLmdldCgpIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VO
b3RpZmljYXRpb24gb2JqZWN0Omluc3BlY3RlZFZpZXddOworCisgICAgW21fb3ZlcmxheVZpZXcg
cmVtb3ZlRnJvbVN1cGVydmlld107Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewogICAgIGlmICgh
bV9pc0F0dGFjaGVkKQpAQCAtOTAzLDYgKzEwMTgsMTcgQEAgU3RyaW5nIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JCYXNlVVJMKCkgY29uc3QKICAgICByZXR1cm4gW1tOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOwogfQogCitTdHJpbmcgV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3Rvck92ZXJsYXlVUkwoKSBjb25zdAoreworICAgIC8vIENhbGwgdGhlIHNv
ZnQgbGluayBmcmFtZXdvcmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0aGVuIFtOU0J1bmRsZSBi
dW5kbGVXaXRoSWRlbnRpZmllcjpdIHdpbGwgd29yay4KKyAgICBXZWJJbnNwZWN0b3JVSUxpYnJh
cnkoKTsKKworICAgIE5TU3RyaW5nICpwYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5XZWJJbnNwZWN0b3JVSSJdIHBhdGhGb3JSZXNvdXJjZTpAIk92ZXJs
YXkiIG9mVHlwZTpAImh0bWwiXTsKKyAgICBBU1NFUlQoW3BhdGggbGVuZ3RoXSk7CisKKyAgICBy
ZXR1cm4gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tf
QVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA4ZDU1ODA3YWM4ZDRlNGNkNjFiMDk0MGE5NDhmODNhYjFjMTFkMDg5
Li44MWVlM2ZiZjliMTA1N2I3M2JhNzg0MGExNjY5ZGYzZjcwOGUzOTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjIwLDYg
KzE2MjAsNyBAQAogCQlDMEUzQUE3QTEyMDlFODMwMDBBNDlEMDEgLyogTW9kdWxlQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFM0FBNDgxMjA5
RTQ1MDAwQTQ5RDAxIC8qIE1vZHVsZUNGLmNwcCAqLzsgfTsKIAkJQzBFM0FBN0IxMjA5RTgzNTAw
QTQ5RDAxIC8qIE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMEUzQUE0NTEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmNwcCAqLzsgfTsK
IAkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8q
IE1vZHVsZS5oICovOyB9OworCQlDNEIyQkE0NzFBNkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVj
dG9yT3ZlcmxheS5tZXNzYWdlcy5pbiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzRCMkJBNDYxQTZGNEVCOTAwOTAxMkVFIC8qIFdlYkluc3BlY3Rvck92
ZXJsYXkubWVzc2FnZXMuaW4gKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBE
cmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0
aW9uLmggKi87IH07CiAJCUM1MjM3RjYwMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGll
bnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NTIzN0Y1RjEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tICovOyB9Owog
CQlDNTQyNTZCNTE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZBRjE4QkVDMThC
MDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLmggKi87IH07CkBAIC0zODMzLDYgKzM4MzQs
OCBAQAogCQlDMEUzQUE0NDEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMEUzQUE0NTEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMwRTNBQTQ4MTIwOUU0NTAwMEE0OUQwMSAvKiBNb2R1bGVDRi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVDRi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUM0QjJCQTQ1MUE2RjNGQzYwMDkwMTJFRSAvKiBXZWJJbnNwZWN0
b3JPdmVybGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rv
ck92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRCMkJBNDYxQTZGNEVC
OTAwOTAxMkVFIC8qIFdlYkluc3BlY3Rvck92ZXJsYXkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9s
bGVyQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9s
bGVyQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFD
QTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENv
bnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtSW5wdXRDb250
cm9sLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01OTk3LDYgKzYwMDAsOCBAQAogCQkJCTFDOEUyODFGMTI3NUQx
NTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuaCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluICovLAorCQkJCUM0QjJCQTQ1MUE2RjNGQzYw
MDkwMTJFRSAvKiBXZWJJbnNwZWN0b3JPdmVybGF5LmggKi8sCisJCQkJQzRCMkJBNDYxQTZGNEVC
OTAwOTAxMkVFIC8qIFdlYkluc3BlY3Rvck92ZXJsYXkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUM4
OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLywKIAkJCQkxQzg5
MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLywKIAkJCQkxQzg5MUQ2
NDE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCkBAIC04
NzIwLDYgKzg3MjUsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJRTFEMjZBNTExNzU5NjRENzAwOTVC
RkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTEzM0ZE
OEExNDIzREQ3RjAwRkM3QkZCIC8qIFdlYktpdC5pY25zIGluIFJlc291cmNlcyAqLywKKwkJCQlD
NEIyQkE0NzFBNkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5p
biBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNWE3
ZjE3MDBiZDE5YWJjYWE3Zjc4NTZkYTJhMDNlYjZjZTI2ZjFiMC4uYWQyMTk3NmM1MmIzY2VmNTdh
MDEwNTYyZGIwYjJiOWQ1NmM5ZmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtMTAxLDYgKzEwMSwxMyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVu
ZFRvRnJvbnQoKQogICAgICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQoKTsK
IH0KIAorSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVu
SW5zcGVjdG9yT3ZlcmxheSgpCit7CisgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlT3Zl
cmxheVBhZ2UoKTsKKworICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpOworfQorCiB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKIHsKICAgICBp
ZiAobV9wYWdlLT5pbnNwZWN0b3IoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDlh
NDQwMGJlNWFiYTZiOTk1MTVmNmQ4OTFmNmU5YTgxNTY3OGE0MTUuLjRhYjJhZWI3MjZhNjUxNTQ2
OWRlZjAwYTFiNjYzODk4OThjMDUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAt
NTQsOCArNTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92
ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5z
cGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwor
ICAgIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqIG9wZW5JbnNwZWN0b3JPdmVybGF5KCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOworICAgIAogICAgIHZvaWQgZGlk
UmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGhp
Z2hsaWdodCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCA0NTcwZjkxMzQ3Y2ZlMDU4MTM5ZTA3NThjNjIw
YTkzODUwODYwOTk1Li41YTdmOGYxMTE0ZTA4YTQyODE0YzUyNjFkYmVlOTVjY2RhMGIzMGFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck92ZXJsYXlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAt
MTAyLDYgKzEwMyw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKCkKICAgICBt
X2Zyb250ZW5kQ29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fZnJvbnRlbmRDb25uZWN0
aW9uID0gbnVsbHB0cjsKIAorICAgIG1fb3ZlcmxheUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsK
KyAgICBtX292ZXJsYXlDb25uZWN0aW9uID0gbnVsbHB0cjsKKwogICAgIG1fYXR0YWNoZWQgPSBm
YWxzZTsKICAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0gZmFsc2U7CiB9CkBAIC0xMTEsNiArMTE1
LDMyIEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAK
K3ZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVPdmVybGF5UGFnZSgpCit7CisgICAgaWYgKCFtX3Bh
Z2UpCisgICAgICAgIHJldHVybjsKKworI2lmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBs
aXN0ZW5pbmdQb3J0OworICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBN
QUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworCisgICAgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpOwor
ICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBN
QUNIX01TR19UWVBFX01BS0VfU0VORCk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykK
KyAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQQzo6Q29ubmVj
dGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKHNvY2tldFBhaXIuc2VydmVyKTsKKyAgICBJ
UEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBvcnQoc29ja2V0UGFpci5jbGllbnQpOwor
I2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAg
bV9vdmVybGF5Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAg
bV9vdmVybGF5Q29ubmVjdGlvbi0+b3BlbigpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OkNyZWF0ZU92ZXJsYXlQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0KSwgbV9wYWdlLT5w
YWdlSUQoKSk7Cit9CisKIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKIHZvaWQg
V2ViSW5zcGVjdG9yOjpzaG93KCkKIHsKQEAgLTI1Niw2ICsyODYsMTIgQEAgYm9vbCBXZWJJbnNw
ZWN0b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvT3Zlcmxh
eShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9vdmVybGF5Q29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6U2VuZE1lc3NhZ2VUb092ZXJsYXkobWVz
c2FnZSksIDApOworICAgIHJldHVybiB0cnVlOworfQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCiB2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmlu
ZGV4IGVkODVjOTA5YjI5MmFhZmE5Yzk0M2ZlYzRhNGU0ZTFiNDQyNWJjMjkuLjg0MGRkNmM0YzU5
MDNmMjM1YmRiNzU5YWY1YWZhYmZhNDM2NWU3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvT3ZlcmxheUNoYW5uZWwuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsNyArMzgsMTEgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkluc3BlY3RvciA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4sIHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCB7CitjbGFzcyBXZWJJbnNwZWN0b3IKKyAgICA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4KKyAgICAsIHB1Ymxp
YyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsCisgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5l
bCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBjcmVhdGUo
V2ViUGFnZSopOwogCkBAIC00NSw4ICs1MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0
ZURvY2tpbmdBdmFpbGFiaWxpdHkoKTsKIAorICAgIC8vIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsCiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogCisgICAgLy8gSW5zcGVjdG9yOjpPdmVybGF5
Q2hhbm5lbAorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvT3ZlcmxheShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpIG92ZXJyaWRlOworCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVk
IFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIApA
QCAtOTYsNiArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3Bl
Y3RvckNsaWVudAogICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCk7
CisgICAgdm9pZCBjcmVhdGVPdmVybGF5UGFnZSgpOwogCiAgICAgdm9pZCBjbG9zZUZyb250ZW5k
KCk7CiAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKQEAgLTEwMyw2ICsxMTMsNyBAQCBwcml2YXRl
OgogICAgIFdlYlBhZ2UqIG1fcGFnZTsKIAogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
ZnJvbnRlbmRDb25uZWN0aW9uOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fb3Zlcmxh
eUNvbm5lY3Rpb247CiAKICAgICBib29sIG1fYXR0YWNoZWQ7CiAgICAgYm9vbCBtX3ByZXZpb3Vz
Q2FuQXR0YWNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvck92ZXJsYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMTlkYjljZWVjNzY4YjUz
NzAxZDBmNmRhMmJkOGM4YWE5Y2U3NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTAsMCArMSwy
NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yT3ZlcmxheS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KworI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0Nocm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxk
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JpcHRHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFN0YXRlLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVm
PFdlYkluc3BlY3Rvck92ZXJsYXk+IFdlYkluc3BlY3Rvck92ZXJsYXk6OmNyZWF0ZShXZWJQYWdl
KiBwYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkluc3BlY3Rvck92ZXJsYXko
cGFnZSkpOworfQorCitXZWJJbnNwZWN0b3JPdmVybGF5OjpXZWJJbnNwZWN0b3JPdmVybGF5KFdl
YlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JPdmVybGF5Ojplc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29s
IHVuZGVyVGVzdCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5w
b3J0KCkpOworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRl
bnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjpp
ZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVy
OworCisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQodGhpcyk7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCAqdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5v
cGVuKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6d2luZG93T2JqZWN0Q2xlYXJl
ZCgpCit7CisgICAgaWYgKG1fZnJvbnRlbmRIb3N0KQorICAgICAgICBtX2Zyb250ZW5kSG9zdC0+
ZGlzY29ubmVjdENsaWVudCgpOworCisgICAgbV9mcm9udGVuZEhvc3QgPSBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q6OmNyZWF0ZSh0aGlzLCBtX3BhZ2UtPmNvcmVQYWdlKCkpOworICAgIFNjcmlwdEds
b2JhbE9iamVjdDo6c2V0KGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBtX3BhZ2UtPmNvcmVQYWdlKCkpLCBBU0NJSUxpdGVyYWwoIkluc3BlY3RvckZyb250ZW5kSG9z
dCIpLCBtX2Zyb250ZW5kSG9zdC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3Zlcmxh
eTo6ZnJvbnRlbmRMb2FkZWQoKQoreworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisg
ICAgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKyAgICBicmluZ1RvRnJvbnQoKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5Ojptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQg
eSkKK3sKKyAgICBGbG9hdFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJv
bWUoKS53aW5kb3dSZWN0KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwgeSk7CisgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6YnJpbmdUb0Zyb250KCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6OmNsb3NlV2luZG93KCkKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9i
YWNrZW5kQ29ubmVjdGlvbiA9IG51bGxwdHI7CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyID0gMDsKKyAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOworfQorCit2b2lkIFdlYkluc3BlY3Rv
ck92ZXJsYXk6OnJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRj
aCAoc2lkZSkgeworICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yT3ZlcmxheTo6c2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAgICBjb25zdCBj
aGFyKiBzaWRlU3RyaW5nOworCisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lk
ZTo6VW5kb2NrZWQ6CisgICAgICAgIHNpZGVTdHJpbmcgPSAidW5kb2NrZWQiOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBzaWRlU3RyaW5nID0g
InJpZ2h0IjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206Cisg
ICAgICAgIHNpZGVTdHJpbmcgPSAiYm90dG9tIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgbV9kb2NrU2lkZSA9IHNpZGU7CisKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlM
aXRlcmFsKCJzZXREb2NrU2lkZSIpLCBBU0NJSUxpdGVyYWwoc2lkZVN0cmluZykpOworfQorCit2
b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2ln
bmVkIGhlaWdodCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25l
ZCB3aWR0aCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5k
b3dXaWR0aCh3aWR0aCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdl
Ykluc3BlY3Rvck92ZXJsYXk6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6
Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAobV9iYWNrZW5kQ29u
bmVjdGlvbikKKyAgICAgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpPcGVuSW5OZXdUYWIodXJsKSwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
T3ZlcmxheTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2
NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6YXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6Omluc3BlY3RlZFVSTENoYW5n
ZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Okluc3BlY3RlZFVSTENoYW5nZWQodXJsU3RyaW5nKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd0NvbnNvbGUoKQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dDb25zb2xlIikpOwor
fQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6OnNob3dSZXNvdXJjZXMoKQoreworICAgIGV2
YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dSZXNvdXJjZXMiKSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmlu
ZyBmcmFtZUlkZW50aWZpZXIpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0
ZXJhbCgic2hvd01haW5SZXNvdXJjZUZvckZyYW1lIiksIGZyYW1lSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBl
dmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0Vu
YWJsZWQiKSwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c3RvcFBhZ2VQ
cm9maWxpbmcoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCIpLCBmYWxzZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yT3ZlcmxheTo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0ZUNv
bW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzYXZlZFVSTCIpLCB1cmwpOworfQorCit2b2lkIFdl
Ykluc3BlY3Rvck92ZXJsYXk6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBl
dmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJhcHBlbmRlZFRvVVJMIiksIHVybCk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFr
ZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiwgbWVz
c2FnZSwgIikiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX2JhY2tlbmRDb25u
ZWN0aW9uKQorICAgICAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCAwKTsKK30KKwordm9pZCBX
ZWJJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBj
b21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQoreworICAgIGlmIChhcmd1bWVudC5pc051
bGwoKSkKKyAgICAgICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3Bl
Y3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIl0pIikpOworICAgIGVs
c2UKKyAgICAgICAgZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3Rv
ckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIiwgXCIiLCBhcmd1bWVudCwg
IlwiXSkiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVDb21tYW5k
T25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVudCkKK3sKKyAgICBldmFs
dWF0ZUNvbW1hbmRPbkxvYWQoY29tbWFuZCwgQVNDSUlMaXRlcmFsKGFyZ3VtZW50ID8gInRydWUi
IDogImZhbHNlIikpOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlRXhw
cmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCit7CisgICAgaWYgKG1fZnJv
bnRlbmRMb2FkZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAgICAg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
KGV4cHJlc3Npb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9xdWV1ZS5hcHBl
bmQoZXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVQ
ZW5kaW5nRXhwcmVzc2lvbnMoKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5kTG9hZGVkKTsKKwor
ICAgIGZvciAoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkKKyAgICAgICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJl
c3Npb24pOworCisgICAgbV9xdWV1ZS5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvck92ZXJsYXkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZDE0NmU0NWRkMTI1NDFiZDdjYzc4NjlhMzI0NDA2OTlkNTE0ZjFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvck92ZXJs
YXkuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSW5zcGVjdG9yT3ZlcmxheV9oCisjZGVmaW5lIFdlYkluc3BlY3Rvck92ZXJsYXlfaAor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2U7CisKK2NsYXNzIFdlYkluc3BlY3Rvck92ZXJsYXkKKyAgICA6IHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OkNsaWVudAorICAgICwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkluc3BlY3Rvck92ZXJsYXk+
IGNyZWF0ZShXZWJQYWdlKik7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlOyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9y
T3ZlcmxheU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKworICAgIC8v
IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rp
b24mKSBvdmVycmlkZSB7IGNsb3NlV2luZG93KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQorCisgICAgLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3Rvck92ZXJsYXkgbWVzc2FnZXMKKyAgICB2b2lkIGVzdGFibGlzaENv
bm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBp
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QpOworCisgICAgdm9pZCBzZW5k
TWVzc2FnZVRvT3ZlcmxheShjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50CisvKgorICAgIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92
ZXJyaWRlOworICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQg
bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOworCisgICAgU3RyaW5nIGxv
Y2FsaXplZFN0cmluZ3NVUkwoKSBvdmVycmlkZTsKKworICAgIHZvaWQgYnJpbmdUb0Zyb250KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOworCisgICAgdm9pZCBy
ZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0
YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFRvb2xi
YXJIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOworCisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29u
c3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5n
JiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpIG92ZXJyaWRl
OworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50KSBvdmVycmlkZTsKKworICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisqLworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdl
Ykluc3BlY3Rvck92ZXJsYXkoV2ViUGFnZSopOworCisvKgorICAgIHZvaWQgZXZhbHVhdGVDb21t
YW5kT25Mb2FkKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCA9
IFN0cmluZygpKTsKKyAgICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcm
IGNvbW1hbmQsIGNvbnN0IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQpIHsgZXZhbHVhdGVDb21tYW5k
T25Mb2FkKGNvbW1hbmQsIFN0cmluZyhhcmd1bWVudCkpOyB9CisgICAgdm9pZCBldmFsdWF0ZUNv
bW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KTsKKyAgICB2
b2lkIGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pOwor
ICAgIHZvaWQgZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKyovCisgICAgV2ViUGFnZSog
bV9wYWdlOworCisgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9iYWNrZW5kQ29ubmVjdGlv
bjsKKyAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworCisvKgorICAgIGJv
b2wgbV9mcm9udGVuZExvYWRlZDsKKyAgICBEZXF1ZTxTdHJpbmc+IG1fcXVldWU7CisKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zyb250ZW5kSG9zdDsKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5n
c1VSTDsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOworI2VuZGlm
CisqLworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9yT3ZlcmxheV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JP
dmVybGF5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YWE3NzhlYTM0NzhiZDdmMGRhNjkyZTU3
MjRmMTJlNWRiNTEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMx
IEBACisjIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JPdmVy
bGF5IHsKKyAgICBFc3RhYmxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpCisKKyAgICBTZW5k
TWVzc2FnZVRvT3ZlcmxheShTdHJpbmcgbWVzc2FnZSkKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246388</attachid>
            <date>2015-02-11 06:52:19 -0800</date>
            <delta_ts>2015-02-11 06:52:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126923-20150211065222.patch</filename>
            <type>text/plain</type>
            <size>149827</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTRmOGYzYTE4MjBmZmM0ZjJjMjBkY2Q0MjBiNDYzOTUyMjk0NTQzLi5hY2NiYThjOTcyNjA2NWU4
ODU2MDE4MWNhZmQxMjA3ZDFhZTk0MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNS0wMi0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBl
dmVudHMgb24gdGhlIGluc3BlY3RvciBwYWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvT3ZlcmxheUNoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Ok92ZXJsYXlD
aGFubmVsOjp+T3ZlcmxheUNoYW5uZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50Lmg6CisKIDIwMTUtMDItMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4gYW5kIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGEgYmFyZWJvbmUgUmVhZGFi
bGVTdHJlYW0gaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MTBkMjczYTJlOTNkYjc1YjdiNGJl
MzI1NGJiYTNkMTExMmM4NS4uZTcxYjNmNzBmNGU4MmU3YmEwYWRlZjBmNWE2M2E5N2ZlNzJiNTdh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE1LTAyLTAzICBCcmlhbiBKLiBCdXJn
ICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBw
b3J0IGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBvbiB0aGUgaW5zcGVjdG9yIHBhZ2Ugb3ZlcmxheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2OTIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheUNoYW5uZWwuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXlDbGllbnQ6On5JbnNwZWN0b3JPdmVybGF5Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJl
cGxheUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JSZXBsYXlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUluc3BlY3RvckNsaWVudDo6b3Blbkluc3Bl
Y3Rvck92ZXJsYXkpOgorCiAyMDE1LTAyLTA0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWVkaWEgaU9TXSBBZGQgYSBkZWJ1ZyBzZXR0aW5nIHRvIGFsd2F5cyBz
aG93IHRoZSBvcHRpbWl6ZWQgZnVsbHNjcmVlbiBidXR0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
CmluZGV4IDY0N2EzMGZmYTBlMzllNWQ0NmExMGU0ZTcwZjc0YjZlYWNjMGVjOGEuLmYzZjkxNzBk
NWJkMzJjZjA3ZDlmODIyZTc4ZGIzNDE4ZDgxNmQ2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY1IEBACisyMDE1LTAyLTAzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53
YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGhhbmRsaW5n
IG1vdXNlIGV2ZW50cyBvbiB0aGUgaW5zcGVjdG9yIHBhZ2Ugb3ZlcmxheQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2OTIzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2Uv
T3ZlcmxheS5qczogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3JPdmVybGF5LmxvYWRlZCk6Cisg
ICAgICAgIChkcmF3UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UpOgorICAgICAgICAoX2RyYXdSZWdp
b25OdW1iZXIpOgorICAgICAgICAocXVhZFRvUGF0aCk6CisgICAgICAgIChkcmF3T3V0bGluZWRR
dWFkKToKKyAgICAgICAgKHBhdGhDb21tYW5kKToKKyAgICAgICAgKGRyYXdQYXRoKToKKyAgICAg
ICAgKGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcCk6CisgICAgICAgIChxdWFkRXF1YWxzKToKKyAg
ICAgICAgKGRyYXdHdXR0ZXIpOgorICAgICAgICAodXBkYXRlUGFpbnRSZWN0cyk6CisgICAgICAg
IChyZXNldCk6CisgICAgICAgIChET01CdWlsZGVyKToKKyAgICAgICAgKERPTUJ1aWxkZXIucHJv
dG90eXBlLmFwcGVuZFRleHROb2RlKToKKyAgICAgICAgKERPTUJ1aWxkZXIucHJvdG90eXBlLmFw
cGVuZFNwYW4pOgorICAgICAgICAoRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kU3BhbklmTm90
TnVsbCk6CisgICAgICAgIChET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRQcm9wZXJ0eSk6Cisg
ICAgICAgIChET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRQcm9wZXJ0eUlmTm90TnVsbCk6Cisg
ICAgICAgIChfdHJ1bmNhdGVTdHJpbmcpOgorICAgICAgICAoX2NyZWF0ZUVsZW1lbnRUaXRsZSk6
CisgICAgICAgIChfZHJhd0VsZW1lbnRUaXRsZSk6CisgICAgICAgIChfcXVhZE1pZFBvaW50KToK
KyAgICAgICAgKF9kcmF3UmVnaW9uTGluayk6CisgICAgICAgIChfZHJhd1JlZ2lvbnNIaWdobGln
aHQpOgorICAgICAgICAoX2RyYXdTaGFwZUhpZ2hsaWdodCk6CisgICAgICAgIChfZHJhd0ZyYWdt
ZW50SGlnaGxpZ2h0KToKKyAgICAgICAgKHNob3dQYWdlSW5kaWNhdGlvbik6CisgICAgICAgICho
aWRlUGFnZUluZGljYXRpb24pOgorICAgICAgICAoZHJhd05vZGVIaWdobGlnaHQpOgorICAgICAg
ICAoZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoc2V0UGxhdGZvcm0pOgorICAgICAgICAo
ZGlzcGF0Y2gpOgorICAgICAgICAobG9nKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL092ZXJs
YXkuaHRtbDogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PdmVybGF5LmNz
czogQWRkZWQuCisgICAgICAgIChib2R5KToKKyAgICAgICAgKGJvZHkucGxhdGZvcm0tbWFjKToK
KyAgICAgICAgKGJvZHkucGxhdGZvcm0td2luZG93cyk6CisgICAgICAgIChib2R5LnBsYXRmb3Jt
LWxpbnV4KToKKyAgICAgICAgKC5maWxsKToKKyAgICAgICAgKC5pbmRpY2F0ZSk6CisgICAgICAg
ICguZGltbWVkKToKKyAgICAgICAgKC5tZXNzYWdlLWxpbmUpOgorICAgICAgICAoLm1lc3NhZ2Ut
Ym94KToKKyAgICAgICAgKC5weCk6CisgICAgICAgICguZWxlbWVudC10aXRsZS1jb250YWluZXIp
OgorICAgICAgICAoLmVsZW1lbnQtdGl0bGUpOgorICAgICAgICAoLnRhZy1uYW1lKToKKyAgICAg
ICAgKC5ub2RlLWlkKToKKyAgICAgICAgKC5jbGFzcy1uYW1lKToKKyAgICAgICAgKC5jc3MtcHJv
cGVydHkpOgorICAgICAgICAoI3JpZ2h0LWd1dHRlcik6CisgICAgICAgICgjYm90dG9tLWd1dHRl
cik6CisKIDIwMTUtMDItMDQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFUzY6IEltcHJvdmVkIENvbnNvbGUgU3VwcG9ydCBm
b3IgU3ltYm9sIE9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiOGEyNjZjZDVmYmYyMDJmZGE5
YTBjZjRjMTgyNjI2ZWQzMjExNGQ2Li5jMjI4MjU1ZTQ1OTU3NDExOTFmYThiZjliZjBhNTg3NGRh
ZWUxOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDItMDMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHN1cHBvcnQgaGFuZGxpbmcgbW91c2UgZXZlbnRzIG9uIHRoZSBpbnNwZWN0b3IgcGFn
ZSBvdmVybGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjY5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3Rvck92ZXJsYXkpOgorCiAyMDE1LTAyLTA1ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZh
ciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVu
dCBhIGJhcmVib25lIFJlYWRhYmxlU3RyZWFtIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzOTEz
NjA2MmRmZmU1N2FlNmI3ZWQ3Y2JkNGEyZjczNzYyMGJhMjguLmU0MzJmMTlhY2IzNTE5ZTQ4MGYx
NTczMzg2NDRlZDg0YzRjNjUxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3MiBAQAogMjAxNS0w
Mi0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKKyAgICAgICAg
V2ViIEluc3BlY3Rvcjogc3VwcG9ydCBoYW5kbGluZyBtb3VzZSBldmVudHMgb24gdGhlIGluc3Bl
Y3RvciBwYWdlIG92ZXJsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
ZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmlzSW5z
cGVjdG9yT3ZlcmxheVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25PdmVybGF5UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlT3ZlcmxheVBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGVPdmVybGF5UGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVPdmVybGF5UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JPdmVybGF5VVJMKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JPdmVybGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3Nl
RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNyZWF0ZU92ZXJsYXlQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvT3Zlcmxh
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OldlYkluc3BlY3Rvck92ZXJsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5Ojplc3RhYmxpc2hDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6d2luZG93T2JqZWN0Q2xlYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmZyb250ZW5kTG9hZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6bW92ZVdpbmRvd0J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6YnJpbmdUb0Zyb250KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpyZXF1ZXN0U2V0RG9ja1NpZGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpzZXREb2NrU2lkZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6Y2hhbmdlQXR0YWNoZWRXaW5k
b3dXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNldFRvb2xi
YXJIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpvcGVuSW5O
ZXdUYWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JPdmVybGF5OjpzYXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6YXBwZW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd1Jlc291cmNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnN0YXJ0UGFnZVByb2ZpbGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnN0b3BQYWdlUHJvZmlsaW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZGlkU2F2ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OmRpZEFwcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvck92ZXJsYXk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVDb21tYW5kT25Mb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVFeHByZXNz
aW9uT25Mb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVh
dGVQZW5kaW5nRXhwcmVzc2lvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JPdmVybGF5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JP
dmVybGF5OjpwYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
T3ZlcmxheS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluLgorCisyMDE1LTAyLTAzICBCcmlhbiBKLiBC
dXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKwogICAgICAgICBDbGVhbiB1cCBXZWJJbnNw
ZWN0b3JQcm94eSBhbmQgdXNlIHNpbXBsZXIgaW5zcGVjdG9yIGxldmVscyBkZXNpZ24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEzNQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmYWExODk5NDQxZjAwMzczOWUyYmY4NWNhYWFk
Y2IxZmQ5ZTQ0OGYuLjRmMzg3NzIzMTU5ZjUxNWFkMGNmNWY5NDZlMmI4NjdkMjM5ZTZjM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTgxLDYgKzE1ODEsNyBAQAogCQlDNDcw
M0NENTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0NBMTkyODQ0Q0MwMDEz
RkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0NzAzQ0Q2MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5l
cmF0b3IucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NDcwM0NDQjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJF
QSAvKiBtb2RlbHMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0QjJCQTQ0MUE2RjBBMkEwMDkw
MTJFRSAvKiBPdmVybGF5Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzRCMkJBNDMxQTZGMEEyQTAwOTAxMkVFIC8qIE92ZXJsYXlDaGFubmVs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzRG
NEI2RjMxQTA1Qzk0NDAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGNEI2Q0YxQTA1Qzc2
RjAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0RjRCNkY0MUEwNUM5NDQwMDVDQUI3
NiAvKiBjcHBfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzRGNEI2RDAxQTA1Qzc2RjAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3IucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzRGNEI2
RjUxQTA1Qzk4NDAwNUNBQjc2IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNEY0QjZENzFBMDVDNzZGMDA1Q0FCNzYgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzI2NSw2ICszMjY2LDcgQEAKIAkJQzQ3MDNDQ0ExOTI4NDRDQzAwMTNG
QkVBIC8qIGdlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRo
b247IHBhdGggPSBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNDcwM0NDQjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdG9yLnB5OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gbW9kZWxzLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNEIyQkE0MzFBNkYwQTJBMDA5MDEyRUUgLyogT3ZlcmxheUNo
YW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxheUNoYW5uZWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGNEI2Q0YxQTA1Qzc2RjAwNUNBQjc2
IC8qIGNwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM0RjRCNkQwMUEwNUM3NkYwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yLnB5
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gY3BwX2dlbmVyYXRvci5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGNEI2RDExQTA1Qzc2RjAwNUNBQjc2IC8q
IGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9o
ZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjU4LDYgKzUyNjAsNyBA
QAogCQkJCUE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUu
aCAqLywKIAkJCQlBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmNwcCAqLywKIAkJCQlBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi8sCisJCQkJQzRCMkJBNDMxQTZGMEEyQTAw
OTAxMkVFIC8qIE92ZXJsYXlDaGFubmVsLmggKi8sCiAJCQkJQTVGRDAwNjUxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJQTVGRDAwNjYxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAogCQkJCUE1MDNGQTFGMTg4RUZGNjgwMDExMEYx
NCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8sCkBAIC01Nzc4LDYgKzU3ODEsNyBAQAogCQkJCTE0
MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
ODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzRCMkJBNDQxQTZGMEEyQTAwOTAxMkVFIC8qIE92ZXJsYXlDaGFubmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxl
ckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAvKiBU
eXBlUHJvZmlsZXJMb2cuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkUzMTM2MTM0RkYwQTYwMEFG
QURCNSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKaW5kZXggNjM5ZDA0OGIy
N2FlZjk3ZWQzZmMyZDJlMDg4ZjVlYjYzMzA5YTVhNi4uNTdlNzNlM2M3YTNlNzExODhlYTY2YzIx
NTA0ZTRjN2JhNjA4ZmNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIE92ZXJsYXlDaGFubmVsOwogCiBlbnVtIGNs
YXNzIEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gewogICAgIEluc3BlY3RlZFRhcmdldERlc3Ry
b3llZCwKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRvbWFpbk5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlD
aGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b24gcmVhc29uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
UmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmNwcAppbmRleCA0MDEwOGViNDliNGU5YmRkNDgzM2Y1YThmYWQzNTM3ZWJi
ZGJhYjRjLi4xODdkZDY2ZDEyZWYzYmZkMTJjNzUxYTM0ODI5YjEzMGFjM2FhYzMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQCB2b2lkIEluc3BlY3RvckFnZW50UmVn
aXN0cnk6OmFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFz
ZQogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvckFnZW50UmVnaXN0cnk6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hh
bm5lbCogb3ZlcmxheUNoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWdlbnRzLnNpemUo
KTsgaSsrKQotICAgICAgICBtX2FnZW50c1tpXS0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KGZyb250ZW5kQ2hhbm5lbCwgYmFja2VuZERpc3BhdGNoZXIpOworICAgICAgICBtX2FnZW50c1tp
XS0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgb3ZlcmxheUNo
YW5uZWwsIGJhY2tlbmREaXNwYXRjaGVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVh
c29uIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKaW5kZXggOGI3NzU3ZjhjYTU1YjkyMzNmNWVkY2Nj
OGMzYmIyOWY3ZGY2NmNlZS4uYTljYTU3NDUzMGNlMjE0MDJkNTgxZjFmMjgzNmEwN2QwZDA2ZDFh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2U7CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK2NsYXNzIE92ZXJsYXlD
aGFubmVsOwogZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOwogCiBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IHsKQEAgLTQzLDcgKzQ0LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFn
ZW50QmFzZT4pOwogCi0gICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsKKyAgICB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24gcmVhc29uKTsKICAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDY1NTNkNTZhY2ZlYjY1OTYz
MDJhZWY2M2M2MWNhNDVmYTljMjU1YTAuLjY3N2FmZWE2MWEwNDI0ZjU1NWFjZjRiYWNiMGExNzEy
MWVjMjRlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwogICAgIG1faW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250ZW5k
Q2hhbm5lbCk7CiAKLSAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJv
bnRlbmRDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBt
X2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBudWxs
cHRyLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIG1faW5zcGVjdG9yQWdlbnQtPmFj
dGl2YXRlRXh0cmFEb21haW5zKG1fYWdlbnRzLmV4dHJhRG9tYWlucygpKTsKQEAgLTIzMiw3ICsy
MzIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6YXBwZW5kRXh0
cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogICAgIFN0cmluZyBkb21haW5OYW1lID0g
YWdlbnQtPmRvbWFpbk5hbWUoKTsKIAogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7Cisg
ICAgICAgIGFnZW50LT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwsIG51bGxwdHIsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkp
OwogCiAgICAgbV9hZ2VudHMuYXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWdlbnQpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9PdmVybGF5Q2hhbm5l
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9PdmVybGF5Q2hhbm5lbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwYTE5MGU2MjQxYWMwNzA3YzM3ZjhmN2MwZjY0ZWViOGE4YWM5MjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL092ZXJsYXlDaGFu
bmVsLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIE92
ZXJsYXlDaGFubmVsX2gKKyNkZWZpbmUgT3ZlcmxheUNoYW5uZWxfaAorCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBPdmVy
bGF5Q2hhbm5lbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+T3ZlcmxheUNoYW5uZWwoKSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb092ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vICFk
ZWZpbmVkKE92ZXJsYXlDaGFubmVsX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZTYyZWMyZWMw
NGIwYThiM2I2YWNhZjIxMGQ5ODg2ODdlZmU0MThhMC4uNGJiZmNlYzNhNzNlMjAyZWQ4OGY5YTIy
NTNiMzZhNWY1ZTEwZmMzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBJ
bnNwZWN0b3JBZ2VudDo6fkluc3BlY3RvckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6
T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAppbmRleCAz
OGM5ZWVmMjc3MzFhNjhkZjAwODk1YTc1ZDc1ZTZmNTg1YjFkMzRjLi44M2I1Yzg2MjI1ZTkyY2Rm
NmZiNjMxYWM4ODgwMTA2ODQxOTliNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIEluc3BlY3RvckFnZW50KEluc3BlY3RvckVudmlyb25tZW50Jik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uIHJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cAppbmRleCAwNTA1MTE5MzE3ZTNhMjE0ZGI4ODkxZTk5MjdiNzZkMTc0MjU3YWZlLi4wMjRhZDlj
Mjg5NWNmMjE0MmIyMGZlNDZjMTRlNzUxZTM1NzJmYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp+SW5z
cGVjdG9yQ29uc29sZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNv
bnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNzI2MmMwNzVhZDIwMjEyMWI1M2MwYjVi
NjM4MmFiZjhhYzE2ZmYxZC4uMmQ3MWI5ZDljYWExY2ZjZTk0MDM5YjhjMmE3YjExNzUyN2MyZDcx
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGlj
OgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFi
bGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggM2FlNzYwOWNhZTIwYjdhZjBhZjM2MzczNjliN2Y0MmM3NDgyZmQyMC4uZGRkZTEw
NzhjMjI0YjlmZGIyMzgzOTk1ODVlYjRkYjAwN2VjNjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
fkluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5u
ZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCmluZGV4IDliZTMyMzMxNTEwOTQ1NTg3OGIwMWMzNGIwNjE4YzU2Mzgx
NDQ1MmMuLjE1YzkxY2VmMGE1NmVkYWQxMmY1NDVmM2U2M2I2ZTk0YzM3NDFkNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuY3BwCmluZGV4IGRjNDRjYzdmZjYxMjExYjY3NzI2YjMwY2JiNGY0YTBjYjM4ODE3ZjEu
LjBhOWQ4MDEyOGM2MjRlNWU5MmVjZjUwYWFkNjNjMWVhMGViYWE1YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW4KIHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5oCmluZGV4IGM2NTA2OGU2ODllYzQ1M2EzYzI1NDNhNmY4ZDQ4NTdl
ZTA4Y2Y3OTcuLjAzM2EyNzBiZmI4ZTc5ODM0MWExM2JlMGZiNzJiMzE4OTAzY2ExMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JSdW50
aW1lQWdlbnQgewogcHVibGljOgogICAgIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVj
dGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgSlND
OjpWTSYgZ2xvYmFsVk0oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2hhbm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlD
aGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU5MjJkYzI0YzBlNzY3YjYxNjUwOTU5NmEzYTBkOTgwZTg3
MzhjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2hhbm5lbC5oCkBAIC0wLDAgKzEsNCBAQAorI2lm
bmRlZiBXZWJDb3JlX0ZXRF9PdmVybGF5Q2hhbm5lbF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX092
ZXJsYXlDaGFubmVsX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PdmVybGF5Q2hhbm5lbC5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNjg3ZWEyMjkwOWQ0M2ZlYTkxODVkNzY0NzE0YjllNzliYWRhZDg4Mi4u
NzlhYWU1MGZkNTI3MDNhYzg3ZjllOWUzZWI0YmM0YTI3NzZjNGEzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTU2NSw2ICs1
NTY1LDcgQEAKIAkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCAqLzsgfTsKIAkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0MDBEMTA5
MThGMUM4RjYwMDkwRDg2MyAvKiBFdmVudExvb3BJbnB1dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDAwRDEwODE4RjFDOEY2MDA5MEQ4NjMgLyog
RXZlbnRMb29wSW5wdXQuY3BwICovOyB9OworCQlDNEIyQkE0OTFBNkY1MjRGMDA5MDEyRUUgLyog
SW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzRCMkJBNDgxQTZGNTI0RjAwOTAxMkVFIC8qIEluc3BlY3Rvck92ZXJs
YXlDbGllbnQuaCAqLzsgfTsKIAkJQzRDRDYyOUExODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25h
cHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi87
IH07CiAJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRDRDYyOTkxODM4
Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwRDBFODMwRkY0MjcyOTAwQUMyNjQ0IC8q
IFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1MEQwRTgxMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMDI4
LDYgKzEzMDI5LDcgQEAKIAkJQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNFNjFD
NjUzQTY0ODA3QTgzRTc2RkI4IC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNDAwRDEwODE4RjFDOEY2MDA5MEQ4NjMgLyog
RXZlbnRMb29wSW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXZlbnRMb29wSW5wdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNEIyQkE0
ODFBNkY1MjRGMDA5MDEyRUUgLyogSW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFt
ZVNuYXBzaG90dGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0Q0Q2Mjk5
MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNTBEMEU4MTBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTMwNSw2ICsxNTMwNyw3IEBACiAJCQkJNTA0
QUFDQ0MxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5kZXIuaCAqLywKIAkJCQk3
QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8sCiAJCQkJ
N0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuaCAqLywKKwkJCQlD
NEIyQkE0ODFBNkY1MjRGMDA5MDEyRUUgLyogSW5zcGVjdG9yT3ZlcmxheUNsaWVudC5oICovLAog
CQkJCUE1MTgyMjU0MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3Mg
Ki8sCiAJCQkJN0E3MjU2QjkxNUVCOUY1QjAwNzMyM0E3IC8qIEluc3BlY3Rvck92ZXJsYXlQYWdl
Lmh0bWwgKi8sCiAJCQkJQTUxODIyNTUxN0UyQTBENDAwQTlCQTFEIC8qIEluc3BlY3Rvck92ZXJs
YXlQYWdlLmpzICovLApAQCAtMjUwMDQsNiArMjUwMDcsNyBAQAogCQkJCTFBRTJBQjIyMEExQ0U2
M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RTJBQjI0MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUUyQUIyNjBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDNEIyQkE0OTFBNkY1MjRGMDA5MDEyRUUgLyogSW5zcGVjdG9y
T3ZlcmxheUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdCMEQwQTE5RDYwNjAwN0ZC
OEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUIyODBB
MUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTWFwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM0OTFCNzkwQzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYTcwNGNkOTg0ZWE4ZDM4ZWYwZjFj
NWVlMjkwZGM1Mzg2YThiNWYwYy4uMTQwMDc1YzQ5Y2U3YjRlODA4NmZmYTY0MTA3YjM1OTk3ZWEx
MzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW4KIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCAwYjgx
MzM1ZjUxY2UwYTZjOGY1MGI2Y2QzNzQ0YWQ2N2UwM2M5MzNkLi5kYzgyOGUyZDg3N2EwY2VhNjQx
ZjkxMjM5NTllMTliMzc0MDgzNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNo
ZVN0YXR1cyhGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKaW5kZXggZGUxMTdjMTBiYTRmMzQ0YmM3MzFhMWQ5ZjQ3OTAxMGQ4ZDg1OTBi
Yy4uM2Q2OGRhYjY2OGM0NGMyZjgyMzdiY2IyOGEzNjU4YjJhZGU3YWU1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0zNTEsNyArMzUx
LDcgQEAgSW5zcGVjdG9yQ1NTQWdlbnQ6On5JbnNwZWN0b3JDU1NBZ2VudCgpCiAgICAgcmVzZXQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWws
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJs
YXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaAppbmRleCA4ODY2NGM4OTYwZTNmY2JmZmMyODZiY2M1OWY5NDIxYmViZTUwYWMz
Li4xMGJmZDU0ZjJmYWI0Nzk4YzM5YWJhYzBkZTViZmQxNjI1ZmFkMDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtOTEsNyArOTEsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxl
Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWU3ZDhmYWM0NjVkMWU1Y2VkZTIwZTJjMThlZGU1
ZDVmODEwNjExZS4uYzIwMjQyNzE1ZDM5NDE1MTU4NDQwNjg0ZjhjZTFmZTA5N2RkOTAzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtMzIsNiArMzIs
MTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgT3ZlcmxheUNoYW5uZWw7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwpAQCAtNDYsOCArNTAsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5k
KEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6Ok92ZXJs
YXlDaGFubmVsKiBvcGVuSW5zcGVjdG9yT3ZlcmxheSgpID0gMDsKKwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zy
b250ZW5kVG9Gcm9udCgpID0gMDsKKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFp
bkZyYW1lKEZyYW1lKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDcyZjI5NDY4Y2VhZGI0ZWQ3NWYzZGQ2YWUzMzg3OGI5NDNjNGVhMzAuLjAwM2ZjMjJjZjM4
OWI0YzliZWU1NTViZTUzNjQ2YTZlMDBkZTMyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTI0MSwxMCArMjQxLDEyIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFuCiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGlz
QXV0b21hdGljSW5zcGVjdGlvbjsKIAorICAgIAogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsID0gZnJvbnRlbmRDaGFubmVsOwogICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgbV9vdmVybGF5Q2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yT3Zl
cmxheSgpOwogCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250
ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9h
Z2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9vdmVy
bGF5Q2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygqbV9p
bnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250
ZW5kQ3JlYXRlZCgpOwpAQCAtMjY1LDYgKzI2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQog
ICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKICAgICBt
X2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAgICAgbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwgPSBudWxscHRyOworICAgIG1fb3ZlcmxheUNoYW5uZWwgPSBudWxscHRyOwog
CiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMjg2LDEzICsyODks
MTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAoIWVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KQorICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgewogICAgICAgICBtX2luc3Bl
Y3RvckNsaWVudC0+YnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
aWYgKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0
b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkgewotICAgICAgICAgICAgYm9v
bCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbm5lY3RGcm9u
dGVuZChmcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJv
bnRlbmQodGhpcykpIHsKKyAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxz
ZTsKKyAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGIyNjQyMmI3NzUzZTBjNDI2ZjUwOTk1MTU2Y2RmMDNk
NTQ5ZjNlMjEuLmQ4YzIxYzk3NTMyNWI3YTBiN2UwMmY0MjAyMGRlNzc4NWY3NTYzNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDYs
NiArNDYsNyBAQCBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OworY2xhc3MgT3ZlcmxheUNoYW5uZWw7CiAKIG5hbWVzcGFjZSBQcm90b2NvbCB7
CiBuYW1lc3BhY2UgT3ZlcmxheVR5cGVzIHsKQEAgLTE1NCw2ICsxNTUsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworICAgIEluc3BlY3Rvcjo6T3Zl
cmxheUNoYW5uZWwqIG1fb3ZlcmxheUNoYW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBt
X2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBtX2luc3BlY3RvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDE3ZWI2ODE4MTkxMDMzODRmNTBmMWZlMjI1OWUwMDJk
YzYzMjljOGMuLjVkNjg4MjA2MjJiYmI2MzgwZDNhZjZhYjgwNjM0ZDYxZDhiY2I3NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjIx
LDcgKzIyMSw3IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogICAg
IEFTU0VSVCghbV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6
T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCmluZGV4IGY4Mzk3OTJiYjI1YzlhNWIzN2Y3MDU0NzJmYzQ2OGEzNzE2
MTYwMTguLjg5YmE5MzJiNmEwYWQ4YWZjMzkyNmZhNTZmZjBiNDFjZWY4NGMwYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMDksNyArMTA5
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0IEV4
Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNw
cAppbmRleCAzZDBiYmFjNTYxYjhlYjE0NDc0NzI4MmUwODg0ZDcwNGE1YmNjYjI3Li45NDUyODI1
ZTM1MTNkM2VjMTliY2YxODQ3N2EwNTlkZTViZjlhZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDIs
NyArMTAyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAg
ICBjbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IDQ2
NmYwM2U1NzFjZjg2NzA0M2RiY2I1YmU4NGI2NWZhYzdkYWQzOTEuLjliMzMzMzkyNzJkODk4Y2E2
NTQ3NDg1ODhlOWIwYmIzOTk5YjQxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsK
ICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29u
c3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
Y2FyZEFnZW50KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZmIwODlhMzhmODMyMjZkNTlj
ZTUyODZmYmUwYTUyODhiOTA1NzkxOC4uZDQ3NGM0MTA2ZGE5ZTFhOTkwODY2NDFmNWJmNTk1MTMw
OGMzNjA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkKICAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMgPSBudWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCmluZGV4IDM2MWI2MTNjYzFkNzU3ZDQ0NjZkZjI4OWY3ZTk2ZmFlZDBhMmFjNWQu
LjkxOWFlZjYzMGY2ZmFjODk5NTc2ZjQzYjgxM2NjMjlkMDM0MGI4NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cAppbmRleCA0NGRhYTg2NTc2N2UzY2I3MjRkYTk3NGEwMjhjYjlkZTI2ZGY4MjUzLi44ZDA0Mjk4
ZmRmYjA4YjA4YjMyZmUxNDQ2ZTQ1ZDE3NjFmMDM0OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0yMjIsNyArMjIy
LDcgQEAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKQog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChudWxs
cHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQor
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5l
bCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCAyZTg2ODk3
NWYxNmZjYjE2NzhkYmRiM2RhY2YyMWUxN2NlZDE4Y2NlLi5mNjA1OGMzNDBmMTI2NmNmYzBkNzNk
YTA5NGU2NDMzM2IyYjdlNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IEluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAg
IHZpcnR1YWwgfkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2Vz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcAppbmRleCA3YTY0OTVmMTM0NDE3NmY0MTE0ODExMWFhNGEwNmVhNmY4NDNiZDll
Li41ZjcxYWIzZWUyMjk4ZWEyNGZjNTAzNTYyYmFlYWQ0ZTczMWExYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAg
LTU3NSw3ICs1NzUsNyBAQCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6fkluc3BlY3RvckluZGV4
ZWREQkFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IDc3MjBiM2E5
YWFlYzk5ZGIyMDdlOWM5MzQ0OTVjNjlmNTc3ZjEzMjEuLmE0MDZkZWI1Njk4NzJlNWIyOGRhZTVm
MGEwYmY0M2VjMWQ5MTdiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1l
bmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcAppbmRleCBjNTkwMmJhNzc3YjAzNjBlMTAxYjdhNWYwMWViYTI4Mjg1NTZjMzlh
Li5hMTRmNzI0NmEzMjJkOWQ3NDAyZDZhYmFiN2EwNzgxMDBlZTE1ODc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAg
LTU2LDcgKzU2LDcgQEAgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVGcm9udGVuZERpc3Bh
dGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaAppbmRleCAxNjZlOWE2MThmMTVjMzUxYTA5MmEyZjBhY2ZjM2Q0MDNhMGI3Y2Nh
Li41MzFjOGQ0Y2M2MmRjZjg1ZmJkZjRiN2NhNDM5OThkMzFlYTVkZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJlZUFn
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVzZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI0OWE0ZmYzNmYxYjI2YzUwNDJm
YjM5MDY1ZDg5NjczOTA4MTk1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Q2xpZW50LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yT3ZlcmxheUNsaWVudF9oCisj
ZGVmaW5lIEluc3BlY3Rvck92ZXJsYXlDbGllbnRfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JPdmVybGF5Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JPdmVybGF5Q2xpZW50KCkgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgb3ZlcmxheUxvYWRlZCgpID0gMDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA5MWM3MzgwMmY1ZTcw
NDAzMDg0ZjAzZDRmM2Y5MmFhMzlmNGJlOGI2Li4zYTU0NmM1NmI5NTBjNzdmMjliN2NmNzMzNTE0
MTAyMzQzZDRlNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5z
cGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
CiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92
ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYmZkNTc3NTE3NzBjZTc2MGJkN2NjZDM4OWFhMmJjZGQ1
NDA1N2UxOC4uMzRiYjNjYjhiMTIyZDhmYjk4OGU3NGVjYzRkMmE5MDg4ZWJmNGJlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTM5LDcg
KzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVk
KTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDcm9zcy1hZ2VudHMgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNw
cAppbmRleCA2ZWNkN2MwZmJlZmI1MmQ2MGJlYjEyZWQxYmMyMjliMDlmMGZmOWRmLi42ZGE3MmFi
NmE1YTZmMWM2MjhkNjA3MzNiNzE1ODhkNTU0NGZkNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBXZWJDb3JlOjpTZXNzaW9uU3RhdGUgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnNlc3Npb25TdGF0
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc2Vzc2lvblN0
YXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXBsYXlGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3RvclJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlcGxheUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVw
bGF5QWdlbnQuaAppbmRleCAzNjMyYzRmNDEzZTRjZjJkMGMzNDllMmZjMmUyMzdiNTFkMGMxMjM1
Li5mOWEwZGNjNTVjNDNhY2Q2MDQ1YjJjMTc3NzIzMmNkZmU2ZGEwOWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvclJlcGxheUFn
ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRl
eCA0OTIyZjMxODk5NmM1ODg0NmU2ZWZkYjRkNDE2MTYwODhmZmFhMmQwLi40Yzk3OTk5ZmM1ZWY0
MTE4NjQ1ZTIzNTg3NWQyZjM3NDQzNmQ4NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgKaW5kZXggZTg0NjU5MWIxZDRmNTI5MTIzMDI3YzBjYWE1YzY3Nzk1OTdkM2QxNS4uNGE0
MTA2OGJkMzg2MDgxZjk5Y2ZkNzZjNDU1MTBiMjgxYjZhN2QzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03OSw3ICs3OSw3
IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
IGNhbGxiYWNrcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcAppbmRleCBiOTIyYzc4Y2ZmOTZlYTQzZmQzOTkwYmI2YjhkN2YwMjg1
NTkyNmI5Li44NTA3NjlkMjhkZWFkZTFiNDdjZTkxYmJiNjAxMWFjMDJiODFmMGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclRpbWVsaW5l
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRl
eCBlYTQ0ODViMzJkMzJjZDYzYTc5ZTJhZmEzZmY3ODVmZDFhZDljNjM0Li4xMmU0MDMxZTYzNzlh
NDc5YzVmY2VlYjE3MDgwOTA4ODI0ZjY1MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5z
cGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydChF
cnJvclN0cmluZyYsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwCmluZGV4IDNiYjE0MDNlYjBiZTY3NWY5ODk0MmU0MGM4OWU1NTI5YTQ3YjAxNzIuLmFj
YjkzNGI3NzQ1NzVhY2QwZDExMWEwNDkxMWJkYjZjMDFhZGJhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMTE0LDcgKzEx
NCw3IEBAIEluc3BlY3RvcldvcmtlckFnZW50Ojp+SW5zcGVjdG9yV29ya2VyQWdlbnQoKQogICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yV29ya2VyQWdlbnQobnVsbHB0cik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpP
dmVybGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNjg2OWQ1YTY4MDRmNzI5ODBiMDY3MmIw
OWI2Y2EzY2I4ODAyZmFmYi4uZTlhOTBhZGRhODA0YjFiYzExMDJmNzM5N2E2OTU2YjY2YzkwMDhm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3Rvcldvcmtl
ckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JXb3Jr
ZXJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDdhN2I3
NjI0MjU5ZmJjYjYyNjlmMTI1ZTk2YWU1ZTJhNmQ2YmU2NTQuLmQxYWFlYjJhYzBjZGVlYjkwMmI5
NmM1YmE1MmM5NjQ2N2I5YjgyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6UGFn
ZVJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdl
ciwKIHsKIH0KIAotdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBQ
YWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpPdmVy
bGF5Q2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmgKaW5kZXggZjgyY2ZjMDEwYzcyNjkyM2NkMzkzYzk2YjgwMzNmZjk3
Mjg5Mzg4Yi4uMmE1NGI0NTAxZDAxM2UxOTU4NjMxZGIwYjk5MThmZmU3NTM2YmI0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC01Niw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICBQYWdlUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiwgUGFnZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgflBh
Z2VSdW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggNzc3Y2Y3MjMzYWQ3MmU0MjZmMThiNDgwZmZiZTdkMjk4ZDE0ZWNl
Yy4uOWE1MjMyMzkxYzYyNWMyYzdiODUyZWNlNWI5N2FlYWQ3ZGQ1MTRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKCkKICAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2Zy
b250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUluc3BlY3RvclByb3h5PihtX3dv
cmtlckdsb2JhbFNjb3BlKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7Ci0gICAgbV9h
Z2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgp
LCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCksIG51bGxwdHIsIG1fYmFja2Vu
ZERpc3BhdGNoZXIuZ2V0KCkpOwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NzY5MDQ5ZTMyMmY1YTY1OTk0M2FhNjcwYjAyYmQ5MjUzMmQzYjc4Yy4uM2ViMzI2MjZiODQ0ZGE2
MTJiZDQzMWQyOGMxM2RlZjUyZjI5OWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV29ya2VyUnVudGlt
ZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmEKIHsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgV29ya2Vy
UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Ok92ZXJsYXlDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggODE0YzY2ZDZiYzlkNDYxODMxOTE0YTliZmI0MWUy
ODgyZTFjMGQzNy4uNzEyODFiZmEwZDIyODkzNTM1NTVkZTAyYzI4Njk4YmVlMjA5ZmUxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgV29ya2VyR2xvYmFsU2NvcGUqKTsKICAgICB2aXJ0dWFsIH5X
b3JrZXJSdW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqLCBJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggZGNjMzRkZGMz
ZjE1OWU2MjhkNjU3OWZhNDRmM2YwYTYxYzlhZjQzYS4uYjY0NmQ0ZDFiYzM3MThiYjA4MDRlYzc1
NjAyZDJmZDNiMmMxMTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAt
NTk0LDcgKzU5NCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0
cm95ZWQoKSBvdmVycmlkZSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCog
b3Blbkluc3BlY3Rvck92ZXJsYXkoKSB7IHJldHVybiBudWxscHRyOyB9CisKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL092ZXJsYXkuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL092ZXJsYXkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWEwMGYxODU0MDhhNTA0Y2ExZjRlZTM4YzNlYzZlNzUzMjI2OGYxNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT3ZlcmxheS5q
cwpAQCAtMCwwICsxLDU2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK0luc3BlY3Rvck92ZXJsYXkgPSB7fTsKKwor
SW5zcGVjdG9yT3ZlcmxheS5sb2FkZWQgPSBmdW5jdGlvbigpCit7Cit9CisKK2NvbnN0IGxpZ2h0
R3JpZENvbG9yID0gInJnYmEoMCwwLDAsMC4yKSI7Citjb25zdCBkYXJrR3JpZENvbG9yID0gInJn
YmEoMCwwLDAsMC41KSI7Citjb25zdCB0cmFuc3BhcmVudENvbG9yID0gInJnYmEoMCwgMCwgMCwg
MCkiOworY29uc3QgZ3JpZEJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
NikiOworCisvLyBDU1MgUmVnaW9ucyBoaWdobGlnaHQgY29sb3JzLgorY29uc3QgaGlnaGxpZ2h0
ZWRSZWdpb25CYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgxMjcsIDIxMSwgMjQ4LCAwLjEpIjsKK2Nv
bnN0IHJlZ2lvbkJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDEyNywgMjExLCAyNDgsIDAuNDUpIjsK
K2NvbnN0IHJlZ2lvblN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1LCAwLjg1KSI7CisK
Ky8vIENTUyBSZWdpb25zIGNoYWluIGhpZ2hsaWdodCBjb2xvcnMuCitjb25zdCByZWdpb25MaW5r
Qm94QmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43MSkiOworY29uc3Qg
cmVnaW9uTGlua0JveFN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1LCAwLjg1KSI7Citj
b25zdCByZWdpb25DaGFpblN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1LCAwLjg1KSI7
CisKKy8vIENTUyBSZWdpb24gbnVtYmVyIHN0eWxlLgorY29uc3QgcmVnaW9uTnVtYmVyRm9udCA9
ICJib2xkIDQwcHQgc2Fucy1zZXJpZiI7Citjb25zdCByZWdpb25OdW1iZXJGaWxsQ29sb3IgPSAi
cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpIjsKK2NvbnN0IHJlZ2lvbk51bWJlclN0cm9rZUNvbG9y
ID0gInJnYig2MSwgMTI3LCAyMDQpIjsKKworLy8gQ1NTIFNoYXBlcyBoaWdobGlnaHQgY29sb3Jz
Citjb25zdCBzaGFwZUhpZ2hsaWdodENvbG9yID0gInJnYmEoOTYsIDgyLCAxMjcsIDAuOCkiOwor
Y29uc3Qgc2hhcGVNYXJnaW5IaWdobGlnaHRDb2xvciA9ICJyZ2JhKDk2LCA4MiwgMTI3LCAwLjYp
IjsKKworY29uc3QgcGFpbnRSZWN0RmlsbENvbG9yID0gInJnYmEoMjU1LCAwLCAwLCAwLjUpIjsK
KworZnVuY3Rpb24gZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKG1lc3NhZ2UpCit7CisgICAg
dmFyIHBhdXNlZEluRGVidWdnZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGF1c2VkLWlu
LWRlYnVnZ2VyIik7CisgICAgcGF1c2VkSW5EZWJ1Z2dlci50ZXh0Q29udGVudCA9IG1lc3NhZ2U7
CisgICAgcGF1c2VkSW5EZWJ1Z2dlci5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOworICAg
IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiZGltbWVkIik7Cit9CisKK2Z1bmN0aW9uIF9k
cmF3UmVnaW9uTnVtYmVyKHF1YWQsIG51bWJlcikKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAg
ICB2YXIgbWlkUG9pbnQgPSBfcXVhZE1pZFBvaW50KHF1YWQpOworICAgIGNvbnRleHQuZm9udCA9
IHJlZ2lvbk51bWJlckZvbnQ7CisgICAgY29udGV4dC50ZXh0QWxpZ24gPSAiY2VudGVyIjsKKyAg
ICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICJtaWRkbGUiOworICAgIGNvbnRleHQuZmlsbFN0eWxl
ID0gcmVnaW9uTnVtYmVyRmlsbENvbG9yOworICAgIGNvbnRleHQuZmlsbFRleHQobnVtYmVyLCBt
aWRQb2ludC54LCBtaWRQb2ludC55KTsKKyAgICBjb250ZXh0LnN0cm9rZVdpZHRoID0gNDsKKyAg
ICBjb250ZXh0LnN0cm9rZVN0eWxlID0gcmVnaW9uTnVtYmVyU3Ryb2tlQ29sb3I7CisgICAgY29u
dGV4dC5zdHJva2VUZXh0KG51bWJlciwgbWlkUG9pbnQueCwgbWlkUG9pbnQueSk7CisgICAgY29u
dGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIHF1YWRUb1BhdGgocXVhZCkKK3sKKyAgICBj
b250ZXh0LmJlZ2luUGF0aCgpOworICAgIGNvbnRleHQubW92ZVRvKHF1YWRbMF0ueCwgcXVhZFsw
XS55KTsKKyAgICBjb250ZXh0LmxpbmVUbyhxdWFkWzFdLngsIHF1YWRbMV0ueSk7CisgICAgY29u
dGV4dC5saW5lVG8ocXVhZFsyXS54LCBxdWFkWzJdLnkpOworICAgIGNvbnRleHQubGluZVRvKHF1
YWRbM10ueCwgcXVhZFszXS55KTsKKyAgICBjb250ZXh0LmNsb3NlUGF0aCgpOworICAgIHJldHVy
biBjb250ZXh0OworfQorCitmdW5jdGlvbiBkcmF3T3V0bGluZWRRdWFkKHF1YWQsIGZpbGxDb2xv
ciwgb3V0bGluZUNvbG9yKQoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQubGlu
ZVdpZHRoID0gMjsKKyAgICBxdWFkVG9QYXRoKHF1YWQpLmNsaXAoKTsKKyAgICBjb250ZXh0LmZp
bGxTdHlsZSA9IGZpbGxDb2xvcjsKKyAgICBjb250ZXh0LmZpbGwoKTsKKyAgICBpZiAob3V0bGlu
ZUNvbG9yKSB7CisgICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBvdXRsaW5lQ29sb3I7Cisg
ICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CisgICAgfQorICAgIGNvbnRleHQucmVzdG9yZSgpOwor
fQorCitmdW5jdGlvbiBwYXRoQ29tbWFuZChjb250ZXh0LCBjb21tYW5kcywgbmFtZSwgaW5kZXgs
IGxlbmd0aCkgeworICAgIGNvbnRleHRbbmFtZV0uYXBwbHkoY29udGV4dCwgY29tbWFuZHMuc2xp
Y2UoaW5kZXggKyAxLCBpbmRleCArIGxlbmd0aCArIDEpKTsKKyAgICByZXR1cm4gaW5kZXggKyBs
ZW5ndGggKyAxOworfQorCitmdW5jdGlvbiBkcmF3UGF0aChjb250ZXh0LCBjb21tYW5kcywgZmls
bENvbG9yLCBvdXRsaW5lQ29sb3IpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4
dC5iZWdpblBhdGgoKTsKKworICAgIHZhciBjb21tYW5kc0luZGV4ID0gMDsKKyAgICB2YXIgY29t
bWFuZHNMZW5ndGggPSBjb21tYW5kcy5sZW5ndGg7CisgICAgd2hpbGUoY29tbWFuZHNJbmRleCA8
IGNvbW1hbmRzTGVuZ3RoKSB7CisgICAgICAgIHN3aXRjaChjb21tYW5kc1tjb21tYW5kc0luZGV4
XSkgeworICAgICAgICAvLyAxIHBvaW50CisgICAgICAgIGNhc2UgJ00nOgorICAgICAgICAgICAg
Y29tbWFuZHNJbmRleCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCAibW92ZVRvIiwg
Y29tbWFuZHNJbmRleCwgMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gMSBwb2lu
dAorICAgICAgICBjYXNlICdMJzoKKyAgICAgICAgICAgIGNvbW1hbmRzSW5kZXggPSBwYXRoQ29t
bWFuZChjb250ZXh0LCBjb21tYW5kcywgImxpbmVUbyIsIGNvbW1hbmRzSW5kZXgsIDIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIDMgcG9pbnRzCisgICAgICAgIGNhc2UgJ0MnOgor
ICAgICAgICAgICAgY29tbWFuZHNJbmRleCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRz
LCAiYmV6aWVyQ3VydmVUbyIsIGNvbW1hbmRzSW5kZXgsIDYpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIC8vIDIgcG9pbnRzCisgICAgICAgIGNhc2UgJ1EnOgorICAgICAgICAgICAgY29t
bWFuZHNJbmRleCA9IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCAicXVhZHJhdGljQ3Vy
dmVUbyIsIGNvbW1hbmRzSW5kZXgsIDIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8v
IDAgcG9pbnRzCisgICAgICAgIGNhc2UgJ1onOgorICAgICAgICAgICAgY29tbWFuZHNJbmRleCA9
IHBhdGhDb21tYW5kKGNvbnRleHQsIGNvbW1hbmRzLCAiY2xvc2VQYXRoIiwgY29tbWFuZHNJbmRl
eCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGNvbW1hbmRzSW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRleHQuY2xvc2VQ
YXRoKCk7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSBmaWxsQ29sb3I7CisgICAgY29udGV4dC5m
aWxsKCk7CisKKyAgICBpZiAob3V0bGluZUNvbG9yKSB7CisgICAgICAgIGNvbnRleHQubGluZVdp
ZHRoID0gMjsKKyAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IG91dGxpbmVDb2xvcjsKKyAg
ICAgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICB9CisKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsK
K30KKworZnVuY3Rpb24gZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKHF1YWQsIGNsaXBRdWFkLCBm
aWxsQ29sb3IpCit7CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGZpbGxDb2xvcjsKKyAgICBjb250ZXh0
LnNhdmUoKTsKKyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDA7CisgICAgcXVhZFRvUGF0aChxdWFk
KS5maWxsKCk7CisgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAiZGVzdGlu
YXRpb24tb3V0IjsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICJyZWQiOworICAgIHF1YWRUb1Bh
dGgoY2xpcFF1YWQpLmZpbGwoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rp
b24gcXVhZEVxdWFscyhxdWFkMSwgcXVhZDIpCit7CisgICAgcmV0dXJuIHF1YWQxWzBdLnggPT09
IHF1YWQyWzBdLnggJiYgcXVhZDFbMF0ueSA9PT0gcXVhZDJbMF0ueSAmJgorICAgICAgICBxdWFk
MVsxXS54ID09PSBxdWFkMlsxXS54ICYmIHF1YWQxWzFdLnkgPT09IHF1YWQyWzFdLnkgJiYKKyAg
ICAgICAgcXVhZDFbMl0ueCA9PT0gcXVhZDJbMl0ueCAmJiBxdWFkMVsyXS55ID09PSBxdWFkMlsy
XS55ICYmCisgICAgICAgIHF1YWQxWzNdLnggPT09IHF1YWQyWzNdLnggJiYgcXVhZDFbM10ueSA9
PT0gcXVhZDJbM10ueTsKK30KKworZnVuY3Rpb24gZHJhd0d1dHRlcigpCit7CisgICAgdmFyIGZy
YW1lV2lkdGggPSBmcmFtZVZpZXdGdWxsU2l6ZS53aWR0aDsKKyAgICB2YXIgZnJhbWVIZWlnaHQg
PSBmcmFtZVZpZXdGdWxsU2l6ZS5oZWlnaHQ7CisKKyAgICBpZiAoIWZyYW1lV2lkdGggfHwgZG9j
dW1lbnQuYm9keS5vZmZzZXRXaWR0aCA8PSBmcmFtZVdpZHRoKQorICAgICAgICByaWdodEd1dHRl
ci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpOworICAgIGVsc2UgeworICAgICAgICBy
aWdodEd1dHRlci5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKKyAgICAgICAgcmlnaHRHdXR0ZXIu
c3R5bGUubGVmdCA9IGZyYW1lV2lkdGggKyAicHgiOworICAgIH0KKworICAgIGlmICghZnJhbWVI
ZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgPD0gZnJhbWVIZWlnaHQpCisgICAg
ICAgIGJvdHRvbUd1dHRlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpOworICAgIGVs
c2UgeworICAgICAgICBib3R0b21HdXR0ZXIuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CisgICAg
ICAgIGJvdHRvbUd1dHRlci5zdHlsZS50b3AgPSBmcmFtZUhlaWdodCArICJweCI7CisgICAgfQor
fQorCit2YXIgdXBkYXRlUGFpbnRSZWN0c0ludGVydmFsSUQ7CisKK2Z1bmN0aW9uIHVwZGF0ZVBh
aW50UmVjdHMocGFpbnRSZWN0TGlzdCkKK3sKKyAgICB2YXIgY29udGV4dCA9IHBhaW50UmVjdHND
YW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0
LnNjYWxlKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyk7
CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBwYWludFJlY3RzQ2FudmFzLndpZHRoLCBw
YWludFJlY3RzQ2FudmFzLmhlaWdodCk7CisKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHBhaW50
UmVjdEZpbGxDb2xvcjsKKworICAgIGZvciAodmFyIHJlY3RPYmplY3Qgb2YgcGFpbnRSZWN0TGlz
dCkKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChyZWN0T2JqZWN0LngsIHJlY3RPYmplY3QueSwg
cmVjdE9iamVjdC53aWR0aCwgcmVjdE9iamVjdC5oZWlnaHQpOworCisgICAgY29udGV4dC5yZXN0
b3JlKCk7Cit9CisKK2Z1bmN0aW9uIHJlc2V0KHJlc2V0RGF0YSkKK3sKKyAgICB2YXIgZGV2aWNl
U2NhbGVGYWN0b3IgPSByZXNldERhdGEuZGV2aWNlU2NhbGVGYWN0b3I7CisgICAgdmFyIHZpZXdw
b3J0U2l6ZSA9IHJlc2V0RGF0YS52aWV3cG9ydFNpemU7CisgICAgd2luZG93LmZyYW1lVmlld0Z1
bGxTaXplID0gcmVzZXREYXRhLmZyYW1lVmlld0Z1bGxTaXplOworCisgICAgd2luZG93LmNhbnZh
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAgICB3aW5kb3cucGFpbnRS
ZWN0c0NhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWludHJlY3RzLWNhbnZhcyIp
OworCisgICAgd2luZG93LmNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICB3
aW5kb3cucmlnaHRHdXR0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmlnaHQtZ3V0dGVy
Iik7CisgICAgd2luZG93LmJvdHRvbUd1dHRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
b3R0b20tZ3V0dGVyIik7CisKKyAgICBjYW52YXMud2lkdGggPSBkZXZpY2VTY2FsZUZhY3RvciAq
IHZpZXdwb3J0U2l6ZS53aWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gZGV2aWNlU2NhbGVGYWN0
b3IgKiB2aWV3cG9ydFNpemUuaGVpZ2h0OworICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHZpZXdw
b3J0U2l6ZS53aWR0aCArICJweCI7CisgICAgY2FudmFzLnN0eWxlLmhlaWdodCA9IHZpZXdwb3J0
U2l6ZS5oZWlnaHQgKyAicHgiOworICAgIGNvbnRleHQuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3Is
IGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIC8vIFdlIGF2b2lkIGdldHRpbmcgdGhlIHRoZSBj
b250ZXh0IGZvciB0aGUgcGFpbnQgcmVjdHMgY2FudmFzIHVudGlsIHdlIG5lZWQgdG8gcGFpbnQs
IHRvIGF2b2lkIGJhY2tpbmcgc3RvcmUgYWxsb2NhdGlvbi4KKyAgICBwYWludFJlY3RzQ2FudmFz
LndpZHRoID0gZGV2aWNlU2NhbGVGYWN0b3IgKiB2aWV3cG9ydFNpemUud2lkdGg7CisgICAgcGFp
bnRSZWN0c0NhbnZhcy5oZWlnaHQgPSBkZXZpY2VTY2FsZUZhY3RvciAqIHZpZXdwb3J0U2l6ZS5o
ZWlnaHQ7CisgICAgcGFpbnRSZWN0c0NhbnZhcy5zdHlsZS53aWR0aCA9IHZpZXdwb3J0U2l6ZS53
aWR0aCArICJweCI7CisgICAgcGFpbnRSZWN0c0NhbnZhcy5zdHlsZS5oZWlnaHQgPSB2aWV3cG9y
dFNpemUuaGVpZ2h0ICsgInB4IjsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXVz
ZWQtaW4tZGVidWdnZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIikuaW5uZXJIVE1MID0g
IiI7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJkaW1tZWQiKTsKK30KKwor
ZnVuY3Rpb24gRE9NQnVpbGRlcih0YWdOYW1lLCBjbGFzc05hbWUpCit7CisgICAgdGhpcy5lbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKKyAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NOYW1lID0gY2xhc3NOYW1lOworfQorCitET01CdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRU
ZXh0Tm9kZSA9IGZ1bmN0aW9uKGNvbnRlbnQpCit7CisgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgpOworICAgIG5vZGUudGV4dENvbnRlbnQgPSBjb250ZW50OworICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKTsKKyAgICByZXR1cm4gbm9kZTsKK30KKworRE9N
QnVpbGRlci5wcm90b3R5cGUuYXBwZW5kU3BhbiA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgdmFsdWUp
Cit7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAg
c3Bhbi5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgc3Bhbi50ZXh0Q29udGVudCA9IHZhbHVl
OworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICByZXR1cm4gc3BhbjsK
K30KKworRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kU3BhbklmTm90TnVsbCA9IGZ1bmN0aW9u
KGNsYXNzTmFtZSwgdmFsdWUsIHByZWZpeCkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmFw
cGVuZFNwYW4oY2xhc3NOYW1lLCAocHJlZml4ID8gcHJlZml4IDogIiIpICsgdmFsdWUpIDogbnVs
bDsKK30KKworRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kUHJvcGVydHkgPSBmdW5jdGlvbihj
bGFzc05hbWUsIHByb3BlcnR5TmFtZSwgdmFsdWUpCit7CisgICAgdmFyIGJ1aWxkZXIgPSBuZXcg
RE9NQnVpbGRlcigiZGl2IiwgY2xhc3NOYW1lKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oImNz
cy1wcm9wZXJ0eSIsIHByb3BlcnR5TmFtZSk7CisgICAgYnVpbGRlci5hcHBlbmRUZXh0Tm9kZSgi
ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kU3BhbigidmFsdWUiLCB2YWx1ZSk7CisgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKGJ1aWxkZXIuZWxlbWVudCk7CisgICAgcmV0dXJuIGJ1aWxkZXIu
ZWxlbWVudDsKK30KKworRE9NQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kUHJvcGVydHlJZk5vdE51
bGwgPSBmdW5jdGlvbihjbGFzc05hbWUsIHByb3BlcnR5TmFtZSwgdmFsdWUpCit7CisgICAgcmV0
dXJuIHZhbHVlID8gdGhpcy5hcHBlbmRQcm9wZXJ0eShjbGFzc05hbWUsIHByb3BlcnR5TmFtZSwg
dmFsdWUpIDogbnVsbDsKK30KKworZnVuY3Rpb24gX3RydW5jYXRlU3RyaW5nKHZhbHVlLCBtYXhM
ZW5ndGgpCit7CisgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCA/
IHZhbHVlLnN1YnN0cmluZygwLCA1MCkgKyAiXHUyMDI2IiA6IHZhbHVlOworfQorCitmdW5jdGlv
biBfY3JlYXRlRWxlbWVudFRpdGxlKGVsZW1lbnREYXRhKQoreworICAgIHZhciBidWlsZGVyID0g
bmV3IERPTUJ1aWxkZXIoImRpdiIsICJlbGVtZW50LXRpdGxlIik7CisgICAgCisgICAgYnVpbGRl
ci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJ0YWctbmFtZSIsIGVsZW1lbnREYXRhLnRhZ05hbWUpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kU3BhbklmTm90TnVsbCgibm9kZS1pZCIsIGVsZW1lbnREYXRhLmlk
VmFsdWUsICIjIik7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuSWZOb3ROdWxsKCJjbGFzcy1uYW1l
IiwgX3RydW5jYXRlU3RyaW5nKGVsZW1lbnREYXRhLmNsYXNzTmFtZSwgNTApKTsKKworICAgIGJ1
aWxkZXIuYXBwZW5kVGV4dE5vZGUoIiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oIm5vZGUt
d2lkdGgiLCBlbGVtZW50RGF0YS5zaXplLndpZHRoKTsKKyAgICAvLyBceGQ3IGlzIHRoZSBjb2Rl
IGZvciB0aGUgJnRpbWVzOyBIVE1MIGVudGl0eS4KKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oInB4
IiwgInB4IFx4ZDcgIik7CisgICAgYnVpbGRlci5hcHBlbmRTcGFuKCJub2RlLWhlaWdodCIsIGVs
ZW1lbnREYXRhLnNpemUuaGVpZ2h0KTsKKyAgICBidWlsZGVyLmFwcGVuZFNwYW4oInB4IiwgInB4
Iik7CisKKyAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJyb2xlLW5hbWUiLCAi
Um9sZSIsIGVsZW1lbnREYXRhLnJvbGUpOworICAgIGJ1aWxkZXIuYXBwZW5kUHJvcGVydHlJZk5v
dE51bGwoInJlZ2lvbi1mbG93LW5hbWUiLCAiUmVnaW9uIEZsb3ciLCBlbGVtZW50RGF0YS5yZWdp
b25GbG93RGF0YSA/IGVsZW1lbnREYXRhLnJlZ2lvbkZsb3dEYXRhLm5hbWUgOiBudWxsKTsKKyAg
ICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJjb250ZW50LWZsb3ctbmFtZSIsICJD
b250ZW50IEZsb3ciLCBlbGVtZW50RGF0YS5jb250ZW50Rmxvd0RhdGEgPyBlbGVtZW50RGF0YS5j
b250ZW50Rmxvd0RhdGEubmFtZSA6IG51bGwpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIikuYXBwZW5kQ2hpbGQoYnVpbGRlci5lbGVtZW50
KTsKKworICAgIHJldHVybiBidWlsZGVyLmVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIF9kcmF3RWxl
bWVudFRpdGxlKGVsZW1lbnREYXRhLCBmcmFnbWVudEhpZ2hsaWdodCwgc2Nyb2xsKQoreworICAg
IGlmICghZWxlbWVudERhdGEgfHwgIWZyYWdtZW50SGlnaGxpZ2h0LnF1YWRzLmxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdmFyIGVsZW1lbnRUaXRsZSA9IF9jcmVhdGVFbGVtZW50VGl0
bGUoZWxlbWVudERhdGEpOworCisgICAgdmFyIG1hcmdpblF1YWQgPSBmcmFnbWVudEhpZ2hsaWdo
dC5xdWFkc1swXTsKKworICAgIHZhciB0aXRsZVdpZHRoID0gZWxlbWVudFRpdGxlLm9mZnNldFdp
ZHRoICsgNjsKKyAgICB2YXIgdGl0bGVIZWlnaHQgPSBlbGVtZW50VGl0bGUub2Zmc2V0SGVpZ2h0
ICsgNDsKKworICAgIHZhciBhbmNob3JUb3AgPSBtYXJnaW5RdWFkWzBdLnk7CisgICAgdmFyIGFu
Y2hvckJvdHRvbSA9IG1hcmdpblF1YWRbM10ueTsKKworICAgIGNvbnN0IGFycm93SGVpZ2h0ID0g
NzsKKyAgICB2YXIgcmVuZGVyQXJyb3dVcCA9IGZhbHNlOworICAgIHZhciByZW5kZXJBcnJvd0Rv
d24gPSBmYWxzZTsKKworICAgIHZhciBib3hYID0gbWFyZ2luUXVhZFswXS54OworCisgICAgdmFy
IGNsaXBRdWFkID0gZnJhZ21lbnRIaWdobGlnaHQucmVnaW9uQ2xpcHBpbmdBcmVhOworICAgIGlm
IChjbGlwUXVhZCkgeworICAgICAgICAvLyBSZXN0cmljdCB0aGUgcG9zaXRpb24gb2YgdGhlIHRp
dGxlIGJveCB0byB0aGUgYXJlYSBvZiB0aGUgY29udGFpbmluZyByZWdpb24uCisgICAgICAgIGFu
Y2hvclRvcCA9IE1hdGgubWF4KGFuY2hvclRvcCwgTWF0aC5taW4oY2xpcFF1YWRbMF0ueSwgY2xp
cFF1YWRbMV0ueSwgY2xpcFF1YWRbMl0ueSwgY2xpcFF1YWRbM10ueSkpOworICAgICAgICBhbmNo
b3JCb3R0b20gPSBNYXRoLm1pbihhbmNob3JCb3R0b20sIE1hdGgubWF4KGNsaXBRdWFkWzBdLnks
IGNsaXBRdWFkWzFdLnksIGNsaXBRdWFkWzJdLnksIGNsaXBRdWFkWzNdLnkpKTsKKyAgICAgICAg
Ym94WCA9IE1hdGgubWF4KGJveFgsIE1hdGgubWluKGNsaXBRdWFkWzBdLngsIGNsaXBRdWFkWzFd
LngsIGNsaXBRdWFkWzJdLngsIGNsaXBRdWFkWzNdLngpKTsKKyAgICAgICAgYm94WCA9IE1hdGgu
bWluKGJveFgsIE1hdGgubWF4KGNsaXBRdWFkWzBdLngsIGNsaXBRdWFkWzFdLngsIGNsaXBRdWFk
WzJdLngsIGNsaXBRdWFkWzNdLngpKTsKKyAgICB9CisKKyAgICBib3hYID0gTWF0aC5tYXgoMiwg
Ym94WCAtIHNjcm9sbC54KTsKKyAgICBhbmNob3JUb3AgLT0gc2Nyb2xsLnk7CisgICAgYW5jaG9y
Qm90dG9tIC09IHNjcm9sbC55OworCisgICAgaWYgKGJveFggKyB0aXRsZVdpZHRoID4gY2FudmFz
LndpZHRoKQorICAgICAgICBib3hYID0gY2FudmFzLndpZHRoIC0gdGl0bGVXaWR0aCAtIDI7CisK
KyAgICB2YXIgYm94WTsKKyAgICBpZiAoYW5jaG9yVG9wID4gY2FudmFzLmhlaWdodCkgeworICAg
ICAgICBib3hZID0gY2FudmFzLmhlaWdodCAtIHRpdGxlSGVpZ2h0IC0gYXJyb3dIZWlnaHQ7Cisg
ICAgICAgIHJlbmRlckFycm93RG93biA9IHRydWU7CisgICAgfSBlbHNlIGlmIChhbmNob3JCb3R0
b20gPCAwKSB7CisgICAgICAgIGJveFkgPSBhcnJvd0hlaWdodDsKKyAgICAgICAgcmVuZGVyQXJy
b3dVcCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChhbmNob3JCb3R0b20gKyB0aXRsZUhlaWdodCAr
IGFycm93SGVpZ2h0IDwgY2FudmFzLmhlaWdodCkgeworICAgICAgICBib3hZID0gYW5jaG9yQm90
dG9tICsgYXJyb3dIZWlnaHQgLSA0OworICAgICAgICByZW5kZXJBcnJvd1VwID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgaWYgKGFuY2hvclRvcCAtIHRpdGxlSGVpZ2h0IC0gYXJyb3dIZWlnaHQgPiAwKSB7
CisgICAgICAgIGJveFkgPSBhbmNob3JUb3AgLSB0aXRsZUhlaWdodCAtIGFycm93SGVpZ2h0ICsg
MzsKKyAgICAgICAgcmVuZGVyQXJyb3dEb3duID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAg
Ym94WSA9IGFycm93SGVpZ2h0OworCisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC50
cmFuc2xhdGUoMC41LCAwLjUpOworICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY29udGV4
dC5tb3ZlVG8oYm94WCwgYm94WSk7CisgICAgaWYgKHJlbmRlckFycm93VXApIHsKKyAgICAgICAg
Y29udGV4dC5saW5lVG8oYm94WCArIDIgKiBhcnJvd0hlaWdodCwgYm94WSk7CisgICAgICAgIGNv
bnRleHQubGluZVRvKGJveFggKyAzICogYXJyb3dIZWlnaHQsIGJveFkgLSBhcnJvd0hlaWdodCk7
CisgICAgICAgIGNvbnRleHQubGluZVRvKGJveFggKyA0ICogYXJyb3dIZWlnaHQsIGJveFkpOwor
ICAgIH0KKyAgICBjb250ZXh0LmxpbmVUbyhib3hYICsgdGl0bGVXaWR0aCwgYm94WSk7CisgICAg
Y29udGV4dC5saW5lVG8oYm94WCArIHRpdGxlV2lkdGgsIGJveFkgKyB0aXRsZUhlaWdodCk7Cisg
ICAgaWYgKHJlbmRlckFycm93RG93bikgeworICAgICAgICBjb250ZXh0LmxpbmVUbyhib3hYICsg
NCAqIGFycm93SGVpZ2h0LCBib3hZICsgdGl0bGVIZWlnaHQpOworICAgICAgICBjb250ZXh0Lmxp
bmVUbyhib3hYICsgMyAqIGFycm93SGVpZ2h0LCBib3hZICsgdGl0bGVIZWlnaHQgKyBhcnJvd0hl
aWdodCk7CisgICAgICAgIGNvbnRleHQubGluZVRvKGJveFggKyAyICogYXJyb3dIZWlnaHQsIGJv
eFkgKyB0aXRsZUhlaWdodCk7CisgICAgfQorICAgIGNvbnRleHQubGluZVRvKGJveFgsIGJveFkg
KyB0aXRsZUhlaWdodCk7CisgICAgY29udGV4dC5jbG9zZVBhdGgoKTsKKyAgICBjb250ZXh0LmZp
bGxTdHlsZSA9ICJyZ2IoMjU1LCAyNTUsIDE5NCkiOworICAgIGNvbnRleHQuZmlsbCgpOworICAg
IGNvbnRleHQuc3Ryb2tlU3R5bGUgPSAicmdiKDEyOCwgMTI4LCAxMjgpIjsKKyAgICBjb250ZXh0
LnN0cm9rZSgpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7CisKKyAgICBlbGVtZW50VGl0bGUu
c3R5bGUudG9wID0gKGJveFkgKyAzKSArICJweCI7CisgICAgZWxlbWVudFRpdGxlLnN0eWxlLmxl
ZnQgPSAoYm94WCArIDMpICsgInB4IjsKK30KKworZnVuY3Rpb24gX3F1YWRNaWRQb2ludChxdWFk
KQoreworICAgIHJldHVybiB7CisgICAgICAgIHg6IChxdWFkWzBdLnggKyBxdWFkWzFdLnggKyBx
dWFkWzJdLnggKyBxdWFkWzNdLngpIC8gNCwKKyAgICAgICAgeTogKHF1YWRbMF0ueSArIHF1YWRb
MV0ueSArIHF1YWRbMl0ueSArIHF1YWRbM10ueSkgLyA0LAorICAgIH07Cit9CisKK2Z1bmN0aW9u
IF9kcmF3UmVnaW9uTGluayhwb2ludEEsIHBvaW50QikKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsK
KyAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDI7CisgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHJl
Z2lvbkNoYWluU3Ryb2tlQ29sb3I7CisgICAgY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICBjb250
ZXh0Lm1vdmVUbyhwb2ludEEueCwgcG9pbnRBLnkpOworICAgIGNvbnRleHQubGluZVRvKHBvaW50
Qi54LCBwb2ludEIueSk7CisgICAgY29udGV4dC5zdHJva2UoKTsKKyAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKK30KKworZnVuY3Rpb24gX2RyYXdSZWdpb25zSGlnaGxpZ2h0KHJlZ2lvbnMpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWdpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZh
ciByZWdpb24gPSByZWdpb25zW2ldOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKHJlZ2lvbi5i
b3JkZXJRdWFkLCByZWdpb24uaXNIaWdobGlnaHRlZCA/IGhpZ2hsaWdodGVkUmVnaW9uQmFja2dy
b3VuZENvbG9yIDogcmVnaW9uQmFja2dyb3VuZENvbG9yLCByZWdpb25TdHJva2VDb2xvcik7Cisg
ICAgICAgIF9kcmF3UmVnaW9uTnVtYmVyKHJlZ2lvbi5ib3JkZXJRdWFkLCBpICsgMSk7CisgICAg
fQorCisgICAgZm9yICh2YXIgaSA9IDE7IGkgPCByZWdpb25zLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIHZhciByZWdpb25BID0gcmVnaW9uc1tpIC0gMV0sCisgICAgICAgICAgICByZWdpb25CID0g
cmVnaW9uc1tpXTsKKyAgICAgICAgX2RyYXdSZWdpb25MaW5rKF9xdWFkTWlkUG9pbnQocmVnaW9u
QS5vdXRnb2luZ1F1YWQpLCBfcXVhZE1pZFBvaW50KHJlZ2lvbkIuaW5jb21pbmdRdWFkKSk7Cisg
ICAgfQorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWdpb25zLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIHZhciByZWdpb24gPSByZWdpb25zW2ldOworICAgICAgICBpZiAoaSA+IDApCisgICAg
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkKHJlZ2lvbi5pbmNvbWluZ1F1YWQsIHJlZ2lvbkxpbmtC
b3hCYWNrZ3JvdW5kQ29sb3IsIHJlZ2lvbkxpbmtCb3hTdHJva2VDb2xvcik7CisgICAgICAgIGlm
IChpICE9PSByZWdpb25zLmxlbmd0aCAtIDEpCisgICAgICAgICAgICBkcmF3T3V0bGluZWRRdWFk
KHJlZ2lvbi5vdXRnb2luZ1F1YWQsIHJlZ2lvbkxpbmtCb3hCYWNrZ3JvdW5kQ29sb3IsIHJlZ2lv
bkxpbmtCb3hTdHJva2VDb2xvcik7CisgICAgfQorfQorCitmdW5jdGlvbiBfZHJhd1NoYXBlSGln
aGxpZ2h0KHNoYXBlSW5mbykKK3sKKyAgICBpZiAoc2hhcGVJbmZvLm1hcmdpblNoYXBlKQorICAg
ICAgICBkcmF3UGF0aChjb250ZXh0LCBzaGFwZUluZm8ubWFyZ2luU2hhcGUsIHNoYXBlTWFyZ2lu
SGlnaGxpZ2h0Q29sb3IpOworCisgICAgaWYgKHNoYXBlSW5mby5zaGFwZSkKKyAgICAgICAgZHJh
d1BhdGgoY29udGV4dCwgc2hhcGVJbmZvLnNoYXBlLCBzaGFwZUhpZ2hsaWdodENvbG9yKTsKKwor
ICAgIGlmICghKHNoYXBlSW5mby5zaGFwZSB8fCBzaGFwZUluZm8ubWFyZ2luU2hhcGUpKQorICAg
ICAgICBkcmF3T3V0bGluZWRRdWFkKHNoYXBlSW5mby5ib3VuZHMsIHNoYXBlSGlnaGxpZ2h0Q29s
b3IsIHNoYXBlSGlnaGxpZ2h0Q29sb3IpOworfQorCitmdW5jdGlvbiBfZHJhd0ZyYWdtZW50SGln
aGxpZ2h0KGhpZ2hsaWdodCkKK3sKKyAgICBpZiAoIWhpZ2hsaWdodC5xdWFkcy5sZW5ndGgpCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQuc2F2ZSgpOworCisgICAgaWYgKGhpZ2hsaWdo
dC5yZWdpb25DbGlwcGluZ0FyZWEpIHsKKyAgICAgICAgLy8gQ2xpcCB0byB0aGUgY29udGFpbmlu
ZyByZWdpb24gdG8gYXZvaWQgc2hvd2luZyBmcmFnbWVudHMgdGhhdCBhcmUgbm90IHJlbmRlcmVk
IGJ5IHRoaXMgcmVnaW9uLgorICAgICAgICBxdWFkVG9QYXRoKGhpZ2hsaWdodC5yZWdpb25DbGlw
cGluZ0FyZWEpLmNsaXAoKTsKKyAgICB9CisKKyAgICB2YXIgcXVhZHMgPSBoaWdobGlnaHQucXVh
ZHMuc2xpY2UoKTsKKyAgICB2YXIgY29udGVudFF1YWQgPSBxdWFkcy5wb3AoKTsKKyAgICB2YXIg
cGFkZGluZ1F1YWQgPSBxdWFkcy5wb3AoKTsKKyAgICB2YXIgYm9yZGVyUXVhZCA9IHF1YWRzLnBv
cCgpOworICAgIHZhciBtYXJnaW5RdWFkID0gcXVhZHMucG9wKCk7CisKKyAgICB2YXIgaGFzQ29u
dGVudCA9IGNvbnRlbnRRdWFkICYmIGhpZ2hsaWdodC5jb250ZW50Q29sb3IgIT09IHRyYW5zcGFy
ZW50Q29sb3IgfHwgaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3IgIT09IHRyYW5zcGFyZW50
Q29sb3I7CisgICAgdmFyIGhhc1BhZGRpbmcgPSBwYWRkaW5nUXVhZCAmJiBoaWdobGlnaHQucGFk
ZGluZ0NvbG9yICE9PSB0cmFuc3BhcmVudENvbG9yOworICAgIHZhciBoYXNCb3JkZXIgPSBib3Jk
ZXJRdWFkICYmIGhpZ2hsaWdodC5ib3JkZXJDb2xvciAhPT0gdHJhbnNwYXJlbnRDb2xvcjsKKyAg
ICB2YXIgaGFzTWFyZ2luID0gbWFyZ2luUXVhZCAmJiBoaWdobGlnaHQubWFyZ2luQ29sb3IgIT09
IHRyYW5zcGFyZW50Q29sb3I7CisKKyAgICB2YXIgY2xpcFF1YWQ7CisgICAgaWYgKGhhc01hcmdp
biAmJiAoIWhhc0JvcmRlciB8fCAhcXVhZEVxdWFscyhtYXJnaW5RdWFkLCBib3JkZXJRdWFkKSkp
IHsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKG1hcmdpblF1YWQsIGJvcmRlclF1
YWQsIGhpZ2hsaWdodC5tYXJnaW5Db2xvcik7CisgICAgICAgIGNsaXBRdWFkID0gYm9yZGVyUXVh
ZDsKKyAgICB9CisgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1BhZGRpbmcgfHwgIXF1YWRFcXVh
bHMoYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQpKSkgeworICAgICAgICBkcmF3T3V0bGluZWRRdWFk
V2l0aENsaXAoYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hsaWdodC5ib3JkZXJDb2xvcik7
CisgICAgICAgIGNsaXBRdWFkID0gcGFkZGluZ1F1YWQ7CisgICAgfQorICAgIGlmIChoYXNQYWRk
aW5nICYmICghaGFzQ29udGVudCB8fCAhcXVhZEVxdWFscyhwYWRkaW5nUXVhZCwgY29udGVudFF1
YWQpKSkgeworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAocGFkZGluZ1F1YWQsIGNv
bnRlbnRRdWFkLCBoaWdobGlnaHQucGFkZGluZ0NvbG9yKTsKKyAgICAgICAgY2xpcFF1YWQgPSBj
b250ZW50UXVhZDsKKyAgICB9CisgICAgaWYgKGhhc0NvbnRlbnQpCisgICAgICAgIGRyYXdPdXRs
aW5lZFF1YWQoY29udGVudFF1YWQsIGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIGhpZ2hsaWdodC5j
b250ZW50T3V0bGluZUNvbG9yKTsKKworICAgIHZhciB3aWR0aCA9IGNhbnZhcy53aWR0aDsKKyAg
ICB2YXIgaGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKKyAgICB2YXIgbWluWCA9IE51bWJlci5NQVhf
VkFMVUUsIG1pblkgPSBOdW1iZXIuTUFYX1ZBTFVFLCBtYXhYID0gTnVtYmVyLk1JTl9WQUxVRTsg
bWF4WSA9IE51bWJlci5NSU5fVkFMVUU7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoaWdobGln
aHQucXVhZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHF1YWQgPSBoaWdobGlnaHQucXVh
ZHNbaV07CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcXVhZC5sZW5ndGg7ICsraikgewor
ICAgICAgICAgICAgbWluWCA9IE1hdGgubWluKG1pblgsIHF1YWRbal0ueCk7CisgICAgICAgICAg
ICBtYXhYID0gTWF0aC5tYXgobWF4WCwgcXVhZFtqXS54KTsKKyAgICAgICAgICAgIG1pblkgPSBN
YXRoLm1pbihtaW5ZLCBxdWFkW2pdLnkpOworICAgICAgICAgICAgbWF4WSA9IE1hdGgubWF4KG1h
eFksIHF1YWRbal0ueSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnJlc3RvcmUo
KTsKK30KKworZnVuY3Rpb24gc2hvd1BhZ2VJbmRpY2F0aW9uKCkKK3sKKyAgICBkb2N1bWVudC5i
b2R5LmNsYXNzTGlzdC5hZGQoImluZGljYXRlIik7Cit9CisKK2Z1bmN0aW9uIGhpZGVQYWdlSW5k
aWNhdGlvbigpCit7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJpbmRpY2F0
ZSIpOworfQorCitmdW5jdGlvbiBkcmF3Tm9kZUhpZ2hsaWdodChoaWdobGlnaHQpCit7CisgICAg
Y29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLWhpZ2hsaWdodC5zY3JvbGxP
ZmZzZXQueCwgLWhpZ2hsaWdodC5zY3JvbGxPZmZzZXQueSk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGhpZ2hsaWdodC5mcmFnbWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIF9kcmF3RnJh
Z21lbnRIaWdobGlnaHQoaGlnaGxpZ2h0LmZyYWdtZW50c1tpXSk7CisKKyAgICBpZiAoaGlnaGxp
Z2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdodC5lbGVtZW50RGF0YS5yZWdpb25GbG93RGF0YSkK
KyAgICAgICAgX2RyYXdSZWdpb25zSGlnaGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50RGF0YS5yZWdp
b25GbG93RGF0YS5yZWdpb25zKTsKKworICAgIGlmIChoaWdobGlnaHQuZWxlbWVudERhdGEgJiYg
aGlnaGxpZ2h0LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpCisgICAgICAgIF9kcmF3U2hh
cGVIaWdobGlnaHQoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpOworCisg
ICAgY29udGV4dC5yZXN0b3JlKCk7CisKKyAgICB2YXIgZWxlbWVudFRpdGxlQ29udGFpbmVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIik7CisgICAg
ZWxlbWVudFRpdGxlQ29udGFpbmVyLmlubmVySFRNTCA9ICIiOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgaGlnaGxpZ2h0LmZyYWdtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgX2RyYXdFbGVt
ZW50VGl0bGUoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLCBoaWdobGlnaHQuZnJhZ21lbnRzW2ldLCBo
aWdobGlnaHQuc2Nyb2xsT2Zmc2V0KTsKK30KKworZnVuY3Rpb24gZHJhd1F1YWRIaWdobGlnaHQo
aGlnaGxpZ2h0KQoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGRyYXdPdXRsaW5lZFF1YWQo
aGlnaGxpZ2h0LnF1YWRzWzBdLCBoaWdobGlnaHQuY29udGVudENvbG9yLCBoaWdobGlnaHQuY29u
dGVudE91dGxpbmVDb2xvcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9u
IHNldFBsYXRmb3JtKHBsYXRmb3JtKQoreworICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFk
ZCgicGxhdGZvcm0tIiArIHBsYXRmb3JtKTsKK30KKworZnVuY3Rpb24gZGlzcGF0Y2gobWVzc2Fn
ZSkKK3sKKyAgICB2YXIgZnVuY3Rpb25OYW1lID0gbWVzc2FnZS5zaGlmdCgpOworICAgIHdpbmRv
d1tmdW5jdGlvbk5hbWVdLmFwcGx5KG51bGwsIG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBsb2co
dGV4dCkKK3sKKyAgICB2YXIgbG9nRW50cnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICBsb2dFbnRyeS50ZXh0Q29udGVudCA9IHRleHQ7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxvZyIpLmFwcGVuZENoaWxkKGxvZ0VudHJ5KTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL092ZXJsYXkuaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL092ZXJsYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTll
MDllOGRhNzEzYzk2NzRlZjA3ZmQ1YzIyMTgxNWFlZTQ0ODRkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvT3ZlcmxheS5odG1sCkBAIC0wLDAg
KzEsNDkgQEAKKzwhLS0KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04Ij4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGlj
eSIgY29udGVudD0iZGVmYXVsdC1zcmMgJ3NlbGYnOyBpbWctc3JjICo7IGNvbm5lY3Qtc3JjICo7
IG1lZGlhLXNyYyAqOyBmb250LXNyYyAqOyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5l
Jzsgc2NyaXB0LXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnIj4KKworICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvT3ZlcmxheS5jc3MiPgorCisgICAgPHNjcmlwdCBzcmM9
IkJhc2UvT3ZlcmxheS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgLy8gV2Fp
dCBmb3IgdGhlIHJlc3Qgb2YgcGFyc2luZyB0byBmaW5pc2guCisgICAgICAgIHdpbmRvdy5zZXRU
aW1lb3V0KEluc3BlY3Rvck92ZXJsYXkubG9hZGVkLCAwKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IGNsYXNzPSJmaWxsIj4KKzxkaXYgY2xhc3M9Im1lc3NhZ2UtbGluZSI+PHNwYW4g
Y2xhc3M9Im1lc3NhZ2UtYm94IiBpZD0icGF1c2VkLWluLWRlYnVnZ2VyIj48L3NwYW4+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIGNsYXNzPSJmaWxsIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9
InBhaW50cmVjdHMtY2FudmFzIiBjbGFzcz0iZmlsbCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJlbGVt
ZW50LXRpdGxlLWNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJyaWdodC1ndXR0ZXIiPjwvZGl2
PgorPGRpdiBpZD0iYm90dG9tLWd1dHRlciI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvT3ZlcmxheS5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9PdmVybGF5LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDA5ODgwYjE0NWE5M2M0MDVj
Zjg4MWNjYWNkMzIxNzFmNGI0NTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcmxheS5jc3MKQEAgLTAsMCArMSw5OCBAQAor
Ym9keSB7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisKK2JvZHkucGxhdGZv
cm0tbWFjIHsKKyAgICBmb250LXNpemU6IDExcHg7CisgICAgZm9udC1mYW1pbHk6IE1lbmxvLCBN
b25hY287Cit9CisKK2JvZHkucGxhdGZvcm0td2luZG93cyB7CisgICAgZm9udC1zaXplOiAxMnB4
OworICAgIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgTHVjaWRhIENvbnNvbGU7Cit9CisKK2JvZHku
cGxhdGZvcm0tbGludXggeworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBmb250LWZhbWlseTog
ZGVqYXZ1IHNhbnMgbW9ubzsKK30KKworLmZpbGwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7
Cit9CisKKy5pbmRpY2F0ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMTEsIDE2OCwg
MjIwLCAwLjY2KSAhaW1wb3J0YW50OworfQorCisuZGltbWVkIHsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2JhKDAsIDAsIDAsIDAuMzEpOworfQorCisubWVzc2FnZS1saW5lIHsKKyAgICBtYXJn
aW46IDEwcHggMDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5tZXNzYWdlLWJveCB7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAxOTQpOworICAgIGJvcmRlcjog
MXB4IHNvbGlkIHJnYigxMjgsIDEyOCwgMTI4KTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgcGFkZGluZzogMnB4IDRweDsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cit9CisKKy5w
eCB7CisgICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKK30KKworLmVsZW1lbnQtdGl0bGUt
Y29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgei1pbmRleDogMTA7Cit9
CisKKy5lbGVtZW50LXRpdGxlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cit9CisKKy50YWct
bmFtZSB7CisgICAgLyogS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICgudGFn
KSAqLworICAgIGNvbG9yOiByZ2IoMTM2LCAxOCwgMTI4KTsKK30KKworLm5vZGUtaWQgeworICAg
IC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS12YWx1
ZSkgKi8KKyAgICBjb2xvcjogcmdiKDI2LCAyNiwgMTY2KTsKK30KKworLmNsYXNzLW5hbWUgewor
ICAgIC8qIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS1u
YW1lKSAqLworICAgIGNvbG9yOiByZ2IoMTUzLCA2OSwgMCk7Cit9CisKKy5jc3MtcHJvcGVydHkg
eworICAgIGNvbG9yOiByZ2IoMTcwLCAxMywgMTQ1KTsKK30KKworI3JpZ2h0LWd1dHRlciB7Cisg
ICAgZGlzcGxheTogbm9uZTsKKyAgICByaWdodDogMDsKKyAgICB0b3A6IDA7CisgICAgYm90dG9t
OiAwOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJr
Z3JheTsKK30KKworI2JvdHRvbS1ndXR0ZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgbGVm
dDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtncmF5OworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBl
NmVkZTQ5ZmM5MjBhOWNhNGY2YTlkZGIxNjkyMWUyNzE0ZTk0ZmRjLi5kNWIxMzAzNDkwMGQ5Zjgw
ZjdjZWFmMmFjODZkNGI3ZmVjNDJjZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNjYsOCArNjYsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5z
cGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOwor
ICAgIEluc3BlY3Rvcjo6T3ZlcmxheUNoYW5uZWwqIG9wZW5JbnNwZWN0b3JPdmVybGF5KCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5t
bQppbmRleCA3ODkzZjhiMjNhODk0ZjcyNWY5MTk3NDkyYTA3ZmRmYjdlM2I0NDBmLi4xZGI4MTJi
YTA1MTk0N2MxMjQ0MTNmZDUwMTE5MjFhMGIyNGRlZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0xNzAs
NiArMTcwLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9u
dCgpCiAgICAgbV9mcm9udGVuZENsaWVudC0+YnJpbmdUb0Zyb250KCk7CiB9CiAKK0luc3BlY3Rv
cjo6T3ZlcmxheUNoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3Rvck92ZXJs
YXkoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKIHsKICAgICBpZiAobV9mcm9udGVuZENsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGIzMWIxNGY5MDgwN2I5YjM4NTBk
MDdiYjFmNjM5YTBmODg1MDU5NDkuLjliNTUzMWYwYjQzZjE1Yjg3ZDVjNTVlMjY2YmZkN2VlYjQ3
OWI5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTE5LDYgKzExOSw3IEBA
IE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFdlYkljb25EYXRhYmFzZSBcCiAgICAgV2ViSWNv
bkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCisgICAgV2ViSW5zcGVjdG9yT3Zl
cmxheSBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXAogICAgIFdlYkluc3BlY3RvclVJIFwKICAg
ICBXZWJNZWRpYUNhY2hlTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggZmUwNDdhMGY4
YTlkNmE0YjQyNWRjMWMwNzJjMzA2NmQ0YTFiOWIwYi4uMDVhZjliZjUzMGNiZDhmZjg2OWQzMjAy
NGIxMzQ1OGRhMmEyNzhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtNTUsOSArNTUsNyBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLRGVidWdPdmVybGF5UmVnaW9ucykgewog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2ltcGxlTGluZUxheW91dERlYnVnQm9y
ZGVyc0VuYWJsZWQ6KSBCT09MIF9zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCBX
S19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldERldmVsb3BlckV4dHJhc0VuYWJsZWQ6KSBCT09MIF9kZXZlbG9wZXJF
eHRyYXNFbmFibGVkIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKLQogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29u
c29sZUVuYWJsZWQ6KSBCT09MIF9sb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxl
ZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7Ci0KIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczopIEJPT0wgX2Fs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9T
X1RCQSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YW5kYWxvbmU6LCBn
ZXR0ZXI9X2lzU3RhbmRhbG9uZSkgQk9PTCBfc3RhbmRhbG9uZSBXS19BVkFJTEFCTEUoV0tfTUFD
X1RCQSwgV0tfSU9TX1RCQSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5LmNwcAppbmRleCA3NzVmNTFiMWM1YWMzNzhkMGNiYTdjNjk2NDgxMWYzNDhmM2Yx
NmJlLi41NGIxMzA5ZjRmN2NiMWIzMWI5YmIxN2Q0ZmM1NmU2ODM2Y2RiNjZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JPdmVybGF5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgpAQCAtMTg1LDcgKzE4Niw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmRpZFJlbGF1bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3MoKQogICAgIC8v
IFdoZW4gZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQgd2UgY2FuIGFz
c3VtZSBpdCBpcyBkdXJpbmcgYSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1lc3NhZ2VzIHdl
IHdvdWxkIGhhdmUgc2VudCB0byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRvIGJlIHJlLXNl
bnQuCiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1faW5zcGVjdG9yQ29ubmVjdGlv
bklkZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNo
b3dDb25zb2xlKCkKQEAgLTMzOCw2ICszMzksMTggQEAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0
SW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHkK
ICAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHJlcXVlc3RVUkwucGF0aCgpKSA9
PSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModGVzdFBhZ2VVUkwucGF0aCgpKTsKIH0KIAorc3Rh
dGljIGJvb2wgaXNJbnNwZWN0b3JPdmVybGF5UGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSog
d2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQoreworICAgIFVS
TCByZXF1ZXN0VVJMKFVSTCgpLCB0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgp
LnVybCgpKTsKKyAgICBpZiAoIVdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzTG9jYWwocmVxdWVzdFVSTC5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gVXNlIFVSTCBzbyB3ZSBjYW4gY29tcGFyZSBqdXN0IHRoZSBwYXRocy4K
KyAgICBVUkwgb3ZlcmxheVBhZ2VVUkwoVVJMKCksIHdlYkluc3BlY3RvclByb3h5LT5pbnNwZWN0
b3JPdmVybGF5VVJMKCkpOworICAgIEFTU0VSVChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG92ZXJsYXlQYWdlVVJMLnByb3RvY29sKCkpKTsKKyAg
ICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHJlcXVlc3RVUkwucGF0aCgpKSA9PSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMob3ZlcmxheVBhZ2VVUkwucGF0aCgpKTsKK30KKwogc3Rh
dGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKICAgICBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHkgPSBzdGF0aWNf
Y2FzdDxXZWJJbnNwZWN0b3JQcm94eSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsK
QEAgLTM0NSw3ICszNTgsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV0tQYWdlUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogICAgIHdlYkluc3BlY3RvclByb3h5LT5jbG9zZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50
TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIFdLRnJhbWVSZWYsIFdLVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25JbnNwZWN0b3JQYWdlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFt
ZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91
c2VCdXR0b24sIFdLRnJhbWVSZWYsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKICAgICAvLyBBbGxvdyBub24tbWFpbiBmcmFtZXMgdG8gbmF2aWdhdGUgYW55
d2hlcmUuCiAgICAgaWYgKCF0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpKSB7CkBAIC0z
NjksNiArMzgyLDI4IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS0ZyCiAgICAgd2ViSW5zcGVjdG9y
UHJveHktPmluc3BlY3RlZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5y
ZXNvdXJjZVJlcXVlc3QoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25PdmVybGF5UGFnZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIFdL
RnJhbWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9u
LCBXS0ZyYW1lUmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxp
c3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgLy8gQWxsb3cgbm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRlIGFueXdoZXJlLgor
ICAgIGlmICghdG9JbXBsKGZyYW1lUmVmKS0+aXNNYWluRnJhbWUoKSkgeworICAgICAgICB0b0lt
cGwobGlzdGVuZXJSZWYpLT51c2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNv
bnN0IFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3JQcm94eSA9IHN0YXRpY19jYXN0PGNv
bnN0IFdlYkluc3BlY3RvclByb3h5Kj4oY2xpZW50SW5mbyk7CisgICAgQVNTRVJUKHdlYkluc3Bl
Y3RvclByb3h5KTsKKworICAgIC8vIEFsbG93IGxvYWRpbmcgb2YgdGhlIG1haW4gaW5zcGVjdG9y
IG92ZXJsYXkgZmlsZS4KKyAgICBpZiAoaXNJbnNwZWN0b3JPdmVybGF5UGFnZSh3ZWJJbnNwZWN0
b3JQcm94eSwgcmVxdWVzdFJlZikpIHsKKyAgICAgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+dXNl
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBQcmV2ZW50IGV2ZXJ5dGhpbmcg
ZWxzZSBmcm9tIGxvYWRpbmcgaW4gdGhlIG92ZXJsYXkgcGFnZS4KKyAgICB0b0ltcGwobGlzdGVu
ZXJSZWYpLT5pZ25vcmUoKTsKK30KKworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjplbmFibGVSZW1vdGVJbnNwZWN0aW9uKCkKIHsKQEAgLTQx
MCw3ICs0NDUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVj
dG9yUGFnZSgpCiAgICAgICAgIG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbgogICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZV9kZXByZWNh
dGVkRm9yVXNlV2l0aFYwCiAgICAgICAgIG51bGxwdHIsIC8vIHVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5Ci0gICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25JbnNwZWN0b3JQYWdlLAogICAgICAgICBudWxs
cHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZQogICAgIH07CiAKQEAgLTQ2NCw2ICs0OTks
NzYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2Uo
KQogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VV
UkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZWFn
ZXJseUNyZWF0ZU92ZXJsYXlQYWdlKCkKK3sKKyAgICBpZiAobV9vdmVybGF5UGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9vdmVybGF5UGFnZSA9IHBsYXRmb3JtQ3JlYXRlT3ZlcmxheVBh
Z2UoKTsKKyAgICBBU1NFUlQobV9vdmVybGF5UGFnZSk7CisgICAgaWYgKCFtX292ZXJsYXlQYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGll
bnQgPSB7CisgICAgICAgIHsgMSwgdGhpcyB9LAorICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAg
bnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uCisgICAgICAgIG51bGxw
dHIsIC8vIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAg
ICAgICAgbnVsbHB0ciwgLy8gdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kKKyAgICAgICAgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbk92ZXJsYXlQYWdlLAorICAgICAgICBudWxscHRyLCAv
LyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZQorICAgIH07CisKKyAgICBXS1BhZ2VMb2FkZXJDbGll
bnRWNSBsb2FkZXJDbGllbnQgPSB7CisgICAgICAgIHsgNSwgdGhpcyB9LAorICAgICAgICBudWxs
cHRyLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCisgICAgICAgIG51bGxwdHIs
IC8vIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCisg
ICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRDb21taXRMb2FkRm9yRnJhbWUKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGlkRmluaXNoTG9hZEZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAg
bnVsbHB0ciwgLy8gZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5CisgICAgICAgIG51bGxw
dHIsIC8vIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZQorICAgICAgICBudWxscHRy
LCAvLyBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZQorICAgICAgICBudWxscHRyLCAvLyBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZQorICAgICAgICBudWxs
cHRyLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZFN0YXJ0UHJvZ3Jlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2hh
bmdlUHJvZ3Jlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkQmVjb21lVW5yZXNwb25zaXZlCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZEJlY29tZVJlc3BvbnNpdmUKKyAgICAgICAgcHJvY2Vzc0RpZENyYXNoLAorICAgICAgICBu
dWxscHRyLCAvLyBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QKKyAgICAgICAgbnVsbHB0ciwgLy8g
c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFp
bFRvSW5pdGlhbGl6ZVBsdWdpbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxw
dHIsIC8vIGRpZERldGVjdFhTU0ZvckZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF91bmF2YWlsYWJsZQorICAgICAgICBudWxscHRyLCAv
LyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KKyAgICAgICAgbnVsbHB0ciwgLy8gaW50ZXJh
Y3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZQorICAgICAgICBudWxscHRyLCAv
LyBwbHVnaW5EaWRGYWlsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGlkUmVjZWl2ZUludGVudEZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIG51bGxwdHIs
IC8vIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIG51
bGxwdHIsIC8vIGRpZExheW91dAorICAgICAgICBudWxscHRyLCAvLyBwbHVnaW5Mb2FkUG9saWN5
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjIKKyAgICAgICAgbnVsbHB0ciwgLy8gcGx1Z2luRGlkRmFp
bAorICAgICAgICBudWxscHRyLCAvLyBwbHVnaW5Mb2FkUG9saWN5CisgICAgICAgIG51bGxwdHIs
IC8vIHdlYkdMTG9hZFBvbGljeQorICAgICAgICBudWxscHRyLCAvLyByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5CisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRM
aXN0SXRlbUluTGlzdAorICAgIH07CisKKyAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRv
QVBJKG1fb3ZlcmxheVBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOworICAgIFdLUGFnZVNldFBh
Z2VMb2FkZXJDbGllbnQodG9BUEkobV9vdmVybGF5UGFnZSksICZsb2FkZXJDbGllbnQuYmFzZSk7
CisKKyAgICBtX292ZXJsYXlQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9vdmVybGF5UGFnZS0+cHJvY2VzcygpLmFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKK30KKwogLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewpAQCAtNDc3LDkgKzU4Miw5IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdW5kZXJU
ZXN0ID0gdW5kZXJUZXN0OwotICAgIG1fY29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9u
SWRlbnRpZmllcjsKKyAgICBtX2luc3BlY3RvckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVj
dGlvbklkZW50aWZpZXI7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25J
ZGVudGlmaWVyLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1faW5zcGVj
dG9yQ29ubmVjdGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5k
ZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAoIW1fdW5kZXJU
ZXN0KSB7CiAgICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOwpAQCAtNTA1LDYgKzYxMCwy
NCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcgogICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJl
cXVlc3QoVVJMKFVSTCgpLCBtX3VuZGVyVGVzdCA/IGluc3BlY3RvclRlc3RQYWdlVVJMKCkgOiBp
bnNwZWN0b3JQYWdlVVJMKCkpKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
T3ZlcmxheVBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQoreworICAg
IGlmICghbV9pbnNwZWN0ZWRQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBlYWdlcmx5Q3Jl
YXRlT3ZlcmxheVBhZ2UoKTsKKworICAgIEFTU0VSVChtX292ZXJsYXlQYWdlKTsKKyAgICBpZiAo
IW1fb3ZlcmxheVBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3ZlcmxheUNvbm5lY3Rp
b25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CisKKyAgICBtX292ZXJsYXlQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yT3ZlcmxheTo6RXN0YWJsaXNo
Q29ubmVjdGlvbihtX292ZXJsYXlDb25uZWN0aW9uSWRlbnRpZmllciwgbV9pbnNwZWN0ZWRQYWdl
LT5wYWdlSUQoKSksIG1fb3ZlcmxheVBhZ2UtPnBhZ2VJRCgpKTsKKworICAgIG1fb3ZlcmxheVBh
Z2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgaW5zcGVjdG9yT3ZlcmxheVVSTCgpKSk7Cit9CisK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW4oKQogewogICAgIGlmIChtX3VuZGVyVGVzdCkK
QEAgLTUxMiw2ICs2MzUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIAogICAg
IG1faXNWaXNpYmxlID0gdHJ1ZTsKIAorICAgIHBsYXRmb3JtQXR0YWNoT3ZlcmxheSgpOwogICAg
IHBsYXRmb3JtT3BlbigpOwogfQogCkBAIC01MzMsOCArNjU3LDEwIEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmRpZENsb3NlKCkKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKICAgICBtX2Nh
bkF0dGFjaCA9IGZhbHNlOwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Ci0gICAgbV9jb25uZWN0
aW9uSWRlbnRpZmllciA9IElQQzo6QXR0YWNobWVudCgpOworICAgIG1faW5zcGVjdG9yQ29ubmVj
dGlvbklkZW50aWZpZXIgPSBJUEM6OkF0dGFjaG1lbnQoKTsKKyAgICBtX292ZXJsYXlDb25uZWN0
aW9uSWRlbnRpZmllciA9IElQQzo6QXR0YWNobWVudCgpOwogCisgICAgcGxhdGZvcm1EZXRhY2hP
dmVybGF5KCk7CiAgICAgcGxhdGZvcm1EaWRDbG9zZSgpOwogfQogCkBAIC03MDcsNCArODMzLDE2
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hh
bmdlZChib29sKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiAhV0tfQVBJX0VOQUJMRUQpCiAKKyNpZiAhKFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJM
RUQpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaE92ZXJsYXkoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtRGV0YWNoT3ZlcmxheSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZiAv
LyAhKFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQpCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRl
eCAzZDU4YjM1YmNkYjNjZGUyYjNkMzM2MTIyZDYyMjA2OTljMThhM2MwLi4wNGUwMmI3ZGNlY2Jj
ZTUwOWY2MzVjZTA4N2NiY2QxYjIxMjNlZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK09CSkNfQ0xBU1MgV0tXZWJWaWV3OworI2VuZGlmCisKICNpZiBQTEFURk9STShN
QUMpCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC00NSw2ICs0OSw3IEBAIE9CSkNfQ0xBU1MgTlNVUkw7CiBPQkpDX0NMQVNTIE5TV2luZG93Owog
T0JKQ19DTEFTUyBXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXI7CiBPQkpDX0NMQVNTIFdL
V2ViSW5zcGVjdG9yV0tXZWJWaWV3OworT0JKQ19DTEFTUyBXS1dlYlZpZXc7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykKQEAgLTEzNyw2ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKICAgICBTdHJpbmcgaW5zcGVjdG9yVGVzdFBhZ2VV
UkwoKSBjb25zdDsKICAgICBTdHJpbmcgaW5zcGVjdG9yQmFzZVVSTCgpIGNvbnN0OworICAgIFN0
cmluZyBpbnNwZWN0b3JPdmVybGF5VVJMKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKICAgICB2b2lkIGVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKQEAgLTE1MCwxMSAr
MTU2LDEzIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFn
ZVByb3h5Kik7CiAKICAgICB2b2lkIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisgICAg
dm9pZCBlYWdlcmx5Q3JlYXRlT3ZlcmxheVBhZ2UoKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94eSog
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CisgICAgV2ViUGFnZVByb3h5KiBwbGF0Zm9y
bUNyZWF0ZU92ZXJsYXlQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW4oKTsKICAgICB2b2lk
IHBsYXRmb3JtRGlkQ2xvc2UoKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwpAQCAt
MTcyLDExICsxODAsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0VG9vbGJhckhl
aWdodCh1bnNpZ25lZCk7CiAgICAgdm9pZCBwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9y
Y2VTYXZlQXMpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKyAgICB2b2lkIHBsYXRmb3JtQXR0YWNoT3Zlcmxh
eSgpOworICAgIHZvaWQgcGxhdGZvcm1EZXRhY2hPdmVybGF5KCk7CiAKICAgICAvLyBDYWxsZWQg
YnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKICAgICB2b2lkIGNyZWF0ZUluc3BlY3RvclBh
Z2UoSVBDOjpBdHRhY2htZW50LCBib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpOwogICAg
IHZvaWQgZGlkQ2xvc2UoKTsKICAgICB2b2lkIGJyaW5nVG9Gcm9udCgpOworCisgICAgdm9pZCBj
cmVhdGVPdmVybGF5UGFnZShJUEM6OkF0dGFjaG1lbnQpOworCiAgICAgdm9pZCBhdHRhY2hBdmFp
bGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBTdHJpbmcmKTsKIApAQCAtMjE1LDYgKzIyOCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJQYWdl
UHJveHkqIG1faW5zcGVjdGVkUGFnZSB7bnVsbHB0cn07CiAgICAgV2ViUGFnZVByb3h5KiBtX2lu
c3BlY3RvclBhZ2Uge251bGxwdHJ9OworICAgIFdlYlBhZ2VQcm94eSogbV9vdmVybGF5UGFnZSB7
bnVsbHB0cn07CiAKICAgICBib29sIG1fdW5kZXJUZXN0IHtmYWxzZX07CiAgICAgYm9vbCBtX2lz
VmlzaWJsZSB7ZmFsc2V9OwpAQCAtMjI0LDE1ICsyMzgsMTQgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc2hvd01lc3NhZ2VTZW50IHtmYWxzZX07CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdU
b0Zyb250IHtmYWxzZX07CiAKLSAgICAvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIFdlYlBhZ2VzIGFy
ZSBpbnNwZWN0b3IgcGFnZXMsIGFuZCB0aGVpciBsZXZlbC4KLSAgICBzdGF0aWMgSGFzaE1hcDxX
ZWJQYWdlUHJveHkqLCB1bnNpZ25lZD4gc19wYWdlTGV2ZWxNYXA7Ci0KLSAgICBJUEM6OkF0dGFj
aG1lbnQgbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBJUEM6OkF0dGFjaG1lbnQgbV9pbnNw
ZWN0b3JDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBJUEM6OkF0dGFjaG1lbnQgbV9vdmVybGF5
Q29ubmVjdGlvbklkZW50aWZpZXI7CiAKICAgICBBdHRhY2htZW50U2lkZSBtX2F0dGFjaG1lbnRT
aWRlIHtBdHRhY2htZW50U2lkZTo6Qm90dG9tfTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tf
QVBJX0VOQUJMRUQKICAgICBSZXRhaW5QdHI8V0tXZWJJbnNwZWN0b3JXS1dlYlZpZXc+IG1faW5z
cGVjdG9yVmlldzsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBtX292ZXJsYXlWaWV3OwogICAg
IFJldGFpblB0cjxOU1dpbmRvdz4gbV9pbnNwZWN0b3JXaW5kb3c7CiAgICAgUmV0YWluUHRyPE5T
QnV0dG9uPiBtX2RvY2tCb3R0b21CdXR0b247CiAgICAgUmV0YWluUHRyPE5TQnV0dG9uPiBtX2Rv
Y2tSaWdodEJ1dHRvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4ODI4MWM2N2NhMWUwMmFiN2UxOTEyYTA2
NjJkNTFiODA5YzAxZmE4Li40NTM4OGY1ZmZmNjAxODM4ZTEyYzk5MWEwNDljNGEwNmFjYWFjZGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw2ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYkluc3Bl
Y3RvclByb3h5IHsKICAgICBDcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25u
ZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQorICAgIENy
ZWF0ZU92ZXJsYXlQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKIAog
ICAgIERpZENsb3NlKCkKICAgICBCcmluZ1RvRnJvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggY2JlYWZlM2M5
MTRiM2RhNjQxZWQyYzNhNjJlNzg2YzU2NjQwMTY3MS4uNmM4YjZmOTZmNTM2MDQyMmU3Y2IxZTFk
M2ViM2JiMWY0M2I4YTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0zMDgsNyArMzA4LDkgQEAgV0tSZWN0IFdl
Ykluc3BlY3RvclByb3h5OjppbnNwZWN0b3JXaW5kb3dGcmFtZSgpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKCFtX2lzQXR0YWNoZWQg
fHwgIW1faW5zcGVjdG9yV2luZG93KTsKKyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBzaG91bGQg
aGF2ZSBjYWxsZWQgcGxhdGZvcm1EZXRhY2goKSwgcGxhdGZvcm1EZXRhY2hPdmVybGF5KCksCisg
ICAgLy8gcGxhdGZvcm1EaWRDbG9zZSgpLCBhbmQgcG9zc2libHkgcGxhdGZvcm1JbnZhbGlkYXRl
KCkgdG8gc3BlZWQgdXAgZGVzdHJ1Y3Rpb24uCisgICAgQVNTRVJUKCFtX2lzQXR0YWNoZWQgJiYg
IW1faW5zcGVjdG9yV2luZG93KTsKICAgICBpZiAobV9pc0F0dGFjaGVkIHx8IG1faW5zcGVjdG9y
V2luZG93KQogICAgICAgICByZXR1cm47CiAKQEAgLTMxOCw2ICszMjAsMTEgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y2xvc2VUaW1lckZpcmVkKCkKICAgICAgICAgbV9pbnNwZWN0b3JWaWV3
ID0gbmlsOwogICAgIH0KIAorICAgIGlmIChtX292ZXJsYXlQYWdlKSB7CisgICAgICAgIG1fb3Zl
cmxheVBhZ2UtPmNsb3NlKCk7CisgICAgICAgIG1fb3ZlcmxheVBhZ2UgPSBuaWw7CisgICAgfQor
CiAgICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBjbG9zZV07CiAgICAgbV9pbnNwZWN0
b3JQcm94eU9iakNBZGFwdGVyID0gbmlsOwogfQpAQCAtNTYzLDYgKzU3MCw4NiBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQog
ICAgIHJldHVybiBpbnNwZWN0b3JQYWdlOwogfQogCitXZWJQYWdlUHJveHkqIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUNyZWF0ZU92ZXJsYXlQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9pbnNw
ZWN0ZWRQYWdlKTsKKworICAgIGlmIChtX292ZXJsYXlWaWV3KQorICAgICAgICByZXR1cm4gbV9v
dmVybGF5Vmlldy0+X3BhZ2UuZ2V0KCk7CisKKyAgICBOU1JlY3QgaW5zcGVjdGVkVmlld0ZyYW1l
ID0gbV9pbnNwZWN0ZWRQYWdlLT53a1ZpZXcoKS5mcmFtZTsKKworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgV0tQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c107CisjaWZuZGVmIE5ERUJVRworICAgIHByZWZlcmVuY2VzLl9sb2dzUGFnZU1lc3NhZ2VzVG9T
eXN0ZW1Db25zb2xlRW5hYmxlZCA9IFlFUzsKKyNlbmRpZgorICAgIHByZWZlcmVuY2VzLl9hbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBZRVM7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJv
Y2Vzc1Bvb2w6IDo6V2ViS2l0Ojp3cmFwcGVyKGluc3BlY3RvclByb2Nlc3NQb29sKCkpXTsKKwor
ICAgIG1fb3ZlcmxheVZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOmluc3BlY3RlZFZpZXdGcmFtZSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBBU1NFUlQobV9vdmVybGF5Vmlldyk7CisKKyAgICBbbV9vdmVybGF5VmlldyBfc2V0
RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ6WUVTXTsKKworICAgIFdlYlBhZ2VQcm94eSogb3Zl
cmxheVBhZ2UgPSBtX292ZXJsYXlWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICBBU1NFUlQob3Zlcmxh
eVBhZ2UpOworCisgICAgV0tQYWdlVUlDbGllbnRWMiB1aUNsaWVudCA9IHsKKyAgICAgICAgeyAy
LCB0aGlzIH0sCisgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMAorICAgICAgICAwLCAvLyBzaG93UGFnZQorICAgICAgICAwLCAvLyBjbG9zZVBhZ2UKKyAg
ICAgICAgMCwgLy8gdGFrZUZvY3VzCisgICAgICAgIDAsIC8vIGZvY3VzCisgICAgICAgIDAsIC8v
IHVuZm9jdXMKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CisgICAgICAgIDAsIC8v
IHJ1bkphdmFTY3JpcHRDb25maXJtCisgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQK
KyAgICAgICAgMCwgLy8gc2V0U3RhdHVzVGV4dAorICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIDAsIC8vIG1pc3NpbmdQ
bHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgMCwgLy8g
ZGlkTm90SGFuZGxlS2V5RXZlbnQKKyAgICAgICAgMCwgLy8gZGlkTm90SGFuZGxlV2hlZWxFdmVu
dAorICAgICAgICAwLCAvLyBhcmVUb29sYmFyc1Zpc2libGUKKyAgICAgICAgMCwgLy8gc2V0VG9v
bGJhcnNWaXNpYmxlCisgICAgICAgIDAsIC8vIGlzTWVudUJhclZpc2libGUKKyAgICAgICAgMCwg
Ly8gc2V0TWVudUJhclZpc2libGUKKyAgICAgICAgMCwgLy8gaXNTdGF0dXNCYXJWaXNpYmxlCisg
ICAgICAgIDAsIC8vIHNldFN0YXR1c0JhclZpc2libGUKKyAgICAgICAgMCwgLy8gaXNSZXNpemFi
bGUKKyAgICAgICAgMCwgLy8gc2V0UmVzaXphYmxlCisgICAgICAgIGdldFdpbmRvd0ZyYW1lLAor
ICAgICAgICBzZXRXaW5kb3dGcmFtZSwKKyAgICAgICAgMCwgLy8gcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsCisgICAgICAgIDAsIC8vIGRpZERyYXcKKyAgICAgICAgMCwgLy8gcGFnZURpZFNj
cm9sbAorICAgICAgICAwLCAvLyBleGNlZWRlZERhdGFiYXNlUXVvdGEsCisgICAgICAgIDAsIC8v
IHJ1bk9wZW5QYW5lbCwKKyAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICAwLCAvLyBoZWFkZXJIZWlnaHQKKyAgICAgICAgMCwg
Ly8gZm9vdGVySGVpZ2h0CisgICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKKyAgICAgICAgMCwgLy8g
ZHJhd0Zvb3RlcgorICAgICAgICAwLCAvLyBwcmludEZyYW1lCisgICAgICAgIDAsIC8vIHJ1bk1v
ZGFsCisgICAgICAgIDAsIC8vIHVudXNlZAorICAgICAgICAwLCAvLyBzYXZlRGF0YVRvRmlsZUlu
RG93bmxvYWRzRm9sZGVyCisgICAgICAgIDAsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQK
KyAgICAgICAgMCwgLy8gY3JlYXRlUGFnZQorICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudAorICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdAorICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMQorICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKKyAg
ICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCisgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZAorICAgIH07CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQodG9B
UEkob3ZlcmxheVBhZ2UpLCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICByZXR1cm4gb3ZlcmxheVBh
Z2U7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtT3BlbigpCiB7CiAgICAg
aWYgKG1faXNBdHRhY2hlZCkKQEAgLTcyNCw1NSArODExLDY0IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKENHRmxvYXQgY3VycmVudERpbWVuc2lvbikKIHsK
LSAgICBpZiAoIW1faXNBdHRhY2hlZCB8fCAhbV9pc1Zpc2libGUpCisgICAgaWYgKCFtX2lzVmlz
aWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5z
cGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBOU1JlY3QgaW5zcGVjdGVkVmlld0ZyYW1lID0g
W2luc3BlY3RlZFZpZXcgZnJhbWVdOwotICAgIE5TUmVjdCBpbnNwZWN0b3JGcmFtZSA9IE5TWmVy
b1JlY3Q7Ci0gICAgTlNSZWN0IHBhcmVudEJvdW5kcyA9IFtbaW5zcGVjdGVkVmlldyBzdXBlcnZp
ZXddIGJvdW5kc107Ci0gICAgQ0dGbG9hdCBpbnNwZWN0ZWRWaWV3VG9wID0gTlNNYXhZKGluc3Bl
Y3RlZFZpZXdGcmFtZSk7CiAKLSAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICBj
YXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206IHsKLSAgICAgICAgaWYgKCFjdXJyZW50RGltZW5z
aW9uKQotICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TSGVpZ2h0KFttX2luc3BlY3Rv
clZpZXcgZnJhbWVdKTsKKyAgICBpZiAobV9pc0F0dGFjaGVkKSB7CisgICAgICAgIE5TUmVjdCBw
YXJlbnRCb3VuZHMgPSBbW2luc3BlY3RlZFZpZXcgc3VwZXJ2aWV3XSBib3VuZHNdOworICAgICAg
ICBOU1JlY3QgaW5zcGVjdG9yRnJhbWUgPSBOU1plcm9SZWN0OworICAgICAgICBDR0Zsb2F0IGlu
c3BlY3RlZFZpZXdUb3AgPSBOU01heFkoaW5zcGVjdGVkVmlld0ZyYW1lKTsKIAotICAgICAgICBD
R0Zsb2F0IHBhcmVudEhlaWdodCA9IE5TSGVpZ2h0KHBhcmVudEJvdW5kcyk7Ci0gICAgICAgIENH
RmxvYXQgaW5zcGVjdG9ySGVpZ2h0ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29u
c3RyYWluZWRBdHRhY2hlZFdpbmRvd0hlaWdodChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRIZWln
aHQpOworICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKKyAgICAgICAgY2FzZSBB
dHRhY2htZW50U2lkZTo6Qm90dG9tOiB7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnREaW1lbnNp
b24pCisgICAgICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TSGVpZ2h0KFttX2luc3Bl
Y3RvclZpZXcgZnJhbWVdKTsKIAotICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9u
IG9mIHRoZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLgot
ICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KDAsIGluc3BlY3RvckhlaWdo
dCwgTlNXaWR0aChwYXJlbnRCb3VuZHMpLCBpbnNwZWN0ZWRWaWV3VG9wIC0gaW5zcGVjdG9ySGVp
Z2h0KTsKLSAgICAgICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgo
aW5zcGVjdGVkVmlld0ZyYW1lKSwgaW5zcGVjdG9ySGVpZ2h0KTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQorICAgICAgICAgICAgQ0dGbG9hdCBwYXJlbnRIZWlnaHQgPSBOU0hlaWdodChwYXJlbnRC
b3VuZHMpOworICAgICAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JIZWlnaHQgPSBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGN1cnJl
bnREaW1lbnNpb24sIHBhcmVudEhlaWdodCk7CiAKLSAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpS
aWdodDogewotICAgICAgICBpZiAoIWN1cnJlbnREaW1lbnNpb24pCi0gICAgICAgICAgICBjdXJy
ZW50RGltZW5zaW9uID0gTlNXaWR0aChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CisgICAgICAg
ICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSBpbnNwZWN0ZWQgdmlldyBz
byBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLgorICAgICAgICAgICAgaW5zcGVjdGVkVmll
d0ZyYW1lID0gTlNNYWtlUmVjdCgwLCBpbnNwZWN0b3JIZWlnaHQsIE5TV2lkdGgocGFyZW50Qm91
bmRzKSwgaW5zcGVjdGVkVmlld1RvcCAtIGluc3BlY3RvckhlaWdodCk7CisgICAgICAgICAgICBp
bnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0aChpbnNwZWN0ZWRWaWV3RnJh
bWUpLCBpbnNwZWN0b3JIZWlnaHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAot
ICAgICAgICBDR0Zsb2F0IHBhcmVudFdpZHRoID0gTlNXaWR0aChwYXJlbnRCb3VuZHMpOwotICAg
ICAgICBDR0Zsb2F0IGluc3BlY3RvcldpZHRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd1dpZHRoKGN1cnJlbnREaW1lbnNpb24sIHBhcmVu
dFdpZHRoKTsKKyAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6IHsKKyAgICAgICAg
ICAgIGlmICghY3VycmVudERpbWVuc2lvbikKKyAgICAgICAgICAgICAgICBjdXJyZW50RGltZW5z
aW9uID0gTlNXaWR0aChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CiAKLSAgICAgICAgLy8gUHJl
c2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgaW5zcGVjdGVkIHZpZXcgc28gYmFubmVycyBp
biBTYWZhcmkgc3RpbGwgd29yay4gQnV0IGRvbid0IHVzZSB0aGF0Ci0gICAgICAgIC8vIHRvcCBw
b3NpdGlvbiBmb3IgdGhlIGluc3BlY3RvciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9ubHkgc3Ry
ZXRjaCBhcyB3aWRlIGFzIHRoZSB0aGUgaW5zcGVjdGVkIHZpZXcuCi0gICAgICAgIGluc3BlY3Rl
ZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgcGFyZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0
aCwgaW5zcGVjdGVkVmlld1RvcCk7Ci0gICAgICAgIENHRmxvYXQgaW5zZXRFeGNsdWRpbmdCYW5u
ZXJzID0gaW5zcGVjdGVkVmlldy5fdG9wQ29udGVudEluc2V0IC0gaW5zcGVjdGVkVmlldy5fdG90
YWxIZWlnaHRPZkJhbm5lcnM7Ci0gICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVjdChw
YXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCAwLCBpbnNwZWN0b3JXaWR0aCwgTlNIZWlnaHQo
cGFyZW50Qm91bmRzKSAtIGluc2V0RXhjbHVkaW5nQmFubmVycyk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICB9CisgICAgICAgICAgICBDR0Zsb2F0IHBhcmVudFdpZHRoID0gTlNXaWR0aChw
YXJlbnRCb3VuZHMpOworICAgICAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JXaWR0aCA9IEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dXaWR0aChj
dXJyZW50RGltZW5zaW9uLCBwYXJlbnRXaWR0aCk7CiAKLSAgICBpZiAoTlNFcXVhbFJlY3RzKFtt
X2luc3BlY3RvclZpZXcgZnJhbWVdLCBpbnNwZWN0b3JGcmFtZSkgJiYgTlNFcXVhbFJlY3RzKFtp
bnNwZWN0ZWRWaWV3IGZyYW1lXSwgaW5zcGVjdGVkVmlld0ZyYW1lKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgaW5zcGVj
dGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4gQnV0IGRvbid0IHVzZSB0
aGF0CisgICAgICAgICAgICAvLyB0b3AgcG9zaXRpb24gZm9yIHRoZSBpbnNwZWN0b3IgdmlldyBz
aW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2ggYXMgd2lkZSBhcyB0aGUgdGhlIGluc3BlY3Rl
ZCB2aWV3LgorICAgICAgICAgICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAw
LCBwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCBpbnNwZWN0ZWRWaWV3VG9wKTsKKyAgICAg
ICAgICAgIENHRmxvYXQgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gaW5zcGVjdGVkVmlldy5fdG9w
Q29udGVudEluc2V0IC0gaW5zcGVjdGVkVmlldy5fdG90YWxIZWlnaHRPZkJhbm5lcnM7CisgICAg
ICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QocGFyZW50V2lkdGggLSBpbnNwZWN0
b3JXaWR0aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVudEJvdW5kcykgLSBpbnNl
dEV4Y2x1ZGluZ0Jhbm5lcnMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgfQogCi0gICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBpZ25vcmVOZXh0SW5zcGVj
dGVkVmlld0ZyYW1lRGlkQ2hhbmdlXTsKKyAgICAgICAgaWYgKCFOU0VxdWFsUmVjdHMoW21faW5z
cGVjdG9yVmlldyBmcmFtZV0sIGluc3BlY3RvckZyYW1lKSAmJiAhTlNFcXVhbFJlY3RzKFtpbnNw
ZWN0ZWRWaWV3IGZyYW1lXSwgaW5zcGVjdGVkVmlld0ZyYW1lKSkgeworICAgICAgICAgICAgLy8g
RklYTUU6IGlmIHRoaXMgaXMgYSBzeW5jaHJvbm91cyBldmVudCwgdGhlbiB3ZSBjYW4gdXNlIFRl
bXBvcmFyeUNoYW5nZTxUPiBoZXJlLgorICAgICAgICAgICAgW21faW5zcGVjdG9yUHJveHlPYmpD
QWRhcHRlciBpZ25vcmVOZXh0SW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlXTsKIAotICAgIC8v
IERpc2FibGUgc2NyZWVuIHVwZGF0ZXMgdG8gbWFrZSBzdXJlIHRoZSBsYXllcnMgZm9yIGJvdGgg
dmlld3MgcmVzaXplIGluIHN5bmMuCi0gICAgW1ttX2luc3BlY3RvclZpZXcgd2luZG93XSBkaXNh
YmxlU2NyZWVuVXBkYXRlc1VudGlsRmx1c2hdOworICAgICAgICAgICAgLy8gRGlzYWJsZSBzY3Jl
ZW4gdXBkYXRlcyB0byBtYWtlIHN1cmUgdGhlIGxheWVycyBmb3IgYm90aCB2aWV3cyByZXNpemUg
aW4gc3luYy4KKyAgICAgICAgICAgIFtbbV9pbnNwZWN0b3JWaWV3IHdpbmRvd10gZGlzYWJsZVNj
cmVlblVwZGF0ZXNVbnRpbEZsdXNoXTsKIAotICAgIFttX2luc3BlY3RvclZpZXcgc2V0RnJhbWU6
aW5zcGVjdG9yRnJhbWVdOwotICAgIFtpbnNwZWN0ZWRWaWV3IHNldEZyYW1lOmluc3BlY3RlZFZp
ZXdGcmFtZV07CisgICAgICAgICAgICBbbV9pbnNwZWN0b3JWaWV3IHNldEZyYW1lOmluc3BlY3Rv
ckZyYW1lXTsKKyAgICAgICAgICAgIFtpbnNwZWN0ZWRWaWV3IHNldEZyYW1lOmluc3BlY3RlZFZp
ZXdGcmFtZV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIU5TRXF1YWxSZWN0cyhbbV9v
dmVybGF5VmlldyBmcmFtZV0sIGluc3BlY3RlZFZpZXdGcmFtZSkpIHsKKyAgICAgICAgLy8gQWRq
dXN0IHRoZSBvdmVybGF5IGxhc3QsIHNpbmNlIGFuIGF0dGFjaGVkIGluc3BlY3RvciBtYXkgY2hh
bmdlIHRoZSBpbnNwZWN0ZWQgcGFnZSdzIHNpemUuCisgICAgICAgIFtbbV9vdmVybGF5VmlldyB3
aW5kb3ddIGRpc2FibGVTY3JlZW5VcGRhdGVzVW50aWxGbHVzaF07CisgICAgICAgIFttX292ZXJs
YXlWaWV3IHNldEZyYW1lOmluc3BlY3RlZFZpZXdGcmFtZV07CisgICAgfQogfQogCiB1bnNpZ25l
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKQpAQCAt
ODQ0LDYgKzk0MCwyNSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgp
CiAgICAgcGxhdGZvcm1CcmluZ1RvRnJvbnQoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1BdHRhY2hPdmVybGF5KCkKK3sKKyAgICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCB0
aGlzIG9ic2VydmVyIHR3aWNlLCBzaW5jZSB0aGUgZG9ja2VkIGluc3BlY3RvciB1c2VzIGl0IHRv
by4KKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygp
OworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6
bV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihpbnNw
ZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsKKworICAgIFtbaW5zcGVjdGVkVmlldyBzdXBl
cnZpZXddIGFkZFN1YnZpZXc6bV9vdmVybGF5Vmlldy5nZXQoKSBwb3NpdGlvbmVkOk5TV2luZG93
QWJvdmUgcmVsYXRpdmVUbzppbnNwZWN0ZWRWaWV3XTsKKyAgICAvLyBGSVhNRTogd2hlbiB0aGUg
b3ZlcmxheSBpcyByZWFkeSB0byBoYW5kbGUgdXNlciBpbnB1dCwgbWFrZSBmaXJzdCByZXNwb25k
ZXIgaGVyZS4KK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2hPdmVy
bGF5KCkKK3sKKyAgICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCB0aGlzIG9ic2VydmVyIHR3aWNlLCBz
aW5jZSB0aGUgZG9ja2VkIGluc3BlY3RvciB1c2VzIGl0IHRvby4KKyAgICBXS1ZpZXcgKmluc3Bl
Y3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOworICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9i
akNBZGFwdGVyLmdldCgpIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2Jq
ZWN0Omluc3BlY3RlZFZpZXddOworCisgICAgW21fb3ZlcmxheVZpZXcgcmVtb3ZlRnJvbVN1cGVy
dmlld107Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewogICAgIGlmICghbV9pc0F0dGFjaGVkKQpA
QCAtOTAzLDYgKzEwMTgsMTcgQEAgU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JC
YXNlVVJMKCkgY29uc3QKICAgICByZXR1cm4gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0g
YWJzb2x1dGVTdHJpbmddOwogfQogCitTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
ck92ZXJsYXlVUkwoKSBjb25zdAoreworICAgIC8vIENhbGwgdGhlIHNvZnQgbGluayBmcmFtZXdv
cmsgZnVuY3Rpb24gdG8gZGxvcGVuIGl0LCB0aGVuIFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpdIHdpbGwgd29yay4KKyAgICBXZWJJbnNwZWN0b3JVSUxpYnJhcnkoKTsKKworICAgIE5T
U3RyaW5nICpwYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBs
ZS5XZWJJbnNwZWN0b3JVSSJdIHBhdGhGb3JSZXNvdXJjZTpAIk92ZXJsYXkiIG9mVHlwZTpAImh0
bWwiXTsKKyAgICBBU1NFUlQoW3BhdGggbGVuZ3RoXSk7CisKKyAgICByZXR1cm4gW1tOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6cGF0aF0gYWJzb2x1dGVTdHJpbmddOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4ZDU1ODA3YWM4ZDRlNGNkNjFiMDk0MGE5NDhmODNhYjFjMTFkMDg5Li44MWVlM2ZiZjliMTA1
N2I3M2JhNzg0MGExNjY5ZGYzZjcwOGUzOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjIwLDYgKzE2MjAsNyBAQAogCQlD
MEUzQUE3QTEyMDlFODMwMDBBNDlEMDEgLyogTW9kdWxlQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFM0FBNDgxMjA5RTQ1MDAwQTQ5RDAxIC8q
IE1vZHVsZUNGLmNwcCAqLzsgfTsKIAkJQzBFM0FBN0IxMjA5RTgzNTAwQTQ5RDAxIC8qIE1vZHVs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUz
QUE0NTEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmNwcCAqLzsgfTsKIAkJQzBFM0FBN0MxMjA5
RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzBFM0FBNDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovOyB9
OworCQlDNEIyQkE0NzFBNkY0RUI5MDA5MDEyRUUgLyogV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNz
YWdlcy5pbiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzRCMkJBNDYxQTZGNEVCOTAwOTAxMkVFIC8qIFdlYkluc3BlY3Rvck92ZXJsYXkubWVzc2FnZXMu
aW4gKi87IH07CiAJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUx
NzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi87IH07CiAJ
CUM1MjM3RjYwMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTIzN0Y1RjEyNDQxQ0Ez
MDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tICovOyB9OwogCQlDNTQyNTZCNTE4QkVD
MThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQyNTZBRjE4QkVDMThCMDBERTQxNzkgLyogV0tG
b3JtSW5wdXRDb250cm9sLmggKi87IH07CkBAIC0zODMzLDYgKzM4MzQsOCBAQAogCQlDMEUzQUE0
NDEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEUzQUE0NTEy
MDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwRTNB
QTQ4MTIwOUU0NTAwMEE0OUQwMSAvKiBNb2R1bGVDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2R1bGVDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUM0QjJCQTQ1MUE2RjNGQzYwMDkwMTJFRSAvKiBXZWJJbnNwZWN0b3JPdmVybGF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvck92ZXJsYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRCMkJBNDYxQTZGNEVCOTAwOTAxMkVFIC8qIFdl
Ykluc3BlY3Rvck92ZXJsYXkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
SW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdDb250cm9sbGVyQWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MjM3RjVGMTI0NDFDQTMwMDc4MDQ3MiAvKiBX
ZWJFZGl0b3JDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJFZGl0b3JDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM1NDI1NkFGMThCRUMxOEIwMERFNDE3OSAvKiBXS0Zvcm1JbnB1dENvbnRyb2wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tGb3JtSW5wdXRDb250cm9sLmg7IHBhdGggPSBp
b3MvZm9ybXMvV0tGb3JtSW5wdXRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01OTk3LDYgKzYwMDAsOCBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJ
bnNwZWN0b3IuaCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yLm1lc3NhZ2VzLmluICovLAorCQkJCUM0QjJCQTQ1MUE2RjNGQzYwMDkwMTJFRSAvKiBXZWJJ
bnNwZWN0b3JPdmVybGF5LmggKi8sCisJCQkJQzRCMkJBNDYxQTZGNEVCOTAwOTAxMkVFIC8qIFdl
Ykluc3BlY3Rvck92ZXJsYXkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMUM4OTFENjIxOUIxMjRGRjAw
QkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLywKIAkJCQkxQzg5MUQ2MzE5QjEyNEZGMDBC
QTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLywKIAkJCQkxQzg5MUQ2NDE5QjEyNEZGMDBCQTc5
REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCkBAIC04NzIwLDYgKzg3MjUsNyBA
QAogCQkJZmlsZXMgPSAoCiAJCQkJRTFEMjZBNTExNzU5NjRENzAwOTVCRkQxIC8qIFdlYkNvbnRl
bnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTEzM0ZEOEExNDIzREQ3RjAwRkM3
QkZCIC8qIFdlYktpdC5pY25zIGluIFJlc291cmNlcyAqLywKKwkJCQlDNEIyQkE0NzFBNkY0RUI5
MDA5MDEyRUUgLyogV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbiBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNWE3ZjE3MDBiZDE5YWJjYWE3
Zjc4NTZkYTJhMDNlYjZjZTI2ZjFiMC4uYWQyMTk3NmM1MmIzY2VmNTdhMDEwNTYyZGIwYjJiOWQ1
NmM5ZmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTAxLDYgKzEwMSwx
MyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6YnJpbmdGcm9udGVuZFRvRnJvbnQoKQogICAg
ICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5icmluZ1RvRnJvbnQoKTsKIH0KIAorSW5zcGVjdG9y
OjpPdmVybGF5Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yT3Zlcmxh
eSgpCit7CisgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlT3ZlcmxheVBhZ2UoKTsKKwor
ICAgIHJldHVybiBtX3BhZ2UtPmluc3BlY3RvcigpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6ZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikKIHsKICAgICBpZiAobV9wYWdlLT5pbnNw
ZWN0b3IoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDlhNDQwMGJlNWFiYTZiOTk1
MTVmNmQ4OTFmNmU5YTgxNTY3OGE0MTUuLjRhYjJhZWI3MjZhNjUxNTQ2OWRlZjAwYTFiNjYzODk4
OThjMDUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTQsOCArNTQsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAgICAg
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIEluc3BlY3Rvcjo6
T3ZlcmxheUNoYW5uZWwqIG9wZW5JbnNwZWN0b3JPdmVybGF5KCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBicmluZ0Zyb250
ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOworICAgIAogICAgIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1l
KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcAppbmRleCA0NTcwZjkxMzQ3Y2ZlMDU4MTM5ZTA3NThjNjIwYTkzODUwODYwOTk1Li41
YTdmOGYxMTE0ZTA4YTQyODE0YzUyNjFkYmVlOTVjY2RhMGIzMGFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3Rvck92ZXJsYXlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtMTAyLDYgKzEwMyw5IEBA
IHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kKCkKICAgICBtX2Zyb250ZW5kQ29ubmVj
dGlvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fZnJvbnRlbmRDb25uZWN0aW9uID0gbnVsbHB0cjsK
IAorICAgIG1fb3ZlcmxheUNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX292ZXJsYXlD
b25uZWN0aW9uID0gbnVsbHB0cjsKKwogICAgIG1fYXR0YWNoZWQgPSBmYWxzZTsKICAgICBtX3By
ZXZpb3VzQ2FuQXR0YWNoID0gZmFsc2U7CiB9CkBAIC0xMTEsNiArMTE1LDMyIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVj
dG9yOjpjcmVhdGVPdmVybGF5UGFnZSgpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybjsKKworI2lmIE9TKERBUldJTikKKyAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0Owor
ICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRf
UkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpOworICAgIElQQzo6QXR0YWNo
bWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01B
S0VfU0VORCk7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICBJUEM6OkNvbm5l
Y3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxh
dGZvcm1Db25uZWN0aW9uKCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKHNvY2tldFBhaXIuc2VydmVyKTsKKyAgICBJUEM6OkF0dGFjaG1lbnQg
Y29ubmVjdGlvbkNsaWVudFBvcnQoc29ja2V0UGFpci5jbGllbnQpOworI2Vsc2UKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgbV9vdmVybGF5Q29ubmVj
dGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9u
SWRlbnRpZmllciwgKnRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9vdmVybGF5Q29ubmVj
dGlvbi0+b3BlbigpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkNyZWF0ZU92
ZXJsYXlQYWdlKGNvbm5lY3Rpb25DbGllbnRQb3J0KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisK
IC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKIHZvaWQgV2ViSW5zcGVjdG9yOjpz
aG93KCkKIHsKQEAgLTI1Niw2ICsyODYsMTIgQEAgYm9vbCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNz
YWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvT3ZlcmxheShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgbV9vdmVybGF5Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yT3ZlcmxheTo6U2VuZE1lc3NhZ2VUb092ZXJsYXkobWVzc2FnZSksIDApOworICAg
IHJldHVybiB0cnVlOworfQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiB2b2lkIFdl
Ykluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCmluZGV4IGVkODVjOTA5YjI5
MmFhZmE5Yzk0M2ZlYzRhNGU0ZTFiNDQyNWJjMjkuLjg0MGRkNmM0YzU5MDNmMjM1YmRiNzU5YWY1
YWZhYmZhNDM2NWU3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JGb3J3YXJkaW5nLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3ZlcmxheUNoYW5u
ZWwuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtMzcsNyArMzgsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4sIHB1YmxpYyBJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7
CitjbGFzcyBXZWJJbnNwZWN0b3IKKyAgICA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4KKyAgICAsIHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAorICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsCisgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBjcmVhdGUoV2ViUGFnZSopOwogCkBA
IC00NSw4ICs1MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFi
aWxpdHkoKTsKIAorICAgIC8vIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsCiAg
ICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogCisgICAgLy8gSW5zcGVjdG9yOjpPdmVybGF5Q2hhbm5lbAorICAgIHZp
cnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvT3ZlcmxheShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92
ZXJyaWRlOworCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3Rvck1l
c3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIApAQCAtOTYsNiArMTA1LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckNsaWVudAogICAg
IHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZShib29sIHVuZGVyVGVzdCk7CisgICAgdm9pZCBjcmVh
dGVPdmVybGF5UGFnZSgpOwogCiAgICAgdm9pZCBjbG9zZUZyb250ZW5kKCk7CiAgICAgdm9pZCBi
cmluZ1RvRnJvbnQoKTsKQEAgLTEwMyw2ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2Uq
IG1fcGFnZTsKIAogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fZnJvbnRlbmRDb25uZWN0
aW9uOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fb3ZlcmxheUNvbm5lY3Rpb247CiAK
ICAgICBib29sIG1fYXR0YWNoZWQ7CiAgICAgYm9vbCBtX3ByZXZpb3VzQ2FuQXR0YWNoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvck92
ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ck92ZXJsYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMTlkYjljZWVjNzY4YjUzNzAxZDBmNmRhMmJkOGM4
YWE5Y2U3NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yT3ZlcmxheS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIldl
Ykluc3BlY3Rvck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0No
cm9tZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRHbG9iYWxP
YmplY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFN0YXRlLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFdlYkluc3BlY3Rvck92
ZXJsYXk+IFdlYkluc3BlY3Rvck92ZXJsYXk6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkluc3BlY3Rvck92ZXJsYXkocGFnZSkpOworfQorCitX
ZWJJbnNwZWN0b3JPdmVybGF5OjpXZWJJbnNwZWN0b3JPdmVybGF5KFdlYlBhZ2UqIHBhZ2UpCisg
ICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVybGF5Ojplc3Rh
Ymxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCkKK3sK
KyNpZiBPUyhEQVJXSU4pCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rp
b25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworI2VsaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNl
RmlsZURlc2NyaXB0b3IoKSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuOworI2VuZGlmCisKKyAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxs
KGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworCisgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQodGhpcyk7CisKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9u
OjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcywgUnVu
TG9vcDo6bWFpbigpKTsKKyAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5vcGVuKCk7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6d2luZG93T2JqZWN0Q2xlYXJlZCgpCit7CisgICAgaWYg
KG1fZnJvbnRlbmRIb3N0KQorICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENsaWVu
dCgpOworCisgICAgbV9mcm9udGVuZEhvc3QgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmNyZWF0
ZSh0aGlzLCBtX3BhZ2UtPmNvcmVQYWdlKCkpOworICAgIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0
KGV4ZWNTdGF0ZUZyb21QYWdlKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBtX3BhZ2UtPmNvcmVQ
YWdlKCkpLCBBU0NJSUxpdGVyYWwoIkluc3BlY3RvckZyb250ZW5kSG9zdCIpLCBtX2Zyb250ZW5k
SG9zdC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZnJvbnRlbmRMb2Fk
ZWQoKQoreworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgZXZhbHVhdGVQZW5k
aW5nRXhwcmVzc2lvbnMoKTsKKyAgICBicmluZ1RvRnJvbnQoKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JPdmVybGF5Ojptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBGbG9h
dFJlY3QgZnJhbWVSZWN0ID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS53aW5kb3dSZWN0
KCk7CisgICAgZnJhbWVSZWN0Lm1vdmUoeCwgeSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5j
aHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVjdCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
T3ZlcmxheTo6YnJpbmdUb0Zyb250KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdl
Ykluc3BlY3Rvck92ZXJsYXk6OmNsb3NlV2luZG93KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisKKyAgICBt
X2JhY2tlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgbV9iYWNrZW5kQ29ubmVjdGlv
biA9IG51bGxwdHI7CisKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBt
X3VuZGVyVGVzdCA9IGZhbHNlOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6OnJlcXVl
c3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQoreworICAgIHN3aXRjaCAoc2lkZSkgeworICAg
IGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgorICAgICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6
c2V0RG9ja1NpZGUoRG9ja1NpZGUgc2lkZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzaWRlU3RyaW5n
OworCisgICAgc3dpdGNoIChzaWRlKSB7CisgICAgY2FzZSBEb2NrU2lkZTo6VW5kb2NrZWQ6Cisg
ICAgICAgIHNpZGVTdHJpbmcgPSAidW5kb2NrZWQiOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgRG9ja1NpZGU6OlJpZ2h0OgorICAgICAgICBzaWRlU3RyaW5nID0gInJpZ2h0IjsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIERvY2tTaWRlOjpCb3R0b206CisgICAgICAgIHNpZGVTdHJp
bmcgPSAiYm90dG9tIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV9kb2NrU2lkZSA9
IHNpZGU7CisKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVNDSUlMaXRlcmFsKCJzZXREb2Nr
U2lkZSIpLCBBU0NJSUxpdGVyYWwoc2lkZVN0cmluZykpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
ck92ZXJsYXk6OmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKK3sK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVp
Z2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9y
T3ZlcmxheTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJs
YXk6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQoreworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpTZXRUb29sYmFySGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIpOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6Om9wZW5Jbk5ld1RhYihj
b25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAobV9iYWNrZW5kQ29ubmVjdGlvbikKKyAgICAg
ICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpPcGVu
SW5OZXdUYWIodXJsKSwgMCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2F2ZShj
b25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBi
b29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCit7CisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNl
U2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yT3ZlcmxheTo6YXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVu
ZChmaWxlbmFtZSwgY29udGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworfQorCit2
b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Okluc3BlY3RlZFVS
TENoYW5nZWQodXJsU3RyaW5nKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2hvd0NvbnNvbGUoKQoreworICAgIGV2YWx1YXRlQ29t
bWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNob3dDb25zb2xlIikpOworfQorCit2b2lkIFdlYklu
c3BlY3Rvck92ZXJsYXk6OnNob3dSZXNvdXJjZXMoKQoreworICAgIGV2YWx1YXRlQ29tbWFuZE9u
TG9hZChBU0NJSUxpdGVyYWwoInNob3dSZXNvdXJjZXMiKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yT3ZlcmxheTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFN0cmluZyBmcmFtZUlkZW50aWZp
ZXIpCit7CisgICAgZXZhbHVhdGVDb21tYW5kT25Mb2FkKEFTQ0lJTGl0ZXJhbCgic2hvd01haW5S
ZXNvdXJjZUZvckZyYW1lIiksIGZyYW1lSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViSW5zcGVj
dG9yT3ZlcmxheTo6c3RhcnRQYWdlUHJvZmlsaW5nKCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRP
bkxvYWQoQVNDSUlMaXRlcmFsKCJzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiKSwgdHJ1ZSk7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c3RvcFBhZ2VQcm9maWxpbmcoKQorewor
ICAgIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChBU0NJSUxpdGVyYWwoInNldFRpbWVsaW5lUHJvZmls
aW5nRW5hYmxlZCIpLCBmYWxzZSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZGlk
U2F2ZShjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoQVND
SUlMaXRlcmFsKCJzYXZlZFVSTCIpLCB1cmwpOworfQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJs
YXk6OmRpZEFwcGVuZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRP
bkxvYWQoQVNDSUlMaXRlcmFsKCJhcHBlbmRlZFRvVVJMIiksIHVybCk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yT3ZlcmxheTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5zcGVj
dG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdlQXN5bmMoIiwgbWVzc2FnZSwgIikiKSk7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX2JhY2tlbmRDb25uZWN0aW9uKQorICAgICAg
ICBtX2JhY2tlbmRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRN
ZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCAwKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JPdmVy
bGF5OjpldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBT
dHJpbmcmIGFyZ3VtZW50KQoreworICAgIGlmIChhcmd1bWVudC5pc051bGwoKSkKKyAgICAgICAg
ZXZhbHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJ
LmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIl0pIikpOworICAgIGVsc2UKKyAgICAgICAgZXZh
bHVhdGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRp
c3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIiwgXCIiLCBhcmd1bWVudCwgIlwiXSkiKSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0IFN0
cmluZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVudCkKK3sKKyAgICBldmFsdWF0ZUNvbW1hbmRPbkxv
YWQoY29tbWFuZCwgQVNDSUlMaXRlcmFsKGFyZ3VtZW50ID8gInRydWUiIDogImZhbHNlIikpOwor
fQorCit2b2lkIFdlYkluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24pCit7CisgICAgaWYgKG1fZnJvbnRlbmRMb2FkZWQpIHsK
KyAgICAgICAgQVNTRVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAgICAgICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9xdWV1ZS5hcHBlbmQoZXhwcmVzc2lvbik7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVQZW5kaW5nRXhwcmVzc2lv
bnMoKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5kTG9hZGVkKTsKKworICAgIGZvciAoY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uIDogbV9xdWV1ZSkKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KGV4cHJlc3Npb24pOworCisgICAg
bV9xdWV1ZS5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvck92ZXJsYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDE0NmU0NWRkMTI1
NDFiZDdjYzc4NjlhMzI0NDA2OTlkNTE0ZjFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvck92ZXJsYXkuaApAQCAtMCwwICsx
LDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW5zcGVjdG9y
T3ZlcmxheV9oCisjZGVmaW5lIFdlYkluc3BlY3Rvck92ZXJsYXlfaAorCisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2Ns
YXNzIFdlYkluc3BlY3Rvck92ZXJsYXkKKyAgICA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNs
aWVudAorICAgICwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYkluc3BlY3Rvck92ZXJsYXk+IGNyZWF0ZShXZWJQYWdl
Kik7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisKKyAg
ICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yT3ZlcmxheU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKworICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZSB7
IGNsb3NlV2luZG93KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Up
IG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQorCisgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3Bl
Y3Rvck92ZXJsYXkgbWVzc2FnZXMKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpB
dHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRl
bnRpZmllciwgYm9vbCB1bmRlclRlc3QpOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvT3Zlcmxh
eShjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50CisvKgorICAgIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZs
b2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOworCisgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NV
UkwoKSBvdmVycmlkZTsKKworICAgIHZvaWQgYnJpbmdUb0Zyb250KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOworCisgICAgdm9pZCByZXF1ZXN0U2V0RG9ja1Np
ZGUoRG9ja1NpZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWdu
ZWQpIG92ZXJyaWRlOworCisgICAgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwp
IG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5TYXZlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZl
KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29s
IGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpIG92ZXJyaWRlOworICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50KSBv
dmVycmlkZTsKKworICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisqLworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rvck92ZXJs
YXkoV2ViUGFnZSopOworCisvKgorICAgIHZvaWQgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbnN0
IFN0cmluZyYgY29tbWFuZCwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCA9IFN0cmluZygpKTsKKyAg
ICB2b2lkIGV2YWx1YXRlQ29tbWFuZE9uTG9hZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGNvbnN0
IEFTQ0lJTGl0ZXJhbCYgYXJndW1lbnQpIHsgZXZhbHVhdGVDb21tYW5kT25Mb2FkKGNvbW1hbmQs
IFN0cmluZyhhcmd1bWVudCkpOyB9CisgICAgdm9pZCBldmFsdWF0ZUNvbW1hbmRPbkxvYWQoY29u
c3QgU3RyaW5nJiBjb21tYW5kLCBib29sIGFyZ3VtZW50KTsKKyAgICB2b2lkIGV2YWx1YXRlRXhw
cmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pOworICAgIHZvaWQgZXZhbHVh
dGVQZW5kaW5nRXhwcmVzc2lvbnMoKTsKKyovCisgICAgV2ViUGFnZSogbV9wYWdlOworCisgICAg
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9iYWNrZW5kQ29ubmVjdGlvbjsKKyAgICB1aW50NjRf
dCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOworCisvKgorICAgIGJvb2wgbV9mcm9udGVuZExv
YWRlZDsKKyAgICBEZXF1ZTxTdHJpbmc+IG1fcXVldWU7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zyb250ZW5kSG9zdDsKKworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIG11dGFibGUgU3RyaW5nIG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKKyAgICBtdXRh
YmxlIGJvb2wgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMOworI2VuZGlmCisqLworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5k
aWYgLy8gV2ViSW5zcGVjdG9yT3ZlcmxheV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JPdmVybGF5Lm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU4YWE3NzhlYTM0NzhiZDdmMGRhNjkyZTU3MjRmMTJlNWRiNTEyMWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yT3ZlcmxheS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdo
dCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JPdmVybGF5IHsKKyAgICBFc3Rh
Ymxpc2hDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpCisKKyAgICBTZW5kTWVzc2FnZVRvT3Zlcmxh
eShTdHJpbmcgbWVzc2FnZSkKK30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>