<?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>133053</bug_id>
          
          <creation_ts>2014-05-18 11:44:38 -0700</creation_ts>
          <short_desc>[WebKit2] Implement ScriptMessageHandlers</short_desc>
          <delta_ts>2014-05-19 08:21:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1010089</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-18 11:44:38 -0700</bug_when>
    <thetext>[WebKit2] Implement ScriptMessageHandlers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010090</commentid>
    <comment_count>1</comment_count>
      <attachid>231659</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-18 11:45:31 -0700</bug_when>
    <thetext>Created attachment 231659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010091</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-18 11:48:15 -0700</bug_when>
    <thetext>Attachment 231659 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/UserContent/WebScriptMessageHandler.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/WebKitNamespace.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/UserContentController.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/UserMessageHandlersNamespace.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/page/UserMessageHandler.cpp:60:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
ERROR: Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/UserContent/WebUserContentController.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/js/JSDOMWindowBase.cpp:42:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 8 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010096</commentid>
    <comment_count>3</comment_count>
      <attachid>231663</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-18 12:45:09 -0700</bug_when>
    <thetext>Created attachment 231663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010101</commentid>
    <comment_count>4</comment_count>
      <attachid>231663</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-18 13:56:08 -0700</bug_when>
    <thetext>Comment on attachment 231663
Patch

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

&gt; Source/WebCore/WebCore.exp.in:2210
&gt;  __ZN7WebCore20applicationIsHRBlockEv
&gt;  __ZN7WebCore20builtInPDFPluginNameEv
&gt;  __ZN7WebCore21DeviceOrientationData6createEbdbdbdbb
&gt; +__ZN7WebCore21UserContentController13addUserScriptERNS_15DOMWrapperWorldENSt3__110unique_ptrINS_10UserScriptENS3_14default_deleteIS5_EEEE
&gt; +__ZN7WebCore21UserContentController17removeUserScriptsERNS_15DOMWrapperWorldE
&gt; +__ZN7WebCore21UserContentController31addUserMessageHandlerDescriptorEPNS_28UserMessageHandlerDescriptorE
&gt; +__ZN7WebCore21UserContentController34removeUserMessageHandlerDescriptorEPNS_28UserMessageHandlerDescriptorE
&gt; +__ZN7WebCore21UserContentController6createEv
&gt; +__ZN7WebCore21UserContentControllerD1Ev
&gt;  __ZN7WebCore21applicationIsApertureEv
&gt;  __ZN7WebCore21applicationIsVersionsEv
&gt;  __ZN7WebCore21reportThreadViolationEPKcNS_20ThreadViolationRoundE

Please remove this.

&gt; Source/WebCore/page/DOMWindow.cpp:750
&gt; +        return 0;

nullptr.

&gt; Source/WebCore/page/UserContentController.h:74
&gt; +    void addUserMessageHandlerDescriptor(UserMessageHandlerDescriptor*);
&gt; +    void removeUserMessageHandlerDescriptor(UserMessageHandlerDescriptor*);

These should be references.

&gt; Source/WebCore/page/UserMessageHandler.cpp:49
&gt; +    m_descriptor-&gt;client().didPostMessage(*this, value.get());

You can just pass prpValue.get() directly here and get rid of the RefPtr variable. (And rename prpValue to value).

&gt; Source/WebCore/page/UserMessageHandler.h:39
&gt; +    static PassRef&lt;UserMessageHandler&gt; create(Frame* frame, UserMessageHandlerDescriptor&amp; descriptor)

Frame&amp;.

&gt; Source/WebCore/page/UserMessageHandler.h:51
&gt; +    explicit UserMessageHandler(Frame*, UserMessageHandlerDescriptor&amp;);

This doesn&apos;t have to be explicit.

&gt; Source/WebCore/page/UserMessageHandlersNamespace.h:47
&gt; +    static PassRef&lt;UserMessageHandlersNamespace&gt; create(Frame* frame)

Frame&amp;.

&gt; Source/WebCore/page/UserMessageHandlersNamespace.h:57
&gt; +    explicit UserMessageHandlersNamespace(Frame*);

Frame&amp;.

&gt; Source/WebCore/page/WebKitNamespace.h:43
&gt; +    static PassRefPtr&lt;WebKitNamespace&gt; create(Frame* frame)

Frame&amp;.

&gt; Source/WebCore/page/WebKitNamespace.h:53
&gt; +    explicit WebKitNamespace(Frame*);

Frame&amp;.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKScriptMessage.mm:46
&gt; +    _body = body;

I think you want to copy the body as well.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm:127
&gt; +        [NSException raise:NSInvalidArgumentException format:@&quot;Attempt to add ScriptMessageHandler with name &apos;%@&apos; when one already exists.&quot;, name];

No need to capitalize ScriptMessageHandler, can just be &quot;script message handler&quot;.

&gt; Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp:133
&gt; +        WebProcessProxy* webProcess = WebProcessProxy::fromConnection(connection);

Wonky indentation.

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:2985
&gt; +		7C361D76192803BD0036A59D /* WebUserContentControllerProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebUserContentControllerProxyMessageReceiver.cpp; path = ../../../../../../../../../../../Builds/Debug/DerivedSources/WebKit2/WebUserContentControllerProxyMessageReceiver.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		7C361D77192803BD0036A59D /* WebUserContentControllerProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebUserContentControllerProxyMessages.h; path = ../../../../../../../../../../../Builds/Debug/DerivedSources/WebKit2/WebUserContentControllerProxyMessages.h; sourceTree = &quot;&lt;group&gt;&quot;; };

These have the wrong path.

&gt; Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp:127
&gt; +            webPage-&gt;pageID(),
&gt; +            webFrame-&gt;frameID(),
&gt; +            m_identifier,
&gt; +            IPC::DataReference(value-&gt;data())
&gt; +        ), m_controller-&gt;identifier());

This is not how we indent things in WebKit!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010102</commentid>
    <comment_count>5</comment_count>
      <attachid>231663</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-05-18 13:57:11 -0700</bug_when>
    <thetext>Comment on attachment 231663
Patch

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

&gt; Source/WebKit2/WebProcess/UserContent/WebUserContentController.h:62
&gt; +    HashMap&lt;uint64_t, RefPtr&lt;WebUserMessageHandlerDescriptorProxy&gt;&gt; m_userMessageHandlerDescriptors;

It will break the !ENABLE(USER_MESSAGE_HANDLERS) build, because
this class is inside this guard, we can&apos;t use it outside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010103</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-05-18 13:58:15 -0700</bug_when>
    <thetext>I didn&apos;t want to remove the r+ intentionally, but my comment conflicted with the r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010121</commentid>
    <comment_count>7</comment_count>
      <attachid>231669</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-18 15:42:26 -0700</bug_when>
    <thetext>Created attachment 231669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010122</commentid>
    <comment_count>8</comment_count>
      <attachid>231669</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-18 15:47:09 -0700</bug_when>
    <thetext>Comment on attachment 231669
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm:110
&gt; +        id body = [value toDictionary];

This doesn&apos;t handle every object. At the very least we should handle arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010124</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-18 16:13:06 -0700</bug_when>
    <thetext>Committed r169023: &lt;http://trac.webkit.org/changeset/169023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010189</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-05-19 08:21:33 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r169023: &lt;http://trac.webkit.org/changeset/169023&gt;

Mac rebaselines landed in https://trac.webkit.org/changeset/169044 to try to
unbreak red buildbots and dead EWS bots. Could you possibly verify if the
new results are correct or not? (if you don&apos;t have time to wait for EWS ...)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231659</attachid>
            <date>2014-05-18 11:45:31 -0700</date>
            <delta_ts>2014-05-18 12:45:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133053-20140518114508.patch</filename>
            <type>text/plain</type>
            <size>122795</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE0LTA1LTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYktpdDJdIEltcGxlbWVudCBTY3Jp
cHRNZXNzYWdlSGFuZGxlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMzA1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3REZWxlZ2F0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpzaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp3ZWJraXROYW1lc3BhY2UpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJv
bGxlcjo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcik6CisgICAgICAgICogcGFn
ZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50
Q29udHJvbGxlcjo6dXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMpOgorICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVzc2FnZUhhbmRsZXI6OlVzZXJNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyTWVzc2FnZUhhbmRsZXI6On5Vc2VyTWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VXNlck1lc3NhZ2VIYW5kbGVyOjpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyTWVzc2FnZUhhbmRsZXI6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lc3NhZ2VI
YW5kbGVyOjp3b3JsZCk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdl
L1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6
flVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yOjp3b3JsZCk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvcjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpjbGllbnQpOgorICAgICAgICAqIHBhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmg6IEFkZGVkLgorICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTo6VXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
Ojp+VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpoYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvV2ViS2l0
TmFtZXNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6
OldlYktpdE5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6On5X
ZWJLaXROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZXNwYWNlOjptZXNz
YWdlSGFuZGxlcnMpOgorICAgICAgICAqIHBhZ2UvV2ViS2l0TmFtZXNwYWNlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZXNwYWNlOjpjcmVhdGUpOgorICAgICAgICAqIHBh
Z2UvV2ViS2l0TmFtZXNwYWNlLmlkbDogQWRkZWQuCisKIDIwMTQtMDUtMTggIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaU9TIGJ1aWxkLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxNjkwMTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00ODAsNiAr
NDgwLDkgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1Nw
ZWVjaElucHV0UmVzdWx0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1NwZWVjaElucHV0UmVz
dWx0TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9XZWJLaXRQb2ludC5pZGwgXAorICAg
ICQoV2ViQ29yZSkvcGFnZS9XZWJLaXROYW1lc3BhY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Bh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5pZGwgXAorICAgICQoV2ViQ29yZSkvcGFn
ZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvV2luZG93QmFz
ZTY0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1dpbmRvd1RpbWVycy5pZGwgXAogICAgICQo
V2ViQ29yZSkvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiAxNjkwMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTAxMSw2ICsxMDExLDggQEAgX19aTjdXZWJDb3JlMjdyZXBvcnRE
ZXByZWNhdGVkU2V0dGVyRXJybwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXNFUEZ2dkUKIF9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEy
YWRkVXNlclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUUKIF9f
Wk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRF
TjNXVEY3UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQorX19aTjdXZWJDb3JlMjhV
c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yQzFFUktOM1dURjEyQXRvbWljU3RyaW5nRVJOU18x
NURPTVdyYXBwZXJXb3JsZEVSTlMwXzZDbGllbnRFCitfX1pON1dlYkNvcmUyOFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JEMUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKIF9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfCkBAIC0yMTk3LDYg
KzIxOTksMTIgQEAgX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIzZGlkUgogX19a
TjdXZWJDb3JlMjBhcHBsaWNhdGlvbklzSFJCbG9ja0V2CiBfX1pON1dlYkNvcmUyMGJ1aWx0SW5Q
REZQbHVnaW5OYW1lRXYKIF9fWk43V2ViQ29yZTIxRGV2aWNlT3JpZW50YXRpb25EYXRhNmNyZWF0
ZUViZGJkYmRiYgorX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIxM2FkZFVzZXJT
Y3JpcHRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRU5TdDNfXzExMHVuaXF1ZV9wdHJJTlNfMTBVc2Vy
U2NyaXB0RU5TM18xNGRlZmF1bHRfZGVsZXRlSVM1X0VFRUUKK19fWk43V2ViQ29yZTIxVXNlckNv
bnRlbnRDb250cm9sbGVyMTdyZW1vdmVVc2VyU2NyaXB0c0VSTlNfMTVET01XcmFwcGVyV29ybGRF
CitfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjMxYWRkVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvckVQTlNfMjhVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRQorX19aTjdX
ZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzNHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JFUE5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckUKK19fWk43V2ViQ29y
ZTIxVXNlckNvbnRlbnRDb250cm9sbGVyNmNyZWF0ZUV2CitfX1pON1dlYkNvcmUyMVVzZXJDb250
ZW50Q29udHJvbGxlckQxRXYKIF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc0FwZXJ0dXJlRXYK
IF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc1ZlcnNpb25zRXYKIF9fWk43V2ViQ29yZTIxcmVw
b3J0VGhyZWFkVmlvbGF0aW9uRVBLY05TXzIwVGhyZWFkVmlvbGF0aW9uUm91bmRFCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNjkwMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIzMzksMTIgKzIzMzksMjMgQEAKIAkJN0JF
NzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4
RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKIAkJN0MyQkREM0QxN0M3Rjk4
QzAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyog
SlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLzsgfTsKIAkJN0MyQkREM0UxN0M3Rjk4QzAwMzhG
RjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xv
YmFsT2JqZWN0VGFzay5oICovOyB9OworCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIu
Y3BwICovOyB9OworCQk3QzNCNzk3MjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5k
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNC
Nzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzRTUxMEExOERGOEYzNTAw
QzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDM0U1MTA4MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Mz
RTUxMEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNFNTEwOTE4REY4RjM1MDBDMTEyRjcg
LyogSFRNTENvbnZlcnRlci5tbSAqLzsgfTsKKwkJN0M0OEE2RDAxOTFDOUQ2NTAwMDI2Njc0IC8q
IFdlYktpdE5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzQ4QTZDRTE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNw
cCAqLzsgfTsKKwkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0OEE2Q0Yx
OTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5oICovOyB9OwogCQk3QzQ5MDJBMjE4
QjgyNUY4MDA3RDkyOTggLyogRE9NV2hlZWxFdmVudEludGVybmFsLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTk4OURDQTBB
Q0M4QkJEMDBBMEJDNTEgLyogRE9NV2hlZWxFdmVudEludGVybmFsLmggKi87IH07CiAJCTdDNTIy
RDRCMTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5
NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLzsgfTsKIAkJN0M1MzQzRkMxN0I3NEI2MzAwNDIz
MkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMyRjAgLyogSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3NEI2MzAwNDIz
MkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oICovOyB9OworCQk3QzczRkIwNzE5MUVGNDE3MDA3REUwNjEg
LyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzczRkIwNTE5MUVGNDE2MDA3REUwNjEgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgKi87IH07CisJCTdDNzNGQjA4MTkxRUY0MTcw
MDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzczRkIwNjE5MUVGNDE3MDA3REUwNjEg
LyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDNzNGQjBDMTkxRUY1QTgwMDdERTA2MSAvKiBK
U1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMEExOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgKi87IH07CisJCTdDNzNGQjBEMTkxRUY1QTgw
MDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjBCMTkxRUY1QTgwMDdERTA2
MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaCAqLzsgfTsKKwkJN0M3M0ZCMTEx
OTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjBGMTkxRUY2RjQwMDdERTA2
MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CisJCTdDNzNGQjEyMTkxRUY2RjQw
MDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNl
ck1lc3NhZ2VIYW5kbGVyLmggKi87IH07CisJCTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2MSAvKiBK
U1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTcxOTFFRjgwODAwN0RFMDYxIC8q
IEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgKi87IH07CiAJCTdDNzRE
NDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMxMTg4MjNBOTMwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLzsgfTsKIAkJN0M3NEQ0MzQxODgyM0E5
MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4
dFByb3ZpZGVyTGF0aW4xLmggKi87IH07CiAJCTdDNzRENDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLzsg
fTsKQEAgLTIzNTMsNyArMjM2NCwxMiBAQAogCQk3Qzc0RDQzQzE4ODI0MDA0MDBFNUVENTcgLyog
VVRleHRQcm92aWRlclVURjE2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2
LmggKi87IH07CiAJCTdDQzU2NEI4MThCQUJFQTYwMDFCOTY1MiAvKiBUZWxlcGhvbmVOdW1iZXJE
ZXRlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NDNTY0QjYxOEJBQkVBNjAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yLmggKi87
IH07CiAJCTdDQzU2NEJBMThCQUM3MjAwMDFCOTY1MiAvKiBUZWxlcGhvbmVOdW1iZXJEZXRlY3Rv
ckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDQzU2NEI5MThCQUM3MjAwMDFCOTY1MiAvKiBUZWxlcGhvbmVOdW1iZXJEZXRlY3RvckNvY29h
LmNwcCAqLzsgfTsKKwkJN0NDNjk5NDAxOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNw
YWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzY5OTNFMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVzcGFjZS5jcHAgKi87IH07CisJ
CTdDQzY5OTQxMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVzcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDNjk5M0YxOTFFQzVGNTAw
QUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggKi87IH07CiAJCTdDQzdFM0Q3MTcyMDhDMEYw
MDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSURO
U2NyaXB0V2hpdGVMaXN0LnR4dCAqLzsgfTsKKwkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8q
IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwICovOyB9OworCQk3Q0U2ODM0NTE5MjE0M0E4MDBG
NEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDMxOTIxNDNBODAwRjREOTI4IC8q
IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3Q0U2ODM0NzE5MjE4MjE1MDBGNEQ5MjggLyogVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5MjggLyogVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NFNkNCRkIxODdGMzcwNzAwRDQ2QkY1IC8qIEZvcm1h
dENvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0NFNkNCRkExODdGMzcwNzAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5oICovOyB9Owog
CQk3Q0U2Q0JGRDE4N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTZDQkZDMTg3RjM5NDkw
MEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwICovOyB9OwogCQk3RDc0MUJEQTE3NzIyNkFB
MDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQxMzA0MzAwMEU2
MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKQEAgLTk0MDEsOCArOTQxNywxMyBAQAog
CQk3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVlRUUmVnaW9uTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9N
R2xvYmFsT2JqZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJE
RDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVz
c2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzQjc5
NzAxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MzRTUxMDgxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTENvbnZlcnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNFNTEwOTE4REY4RjM1MDBDMTEyRjcgLyogSFRN
TENvbnZlcnRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhU
TUxDb252ZXJ0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNDhBNkNFMTkx
QzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0TmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0M0OEE2Q0YxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0OEE2RDIxOTFDOUQ4RTAwMDI2Njc0IC8qIFdl
YktpdE5hbWVzcGFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0TmFtZXNwYWNlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92
ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9y
T3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyRDRBMTVCNDc4
QjIwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQxMiw2ICs5NDMz
LDE1IEBACiAJCTdDNjEzNkY3MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzQ29tcGlsZXIucG0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc0NvbXBpbGVyLnBtOyBwYXRoID0gc2NyaXB0cy9JbkZp
bGVzQ29tcGlsZXIucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY4MTcx
MEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFyc2VyLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IEluRmls
ZXNQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNQYXJzZXIucG07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY5MTcxMEMzNTIwMEZGNEE1NyAvKiBTdGF0aWNTdHJp
bmcucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gU3RhdGljU3RyaW5nLnBtOyBwYXRoID0gc2NyaXB0cy9T
dGF0aWNTdHJpbmcucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzNGQjA1MTkx
RUY0MTYwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzczRkIwNjE5MUVGNDE3MDA3
REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzNGQjA5MTkxRUY0OUYwMDdERTA2MSAvKiBVc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3M0ZCMEExOTFFRjVBODAw
N0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzczRkIwQjE5MUVGNUE4MDA3REUw
NjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QzczRkIwRTE5MUVGNjBFMDA3REUwNjEgLyogVXNlck1l
c3NhZ2VIYW5kbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QzczRkIwRjE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVz
c2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNV
c2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzcz
RkIxMDE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVc2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3M0ZCMTcxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc0RDQzMTE4ODIzQTkzMDBFNUVENTcgLyog
VVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGluMS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc0RDQzNTE4ODIzQjE5MDBFNUVENTcgLyogVVRl
eHRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4
dFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0MjAsNyArOTQ1
MCwxMiBAQAogCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M1NjRCNjE4QkFCRUE2MDAxQjk2NTIg
LyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGVsZXBob25lTnVtYmVyRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NDNTY0QjkxOEJBQzcyMDAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9y
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVsZXBob25l
TnVtYmVyRGV0ZWN0b3JDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
QzY5OTNFMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVzcGFjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdE5hbWVzcGFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQzY5OTNGMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dl
YktpdE5hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktp
dE5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4
QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3Q0U2ODM0MjE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NFNjgz
NDMxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0U2ODM0NjE5MjE4MjE1MDBGNEQ5
MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U2Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyog
Rm9ybWF0Q29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1h
dENvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U2Q0JGQzE4N0Yz
OTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1hdENvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDczLDYgKzE2NTA4LDE4IEBACiAJCQkJRTEyNzFBMTMw
RUVFQzgwNDAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5jcHAgKi8sCiAJCQkJRTEyNzFBMEEw
RUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oICovLAogCQkJCUUxMjcxQTUxMEVF
RUNEMUMwMEY2MTIxMyAvKiBXb3JrZXJOYXZpZ2F0b3IuaWRsICovLAorCQkJCTdDNDhBNkNFMTkx
QzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwICovLAorCQkJCTdDNDhBNkNGMTkx
QzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCAqLywKKwkJCQk3QzQ4QTZEMjE5MUM5
RDhFMDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLywKKwkJCQk3QzczRkIwNTE5MUVG
NDE2MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgKi8sCisJCQkJ
N0M3M0ZCMDYxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uu
aCAqLywKKwkJCQk3QzczRkIwOTE5MUVGNDlGMDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZS5pZGwgKi8sCisJCQkJN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJN
ZXNzYWdlSGFuZGxlci5jcHAgKi8sCisJCQkJN0MzQjc5NzAxOTA4NzU3QjAwQjQ3QTJEIC8qIFVz
ZXJNZXNzYWdlSGFuZGxlci5oICovLAorCQkJCTdDNzNGQjBFMTkxRUY2MEUwMDdERTA2MSAvKiBV
c2VyTWVzc2FnZUhhbmRsZXIuaWRsICovLAorCQkJCTdDRTY4MzQyMTkyMTQzQTgwMEY0RDkyOCAv
KiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCAqLywKKwkJCQk3Q0U2ODM0MzE5MjE0
M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oICovLAorCQkJCTdD
RTY4MzQ2MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlw
ZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFnZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yMDU4OSw3ICsyMDYzNiw2IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAv
KiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICovLAogCQkJ
CUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCUZE
RUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5j
cHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCAqLywKQEAgLTIwNjEwLDYgKzIwNjU2LDcgQEAKIAkJCQlCQzU4MjVGMjBDMEI4OTM4
MDA1M0YxQjUgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlBRDcy
NkZFQTE2RDlGNDBCMDAzQTRFNkQgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmggKi8s
CiAJCQkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0NDdGIC8qIEpTQ1NTVmFsdWVDdXN0b20uY3BwICov
LAorCQkJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFDdWVDdXN0b20uY3BwICov
LAogCQkJCUJDQTgzRTUxMEQ3Q0UyMDUwMDM0MjFBOCAvKiBKU0RhdGFUcmFuc2ZlckN1c3RvbS5j
cHAgKi8sCiAJCQkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTMxRkIxQTZCMTIwQTVENjkwMERDMDJBMCAv
KiBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTIwNjk3LDYgKzIwNzQ0LDcg
QEAKIAkJCQkwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovLAog
CQkJCTA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICov
LAogCQkJCTUxNkJCNzkyMENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3Bw
ICovLAorCQkJCTdDNzNGQjE3MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2VDdXN0b20uY3BwICovLAogCQkJCUJFNkRGNzA4MTcxQ0EyQzUwMERENTJCOCAv
KiBKU1ZpZGVvVHJhY2tDdXN0b20uY3BwICovLAogCQkJCUJFNkRGNzBBMTcxQ0EyQzUwMERENTJC
OCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QzEwNTE5NzFB
MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLApAQCAtMjA4
MjQsNiArMjA4NzIsMTIgQEAKIAkJCQlCQ0VDMDFDMTBDMjc0REREMDA5RjRFQzkgLyogSlNTY3Jl
ZW4uaCAqLywKIAkJCQk0OTRCRDc5QjBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5j
cHAgKi8sCiAJCQkJNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAq
LywKKwkJCQk3Q0M2OTkzRTE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3Bw
ICovLAorCQkJCTdDQzY5OTNGMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVzcGFjZS5o
ICovLAorCQkJCTdDNzNGQjBBMTkxRUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2UuY3BwICovLAorCQkJCTdDNzNGQjBCMTkxRUY1QTgwMDdERTA2MSAvKiBKU1Vz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaCAqLywKKwkJCQk3QzczRkIwRjE5MUVGNkY0MDA3
REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovLAorCQkJCTdDNzNGQjEwMTkxRUY2
RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oICovLAogCQkJKTsKIAkJCW5hbWUg
PSBXaW5kb3c7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjI5OTAsNiArMjMwNDQs
NyBAQAogCQkJCTI5QTgxMjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJv
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0IwMTEzRjEwMzIy
NDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTdDRTY4MzQ3MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2Q0REMkYzMTEwM0RBNjYwMDY4MDUy
MSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2Q0REMkY3
MTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc2Q0REMkY1MTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU0Nyw2ICsyMzYwMiw3IEBACiAJCQkJ
MkQ5QTI0NzUxNUI5QzJFMzAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCM0E4ODcyMTQ1NjMyRjkwMDNBRThGNSAvKiBET01ET01T
ZXR0YWJsZVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY5NDU2NUIxMjE0REI2MzAw
MDdDQkFFIC8qIERPTURPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M3M0ZCMDgx
OTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdBQUJBMjVBMTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1QUNBOUMwMEE5QjVGQTUwMDY3MUU5MCAvKiBET01FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE5ODBBQzVENTM1MDA1MzI3MEYgLyogRE9NRWxlbWVu
dEludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDgzLDYgKzI0NTM5LDcgQEAKIAkJCQlG
NUMwNDFFNzBGRkNBOTZEMDA4MzlENEEgLyogSlNIVE1MRGF0YUxpc3RFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEMzU5RDhCRjEyOUNBNTVDMDAwNkU1RDIgLyogSlNIVE1MRGV0YWlsc0Vs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2ODA4QjUwMTU5REFERkEwMDJCNTIzMyAvKiBK
U0hUTUxEaWFsb2dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3Q0M2OTk0MTE5MUVDNUY1
MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVC
MUU3MEExQjI0MDUwMEQ4Qzg3QyAvKiBKU0hUTUxEaXJlY3RvcnlFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTg1QjJCNzBBMUIyQUM3MDBEOEM4N0MgLyogSlNIVE1MRGl2RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRTkwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTERM
aXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDY1MCw2ICsyNDcwNyw3IEBACiAJCQkJ
MDc5NjlEQkMxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzk2OURCRTE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTZXNzaW9u
RGVzY3JpcHRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQzAxN0QxNDE1
MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M3
M0ZCMEQxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQzIxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU3Rh
dHNSZXBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REM0MTdEMTQxNTEwMDdGRjg0MiAv
KiBKU1JUQ1N0YXRzUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMwMUMzMEMyNzRE
REQwMDlGNEVDOSAvKiBKU1NjcmVlbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDk2OCw2ICsyNTAy
Niw3IEBACiAJCQkJOTMyQUQ3MDYxN0VGQTJDNDAwMzhGOEZGIC8qIE1haW5GcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTE4NzA1NjMxNkU1NEEwRDAwNTg1RTk3IC8qIE1haW5UaHJlYWRUYXNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThGNkJDNjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZl
c3RQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDNzNGQjEyMTkxRUY2RjQwMDdERTA2MSAv
KiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERjgwOTlF
NjQ5MjAwNTZFNTgxIC8qIG1hcmt1cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyOEMzMTQxMjY4
RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
MEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNTE5Miw2ICsyNTI1MSw3IEBACiAJCQkJRkQ1ODFGQjUxNTIwRjkzQjAw
M0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkUwRjQy
M0E3MzAwOEYyMEZEIC8qIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEMEZGMkE1RTExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRm
b3JtQ0FBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTMxNjNFMTZFRDBDQzgwMDM1
Q0MwNCAvKiBQbGF0Zm9ybUNBRmlsdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDY2QjJENUMx
ODY4MzAwNTAwNzNDNEREIC8qIFBsYXRmb3JtQ0FGaWx0ZXJzTWFjLmggaW4gSGVhZGVycyAqLywK
QEAgLTI1MjAyLDYgKzI1MjYyLDcgQEAKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyog
UGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAwMTJD
MEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FB
NDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDRTY4MzQ1MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZE
QkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4
MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2MzIyLDYgKzI2MzgzLDcgQEAKIAkJCQkyRTQzNDY0QjBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThD
Q0JCNEQxNTFGODMzQjAwQUI3Q0U5IC8qIFdvcmtlckdsb2JhbFNjb3BlV2ViRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUYzNkUwN0E1MTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzNCNzk3MjE5MDg3NTdCMDBC
NDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxOEY4MzFC
ODBGRDQ4Qzc4MDBEOEM1NkIgLyogV29ya2VyTG9hZGVyUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFNDM0NjREMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkU0MzQ2NTAwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlck1lc3NhZ2luZ1By
b3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTI3MjIwLDYgKzI3MjgyLDcgQEAKIAkJCQk4NTlBOUM1
MDBBQTVFM0JEMDBCNjk0QjIgLyogRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1REY4MjFFMEFBNzg0OUUwMDQ4NkFENyAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1REY4MjIwMEFBNzg0OUUwMDQ4NkFENyAvKiBE
T01IVE1MVGFibGVDZWxsRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDNzNGQjExMTkx
RUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NURGODIyMjBBQTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1REY4MjcxMEFBNzhCOEIwMDQ4NkFENyAvKiBET01IVE1M
VGFibGVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjgyMjQwQUE3ODQ5RTAwNDg2
QUQ3IC8qIERPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI3OTk5
LDYgKzI4MDYyLDcgQEAKIAkJCQlBODBFN0IxMzBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MVGl0
bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDc1NkQzMTQyMzlBNEUwMDQxNDE2
MSAvKiBKU0hUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4NUIyMTAw
QTFCMjU4NzAwRDhDODdDIC8qIEpTSFRNTFVMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTZFNEFCQ0Q0MTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtu
b3duRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxNjBDRDY4MjY5MDBGQURB
NzUgLyogSlNIVE1MVmlkZW9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUVGMkMw
MTdGMEZEMzUwMEU0RkExNiAvKiBKU0lEQkFueS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NTAy
LDYgKzI4NTY2LDcgQEAKIAkJCQlDREE5OEUwRDE2MDNGRTRBMDBGRUEzQjEgLyogTWVkaWFLZXlz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RTBFMTYwM0ZFNTgwMEZFQTNCMSAvKiBNZWRp
YUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTgwMDkwQTE5NTE2RTAwQThF
RjVGIC8qIE1lZGlhTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Q0M2OTk0MDE5MUVDNUY1
MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0
NjEzRTMwQ0Q2ODE5RjAwRkFEQTc1IC8qIE1lZGlhUGxheWVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3MkM4QjExMTMxQzUxODYwMEE0RkNFOSAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREY5QUZENzMxM0ZDMzFEODAwMTVGRUI3IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gaW4gU291cmNlcyAqLywKQEAg
LTI4NTQ4LDYgKzI4NjEzLDcgQEAKIAkJCQlFMUFERUNDMDBFNzZBQ0YxMDA0QTFBNUUgLyogTWVz
c2FnZVBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc4RTUyNkYxMzQ2QkQxNzAwQUQ5QzMx
IC8qIE1ldGVyU2hhZG93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0REQ0Q5NDEz
ODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhlYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qzcz
RkIwNzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzc3MkM0RTBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5cGVS
ZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDUzOTAxRDBFQUZDQUNBMDAzNjk1Qzgg
LyogTUlNRVR5cGVSZWdpc3RyeUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyQzVFMEM0
RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5TWFjLm1tIGluIFNvdXJjZXMgKi8sCkBA
IC0yODcwMiw2ICsyODc2OCw3IEBACiAJCQkJQTFFMTE1NDYxMzAxNUM0RTAwNTRBQzhDIC8qIFBv
aW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcwNTk5NzcxMDdEOTc1MjAw
QTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MDU5OTc5
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NTkxNzVENDE3MTAwQzIxRUM4
IC8qIFBvbHlnb25TaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTg5RjBERTEwQjQ2QjBF
MDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFG
ODA4MjQ1RTU5MDAxRTlBQkMgLyogUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTEz
NSw2ICsyOTIwMiw3IEBACiAJCQkJMDhCNUYyNTUxM0I1RkZGMjAwMjk1OUVDIC8qIFNWR0FuaW1h
dGVkUGF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0I5MzM2QTEzQjI2MUIxMDA0NTg0QkYg
LyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwMjEx
M0I4OURDQzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QzQ4QTZEMDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNw
YWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzNkZCQ0VDMTc4QzExN0YwMEIyMUExNSAvKiBT
VkdBbmltYXRlZFByb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTQyRTdBMTNCMUU5
NzcwMEYxQzg3MSAvKiBTVkdBbmltYXRlZFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNB
NjI2NjcxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjkzNDUsNiArMjk0MTMsNyBAQAogCQkJCTQ0Qzk5MUEwMEYzRDIxMEUwMDU4NjY3
MCAvKiBUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRTY1OUU5MEVBOTJGRkEwMDdF
NDUzMyAvKiBUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3NkQ2Qzk0MTIyQjhBM0Qw
MDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdDRTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCOTA1NjFFMEYyNTdFOTMwMDk1RkY2QSAvKiBUaHJl
YWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDE2MTRGQTA5RDUwMDc0
NTdBRSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0FBQkQxODE0RkEwOUQ1MDA3NDU3QUUgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk1MjUsNiArMjk1OTQsNyBAQAog
CQkJCUNEODIwMzBCMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJM0Y0MkIzMUUxODgxMTkxQjAwMjc4QUFDIC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
ODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M3M0ZCMEMxOTFFRjVBODAwN0RFMDYxIC8q
IEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
RkJDNEFGMzE4OTg4MTU2MDA0NkVFMzggLyogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFFRjE4OTg4MTM4MDA0NkVFMzggLyogV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxNZWRpYUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlG
MTIxNzFGNTE2QThDRUQyMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAkocmV2aXNpb24gMTY5MDE1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQAogI2luY2x1
ZGUgPHJ1bnRpbWUvTWljcm90YXNrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAor
I2luY2x1ZGUgIkpTV2ViS2l0TmFtZXNwYWNlLmgiCisKICNpZiBQTEFURk9STShJT1MpCiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFj
a0lPUy5oIgpAQCAtNzcsNiArNzksOSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mCiAgICAgfTsKICAgICAKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOworCisgICAgaWYgKG1faW1wbC0+
c2hvdWxkSGF2ZVdlYktpdE5hbWVzcGFjZUZvcldvcmxkKHdvcmxkKCkpKQorICAgICAgICBwdXRE
aXJlY3Qodm0sIElkZW50aWZpZXIoJnZtLCAid2Via2l0IiksIHRvSlMoZ2xvYmFsRXhlYygpLCB0
aGlzLCBtX2ltcGwtPndlYmtpdE5hbWVzcGFjZSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
IH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZS5oIgorCisjaW5jbHVkZSAiSlNVc2VyTWVzc2FnZUhhbmRsZXIuaCIKKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZTo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
aWYgKFVzZXJNZXNzYWdlSGFuZGxlciogaGFuZGxlciA9IGltcGwoKS5oYW5kbGVyKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIGdsb2JhbE9iamVjdCgpLT53b3JsZCgp
KSkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBoYW5kbGVyKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsOSBAQAog
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdWRkZW5UZXJtaW5hdGlvbi5o
IgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJL
aXROYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmgiCkBA
IC03MTIsNiArNzE1LDQwIEBAIExvY2F0aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gbV9sb2NhdGlvbi5nZXQoKTsKIH0KIAorYm9vbCBET01XaW5kb3c6OnNob3Vs
ZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQorewor
ICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8qIHVzZXJDb250ZW50Q29udHJvbGxlciA9IHBhZ2UtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpOworICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiBkZXNjcmlwdG9yTWFwID0gdXNlckNvbnRlbnRDb250
cm9sbGVyLT51c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycygpOworICAgIGlmICghZGVzY3Jp
cHRvck1hcCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChhdXRvJiBkZXNjcmlw
dG9yIDogZGVzY3JpcHRvck1hcC0+dmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCZkZXNjcmlwdG9y
LT53b3JsZCgpID09ICZ3b3JsZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworV2ViS2l0TmFtZXNwYWNlKiBET01XaW5kb3c6OndlYmtp
dE5hbWVzcGFjZSgpIGNvbnN0Cit7CisgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX3dlYmtpdE5hbWVzcGFjZSkKKyAg
ICAgICAgbV93ZWJraXROYW1lc3BhY2UgPSBXZWJLaXROYW1lc3BhY2U6OmNyZWF0ZShtX2ZyYW1l
KTsKKyAgICByZXR1cm4gbV93ZWJraXROYW1lc3BhY2UuZ2V0KCk7Cit9CisKIFN0b3JhZ2UqIERP
TVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAg
aWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAkocmV2aXNpb24gMTY5MDE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKICAgICBjbGFzcyBET01TZWxlY3Rpb247
CiAgICAgY2xhc3MgRE9NVVJMOworICAgIGNsYXNzIERPTVdpbmRvd0NTUzsKICAgICBjbGFzcyBE
T01XaW5kb3dQcm9wZXJ0eTsKKyAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiAgICAgY2xhc3Mg
RGF0YWJhc2U7CiAgICAgY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKICAgICBjbGFzcyBEb2N1bWVu
dDsKQEAgLTczLDggKzc1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKICAgICBjbGFzcyBTdG9yYWdlOwogICAgIGNsYXNzIFN0eWxlTWVk
aWE7CisgICAgY2xhc3MgV2ViS2l0TmFtZXNwYWNlOwogICAgIGNsYXNzIFdlYktpdFBvaW50Owot
ICAgIGNsYXNzIERPTVdpbmRvd0NTUzsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkKICAgICBjbGFzcyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazsKQEAgLTQyNiw2
ICs0MjgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaGFzVG91Y2hFdmVu
dExpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hFdmVudExpc3RlbmVyQ291bnQgPiAw
OyB9CiAjZW5kaWYKIAorICAgICAgICBib29sIHNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JX
b3JsZChET01XcmFwcGVyV29ybGQmKTsKKyAgICAgICAgV2ViS2l0TmFtZXNwYWNlKiB3ZWJraXRO
YW1lc3BhY2UoKSBjb25zdDsKKwogICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGlzIERPTVdpbmRv
dyBpcyBubyBsb25nZXIgdGhlIGFjdGl2ZSBET01XaW5kb3cgKGkuZS4sCiAgICAgICAgIC8vIHdo
ZW4gaXRzIGRvY3VtZW50IGlzIG5vIGxvbmdlciB0aGUgZG9jdW1lbnQgdGhhdCBpcyBkaXNwbGF5
ZWQgaW4gaXRzCiAgICAgICAgIC8vIGZyYW1lKSwgd2Ugd291bGQgbGlrZSB0byB6ZXJvIG91dCBt
X2ZyYW1lIHRvIGF2b2lkIGJlaW5nIGNvbmZ1c2VkCkBAIC01MDEsNiArNTA2LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShDU1MzX0NPTkRJVElPTkFMX1JVTEVTKQogICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxET01XaW5kb3dDU1M+IG1fY3NzOwogI2VuZGlmCisKKyAgICAgICAg
bXV0YWJsZSBSZWZQdHI8V2ViS2l0TmFtZXNwYWNlPiBtX3dlYmtpdE5hbWVzcGFjZTsKICAgICB9
OwogCiAgICAgaW5saW5lIFN0cmluZyBET01XaW5kb3c6OnN0YXR1cygpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAxNjkwMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJV
c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdC5oIgog
I2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0LmgiCiAKQEAgLTE1MSw2ICsxNTIsMjIgQEAgdm9pZCBV
c2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdAogICAgIGludmFsaWRhdGVJbmplY3Rl
ZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAKK3ZvaWQgVXNlckNvbnRlbnRDb250
cm9sbGVyOjphZGRVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKFVzZXJNZXNzYWdlSGFuZGxl
ckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgaWYgKCFtX3VzZXJNZXNzYWdlSGFuZGxl
ckRlc2NyaXB0b3JzKQorICAgICAgICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzID0g
c3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yTWFwPigpOworCisg
ICAgbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycy0+YWRkKHN0ZDo6bWFrZV9wYWlyKGRl
c2NyaXB0b3ItPm5hbWUoKSwgJmRlc2NyaXB0b3ItPndvcmxkKCkpLCBkZXNjcmlwdG9yKTsKK30K
Kwordm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IoVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAg
ICBpZiAoIW1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMtPnJlbW92ZShzdGQ6Om1ha2Vf
cGFpcihkZXNjcmlwdG9yLT5uYW1lKCksICZkZXNjcmlwdG9yLT53b3JsZCgpKSk7Cit9CisKIHZv
aWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyQ29udGVudCgpCiB7CiAgICAg
bV91c2VyU2NyaXB0cyA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4
LDExIEBACiAKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU3R5
bGVTaGVldFR5cGVzLmgiCisjaW5jbHVkZSAiVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5
cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksNiArNDEsNyBAQCBjbGFzcyBQYWdlOwogY2xh
c3MgVVJMOwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OworY2xhc3Mg
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKIAogY2xhc3MgVXNlckNvbnRlbnRDb250cm9s
bGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlckNvbnRlbnRDb250cm9sbGVyPiB7CiBwdWJsaWM6
CkBAIC02Miw2ICs2NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250
ZW50KCk7CiAKKyAgICBjb25zdCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yTWFwKiB1c2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvcnMuZ2V0KCk7IH0KKworICAgIHZvaWQgYWRkVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvcihVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKik7CisgICAgdm9pZCBy
ZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IqKTsKKworCiBwcml2YXRlOgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcigpOwogCkBA
IC03MSw2ICs4MCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlw
dE1hcD4gbV91c2VyU2NyaXB0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXRN
YXA+IG1fdXNlclN0eWxlU2hlZXRzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yTWFwPiBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFu
ZGxlci5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVc2VyTWVzc2FnZUhhbmRsZXI6OlVz
ZXJNZXNzYWdlSGFuZGxlcihGcmFtZSogZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCisgICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoZnJhbWUpCisg
ICAgLCBtX2Rlc2NyaXB0b3IoZGVzY3JpcHRvcikKK3sKK30KKworVXNlck1lc3NhZ2VIYW5kbGVy
Ojp+VXNlck1lc3NhZ2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBVc2VyTWVzc2FnZUhhbmRsZXI6
OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkK
K3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwor
ICAgIG1fZGVzY3JpcHRvci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnRoaXMsIHZhbHVlLmdl
dCgpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBVc2VyTWVzc2FnZUhhbmRsZXI6Om5hbWUo
KQoreworICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPm5hbWUoKTsKK30KKworRE9NV3JhcHBlcldv
cmxkJiBVc2VyTWVzc2FnZUhhbmRsZXI6OndvcmxkKCkKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlw
dG9yLT53b3JsZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBVc2VyTWVzc2FnZUhhbmRsZXJfaAorI2RlZmluZSBVc2VyTWVzc2FnZUhhbmRsZXJfaAorCisj
aW5jbHVkZSAiRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWY8VXNlck1lc3NhZ2VIYW5k
bGVyPiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lc3Nh
Z2VIYW5kbGVyKGZyYW1lLCBkZXNjcmlwdG9yKSk7CisgICAgfQorICAgIHZpcnR1YWwgflVzZXJN
ZXNzYWdlSGFuZGxlcigpOworCisgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4pOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCk7Cisg
ICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFVz
ZXJNZXNzYWdlSGFuZGxlcihGcmFtZSosIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3ImKTsK
KyAgICAKKyAgICBSZWY8VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcj4gbV9kZXNjcmlwdG9y
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVXNlck1lc3NhZ2VI
YW5kbGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5p
ZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ludGVy
ZmFjZSBVc2VyTWVzc2FnZUhhbmRsZXIgeworICAgIHZvaWQgcG9zdE1lc3NhZ2UoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIG1lc3NhZ2UpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgiCisKKyNpbmNs
dWRlICJET01XcmFwcGVyV29ybGQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgQ2xpZW50JiBjbGll
bnQpCisgICAgOiBtX25hbWUobmFtZSkKKyAgICAsIG1fd29ybGQod29ybGQpCisgICAgLCBtX2Ns
aWVudChjbGllbnQpCit7Cit9CisKK1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6On5Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKCkKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBV
c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpuYW1lKCkKK3sKKyAgICByZXR1cm4gbV9uYW1l
OworfQorCitET01XcmFwcGVyV29ybGQmIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6Ondv
cmxkKCkKK3sKKyAgICByZXR1cm4gbV93b3JsZC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yX2gK
KyNkZWZpbmUgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcl9oCisKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xh
c3MgVXNlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCitj
bGFzcyBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8VXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcj4geworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSopID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgQ2xpZW50JiBjbGllbnQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IobmFtZSwgd29y
bGQsIGNsaWVudCkpOworICAgIH0KKyAgICB+VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcigp
OworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCk7CisgICAgRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCgpOworICAgIAorICAgIENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yKGNvbnN0IEF0b21pY1N0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYsIENsaWVudCYpOwor
ICAgIAorICAgIEF0b21pY1N0cmluZyBtX25hbWU7CisgICAgUmVmPERPTVdyYXBwZXJXb3JsZD4g
bV93b3JsZDsKKyAgICBDbGllbnQmIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcl9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBl
c19oCisjZGVmaW5lIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlc19oCisKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdI
YXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV3JhcHBlcldvcmxkOwor
Y2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKKwordHlwZWRlZiBIYXNoTWFwPHN0
ZDo6cGFpcjxBdG9taWNTdHJpbmcsIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+PiwgUmVmUHRyPFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I+PiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
TWFwOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKworI2VuZGlmIC8vIFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JUeXBlc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIgorCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTo6VXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZShGcmFtZSogZnJhbWUpCisgICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIo
ZnJhbWUpCit7Cit9CisKK1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6On5Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlKCkKK3sKK30KKworVXNlck1lc3NhZ2VIYW5kbGVyKiBVc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpoYW5kbGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICAvLyBGaXJzdCwgY2hlY2sgaWYgd2UgaGF2
ZSBhIGhhbmRsZXIgaW5zdGFuY2UgYWxyZWFkeS4KKyAgICBmb3IgKGF1dG8mIGhhbmRsZXIgOiBt
X21lc3NhZ2VIYW5kbGVycykgeworICAgICAgICBpZiAoaGFuZGxlci0+bmFtZSgpID09IG5hbWUg
JiYgJmhhbmRsZXItPndvcmxkKCkgPT0gJndvcmxkKQorICAgICAgICAgICAgcmV0dXJuICZoYW5k
bGVyLmdldCgpOworICAgIH0KKworICAgIC8vIFNlY29uZCwgYXR0ZW1wdCB0byBjcmVhdGUgYSBo
YW5kbGVyIGluc3RhbmNlIGZyb20gYSBkZXNjcmlwdG9yLgorICAgIGlmICghZnJhbWUoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS0+cGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgY29u
c3QgYXV0byogdXNlckNvbnRlbnRDb250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCk7CisgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgY29uc3QgYXV0byogdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMg
PSB1c2VyQ29udGVudENvbnRyb2xsZXItPnVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzKCk7
CisgICAgaWYgKCF1c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycykKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBSZWZQdHI8VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcj4gZGVz
Y3JpcHRvciA9IHVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLT5nZXQoc3RkOjptYWtlX3Bh
aXIobmFtZSwgJndvcmxkKSk7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIG1fbWVzc2FnZUhhbmRsZXJzLmFwcGVuZChVc2VyTWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShmcmFtZSgpLCAqZGVzY3JpcHRvcikpOworICAgIHJldHVybiAmbV9tZXNzYWdl
SGFuZGxlcnMubGFzdCgpLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VfaAorI2RlZmluZSBVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlX2gKKworI2luY2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlci5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlci5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworCitjbGFz
cyBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZT4sIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmPFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U+IGNyZWF0ZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKGZyYW1lKSk7CisgICAgfQorCisgICAg
dmlydHVhbCB+VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSgpOworCisgICAgVXNlck1lc3Nh
Z2VIYW5kbGVyKiBoYW5kbGVyKGNvbnN0IEF0b21pY1N0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYp
OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uo
RnJhbWUqKTsKKworICAgIFZlY3RvcjxSZWY8VXNlck1lc3NhZ2VIYW5kbGVyPj4gbV9tZXNzYWdl
SGFuZGxlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmlkbAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBKU0N1c3Rv
bUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IsCitdIGludGVyZmFjZSBVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlIHsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktp
dE5hbWVzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXRO
YW1lc3BhY2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXRO
YW1lc3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0TmFtZXNwYWNlLmgiCisKKyNp
bmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViS2l0TmFtZXNwYWNlOjpXZWJLaXRO
YW1lc3BhY2UoRnJhbWUqIGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCisg
ICAgLCBtX21lc3NhZ2VIYW5kbGVyTmFtZXNwYWNlKFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OmNyZWF0ZShmcmFtZSkpCit7Cit9CisKK1dlYktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVz
cGFjZSgpCit7Cit9CisKK1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIFdlYktpdE5hbWVz
cGFjZTo6bWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICByZXR1cm4gJm1fbWVzc2FnZUhhbmRsZXJO
YW1lc3BhY2UuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViS2l0TmFtZXNwYWNlX2gKKyNkZWZpbmUgV2ViS2l0
TmFtZXNwYWNlX2gKKworI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCisjaW5jbHVkZSA8
d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNz
IFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U7CisKK2NsYXNzIFdlYktpdE5hbWVzcGFjZSA6
IHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSwgcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0TmFtZXNw
YWNlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0TmFtZXNwYWNlPiBj
cmVhdGUoRnJhbWUqIGZyYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJLaXROYW1lc3BhY2UoZnJhbWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJLaXROYW1l
c3BhY2UoKTsKKworICAgIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIG1lc3NhZ2VIYW5k
bGVycygpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYktpdE5hbWVzcGFjZShGcmFtZSop
OworICAgIFJlZjxVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlPiBtX21lc3NhZ2VIYW5kbGVy
TmFtZXNwYWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gV2Vi
S2l0TmFtZXNwYWNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5p
ZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworaW50ZXJm
YWNlIFdlYktpdE5hbWVzcGFjZSB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2UgbWVzc2FnZUhhbmRsZXJzOworfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDcwIEBACisyMDE0LTA1LTE4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW1dlYktpdDJdIEltcGxlbWVudCBTY3JpcHRNZXNzYWdlSGFuZGxlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzA1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6Cisg
ICAgICAgIChzdHJ1Y3Rfb3JfY2xhc3MpOgorICAgICAgICAoYXJndW1lbnRfY29kZXJfaGVhZGVy
c19mb3JfdHlwZSk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbToKKyAgICAgICAgKC1bV0tTY3JpcHRN
ZXNzYWdlIF9pbml0V2l0aEJvZHk6d2ViVmlldzpuYW1lOl0pOgorICAgICAgICAoLVtXS1Njcmlw
dE1lc3NhZ2UgYm9keV0pOgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ugd2ViVmlld10pOgor
ICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2UgbmFtZV0pOgorICAgICAgICAoLVtXS1NjcmlwdE1l
c3NhZ2UgX3NjcmlwdFdvcmxkXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZVByaXZhdGUuaC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZVByaXZhdGUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVT
Y3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRD
b250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOndvcmxkOl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfcmVtb3ZlU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJGb3JOYW1lOndvcmxkOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6IFJlbW92
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
IChwYWdlVG9WaWV3TWFwKToKKyAgICAgICAgKGZyb21XZWJQYWdlUHJveHkpOgorICAgICAgICAo
LVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgZGVhbGxvY10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXJIYW5kbGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVySGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6On5XZWJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5Ojp+V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclByb3h5OjpkaWRQb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6ZGVzY3JpcHRvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6aWRlbnRpZmllcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6V2Vi
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW46CisKIDIwMTQtMDUtMTggIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxNjkwMDEuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQy
KS9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvUGx1
Z2lucyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvU3RvcmFnZSBcCisgICAgJChXZWJLaXQy
KS9VSVByb2Nlc3MvVXNlckNvbnRlbnQgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL21hYyBc
CiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvaW9zIFwKICMKQEAgLTEzNSw2ICsxMzYsNyBAQCBN
RVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5IFwK
ICAgICBXZWJSZXNvdXJjZUxvYWRlciBcCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwK
KyAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCiAgICAgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlciBcCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IFwKICMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHJldmlzaW9u
IDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQko
d29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCw3IEBAIGRlZiBzdHJ1Y3Rfb3JfY2xhc3MobmFt
ZXNwYWNlLCB0eXBlKToKICAgICAgICAgJ1dlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cycsCiAgICAgICAgICdXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUnLAogICAgICAgICAnV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJywKKyAgICAgICAgJ1dlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpXaW5kb3dHZW9t
ZXRyeScsCiAgICAgXSkKIApAQCAtMzk2LDYgKzM5Nyw3IEBAIGRlZiBhcmd1bWVudF9jb2Rlcl9o
ZWFkZXJzX2Zvcl90eXBlKHR5cGUKICAgICAgICAgJ1N0cmluZyc6ICciQXJndW1lbnRDb2RlcnMu
aCInLAogICAgICAgICAnV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcic6
ICciSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIicsCiAgICAgICAgICdXZWJLaXQ6
OldlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXInOiAnIldlYkNvbnRleHRVc2VyTWVzc2FnZUNv
ZGVycy5oIicsCisgICAgICAgICdXZWJLaXQ6OlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlJzog
JyJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIicsCiAgICAgfQogCiAgICAgaGVhZGVycyA9IFtd
CkBAIC00MzksNiArNDQxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAg
ICdXZWJLaXQ6OldlYk1vdXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6
V2ViV2hlZWxFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCisgICAgICAgICdXZWJLaXQ6OldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlJzogWyciV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIn
XSwKICAgICB9CiAKICAgICBoZWFkZXJzID0gW10KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCShyZXZpc2lvbiAx
NjkwMTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVz
c2FnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNDAgKzI0LDQ2IEBACiAgKi8KIAogI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmgiCisjaW1wb3J0
ICJXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oIgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotLy8g
RklYTUU6IENvbnNpZGVyIGFkZGluZyB0aGUgbmF2aWdhdGlvbiBhcyB3ZWxsLgorI2ltcG9ydCAi
V2Vha09iakNQdHIuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0
aW9uIFdLU2NyaXB0TWVzc2FnZQorQGltcGxlbWVudGF0aW9uIFdLU2NyaXB0TWVzc2FnZSB7Cisg
ICAgUmV0YWluUHRyPGlkPiBfYm9keTsKKyAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmll
dz4gX3dlYlZpZXc7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbmFtZTsKIAotLSAoaWQpYm9k
eQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIG5pbDsKIH0KIAotLSAo
V0tXZWJWaWV3ICopd2ViVmlldworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJv
ZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBuaWw7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfYm9keSA9IGJv
ZHk7CisgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIF9uYW1lID0gYWRvcHROUyhbbmFtZSBj
b3B5XSk7CisKKyAgICByZXR1cm4gc2VsZjsKKwogfQogCi0tIChOU1N0cmluZyAqKW5hbWUKKy0g
KGlkKWJvZHkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBuaWw7Cisg
ICAgcmV0dXJuIF9ib2R5LmdldCgpOwogfQogCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1Nj
cmlwdE1lc3NhZ2UgKFdLUHJpdmF0ZSkKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBy
ZXR1cm4gX3dlYlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7Cit9CiAKLS0gKF9XS1NjcmlwdFdvcmxk
ICopX3NjcmlwdFdvcmxkCistIChOU1N0cmluZyAqKW5hbWUKIHsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIF9uYW1lLmdldCgpOwogfQogCiBA
ZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVz
c2FnZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjg5OTQpCShmcm9t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlUHJpdmF0
ZS5oOjE2ODk5NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3Jp
cHRNZXNzYWdlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLU2NyaXB0TWVzc2FnZS5oPgorCisjaWYgV0tfQVBJ
X0VOQUJMRUQKKworQGNsYXNzIF9XS1NjcmlwdFdvcmxkOworCitAaW50ZXJmYWNlIFdLU2NyaXB0
TWVzc2FnZSAoV0tQcml2YXRlKQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9X
S1NjcmlwdFdvcmxkICpfc2NyaXB0V29ybGQ7CisKK0BlbmQKKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Njcmlw
dE1lc3NhZ2VJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDE1ICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2UuaD4KKyNpbXBvcnQgIldLU2Ny
aXB0TWVzc2FnZS5oIgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotQGNsYXNzIF9XS1NjcmlwdFdv
cmxkOworQGludGVyZmFjZSBXS1NjcmlwdE1lc3NhZ2UgKCkKIAotQGludGVyZmFjZSBXS1Njcmlw
dE1lc3NhZ2UgKFdLUHJpdmF0ZSkKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBf
V0tTY3JpcHRXb3JsZCAqX3NjcmlwdFdvcmxkOworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJv
ZHk6KGlkKWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYW1lOihOU1N0cmluZyAq
KW5hbWU7CiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDE2
OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlLmg+Ci0KLSNpZiBXS19BUElfRU5BQkxF
RAotCi1AY2xhc3MgX1dLU2NyaXB0V29ybGQ7Ci0KLUBpbnRlcmZhY2UgV0tTY3JpcHRNZXNzYWdl
IChXS1ByaXZhdGUpCi0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLU2NyaXB0
V29ybGQgKl9zY3JpcHRXb3JsZDsKLQotQGVuZAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjgsOSArMjgsMTUgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIldLU2Ny
aXB0TWVzc2FnZUhhbmRsZXIuaCIKKyNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUludGVybmFsLmgi
CiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW1wb3J0ICJX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgotI2ltcG9ydCAiX1dLU2NyaXB0V29ybGQu
aCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgorI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNWYWx1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlclNjcmlwdC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCkBAIC04NywyOCArOTMsNDMgQEAgLSAodm9pZClyZW1vdmVBbGxV
c2VyU2NyaXB0cwogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNl
clNjcmlwdHMoKTsKIH0KIAotLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5n
ICopbmFtZQotewotICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpzY3JpcHRNZXNz
YWdlSGFuZGxlciBuYW1lOm5hbWUgd29ybGQ6W19XS1NjcmlwdFdvcmxkIGRlZmF1bHRXb3JsZF1d
OwotfQotCi0tICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJp
bmcgKiluYW1lCi17Ci0gICAgW3NlbGYgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFt
ZTpuYW1lIHdvcmxkOltfV0tTY3JpcHRXb3JsZCBkZWZhdWx0V29ybGRdXTsKLX0KLQotQGVuZAor
Y2xhc3MgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJLaXQ6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworcHVibGljOgorICAgIFNjcmlwdE1l
c3NhZ2VIYW5kbGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIs
IGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyLCBOU1N0cmluZyAqbmFtZSkKKyAg
ICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2hhbmRsZXIoaGFu
ZGxlcikKKyAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisgICAgeworICAg
IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQorICAgIHsKKyAgICAgICAgUmV0YWlu
UHRyPEpTQ29udGV4dD4gY29udGV4dCA9IGFkb3B0TlMoW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
KTsKKyAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5k
ZXNlcmlhbGl6ZShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCAwKTsKKyAgICAgICAgSlNW
YWx1ZSAqdmFsdWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnZhbHVlUmVmIGluQ29u
dGV4dDpjb250ZXh0LmdldCgpXTsKKyAgICAgICAgaWQgYm9keSA9IFt2YWx1ZSB0b0RpY3Rpb25h
cnldOworCisgICAgICAgIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IG1lc3NhZ2UgPSBhZG9w
dE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJvZHkgd2ViVmlldzpm
cm9tV2ViUGFnZVByb3h5KHBhZ2UpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgCisgICAgICAg
IFttX2hhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRS
ZWNlaXZlU2NyaXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKKyAgICB9CiAKLUBpbXBsZW1lbnRh
dGlvbiBXS1VzZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQorcHJpdmF0ZToKKyAgICBS
ZXRhaW5QdHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBSZXRh
aW5QdHI8aWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+PiBtX2hhbmRsZXI7CisgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBtX25hbWU7Cit9OwogCi0tICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5h
bWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooX1dLU2NyaXB0V29ybGQgKil3b3JsZAorLSAodm9p
ZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNj
cmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCisgICAgUmVmUHRyPFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+
IGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNz
YWdlSGFuZGxlciwgbmFtZSksIG5hbWUpOworICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCisgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6
QCJBdHRlbXB0IHRvIGFkZCBTY3JpcHRNZXNzYWdlSGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVu
IG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KIAotLSAodm9pZClfcmVtb3ZlU2NyaXB0
TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KF9XS1NjcmlwdFdv
cmxkICopd29ybGQKKy0gKHZvaWQpcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihO
U1N0cmluZyAqKW5hbWUKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIF91c2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1l
KTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFs
LmgJKHJldmlzaW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgiCisjaW1wb3J0ICJXS1Vz
ZXJDb250ZW50Q29udHJvbGxlci5oIgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjkwMTQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaD4KLQotI2lmIFdLX0FQSV9F
TkFCTEVECi0KLUBjbGFzcyBfV0tTY3JpcHRXb3JsZDsKLQotQGludGVyZmFjZSBXS1VzZXJDb250
ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQotCi0tICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5h
bWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooX1dLU2NyaXB0V29ybGQgKil3b3JsZDsKLS0gKHZv
aWQpX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIHdv
cmxkOihfV0tTY3JpcHRXb3JsZCAqKXdvcmxkOwotCi1AZW5kCi0KLSNlbmRpZgotCi0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShy
ZXZpc2lvbiAxNjkwMTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOCBAQAogI2ltcG9ydCAiX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtQ
cm92aWRlckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwu
aCIKKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEw
NCw2ICsxMDYsMTggQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV92aWV3Q29udHJvbGxlckZvcgog
I2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2VuZGlmCiAKKworc3RhdGljIEhhc2hNYXA8
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXS1dlYlZpZXcgKj4mIHBhZ2VUb1ZpZXdNYXAoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
V0tXZWJWaWV3ICo+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworV0tXZWJWaWV3KiBmcm9t
V2ViUGFnZVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKQoreworICAgIHJldHVybiBw
YWdlVG9WaWV3TWFwKCkuZ2V0KCZwYWdlKTsKK30KKwogQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2aWdh
dGlvblN0YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91aURl
bGVnYXRlOwpAQCAtMjMyLDYgKzI0Niw4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnIKIAogICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7CiAKKyAgICBwYWdlVG9WaWV3TWFwKCkuYWRkKF9w
YWdlLmdldCgpLCBzZWxmKTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0yNDUsNiArMjYx
LDggQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKICNlbmRpZgogCisgICAgcGFnZVRvVmlld01h
cCgpLnJlbW92ZShfcGFnZS5nZXQoKSk7CisKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmgJKHJldmlzaW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODAs
NCArODAsNiBAQCBzdHJ1Y3QgVmlld1NuYXBzaG90OwogI2VuZGlmCiBAZW5kCiAKK1dLV2ViVmll
dyogZnJvbVdlYlBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOworCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdl
SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgZW5jb2Rl
ciA8PCBuYW1lOworfQorCitib29sIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlOjpkZWNv
ZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
SGFuZGxlJiBoYW5kbGUpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUuaWRlbnRp
ZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFuZGxlLm5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCit7CisgICAgc3RhdGlj
IHVpbnQ2NF90IGlkZW50aWZpZXI7CisKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCitQ
YXNzUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cjo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIo
c3RkOjptb3ZlKGNsaWVudCksIG5hbWUpKTsKK30KKworV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlSWRlbnRpZmll
cigpKQorICAgICwgbV9jbGllbnQoc3RkOjptb3ZlKGNsaWVudCkpCisgICAgLCBtX25hbWUobmFt
ZSkKK3sKK30KKworV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6On5XZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cl9oCisjZGVmaW5lIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyX2gKKworI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBBcmd1bWVudERlY29k
ZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYkZyYW1lUHJveHk7CisKK3N0cnVjdCBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlckhhbmRsZSB7CisgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVu
Y29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29k
ZXImLCBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZSYpOworCisgICAgdWludDY0X3QgaWRl
bnRpZmllcjsKKyAgICBTdHJpbmcgbmFtZTsKK307CisKK2NsYXNzIFdlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKK3B1
YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJikg
PSAwOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUp
OyAgICAKKyAgICB2aXJ0dWFsIH5XZWJTY3JpcHRNZXNzYWdlSGFuZGxlcigpOworCisgICAgV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGUgaGFuZGxlKCkgeyByZXR1cm4geyBtX2lkZW50aWZp
ZXIsIG1fbmFtZSB9OyB9CisKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KKworICAgIENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9
CisKK3ByaXZhdGU6CisgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRy
PENsaWVudD4sIGNvbnN0IFN0cmluZyYpOworICAgIAorICAgIHVpbnQ2NF90IG1faWRlbnRpZmll
cjsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IG1fY2xpZW50OworICAgIFN0cmluZyBt
X25hbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKyAgICAKKyNlbmRpZiAvLyBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAJKHJldmlzaW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC01OSwxNCArNjMsMjIgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkUAogICAgIGlmICghbV9wcm9jZXNzZXMuYWRkKCZ3ZWJQcm9jZXNzUHJv
eHkpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAorICAgIHdlYlByb2Nlc3NQcm94eS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOworCiAgICAgd2Vi
UHJvY2Vzc1Byb3h5LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyhtX3VzZXJTY3JpcHRzKSwgbV9pZGVudGlmaWVyKTsK
KyAgICAKKyAgICBWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+IG1lc3NhZ2VI
YW5kbGVySGFuZGxlczsKKyAgICBmb3IgKGF1dG8mIGhhbmRsZXIgOiBtX3NjcmlwdE1lc3NhZ2VI
YW5kbGVycy52YWx1ZXMoKSkKKyAgICAgICAgbWVzc2FnZUhhbmRsZXJIYW5kbGVzLmFwcGVuZCho
YW5kbGVyLT5oYW5kbGUoKSk7CisgICAgd2ViUHJvY2Vzc1Byb3h5LmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKG1lc3NhZ2VIYW5kbGVySGFuZGxlcyksIG1faWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRh
aW5zKCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAotICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJv
Y2Vzc1Byb3h5KTsKKyAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkp
KQorICAgICAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCkKQEAgLTg1LDQgKzk3
LDU1IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8KICAgICAgICAg
cHJvY2Vzc0FuZENvdW50LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKCksIG1faWRlbnRpZmllcik7
CiB9CiAKK2Jvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciogaGFuZGxlcikKK3sKKyAgICBm
b3IgKGF1dG8mIGV4aXN0aW5nSGFuZGxlciA6IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnZhbHVl
cygpKSB7CisgICAgICAgIGlmIChleGlzdGluZ0hhbmRsZXItPm5hbWUoKSA9PSBoYW5kbGVyLT5u
YW1lKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9zY3JpcHRN
ZXNzYWdlSGFuZGxlcnMuYWRkKGhhbmRsZXItPmlkZW50aWZpZXIoKSwgaGFuZGxlcik7CisKKyAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9j
ZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IGhhbmRsZXItPmhh
bmRsZSgpIH0pLCBtX2lkZW50aWZpZXIpOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRs
ZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3Nj
cmlwdE1lc3NhZ2VIYW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVy
cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUo
KSA9PSBuYW1lKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1f
cHJvY2Vzc2VzKQorICAgICAgICAgICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXIoaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBtX2lkZW50aWZp
ZXIpOworICAgICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlKGl0KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG1lc3Nh
Z2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sK
KyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlE
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQcm9jZXNz
UHJveHkqIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKGNvbm5l
Y3Rpb24pOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gd2ViUHJvY2Vzcy0+d2ViRnJhbWUo
ZnJhbWVJRCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+Pjo6aXNWYWxp
ZEtleShtZXNzYWdlSGFuZGxlcklEKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMu
Z2V0KG1lc3NhZ2VIYW5kbGVySUQpOworICAgIGlmICghaGFuZGxlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBidWZmZXIgPSBkYXRhUmVmZXJlbmNlLnZlY3RvcigpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdChidWZmZXIpOworCisgICAgaGFuZGxlci0+Y2xpZW50KCku
ZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsICpmcmFtZSwgKnZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAko
cmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEw
ICsyNiwxNyBAQAogI2lmbmRlZiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eV9oCiAjZGVm
aW5lIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5X2gKIAorI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hD
b3VudGVkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
VXNlclNjcmlwdDsKIH0KQEAgLTM3LDggKzQ0LDkgQEAgY2xhc3MgVXNlclNjcmlwdDsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjsKIAotY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4geworY2xhc3Mg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5PiBjcmVhdGUoKTsKICAgICB+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKQEAg
LTUxLDEzICs1OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYkNvcmU6
OlVzZXJTY3JpcHQpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAorICAgIC8v
IFJldHVybnMgZmFsc2UgaWYgdGhlcmUgd2FzIGEgbmFtZSBjb25mbGljdC4KKyAgICBib29sIGFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciopOworICAg
IHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmKTsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpOwog
CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKwogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAg
ICBIYXNoQ291bnRlZFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiBtX3VzZXJTY3JpcHRzOworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhh
bmRsZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSB7CisgICAgRGlkUG9zdE1lc3NhZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkg
V2FudHNDb25uZWN0aW9uCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjkwMTQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTk4OSw2ICs5ODksMTAgQEAKIAkJN0MxMzVBQTgxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2lu
SW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3Bw
ICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVB
QTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1
ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBQTE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2lu
SW5mb3JtYXRpb25NYWMubW0gKi87IH07CisJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzM2MUQ2RjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuY3BwICovOyB9OworCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMzYxRDcwMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlci5oICovOyB9OworCQk3QzM2MUQ3ODE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzNjFENzYxOTI4MDNCRDAwMzZBNTlEIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
KwkJN0MzNjFENzkxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMzYxRDc3MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTdDMzg3NDM0MTcyRjU2MTUwMDFCRDg4QSAvKiBQYWdl
QmFubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMzg3NDMzMTcyRjU2MTUwMDFCRDg4QSAvKiBQYWdlQmFubmVyLmNwcCAqLzsgfTsKIAkJN0Mz
RjhDOTAxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0Y4QzhFMTczQUY1MkQwMDdC
N0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CiAJCTdDM0Y4QzkxMTczQUY1MkQw
MDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbklu
Zm9ybWF0aW9uLmggKi87IH07CkBAIC0xMDAzLDggKzEwMDcsNyBAQAogCQk3Q0IxNkZGMjE3MjRC
QTI4MDA3QTBBOTUgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbi5zYiBpbiBD
b3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0IxNkZFNTE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm1hY3JvbWVkaWEuRmxhc2gg
UGxheWVyLnBsdWdpbi5zYiAqLzsgfTsKIAkJN0NCMTZGRjMxNzI0QkEyRjAwN0EwQTk1IC8qIGNv
bS5taWNyb3NvZnQuU2lsdmVybGlnaHRQbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3gg
UHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTZGRTYxNzI0
QjlCNTAwN0EwQTk1IC8qIGNvbS5taWNyb3NvZnQuU2lsdmVybGlnaHRQbHVnaW4uc2IgKi87IH07
CiAJCTdDQjE2RkY0MTcyNEJBMzAwMDdBMEE5NSAvKiBjb20ub3JhY2xlLmphdmEuSmF2YUFwcGxl
dFBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxNkZFNzE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm9y
YWNsZS5qYXZhLkphdmFBcHBsZXRQbHVnaW4uc2IgKi87IH07Ci0JCTdDQzk5QTM0MThFRjdCMTIw
MDQ4QzhCNCAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzk5QTMzMThFRjdCMTIwMDQ4QzhC
NCAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3Q0M5OUEzNjE4RUY3Q0JDMDA0OEM4QjQg
LyogV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NDOTlBMzUxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVz
c2FnZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3Q0M5OUEzNjE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzk5
QTM1MThFRjdDQkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDRDEwMkRBMTg2Njc3
MDYwMEVENDI5RCAvKiBBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0QxMDJEOTE4NjY3NzA2MDBFRDQyOUQgLyog
QXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oICovOyB9OwogCQk3Q0Q1RUJCODE3NDZBMTVCMDAwQzFD
NDUgLyogV0tPYmpDVHlwZVdyYXBwZXJSZWYubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Q1RUJCNjE3NDZBMTVCMDAwQzFDNDUgLyogV0tPYmpDVHlw
ZVdyYXBwZXJSZWYubW0gKi87IH07CiAJCTdDRDVFQkI5MTc0NkExNUIwMDBDMUM0NSAvKiBXS09i
akNUeXBlV3JhcHBlclJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NENUVCQjcxNzQ2QTE1QjAwMEMxQzQ1IC8qIFdLT2JqQ1R5cGVXcmFwcGVyUmVm
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5
NzUsNiArMjk3OCwxMSBAQAogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5J
bmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1Bs
dWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxMzVB
QTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzEzNUFBQTE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3Jt
YXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVn
aW5JbmZvcm1hdGlvbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjFE
NkYxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjFENzAxOTI3RkEzNjAwMzZBNTlE
IC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdDMzYxRDc1MTkyODAyOEIwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjFENzYxOTI4MDNC
RDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IC4uLy4uLy4uLy4uLy4u
Ly4uLy4uLy4uLy4uLy4uLy4uL0J1aWxkcy9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjFENzcxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oOyBwYXRoID0g
Li4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQnVpbGRzL0RlYnVnL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM4NzQzMzE3MkY1NjE1MDAxQkQ4OEEgLyogUGFn
ZUJhbm5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQmFu
bmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzRjhDOEUxNzNBRjUyRDAw
N0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MzRjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTg5LDggKzI5OTcsNyBAQAogCQk3Q0IxNkZF
NTE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbi5z
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBs
dWdpbi5zYiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjE2RkU2MTcyNEI5QjUw
MDdBMEE5NSAvKiBjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luLnNiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IGNvbS5taWNyb3NvZnQuU2lsdmVybGlnaHRQbHVnaW4uc2I7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjE2RkU3MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20ub3Jh
Y2xlLmphdmEuSmF2YUFwcGxldFBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20u
b3JhY2xlLmphdmEuSmF2YUFwcGxldFBsdWdpbi5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0NDOTlBMzMxOEVGN0IxMjAwNDhDOEI0IC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJDb250ZW50
Q29udHJvbGxlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NDOTlB
MzUxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Q0M5OUEzNTE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3Jp
cHRNZXNzYWdlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tT
Y3JpcHRNZXNzYWdlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NE
MTAyRDkxODY2NzcwNjAwRUQ0MjlEIC8qIEF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0Q1RUJCNjE3NDZBMTVCMDAwQzFDNDUgLyogV0tP
YmpDVHlwZVdyYXBwZXJSZWYubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS09iakNUeXBlV3JhcHBlclJlZi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0NENUVCQjcxNzQ2QTE1QjAwMEMxQzQ1IC8qIFdLT2JqQ1R5cGVXcmFwcGVyUmVmLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT2JqQ1R5cGVXcmFwcGVyUmVmLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDIzLDggKzQ0MzAsMTEgQEAKIAkJMUFBRjA4
OUUxOTI2ODFBQzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzM2MUQ2RjE5MjdGQTM2MDAzNkE1OUQgLyogV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwICovLAorCQkJCTdDMzYxRDcwMTkyN0ZBMzYwMDM2QTU5
RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oICovLAogCQkJCTFBQUYwODlGMTkyNjgxRDEw
MEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgKi8sCiAJCQkJMUFB
RjA4QTAxOTI2ODFEMTAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmgg
Ki8sCisJCQkJN0MzNjFENzUxOTI4MDI4QjAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBVc2VyQ29udGVudDsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00ODk5LDEzICs0OTA5LDEyIEBACiAJCQkJ
MUE3RTM3NzcxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5oICovLAogCQkJCTFB
N0UzNzc2MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UubW0gKi8sCiAJCQkJMUE3
RTM3NzQxOEU0QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCAqLywKLQkJ
CQk3Q0M5OUEzNTE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oICov
LAorCQkJCTdDQzk5QTM1MThFRjdDQkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5h
bC5oICovLAogCQkJCTFBRDg3OTA5MThCNkMzOEEwMDZDQUZENyAvKiBXS1VJRGVsZWdhdGUuaCAq
LywKIAkJCQkzNzQzOTI1NzE4QkM0QzYwMDAxQzg2NzUgLyogV0tVSURlbGVnYXRlUHJpdmF0ZS5o
ICovLAogCQkJCTFBRkEzQUM3MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50Q29udHJv
bGxlci5oICovLAogCQkJCTFBRkEzQUM2MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50
Q29udHJvbGxlci5tbSAqLywKIAkJCQkxQUFGMDhBMzE5MjY4MkRBMDBCNjM5MEMgLyogV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oICovLAotCQkJCTdDQzk5QTMzMThFRjdCMTIwMDQ4
QzhCNCAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCAqLywKIAkJCQkxQUFGMDg5
OTE5MjY3RUU1MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0LmggKi8sCiAJCQkJMUFBRjA4OTgxOTI2
N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5tbSAqLywKIAkJCQkxQUFGMDg5QzE5MjY3RkM4
MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCAqLywKQEAgLTY1NTMsMTAgKzY1NjIs
NiBAQAogCQlDMENFNzI5RDEyNDdFNzFEMDBCQzBFQzQgLyogRGVyaXZlZCBTb3VyY2VzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkxQUFGMDhCNTE5MjY5
RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKLQkJCQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyTWVzc2FnZXMuaCAqLywKLQkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMkRF
Njk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oICovLAogCQkJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlv
bk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMkY1OEExMTJBODgzQUQwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCUUxMTVDNzE1
MTkwRjhBMjUwMEVDQzUxNiAvKiBjb20uYXBwbGUuV2ViS2l0LkRhdGFiYXNlcy5zYiAqLywKQEAg
LTY2MTYsNiArNjYyMSw4IEBACiAJCQkJRTE4RTY5MTIxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0
ZW1TaGltTWVzc2FnZXMuaCAqLywKIAkJCQlFMThFNjkxMzE2OUI2NjdCMDA5QjY2NzAgLyogU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTQxNjlCNjY3
QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTJERTY5NDNC
MThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKKwkJCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTMz
NERFQzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovLAogCQkJ
CTFBQjMxQTk0MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCkBAIC02NjkyLDYgKzY2OTksMTAgQEAKIAkJCQkzMzM2NzY1NDEzMEM5RUNBMDA2
QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJ
NTFGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKIAkJCQk1MUYwNjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VM
b2FkZXJNZXNzYWdlcy5oICovLAorCQkJCTFBQUYwOEI1MTkyNjlFNkQwMEI2MzkwQyAvKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFBQUYwOEI2
MTkyNjlFNkQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oICov
LAorCQkJCTdDMzYxRDc2MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJN0MzNjFENzcxOTI4MDNCRDAwMzZB
NTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkz
RjQxOEVGNTE4ODdCRDk3MDAyNzk1RkQgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJM0Y0MThFRjYxODg3QkQ5NzAwMjc5NUZEIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTNGNDE4RUY3MTg4N0JEOTcw
MDI3OTVGRCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLApAQCAtNjk3MSw2ICs2OTgyLDcgQEAKIAkJCQlCQ0U4MUQ4RDEzMTlGN0VGMDAyNDE5
MTAgLyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQkMzREZDMTg5OUY1MUMwMDRG
MDYyNiAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJG
OTIxOTIwMURBNzAwQTFGQTM3IC8qIEFQSUNvbnRleHRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5REUwMDhGNTdBOCAvKiBF
ZGl0aW5nUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMTQwRUIwMThGMzdCRTAwMDVFNzVB
MCAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NTNG
MTE4QkFCRjAwMDdEOUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAt
NzAzNCw3ICs3MDQ2LDcgQEAKIAkJCQkxQTIzMjhGRjE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2Fn
ZUVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzRDODI5MTZCODc2QTkwMDY5RENDRCAv
KiBNZXNzYWdlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDZDMTgzMjdDMTIwMDA4
N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDQzk5QTM2MThF
RjdDQkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3Q0M5OUEzNjE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdl
UmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAv
KiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwRTNBQTdDMTIwOUU4
M0MwMEE0OUQwMSAvKiBNb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzQxOCw3ICs3NDMwLDYg
QEAKIAkJCQlCQ0UyMzE1RDEyMkMzMENBMDBENUMzNUEgLyogQVBJVVJMUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM5MEExRDIxMjJERDU1RTAwQ0M4QzUwIC8qIEFQSVVSTFJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjExM0UyNTEyNkNFMTgyMDA1N0QwQTcgLyogV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0M5OUEzNDE4RUY3QjEy
MDA0OEM4QjQgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOUNENTVBQTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzJEMTI0RUMyRTEwMDQ4RDEz
QyAvKiBXS0FQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkUzNEU1MTMwQjREMDUwMEFC
RDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTc1
NTcsNiArNzU2OCw3IEBACiAJCQkJQkM3QjYzMzcxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdy
b3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJEMDIxOTEyQUM0MjZDMDBFNzMyQTMgLyogV0tQ
YWdlTG9hZFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0JERUIwMTE3MUREN0FGMDBCRkVF
MUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzNjFE
NzkxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NDY1MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1Bh
Z2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UxN0I3RTEzODFGMTE3MDAxMkE2NDEg
LyogV0tQYWdlUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRkQzOEMxNkIwRTg4
QzAwQjJGMEU4IC8qIFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04
NjU5LDYgKzg2NzEsNyBAQAogCQkJCTFBNkZCRDI5MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2Fw
ZVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODgg
LyogRmluZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJB
Njc2NyAvKiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDMzYxRDcy
MTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTRBOUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5l
dHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMxMUVF
NzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtODg2MSw2ICs4ODc0LDcgQEAKIAkJCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2Vi
Q29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNUIxMTJGNEZCQjAwMzM3
QkFCIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDIx
RTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDMzYxRDc4MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTI5
MzVENzEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTI5MjMyREY5MThCMkFCM0EwMEQwNTk2RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRkJCOUExMjg4Qzk1RTAwQUZG
REY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNjkwMTQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiwxNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyTWVzc2FnZUhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC04Miw0ICs4OCw3NCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6cmVtb3ZlQWxsCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJT
Y3JpcHRzKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAorCitjbGFzcyBXZWJVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk+LCBwdWJsaWMgV2ViQ29yZTo6VXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvcjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk+IGNyZWF0ZShXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3Qg
aWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KGNvbnRyb2xsZXIsIG5hbWUsIGlkZW50aWZpZXIp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
UHJveHkoKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yOjpDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2Vi
Q29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyLCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0g
aGFuZGxlci5mcmFtZSgpOworICAgICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIAorICAgICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVG
cmFtZSgqZnJhbWUpOworICAgICAgICBpZiAoIXdlYkZyYW1lKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZS0+cGFnZSgpOworICAgICAg
ICBpZiAoIXdlYlBhZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKAorICAgICAgICAgICAg
d2ViUGFnZS0+cGFnZUlEKCksCisgICAgICAgICAgICB3ZWJGcmFtZS0+ZnJhbWVJRCgpLAorICAg
ICAgICAgICAgbV9pZGVudGlmaWVyLAorICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlKHZh
bHVlLT5kYXRhKCkpCisgICAgICAgICksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigpKTsKKyAg
ICB9CisKKyAgICBXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKCkgeyByZXR1cm4gbV9kZXNjcmlwdG9yLmdldCgpOyB9CisgICAgdWludDY0X3QgaWRlbnRp
ZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFdlYlVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICAg
ICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2Rlc2NyaXB0b3IoVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6Y3JlYXRlKG5hbWUsIG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpLCAqdGhpcykpCisgICAgICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAg
eworICAgIH0KKworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJv
bGxlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcj4g
bV9kZXNjcmlwdG9yOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKK307CisKK3ZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0
IFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mIHNjcmlwdE1lc3NhZ2VIYW5k
bGVycykKK3sKKyAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IHNjcmlwdE1lc3NhZ2VIYW5kbGVycykg
eworICAgICAgICBSZWZQdHI8V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5PiBk
ZXNjcmlwdG9yID0gV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5OjpjcmVhdGUo
dGhpcywgaGFuZGxlLm5hbWUsIGhhbmRsZS5pZGVudGlmaWVyKTsKKworICAgICAgICBtX3VzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLmFkZChkZXNjcmlwdG9yLT5pZGVudGlmaWVyKCksIGRl
c2NyaXB0b3IpOworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvcihkZXNjcmlwdG9yLT5kZXNjcmlwdG9yKCkpOworICAgIH0KK30K
Kwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXQgPSBtX3VzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3JzLmZpbmQoaWRlbnRpZmllcik7CisgICAgQVNTRVJUKGl0ICE9
IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMuZW5kKCkpOworICAgIAorICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKGl0
LT52YWx1ZS0+ZGVzY3JpcHRvcigpKTsKKyAgICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JzLnJlbW92ZShpdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAxNjkwMTQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTYgQEAKICNkZWZpbmUgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyX2gKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yUHJveHk7CisKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4sIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI+IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOwpA
QCAtMzksNiArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpVc2VyQ29udGVudENvbnRy
b2xsZXImIHVzZXJDb250ZW50Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyLmdldCgpOyB9CiAKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9IAorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIApAQCAtNDgsOCArNTUsMTMgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU2Ny
aXB0PiYgdXNlclNjcmlwdHMpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAor
ICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+JiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOworICAgIHZv
aWQgcmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHVpbnQ2NF90KTsKKwogICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllcjsKICAgICBSZWY8V2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVy
PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5Pj4gbV91c2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yczsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2LDQgKzI2
LDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciB7CiAgICAgQWRkVXNl
clNjcmlwdHMoVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHRzKTsKICAgICBS
ZW1vdmVBbGxVc2VyU2NyaXB0cygpCisKKyAgICBBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJz
KFZlY3RvcjxXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlPiBzY3JpcHRNZXNz
YWdlSGFuZGxlcnMpOworICAgIFJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50NjRf
dCBpZGVudGlmaWVyKQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231663</attachid>
            <date>2014-05-18 12:45:09 -0700</date>
            <delta_ts>2014-05-18 15:42:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133053-20140518124446.patch</filename>
            <type>text/plain</type>
            <size>124574</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNDY1LDYgKzQ2NSw3IEBACiAKICNkZWZpbmUgV1RG
X1VTRV9DRiAxCiAjZGVmaW5lIFdURl9VU0VfRk9VTkRBVElPTiAxCisjZGVmaW5lIEVOQUJMRV9V
U0VSX01FU1NBR0VfSEFORExFUlMgMQogCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTY5MDE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTQtMDUtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBbV2ViS2l0Ml0gSW1wbGVtZW50IFNjcmlwdE1lc3NhZ2VIYW5kbGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDUzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1VzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2U6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNob3Vs
ZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6OndlYmtpdE5hbWVzcGFjZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjp1c2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9ycyk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6VXNlck1l
c3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6flVz
ZXJNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXI6
OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6bmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXI6OndvcmxkKToKKyAgICAg
ICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdl
SGFuZGxlci5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcjo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjp+VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6
OndvcmxkKToKKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpD
bGllbnQ6On5DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3I6OmNsaWVudCk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yVHlwZXMuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlOjpVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6On5Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OmhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
LmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVzcGFjZTo6V2ViS2l0TmFtZXNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAg
ICogcGFnZS9XZWJLaXROYW1lc3BhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXROYW1lc3BhY2U6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9XZWJLaXROYW1lc3BhY2UuaWRs
OiBBZGRlZC4KKwogMjAxNC0wNS0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCBpT1MgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ4MCw2ICs0ODAsOSBAQCBOT05fU1ZHX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9wYWdlL1dlYktpdFBvaW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9wYWdlL1dlYktp
dE5hbWVzcGFjZS5pZGwgXAorICAgICQoV2ViQ29yZSkvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmlkbCBcCisgICAgJChXZWJDb3JlKS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9XaW5kb3dCYXNlNjQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL3BhZ2UvV2luZG93VGltZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1dvcmtlck5h
dmlnYXRvci5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2OTAxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEx
LDYgKzEwMTEsOCBAQCBfX1pON1dlYkNvcmUyN3JlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvCiBf
X1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdXZWJD
b3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3UGFz
c1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjdQYXNzUmVmSU5TXzE4U3R5
bGVTaGVldENvbnRlbnRzRUVFCitfX1pON1dlYkNvcmUyOFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JDMUVSS04zV1RGMTJBdG9taWNTdHJpbmdFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVJOUzBf
NkNsaWVudEUKK19fWk43V2ViQ29yZTI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckQxRXYK
IF9fWk43V2ViQ29yZTI4ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTI4cmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckVQdgogX19aTjdX
ZWJDb3JlMjljb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZUVSS05TXzIxTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KQEAgLTIxOTcsNiArMjE5OSwxMiBAQCBfX1pON1dlYkNv
cmUyMFJlc291cmNlSGFuZGxlQ2xpZW50MjNkaWRSCiBfX1pON1dlYkNvcmUyMGFwcGxpY2F0aW9u
SXNIUkJsb2NrRXYKIF9fWk43V2ViQ29yZTIwYnVpbHRJblBERlBsdWdpbk5hbWVFdgogX19aTjdX
ZWJDb3JlMjFEZXZpY2VPcmllbnRhdGlvbkRhdGE2Y3JlYXRlRWJkYmRiZGJiCitfX1pON1dlYkNv
cmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjEzYWRkVXNlclNjcmlwdEVSTlNfMTVET01XcmFwcGVy
V29ybGRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18xMFVzZXJTY3JpcHRFTlMzXzE0ZGVmYXVsdF9k
ZWxldGVJUzVfRUVFRQorX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIxN3JlbW92
ZVVzZXJTY3JpcHRzRVJOU18xNURPTVdyYXBwZXJXb3JsZEUKK19fWk43V2ViQ29yZTIxVXNlckNv
bnRlbnRDb250cm9sbGVyMzFhZGRVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRVBOU18yOFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFCitfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29u
dHJvbGxlcjM0cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckVQTlNfMjhVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yRQorX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xs
ZXI2Y3JlYXRlRXYKK19fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyRDFFdgogX19a
TjdXZWJDb3JlMjFhcHBsaWNhdGlvbklzQXBlcnR1cmVFdgogX19aTjdXZWJDb3JlMjFhcHBsaWNh
dGlvbklzVmVyc2lvbnNFdgogX19aTjdXZWJDb3JlMjFyZXBvcnRUaHJlYWRWaW9sYXRpb25FUEtj
TlNfMjBUaHJlYWRWaW9sYXRpb25Sb3VuZEUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjMzOSwxMiArMjMzOSwyMyBAQAogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMg
LyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNz
RWxlbWVudC5oICovOyB9OwogCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9i
YWxPYmplY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2su
Y3BwICovOyB9OwogCQk3QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzJCREQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07
CisJCTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NkYxOTA4
NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CisJCTdDM0I3OTcy
MTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0I3OTcwMTkwODc1N0IwMEI0N0EyRCAv
KiBVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QzNFNTEwQTE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRTUx
MDgxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcg
LyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDM0U1MTA5MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICov
OyB9OworCQk3QzQ4QTZEMDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhBNkNFMTkx
QzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwICovOyB9OworCQk3QzQ4QTZEMTE5
MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2Vi
S2l0TmFtZXNwYWNlLmggKi87IH07CiAJCTdDNDkwMkEyMThCODI1RjgwMDdEOTI5OCAvKiBET01X
aGVlbEV2ZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OTg5RENBMEFDQzhCQkQwMEEwQkM1MSAvKiBET01X
aGVlbEV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1IC8q
IEluc3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXku
Y3BwICovOyB9OwogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgg
Ki87IH07CisJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNzNGQjA1MTkxRUY0MTYwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmNwcCAqLzsgfTsKKwkJN0M3M0ZCMDgxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDNzNGQjA2MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJN0M3M0ZCMEMxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzczRkIwQTE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmNwcCAqLzsgfTsKKwkJN0M3M0ZCMEQxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyc05hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3M0ZCMEIxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZS5oICovOyB9OworCQk3QzczRkIxMTE5MUVGNkY0MDA3REUwNjEgLyogSlNV
c2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3M0ZCMEYxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5k
bGVyLmNwcCAqLzsgfTsKKwkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzczRkIxMDE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsg
fTsKKwkJN0M3M0ZCMTkxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzczRkIxNzE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJN0M3NEQ0MzMxODgyM0E5MzAwRTVFRDU3IC8q
IFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJM
YXRpbjEuY3BwICovOyB9OwogCQk3Qzc0RDQzNDE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92
aWRlckxhdGluMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLzsg
fTsKIAkJN0M3NEQ0MzcxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzUxODgyM0Ix
OTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovOyB9OwpAQCAtMjM1Myw3ICsyMzY0LDEy
IEBACiAJCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDNBMTg4
MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKIAkJN0NDNTY0Qjgx
OEJBQkVBNjAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M1NjRCNjE4QkFCRUE2MDAxQjk2
NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3IuaCAqLzsgfTsKIAkJN0NDNTY0QkExOEJBQzcy
MDAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yQ29jb2EuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDNTY0QjkxOEJBQzcyMDAwMUI5
NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yQ29jb2EuY3BwICovOyB9OworCQk3Q0M2OTk0
MDE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDNjk5M0UxOTFFQzVGNTAwQUYyMjcw
IC8qIEpTV2ViS2l0TmFtZXNwYWNlLmNwcCAqLzsgfTsKKwkJN0NDNjk5NDExOTFFQzVGNTAwQUYy
MjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Q0M2OTkzRjE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1l
c3BhY2UuaCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdo
aXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICov
OyB9OworCQk3Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0U2ODM0MjE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
ci5jcHAgKi87IH07CisJCTdDRTY4MzQ1MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0U2ODM0MzE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdDRTY4MzQ3MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDRTY4MzQ2MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3Q0U2Q0JGQjE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQTE4N0YzNzA3MDBE
NDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggKi87IH07CiAJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0
NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NFNkNCRkMxODdGMzk0OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZl
cnRlci5jcHAgKi87IH07CiAJCTdENzQxQkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtl
eXdvcmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTY1ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jk
cy5oICovOyB9OwpAQCAtOTQwMSw4ICs5NDE3LDEzIEBACiAJCTdBRjlCMjBCMThDRkI1RjMwMEM2
NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNWVFRSZWdpb25MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJE
RDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8q
IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVz
ZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNFNTEw
ODE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDM0U1MTA5MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTENvbnZlcnRlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktp
dE5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJL
aXROYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzQ4QTZDRjE5
MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYktpdE5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzQ4QTZEMjE5MUM5RDhFMDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJLaXROYW1lc3BhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUy
MkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rv
ck92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yT3Zl
cmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUzNDNGQTE3Qjc0QjYzMDA0
MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDEyLDYgKzk0MzMsMTUgQEAKIAkJN0M2MTM2RjcxNzEw
QzM1MjAwRkY0QTU3IC8qIEluRmlsZXNDb21waWxlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZp
bGVzQ29tcGlsZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNDb21waWxlci5wbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2RjgxNzEwQzM1MjAwRkY0QTU3IC8qIEluRmls
ZXNQYXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc1BhcnNlci5wbTsgcGF0aCA9IHNj
cmlwdHMvSW5GaWxlc1BhcnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2
MTM2RjkxNzEwQzM1MjAwRkY0QTU3IC8qIFN0YXRpY1N0cmluZy5wbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUg
PSBTdGF0aWNTdHJpbmcucG07IHBhdGggPSBzY3JpcHRzL1N0YXRpY1N0cmluZy5wbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3M0ZCMDUxOTFFRjQxNjAwN0RFMDYxIC8qIFVzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdDNzNGQjA2MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0M3M0ZCMDkxOTFFRjQ5RjAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzczRkIwQTE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDNzNGQjBCMTkxRUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDNzNGQjBFMTkxRUY2MEUwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFVzZXJNZXNzYWdlSGFuZGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
NzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzNGQjEwMTkxRUY2RjQwMDdERTA2MSAv
KiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1VzZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QzczRkIxNzE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRp
bjEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc0RDQzMjE4ODIzQTkzMDBF
NUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQyMCw3ICs5NDUwLDEyIEBACiAJCTdDNzRENDNBMTg4
MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDQzU2NEI2MThCQUJFQTYwMDFCOTY1MiAvKiBUZWxlcGhvbmVOdW1iZXJEZXRl
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxlcGhvbmVOdW1iZXJE
ZXRlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M1NjRCOTE4QkFDNzIw
MDAxQjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3JDb2NvYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZWxlcGhvbmVOdW1iZXJEZXRlY3RvckNvY29hLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDNjk5M0UxOTFFQzVGNTAwQUYyMjcw
IC8qIEpTV2ViS2l0TmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViS2l0TmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0NDNjk5M0YxOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViS2l0TmFtZXNwYWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3Jp
cHRXaGl0ZUxpc3QudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElETlNjcmlwdFdoaXRlTGlz
dC50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRTY4MzQyMTkyMTQzQTgwMEY0
RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0U2ODM0MzE5MjE0M0E4MDBGNEQ5MjggLyog
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDRTY4MzQ2MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0Q29udmVydGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTZDQkZDMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRD
b252ZXJ0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0
Q29udmVydGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzM0NEMDAxMjdG
MzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTY0NzMsNiArMTY1MDgsMTggQEAKIAkJCQlFMTI3MUExMzBFRUVDODA0MDBGNjEyMTMgLyogV29y
a2VyTmF2aWdhdG9yLmNwcCAqLywKIAkJCQlFMTI3MUEwQTBFRUVDNzdBMDBGNjEyMTMgLyogV29y
a2VyTmF2aWdhdG9yLmggKi8sCiAJCQkJRTEyNzFBNTEwRUVFQ0QxQzAwRjYxMjEzIC8qIFdvcmtl
ck5hdmlnYXRvci5pZGwgKi8sCisJCQkJN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktp
dE5hbWVzcGFjZS5jcHAgKi8sCisJCQkJN0M0OEE2Q0YxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktp
dE5hbWVzcGFjZS5oICovLAorCQkJCTdDNDhBNkQyMTkxQzlEOEUwMDAyNjY3NCAvKiBXZWJLaXRO
YW1lc3BhY2UuaWRsICovLAorCQkJCTdDNzNGQjA1MTkxRUY0MTYwMDdERTA2MSAvKiBVc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCAqLywKKwkJCQk3QzczRkIwNjE5MUVGNDE3MDA3REUw
NjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oICovLAorCQkJCTdDNzNGQjA5MTkx
RUY0OUYwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmlkbCAqLywKKwkJ
CQk3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLywK
KwkJCQk3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi8s
CisJCQkJN0M3M0ZCMEUxOTFFRjYwRTAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5pZGwg
Ki8sCisJCQkJN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuY3BwICovLAorCQkJCTdDRTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggKi8sCisJCQkJN0NFNjgzNDYxOTIxODIxNTAwRjREOTI4
IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBwYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwNTg5LDcgKzIwNjM2
LDYgQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3
Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIw
QkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRUYxMkIwMkVFNDAwRENGMzNC
IC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGMDEy
QjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovLApAQCAtMjA2MTAs
NiArMjA2NTYsNyBAQAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwICovLAogCQkJCUFENzI2RkVBMTZEOUY0MEIwMDNBNEU2RCAv
KiBKU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uaCAqLywKIAkJCQlCQzIwRkI3RTBDMEU4RTZD
MDBEMTQ0N0YgLyogSlNDU1NWYWx1ZUN1c3RvbS5jcHAgKi8sCisJCQkJMDdGQkRFMkIxOEZFRDE3
ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIw
NTAwMzQyMUE4IC8qIEpTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcCAqLywKIAkJCQk0MTYyQTQ1MzEw
MTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAg
Ki8sCiAJCQkJMzFGQjFBNkIxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwICovLApAQCAtMjA2OTcsNiArMjA3NDQsNyBAQAogCQkJCTA3ODQ2Mzg0MTQ1QjFC
OEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi8sCiAJCQkJMDdCNUEzMEExNDY4N0I4NDAw
QTgxRUNFIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJNTE2QkI3OTIwQ0U5MUU2
ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgKi8sCisJCQkJN0M3M0ZCMTcxOTFF
RjgwODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAg
Ki8sCiAJCQkJQkU2REY3MDgxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5j
cHAgKi8sCiAJCQkJQkU2REY3MEExNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RD
dXN0b20uY3BwICovLAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCkBAIC0yMDgyNCw2ICsyMDg3MiwxMiBAQAogCQkJ
CUJDRUMwMUMxMEMyNzREREQwMDlGNEVDOSAvKiBKU1NjcmVlbi5oICovLAogCQkJCTQ5NEJENzlC
MEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLywKIAkJCQk0OTRCRDc5QzBG
NTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovLAorCQkJCTdDQzY5OTNFMTkxRUM1
RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVzcGFjZS5jcHAgKi8sCisJCQkJN0NDNjk5M0YxOTFF
QzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggKi8sCisJCQkJN0M3M0ZCMEExOTFF
RjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgKi8sCisJ
CQkJN0M3M0ZCMEIxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVz
cGFjZS5oICovLAorCQkJCTdDNzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdl
SGFuZGxlci5jcHAgKi8sCisJCQkJN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1l
c3NhZ2VIYW5kbGVyLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdpbmRvdzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0yMjk5MCw2ICsyMzA0NCw3IEBACiAJCQkJMjlBODEyNDMwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3QjAxMTNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NFNjgzNDcxOTIxODIx
NTAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzZDREQyRjMxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQyRjcxMTAzREE2NjAwNjgwNTIxIC8qIEFj
Y2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQyRjUx
MTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzNTQ3LDYgKzIzNjAyLDcgQEAKIAkJCQkyRDlBMjQ3NTE1QjlDMkUzMDBEMzQ1
MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3lJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUIzQTg4NzIxNDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3Njk0NTY1QjEyMTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5M
aXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzczRkIwODE5MUVGNDE3MDA3REUwNjEgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBQkEyNUEx
NEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVBQ0E5
QzAwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1
RTcxMTk4MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01FbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjQ0ODMsNiArMjQ1MzksNyBAQAogCQkJCUY1QzA0MUU3MEZGQ0E5NkQwMDgzOUQ0
QSAvKiBKU0hUTUxEYXRhTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzNTlEOEJG
MTI5Q0E1NUMwMDA2RTVEMiAvKiBKU0hUTUxEZXRhaWxzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzY4MDhCNTAxNTlEQURGQTAwMkI1MjMzIC8qIEpTSFRNTERpYWxvZ0VsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTdDQzY5OTQxMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5h
bWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRTcwQTFCMjQwNTAwRDhDODdDIC8q
IEpTSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMkI3MEEx
QjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTg1QjFFOTBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI0NjUwLDYgKzI0NzA3LDcgQEAKIAkJCQkwNzk2OURCQzE3RDE0MTUxMDA3RkY4
NDIgLyogSlNSVENTZXNzaW9uRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5
REJFMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURDMDE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0
c0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzczRkIwRDE5MUVGNUE4MDA3REUwNjEg
LyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Nzk2OURDMjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc5NjlEQzQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQzMwQzI3NERERDAwOUY0RUM5IC8qIEpTU2NyZWVu
LmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTY4LDYgKzI1MDI2LDcgQEAKIAkJCQk5MzJBRDcwNjE3
RUZBMkM0MDAzOEY4RkYgLyogTWFpbkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTg3MDU2
MzE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOEY2QkM2MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3Vw
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3Vw
QWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTNGMTNENzZEN0UwMDkyQTI3
NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTkyLDYg
KzI1MjUxLDcgQEAKIAkJCQlGRDU4MUZCNTE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUQ1REMyRTBGNDIzQTczMDA4RjIwRkQgLyogUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUQwRkYyQTVFMTFG
OEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzQ4QTZE
MTE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYxMzE2M0UxNkVEMENDODAwMzVDQzA0IC8qIFBsYXRmb3JtQ0FGaWx0
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjZCMkQ1QzE4NjgzMDA1MDA3M0M0REQgLyogUGxh
dGZvcm1DQUZpbHRlcnNNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUyMDIsNiArMjUyNjIsNyBA
QAogCQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyNjYwMUVCRjE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZh
Y3RvcnlJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAv
KiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NFNjgzNDUx
OTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDU2MkY5NjExNTczRjg4
RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYzMjIsNiAr
MjYzODMsNyBAQAogCQkJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxT
Y29wZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENDQkI0RDE1MUY4MzNCMDBBQjdDRTkg
LyogV29ya2VyR2xvYmFsU2NvcGVXZWJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM2
RTA3QTUxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdDM0I3OTcyMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhh
bmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE4RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBX
b3JrZXJMb2FkZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NEQwRjU0NkE4MjAw
QjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MDBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovLApA
QCAtMjcyMjAsNiArMjcyODIsNyBAQAogCQkJCTg1OUE5QzUwMEFBNUUzQkQwMEI2OTRCMiAvKiBE
T01IVE1MU3R5bGVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjgyMUUwQUE3ODQ5
RTAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJODVERjgyMjAwQUE3ODQ5RTAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M3M0ZCMTExOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1REY4MjIyMEFBNzg0OUUw
MDQ4NkFENyAvKiBET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODVERjgyNzEwQUE3OEI4QjAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZUVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NURGODIyNDBBQTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlUm93
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjc5OTksNiArMjgwNjIsNyBAQAogCQkJCUE4
MEU3QjEzMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxUaXRsZUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDcwNzU2RDMxNDIzOUE0RTAwNDE0MTYxIC8qIEpTSFRNTFRyYWNrRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjIxMDBBMUIyNTg3MDBEOEM4N0MgLyogSlNI
VE1MVUxpc3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0I3OTcxMTkwODc1N0Iw
MEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU0
QUJDRDQxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0NDYxNDE2MENENjgyNjkwMEZBREE3NSAvKiBKU0hUTUxWaWRlb0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTExRUYyQzAxN0YwRkQzNTAwRTRGQTE2IC8qIEpT
SURCQW55LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg1MDIsNiArMjg1NjYsNyBAQAogCQkJCUNE
QTk4RTBEMTYwM0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEVBODAwOTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdDQzY5OTQwMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5h
bWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNFMzBDRDY4MTlGMDBGQURBNzUg
LyogTWVkaWFQbGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyQzhCMTExMzFDNTE4NjAw
QTRGQ0U5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlERjlBRkQ3MzEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg1NDgsNiArMjg2MTMsNyBAQAog
CQkJCUUxQURFQ0MwMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzhFNTI2RjEzNDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RERDRDk0MTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1F
SGVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAv
KiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NzcyQzRFMEM0RUIzMDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0NTM5MDFEMEVBRkNBQ0EwMDM2OTVDOCAvKiBNSU1FVHlwZVJlZ2lzdHJ5SU9T
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NzJDNUUwQzRFQjM0NDAwODMyODVGIC8qIE1JTUVU
eXBlUmVnaXN0cnlNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTI4NzAyLDYgKzI4NzY4LDcgQEAK
IAkJCQlBMUUxMTU0NjEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M3M0ZCMTkxOTFFRjgwODAwN0RF
MDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDQ1QTk1OTE3NUQ0MTcxMDBDMjFFQzggLyogUG9seWdvblNoYXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxODlGMERFMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUY4MDgyNDVFNTkwMDFFOUFCQyAvKiBQ
b3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTM1LDYgKzI5MjAyLDcgQEAKIAkJCQkw
OEI1RjI1NTEzQjVGRkYyMDAyOTU5RUMgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQzQjkzMzZBMTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFBMzAyMTEzQjg5RENDMDA3NzkxRTQgLyogU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNDhB
NkQwMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODM2RkJDRUMxNzhDMTE3RjAwQjIxQTE1IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxNDJFN0ExM0IxRTk3NzAwRjFDODcxIC8qIFNWR0FuaW1h
dGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0E2MjY2NzEzQjNEMTEwMDBBQzk0Qjgg
LyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTM0NSw2ICsyOTQx
Myw3IEBACiAJCQkJNDRDOTkxQTAwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFNjU5RTkwRUE5MkZGQTAwN0U0NTMzIC8qIFRoZW1lTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTc2RDZDOTQxMjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVC
bG9iUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjRE
OTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEI5MDU2MUUwRjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTdBQUJEMTYxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDE4MTRGQTA5RDUwMDc0
NTdBRSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yOTUyNSw2ICsyOTU5NCw3IEBACiAJCQkJQ0Q4MjAzMEIxMzk1QUI2QTAw
Rjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywK
IAkJCQkzRjQyQjMxRTE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LywKKwkJCQk3QzczRkIwQzE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUz
OCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTNGQkM0QUVGMTg5ODgxMzgwMDQ2RUUzOCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1l
ZGlhRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUYxMjE3MUY1MTZBOENFRDIwMDAwNTND
QSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAxNjkwMTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvTWljcm90YXNr
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAorI2lmIEVOQUJMRShVU0VSX01FU1NB
R0VfSEFORExFUlMpCisjaW5jbHVkZSAiSlNXZWJLaXROYW1lc3BhY2UuaCIKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldl
YlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaCIKQEAgLTc3LDYgKzgxLDExIEBAIHZvaWQgSlNE
T01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYKICAgICB9OwogICAgIAogICAgIGFkZFN0
YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxz
KSk7CisKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGlmIChtX2ltcGwt
PnNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh3b3JsZCgpKSkKKyAgICAgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyKCZ2bSwgIndlYmtpdCIpLCB0b0pTKGdsb2JhbEV4ZWMoKSwg
dGhpcywgbV9pbXBsLT53ZWJraXROYW1lc3BhY2UoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7
CisjZW5kaWYKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZS5oIgorCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKworI2lu
Y2x1ZGUgIkpTVXNlck1lc3NhZ2VIYW5kbGVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChVc2VyTWVz
c2FnZUhhbmRsZXIqIGhhbmRsZXIgPSBpbXBsKCkuaGFuZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSkpIHsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwg
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGFuZGxlcikpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
VVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAko
cmV2aXNpb24gMTY5MDE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoVVNF
Ul9NRVNTQUdFX0hBTkRMRVJTKQorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJL
aXROYW1lc3BhY2UuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBST1hJTUlUWV9FVkVOVFMpCiAj
aW5jbHVkZSAiRGV2aWNlUHJveGltaXR5Q29udHJvbGxlci5oIgogI2VuZGlmCkBAIC03MTIsNiAr
NzE4LDQyIEBAIExvY2F0aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gbV9sb2NhdGlvbi5nZXQoKTsKIH0KIAorI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExF
UlMpCitib29sIERPTVdpbmRvdzo6c2hvdWxkSGF2ZVdlYktpdE5hbWVzcGFjZUZvcldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogdXNlckNvbnRlbnRDb250
cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7CisgICAgaWYgKCF1c2VyQ29u
dGVudENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIGRlc2Ny
aXB0b3JNYXAgPSB1c2VyQ29udGVudENvbnRyb2xsZXItPnVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JzKCk7CisgICAgaWYgKCFkZXNjcmlwdG9yTWFwKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBmb3IgKGF1dG8mIGRlc2NyaXB0b3IgOiBkZXNjcmlwdG9yTWFwLT52YWx1ZXMoKSkg
eworICAgICAgICBpZiAoJmRlc2NyaXB0b3ItPndvcmxkKCkgPT0gJndvcmxkKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitXZWJLaXRO
YW1lc3BhY2UqIERPTVdpbmRvdzo6d2Via2l0TmFtZXNwYWNlKCkgY29uc3QKK3sKKyAgICBpZiAo
IWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBp
ZiAoIW1fd2Via2l0TmFtZXNwYWNlKQorICAgICAgICBtX3dlYmtpdE5hbWVzcGFjZSA9IFdlYktp
dE5hbWVzcGFjZTo6Y3JlYXRlKG1fZnJhbWUpOworICAgIHJldHVybiBtX3dlYmtpdE5hbWVzcGFj
ZS5nZXQoKTsKK30KKyNlbmRpZgorCiBTdG9yYWdlKiBET01XaW5kb3c6OnNlc3Npb25TdG9yYWdl
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5
ZWRJbkZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDE2OTAx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTUFwcGxpY2F0
aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NU2VsZWN0aW9uOwogICAgIGNsYXNzIERPTVVSTDsKKyAg
ICBjbGFzcyBET01XaW5kb3dDU1M7CiAgICAgY2xhc3MgRE9NV2luZG93UHJvcGVydHk7CisgICAg
Y2xhc3MgRE9NV3JhcHBlcldvcmxkOwogICAgIGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIERh
dGFiYXNlQ2FsbGJhY2s7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CkBAIC03Myw4ICs3NSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAg
Y2xhc3MgU3RvcmFnZTsKICAgICBjbGFzcyBTdHlsZU1lZGlhOworICAgIGNsYXNzIFdlYktpdE5h
bWVzcGFjZTsKICAgICBjbGFzcyBXZWJLaXRQb2ludDsKLSAgICBjbGFzcyBET01XaW5kb3dDU1M7
CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgY2xhc3MgUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s7CkBAIC00MjYsNiArNDI4LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBoYXNUb3VjaEV2ZW50TGlzdGVuZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3VjaEV2ZW50TGlzdGVuZXJDb3VudCA+IDA7IH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyAgICAgICAgYm9vbCBzaG91bGRIYXZlV2ViS2l0
TmFtZXNwYWNlRm9yV29ybGQoRE9NV3JhcHBlcldvcmxkJik7CisgICAgICAgIFdlYktpdE5hbWVz
cGFjZSogd2Via2l0TmFtZXNwYWNlKCkgY29uc3Q7CisjZW5kaWYKKwogICAgICAgICAvLyBGSVhN
RTogV2hlbiB0aGlzIERPTVdpbmRvdyBpcyBubyBsb25nZXIgdGhlIGFjdGl2ZSBET01XaW5kb3cg
KGkuZS4sCiAgICAgICAgIC8vIHdoZW4gaXRzIGRvY3VtZW50IGlzIG5vIGxvbmdlciB0aGUgZG9j
dW1lbnQgdGhhdCBpcyBkaXNwbGF5ZWQgaW4gaXRzCiAgICAgICAgIC8vIGZyYW1lKSwgd2Ugd291
bGQgbGlrZSB0byB6ZXJvIG91dCBtX2ZyYW1lIHRvIGF2b2lkIGJlaW5nIGNvbmZ1c2VkCkBAIC01
MDEsNiArNTA4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQ1NTM19DT05E
SVRJT05BTF9SVUxFUykKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8RE9NV2luZG93Q1NTPiBtX2Nz
czsKICNlbmRpZgorCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyAgICAgICAg
bXV0YWJsZSBSZWZQdHI8V2ViS2l0TmFtZXNwYWNlPiBtX3dlYmtpdE5hbWVzcGFjZTsKKyNlbmRp
ZgogICAgIH07CiAKICAgICBpbmxpbmUgU3RyaW5nIERPTVdpbmRvdzo6c3RhdHVzKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlICJV
c2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXQuaCIKIAorI2lmIEVOQUJMRShV
U0VSX01FU1NBR0VfSEFORExFUlMpCisjaW5jbHVkZSAiVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmUHRyPFVzZXJDb250
ZW50Q29udHJvbGxlcj4gVXNlckNvbnRlbnRDb250cm9sbGVyOjpjcmVhdGUoKQpAQCAtMTUxLDYg
KzE1NSwyNCBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclN0CiAgICAg
aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKTsKIH0KIAorI2lm
IEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCit2b2lkIFVzZXJDb250ZW50Q29udHJvbGxl
cjo6YWRkVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcihVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIGlmICghbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9ycykKKyAgICAgICAgbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycyA9IHN0ZDo6
bWFrZV91bmlxdWU8VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvck1hcD4oKTsKKworICAgIG1f
dXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMtPmFkZChzdGQ6Om1ha2VfcGFpcihkZXNjcmlw
dG9yLT5uYW1lKCksICZkZXNjcmlwdG9yLT53b3JsZCgpKSwgZGVzY3JpcHRvcik7Cit9CisKK3Zv
aWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yKFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgaWYg
KCFtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLT5yZW1vdmUoc3RkOjptYWtlX3BhaXIo
ZGVzY3JpcHRvci0+bmFtZSgpLCAmZGVzY3JpcHRvci0+d29ybGQoKSkpOworfQorI2VuZGlmCisK
IHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyQ29udGVudCgpCiB7CiAg
ICAgbV91c2VyU2NyaXB0cyA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorI2luY2x1ZGUgIlVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtMzksNiArNDMsNyBAQCBjbGFz
cyBQYWdlOwogY2xhc3MgVVJMOwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNo
ZWV0OworY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKIAogY2xhc3MgVXNlckNv
bnRlbnRDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlckNvbnRlbnRDb250cm9sbGVy
PiB7CiBwdWJsaWM6CkBAIC02Miw2ICs2NywxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92
ZUFsbFVzZXJDb250ZW50KCk7CiAKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQor
ICAgIGNvbnN0IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JNYXAqIHVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3JzKCkgY29uc3QgeyByZXR1cm4gbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9ycy5nZXQoKTsgfQorCisgICAgdm9pZCBhZGRVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yKFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IqKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvciopOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyKCk7CiAKQEAgLTcx
LDYgKzgzLDkgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0TWFw
PiBtX3VzZXJTY3JpcHRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU3R5bGVTaGVldE1hcD4g
bV91c2VyU3R5bGVTaGVldHM7CisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvck1hcD4gbV91c2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlci5oIgorCisjaWYgRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVXNl
ck1lc3NhZ2VIYW5kbGVyOjpVc2VyTWVzc2FnZUhhbmRsZXIoRnJhbWUqIGZyYW1lLCBVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAgIDogRnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyKGZyYW1lKQorICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCit7Cit9CisK
K1VzZXJNZXNzYWdlSGFuZGxlcjo6flVzZXJNZXNzYWdlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQg
VXNlck1lc3NhZ2VIYW5kbGVyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJwVmFsdWUpCit7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUgPSBwcnBWYWx1ZTsKKyAgICBtX2Rlc2NyaXB0b3ItPmNsaWVudCgpLmRpZFBvc3RNZXNz
YWdlKCp0aGlzLCB2YWx1ZS5nZXQoKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVXNlck1l
c3NhZ2VIYW5kbGVyOjpuYW1lKCkKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5uYW1lKCk7
Cit9CisKK0RPTVdyYXBwZXJXb3JsZCYgVXNlck1lc3NhZ2VIYW5kbGVyOjp3b3JsZCgpCit7Cisg
ICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+d29ybGQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lc3NhZ2VIYW5kbGVyX2gK
KyNkZWZpbmUgVXNlck1lc3NhZ2VIYW5kbGVyX2gKKworI2lmIEVOQUJMRShVU0VSX01FU1NBR0Vf
SEFORExFUlMpCisKKyNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNpbmNs
dWRlICJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVc2VyTWVzc2Fn
ZUhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVzc2FnZUhhbmRsZXI+LCBwdWJsaWMg
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZjxV
c2VyTWVzc2FnZUhhbmRsZXI+IGNyZWF0ZShGcmFtZSogZnJhbWUsIFVzZXJNZXNzYWdlSGFuZGxl
ckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBVc2VyTWVzc2FnZUhhbmRsZXIoZnJhbWUsIGRlc2NyaXB0b3IpKTsKKyAgICB9CisgICAg
dmlydHVhbCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CisKKyAgICB2b2lkIHBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUoKTsKKyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkKCk7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgVXNlck1lc3NhZ2VIYW5kbGVyKEZyYW1lKiwgVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvciYpOworICAgIAorICAgIFJlZjxVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
PiBtX2Rlc2NyaXB0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorI2VuZGlmIC8vIFVzZXJNZXNzYWdlSGFu
ZGxlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRs
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJTCitdIGludGVyZmFjZSBVc2VyTWVzc2Fn
ZUhhbmRsZXIgeworICAgIHZvaWQgcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1l
c3NhZ2UpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoVVNFUl9NRVNT
QUdFX0hBTkRMRVJTKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6VXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIENsaWVudCYgY2xpZW50KQorICAgIDogbV9uYW1lKG5hbWUpCisgICAgLCBtX3dv
cmxkKHdvcmxkKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yOjp+VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcigpCit7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6bmFtZSgp
Cit7CisgICAgcmV0dXJuIG1fbmFtZTsKK30KKworRE9NV3JhcHBlcldvcmxkJiBVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yOjp3b3JsZCgpCit7CisgICAgcmV0dXJuIG1fd29ybGQuZ2V0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JfaAorI2RlZmluZSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yX2gKKworI2lmIEVO
QUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEZyYW1lOworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xhc3MgVXNlck1lc3Nh
Z2VIYW5kbGVyOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCitjbGFzcyBVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvcj4geworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGlj
OgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSop
ID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCwgQ2xpZW50JiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IobmFtZSwgd29ybGQsIGNsaWVudCkp
OworICAgIH0KKyAgICB+VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcigpOworCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKCk7CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpOwor
ICAgIAorICAgIENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKGNvbnN0
IEF0b21pY1N0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYsIENsaWVudCYpOworICAgIAorICAgIEF0
b21pY1N0cmluZyBtX25hbWU7CisgICAgUmVmPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKKyAg
ICBDbGllbnQmIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyNlbmRpZiAvLyBVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzX2gKKyNkZWZpbmUgVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvclR5cGVzX2gKKworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMp
CisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV3JhcHBl
cldvcmxkOworY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKKwordHlwZWRlZiBI
YXNoTWFwPHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+Piwg
UmVmUHRyPFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I+PiBVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yTWFwOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorI2VuZGlmIC8vIFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JUeXBlc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIgorCisjaWYgRU5BQkxFKFVTRVJf
TUVTU0FHRV9IQU5ETEVSUykKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29u
dHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VzZXJNZXNzYWdlSGFuZGxlcnNO
YW1lc3BhY2U6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UoRnJhbWUqIGZyYW1lKQorICAg
IDogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKGZyYW1lKQoreworfQorCitVc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlOjp+VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSgpCit7Cit9CisK
K1VzZXJNZXNzYWdlSGFuZGxlciogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTo6aGFuZGxl
cihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7Cisg
ICAgLy8gRmlyc3QsIGNoZWNrIGlmIHdlIGhhdmUgYSBoYW5kbGVyIGluc3RhbmNlIGFscmVhZHku
CisgICAgZm9yIChhdXRvJiBoYW5kbGVyIDogbV9tZXNzYWdlSGFuZGxlcnMpIHsKKyAgICAgICAg
aWYgKGhhbmRsZXItPm5hbWUoKSA9PSBuYW1lICYmICZoYW5kbGVyLT53b3JsZCgpID09ICZ3b3Js
ZCkKKyAgICAgICAgICAgIHJldHVybiAmaGFuZGxlci5nZXQoKTsKKyAgICB9CisKKyAgICAvLyBT
ZWNvbmQsIGF0dGVtcHQgdG8gY3JlYXRlIGEgaGFuZGxlciBpbnN0YW5jZSBmcm9tIGEgZGVzY3Jp
cHRvci4KKyAgICBpZiAoIWZyYW1lKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
UGFnZSogcGFnZSA9IGZyYW1lKCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIAorICAgIGNvbnN0IGF1dG8qIHVzZXJDb250ZW50Q29udHJvbGxl
ciA9IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOworICAgIGlmICghdXNlckNvbnRlbnRD
b250cm9sbGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IGF1dG8qIHVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzID0gdXNlckNvbnRlbnRDb250cm9sbGVyLT51c2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycygpOworICAgIGlmICghdXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmUHRyPFVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPSB1c2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9ycy0+Z2V0KHN0ZDo6bWFrZV9wYWlyKG5hbWUsICZ3b3JsZCkpOworICAgIGlmICgh
ZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX21lc3NhZ2VIYW5k
bGVycy5hcHBlbmQoVXNlck1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoZnJhbWUoKSwgKmRlc2NyaXB0
b3IpKTsKKyAgICByZXR1cm4gJm1fbWVzc2FnZUhhbmRsZXJzLmxhc3QoKS5nZXQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9I
QU5ETEVSUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VI
YW5kbGVyc05hbWVzcGFjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZV9o
CisjZGVmaW5lIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VfaAorCisjaWYgRU5BQkxFKFVT
RVJfTUVTU0FHRV9IQU5ETEVSUykKKworI2luY2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
ci5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3Mg
VXNlck1lc3NhZ2VIYW5kbGVyOworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworCitjbGFzcyBVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VI
YW5kbGVyc05hbWVzcGFjZT4sIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmPFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U+IGNy
ZWF0ZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBV
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKGZyYW1lKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSgpOworCisgICAgVXNlck1lc3NhZ2VIYW5k
bGVyKiBoYW5kbGVyKGNvbnN0IEF0b21pY1N0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYpOworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UoRnJhbWUq
KTsKKworICAgIFZlY3RvcjxSZWY8VXNlck1lc3NhZ2VIYW5kbGVyPj4gbV9tZXNzYWdlSGFuZGxl
cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVVNF
Ul9NRVNTQUdFX0hBTkRMRVJTKQorI2VuZGlmIC8vIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEpTQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5k
RGVzY3JpcHRvciwKKyAgICBDb25kaXRpb25hbD1VU0VSX01FU1NBR0VfSEFORExFUlMKK10gaW50
ZXJmYWNlIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UgeworfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRO
YW1lc3BhY2UuaCIKKworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisKKyNpbmNs
dWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViS2l0TmFtZXNwYWNlOjpXZWJLaXROYW1l
c3BhY2UoRnJhbWUqIGZyYW1lKQorICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCisgICAg
LCBtX21lc3NhZ2VIYW5kbGVyTmFtZXNwYWNlKFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6
OmNyZWF0ZShmcmFtZSkpCit7Cit9CisKK1dlYktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFj
ZSgpCit7Cit9CisKK1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIFdlYktpdE5hbWVzcGFj
ZTo6bWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICByZXR1cm4gJm1fbWVzc2FnZUhhbmRsZXJOYW1l
c3BhY2UuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dl
YktpdE5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0
TmFtZXNwYWNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5h
bWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYktpdE5hbWVzcGFjZV9oCisjZGVmaW5lIFdlYktpdE5hbWVzcGFjZV9oCisKKyNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorCisjaW5jbHVkZSAiRE9NV2luZG93UHJv
cGVydHkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEZyYW1lOworY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTsKKworY2xh
c3MgV2ViS2l0TmFtZXNwYWNlIDogcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgUmVm
Q291bnRlZDxXZWJLaXROYW1lc3BhY2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJLaXROYW1lc3BhY2U+IGNyZWF0ZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdE5hbWVzcGFjZShmcmFtZSkpOworICAgIH0KKworICAg
IHZpcnR1YWwgfldlYktpdE5hbWVzcGFjZSgpOworCisgICAgVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZSogbWVzc2FnZUhhbmRsZXJzKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2Vi
S2l0TmFtZXNwYWNlKEZyYW1lKik7CisgICAgUmVmPFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U+IG1fbWVzc2FnZUhhbmRsZXJOYW1lc3BhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorI2VuZGlmIC8v
IFdlYktpdE5hbWVzcGFjZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVz
cGFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3Bh
Y2UuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3Bh
Y2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK1sK
KyAgICBDb25kaXRpb25hbD1VU0VSX01FU1NBR0VfSEFORExFUlMKK10gaW50ZXJmYWNlIFdlYktp
dE5hbWVzcGFjZSB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVzZXJNZXNzYWdlSGFuZGxlcnNO
YW1lc3BhY2UgbWVzc2FnZUhhbmRsZXJzOworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2
OTAxNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDcwIEBACisyMDE0LTA1LTE4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1dlYktpdDJdIEltcGxlbWVudCBTY3JpcHRNZXNzYWdlSGFuZGxlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzA1MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgIChz
dHJ1Y3Rfb3JfY2xhc3MpOgorICAgICAgICAoYXJndW1lbnRfY29kZXJfaGVhZGVyc19mb3JfdHlw
ZSk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbToKKyAgICAgICAgKC1bV0tTY3JpcHRNZXNzYWdlIF9p
bml0V2l0aEJvZHk6d2ViVmlldzpuYW1lOl0pOgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ug
Ym9keV0pOgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2Ugd2ViVmlld10pOgorICAgICAgICAo
LVtXS1NjcmlwdE1lc3NhZ2UgbmFtZV0pOgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2UgX3Nj
cmlwdFdvcmxkXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nj
cmlwdE1lc3NhZ2VJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZVByaXZhdGUuaC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZVByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAg
ICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1l
Ol0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNz
YWdlSGFuZGxlckZvck5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVy
IF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOndvcmxkOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJG
b3JOYW1lOndvcmxkOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgIChwYWdlVG9W
aWV3TWFwKToKKyAgICAgICAgKGZyb21XZWJQYWdlUHJveHkpOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
ZGVhbGxvY10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXJIYW5kbGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVySGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6On5XZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyOjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXI6Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvclByb3h5Ojp+V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5OjpkaWRQb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3JQcm94eTo6ZGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6aWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6V2ViVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW46CisKIDIwMTQtMDUtMTggIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNjkwMDEuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvUGx1Z2lucyBcCiAg
ICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvU3RvcmFnZSBcCisgICAgJChXZWJLaXQyKS9VSVByb2Nl
c3MvVXNlckNvbnRlbnQgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL21hYyBcCiAgICAgJChX
ZWJLaXQyKS9VSVByb2Nlc3MvaW9zIFwKICMKQEAgLTEzNSw2ICsxMzYsNyBAQCBNRVNTQUdFX1JF
Q0VJVkVSUyA9IFwKICAgICBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5IFwKICAgICBXZWJS
ZXNvdXJjZUxvYWRlciBcCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKKyAgICBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciBcCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IFwKICMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHJldmlzaW9uIDE2OTAxNCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQkod29ya2luZyBj
b3B5KQpAQCAtMjE0LDYgKzIxNCw3IEBAIGRlZiBzdHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0
eXBlKToKICAgICAgICAgJ1dlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycycsCiAgICAg
ICAgICdXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUnLAogICAgICAgICAnV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJywKKyAgICAgICAgJ1dlYktpdDo6V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXJIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpXaW5kb3dHZW9tZXRyeScsCiAg
ICAgXSkKIApAQCAtMzk2LDYgKzM5Nyw3IEBAIGRlZiBhcmd1bWVudF9jb2Rlcl9oZWFkZXJzX2Zv
cl90eXBlKHR5cGUKICAgICAgICAgJ1N0cmluZyc6ICciQXJndW1lbnRDb2RlcnMuaCInLAogICAg
ICAgICAnV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcic6ICciSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIicsCiAgICAgICAgICdXZWJLaXQ6OldlYkNvbnRl
eHRVc2VyTWVzc2FnZUVuY29kZXInOiAnIldlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIics
CisgICAgICAgICdXZWJLaXQ6OlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlJzogJyJXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlci5oIicsCiAgICAgfQogCiAgICAgaGVhZGVycyA9IFtdCkBAIC00Mzks
NiArNDQxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6
OldlYk1vdXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJU
b3VjaEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViV2hlZWxF
dmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCisgICAgICAgICdXZWJLaXQ6OldlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVySGFuZGxlJzogWyciV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCInXSwKICAgICB9
CiAKICAgICBoZWFkZXJzID0gW10KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCShyZXZpc2lvbiAxNjkwMTQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjQsNDAgKzI0LDQ2IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJXS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmgiCisjaW1wb3J0ICJXS1Njcmlw
dE1lc3NhZ2VJbnRlcm5hbC5oIgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotLy8gRklYTUU6IENv
bnNpZGVyIGFkZGluZyB0aGUgbmF2aWdhdGlvbiBhcyB3ZWxsLgorI2ltcG9ydCAiV2Vha09iakNQ
dHIuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFdLU2Ny
aXB0TWVzc2FnZQorQGltcGxlbWVudGF0aW9uIFdLU2NyaXB0TWVzc2FnZSB7CisgICAgUmV0YWlu
UHRyPGlkPiBfYm9keTsKKyAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmlldz4gX3dlYlZp
ZXc7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbmFtZTsKIAotLSAoaWQpYm9keQotewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIG5pbDsKIH0KIAotLSAoV0tXZWJWaWV3
ICopd2ViVmlldworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJvZHkgd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBuaWw7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfYm9keSA9IGJvZHk7CisgICAg
X3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIF9uYW1lID0gYWRvcHROUyhbbmFtZSBjb3B5XSk7CisK
KyAgICByZXR1cm4gc2VsZjsKKwogfQogCi0tIChOU1N0cmluZyAqKW5hbWUKKy0gKGlkKWJvZHkK
IHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJu
IF9ib2R5LmdldCgpOwogfQogCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1NjcmlwdE1lc3Nh
Z2UgKFdLUHJpdmF0ZSkKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICByZXR1cm4gX3dl
YlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7Cit9CiAKLS0gKF9XS1NjcmlwdFdvcmxkICopX3Njcmlw
dFdvcmxkCistIChOU1N0cmluZyAqKW5hbWUKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgot
ICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIF9uYW1lLmdldCgpOwogfQogCiBAZW5kCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjg5OTQpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oOjE2ODk5
NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdl
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8V2ViS2l0L1dLU2NyaXB0TWVzc2FnZS5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQK
KworQGNsYXNzIF9XS1NjcmlwdFdvcmxkOworCitAaW50ZXJmYWNlIFdLU2NyaXB0TWVzc2FnZSAo
V0tQcml2YXRlKQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS1NjcmlwdFdv
cmxkICpfc2NyaXB0V29ybGQ7CisKK0BlbmQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE1
ICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
bXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2UuaD4KKyNpbXBvcnQgIldLU2NyaXB0TWVzc2Fn
ZS5oIgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotQGNsYXNzIF9XS1NjcmlwdFdvcmxkOworQGlu
dGVyZmFjZSBXS1NjcmlwdE1lc3NhZ2UgKCkKIAotQGludGVyZmFjZSBXS1NjcmlwdE1lc3NhZ2Ug
KFdLUHJpdmF0ZSkKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tTY3JpcHRX
b3JsZCAqX3NjcmlwdFdvcmxkOworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlkKWJv
ZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYW1lOihOU1N0cmluZyAqKW5hbWU7CiAK
IEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Njcmlw
dE1lc3NhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDE2OTAxNCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlLmg+Ci0KLSNpZiBXS19BUElfRU5BQkxFRAotCi1AY2xh
c3MgX1dLU2NyaXB0V29ybGQ7Ci0KLUBpbnRlcmZhY2UgV0tTY3JpcHRNZXNzYWdlIChXS1ByaXZh
dGUpCi0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLU2NyaXB0V29ybGQgKl9z
Y3JpcHRXb3JsZDsKLQotQGVuZAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsOSAr
MjgsMTUgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIldLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIuaCIKKyNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
KyNpbXBvcnQgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW1wb3J0ICJXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oIgotI2ltcG9ydCAiX1dLU2NyaXB0V29ybGQuaCIKKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SlNWYWx1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVXNlclNjcmlwdC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCkBAIC04NywyOCArOTMsNDMgQEAgLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0
cwogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMo
KTsKIH0KIAotLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQot
ewotICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpzY3JpcHRNZXNzYWdlSGFuZGxl
ciBuYW1lOm5hbWUgd29ybGQ6W19XS1NjcmlwdFdvcmxkIGRlZmF1bHRXb3JsZF1dOwotfQotCi0t
ICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1l
Ci17Ci0gICAgW3NlbGYgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpuYW1lIHdv
cmxkOltfV0tTY3JpcHRXb3JsZCBkZWZhdWx0V29ybGRdXTsKLX0KLQotQGVuZAorY2xhc3MgU2Ny
aXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworcHVibGljOgorICAgIFNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIGlkIDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyLCBOU1N0cmluZyAqbmFtZSkKKyAgICAgICAgOiBt
X2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2hhbmRsZXIoaGFuZGxlcikKKyAg
ICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisgICAgeworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPEpTQ29u
dGV4dD4gY29udGV4dCA9IGFkb3B0TlMoW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6
ZShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCAwKTsKKyAgICAgICAgSlNWYWx1ZSAqdmFs
dWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnZhbHVlUmVmIGluQ29udGV4dDpjb250
ZXh0LmdldCgpXTsKKyAgICAgICAgaWQgYm9keSA9IFt2YWx1ZSB0b0RpY3Rpb25hcnldOworCisg
ICAgICAgIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IG1lc3NhZ2UgPSBhZG9wdE5TKFtbV0tT
Y3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJvZHkgd2ViVmlldzpmcm9tV2ViUGFn
ZVByb3h5KHBhZ2UpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgCisgICAgICAgIFttX2hhbmRs
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNlaXZlU2Ny
aXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKKyAgICB9CiAKLUBpbXBsZW1lbnRhdGlvbiBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8
V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8aWQg
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+PiBtX2hhbmRsZXI7CisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBtX25hbWU7Cit9OwogCi0tICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQg
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3Ry
aW5nICopbmFtZSB3b3JsZDooX1dLU2NyaXB0V29ybGQgKil3b3JsZAorLSAodm9pZClhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisgICAgUmVmUHRyPFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1
ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxl
ciwgbmFtZSksIG5hbWUpOworICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCisgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0
IHRvIGFkZCBTY3JpcHRNZXNzYWdlSGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJl
YWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KIAotLSAodm9pZClfcmVtb3ZlU2NyaXB0TWVzc2FnZUhh
bmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6KF9XS1NjcmlwdFdvcmxkICopd29y
bGQKKy0gKHZvaWQpcmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAq
KW5hbWUKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIF91c2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lKTsKIH0KIAog
QGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlckludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgJKHJldmlz
aW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAi
V0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgiCisjaW1wb3J0ICJXS1VzZXJDb250ZW50
Q29udHJvbGxlci5oIgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCShyZXZpc2lvbiAxNjkwMTQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxX
ZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaD4KLQotI2lmIFdLX0FQSV9FTkFCTEVECi0K
LUBjbGFzcyBfV0tTY3JpcHRXb3JsZDsKLQotQGludGVyZmFjZSBXS1VzZXJDb250ZW50Q29udHJv
bGxlciAoV0tQcml2YXRlKQotCi0tICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQg
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3Ry
aW5nICopbmFtZSB3b3JsZDooX1dLU2NyaXB0V29ybGQgKil3b3JsZDsKLS0gKHZvaWQpX3JlbW92
ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKiluYW1lIHdvcmxkOihfV0tT
Y3JpcHRXb3JsZCAqKXdvcmxkOwotCi1AZW5kCi0KLSNlbmRpZgotCi0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAx
NjkwMTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOCBAQAogI2ltcG9ydCAiX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtQcm92aWRlcklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKKyNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEwNCw2ICsxMDYs
MTggQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV92aWV3Q29udHJvbGxlckZvcgogI2ltcG9ydCA8
V2ViQ29yZS9Db2xvck1hYy5oPgogI2VuZGlmCiAKKworc3RhdGljIEhhc2hNYXA8V2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBXS1dlYlZpZXcgKj4mIHBhZ2VUb1ZpZXdNYXAoKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV0tXZWJWaWV3
ICo+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVBy
b3h5KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKQoreworICAgIHJldHVybiBwYWdlVG9WaWV3
TWFwKCkuZ2V0KCZwYWdlKTsKK30KKwogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2aWdhdGlvblN0YXRl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91aURlbGVnYXRlOwpA
QCAtMjMyLDYgKzI0Niw4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3Qp
ZnIKIAogICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpG
aW5kQ2xpZW50PihzZWxmKSk7CiAKKyAgICBwYWdlVG9WaWV3TWFwKCkuYWRkKF9wYWdlLmdldCgp
LCBzZWxmKTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0yNDUsNiArMjYxLDggQEAgLSAo
dm9pZClkZWFsbG9jCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBy
ZW1vdmVPYnNlcnZlcjpzZWxmXTsKICNlbmRpZgogCisgICAgcGFnZVRvVmlld01hcCgpLnJlbW92
ZShfcGFnZS5nZXQoKSk7CisKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmgJKHJldmlzaW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNCArODAsNiBA
QCBzdHJ1Y3QgVmlld1NuYXBzaG90OwogI2VuZGlmCiBAZW5kCiAKK1dLV2ViVmlldyogZnJvbVdl
YlBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOworCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgorCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXJIYW5kbGU6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBuYW1l
OworfQorCitib29sIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlOjpkZWNvZGUoSVBDOjpB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlJiBo
YW5kbGUpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUuaWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlLm5h
bWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90
IGlkZW50aWZpZXI7CisKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCitQYXNzUmVmUHRy
PFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjptb3Zl
KGNsaWVudCksIG5hbWUpKTsKK30KKworV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29uc3QgU3Ry
aW5nJiBuYW1lKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlSWRlbnRpZmllcigpKQorICAg
ICwgbV9jbGllbnQoc3RkOjptb3ZlKGNsaWVudCkpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30K
KworV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6On5XZWJTY3JpcHRNZXNzYWdlSGFuZGxlcigpCit7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcl9oCisjZGVm
aW5lIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFz
cyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKK2NsYXNzIFdlYkZyYW1lUHJveHk7CisKK3N0cnVjdCBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlckhhbmRsZSB7CisgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBj
b25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZSYpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllcjsK
KyAgICBTdHJpbmcgbmFtZTsKK307CisKK2NsYXNzIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKK3B1YmxpYzoKKyAg
ICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJikgPSAwOworICAg
IH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUpOyAgICAKKyAg
ICB2aXJ0dWFsIH5XZWJTY3JpcHRNZXNzYWdlSGFuZGxlcigpOworCisgICAgV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXJIYW5kbGUgaGFuZGxlKCkgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFt
ZSB9OyB9CisKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwor
ICAgIENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9CisKK3ByaXZh
dGU6CisgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4s
IGNvbnN0IFN0cmluZyYpOworICAgIAorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IG1fY2xpZW50OworICAgIFN0cmluZyBtX25hbWU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKyAgICAKKyNlbmRpZiAvLyBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHAJKHJldmlzaW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDggKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaCIKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC01OSwxNCArNjMsMjIgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6YWRkUAogICAgIGlmICghbV9wcm9jZXNzZXMuYWRkKCZ3ZWJQcm9jZXNzUHJveHkpLmlzTmV3
RW50cnkpCiAgICAgICAgIHJldHVybjsKIAorICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOworCiAgICAgd2ViUHJvY2Vzc1By
b3h5LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyU2NyaXB0cyhtX3VzZXJTY3JpcHRzKSwgbV9pZGVudGlmaWVyKTsKKyAgICAKKyAg
ICBWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+IG1lc3NhZ2VIYW5kbGVySGFu
ZGxlczsKKyAgICBmb3IgKGF1dG8mIGhhbmRsZXIgOiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy52
YWx1ZXMoKSkKKyAgICAgICAgbWVzc2FnZUhhbmRsZXJIYW5kbGVzLmFwcGVuZChoYW5kbGVyLT5o
YW5kbGUoKSk7CisgICAgd2ViUHJvY2Vzc1Byb3h5LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJz
KG1lc3NhZ2VIYW5kbGVySGFuZGxlcyksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3
ZWJQcm9jZXNzUHJveHkpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQ
cm9jZXNzUHJveHkpKTsKIAotICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5
KTsKKyAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpKQorICAgICAg
ICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCkKQEAgLTg1LDQgKzk3LDU1IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8KICAgICAgICAgcHJvY2Vzc0Fu
ZENvdW50LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKCksIG1faWRlbnRpZmllcik7CiB9CiAKK2Jv
b2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciogaGFuZGxlcikKK3sKKyAgICBmb3IgKGF1dG8m
IGV4aXN0aW5nSGFuZGxlciA6IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmIChleGlzdGluZ0hhbmRsZXItPm5hbWUoKSA9PSBoYW5kbGVyLT5uYW1lKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9zY3JpcHRNZXNzYWdlSGFu
ZGxlcnMuYWRkKGhhbmRsZXItPmlkZW50aWZpZXIoKSwgaGFuZGxlcik7CisKKyAgICBmb3IgKGF1
dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzQW5kQ291
bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IGhhbmRsZXItPmhhbmRsZSgpIH0p
LCBtX2lkZW50aWZpZXIpOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3Nh
Z2VIYW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1l
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vzc2Vz
KQorICAgICAgICAgICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBtX2lkZW50aWZpZXIpOworICAg
ICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlKGl0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVy
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQcm9jZXNzUHJveHkqIHdl
YlByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gd2ViUHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+Pjo6aXNWYWxpZEtleShtZXNz
YWdlSGFuZGxlcklEKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZ2V0KG1lc3Nh
Z2VIYW5kbGVySUQpOworICAgIGlmICghaGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBidWZmZXIgPSBkYXRhUmVmZXJlbmNlLnZlY3RvcigpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjphZG9wdChidWZmZXIpOworCisgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1l
c3NhZ2UoKnBhZ2UsICpmcmFtZSwgKnZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNpb24g
MTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiwxNyBA
QAogI2lmbmRlZiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eV9oCiAjZGVmaW5lIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5X2gKIAorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVXNlclNjcmlw
dDsKIH0KQEAgLTM3LDggKzQ0LDkgQEAgY2xhc3MgVXNlclNjcmlwdDsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjsKIAotY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4geworY2xhc3MgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBjcmVh
dGUoKTsKICAgICB+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKQEAgLTUxLDEzICs1
OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3Jp
cHQpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAorICAgIC8vIFJldHVybnMg
ZmFsc2UgaWYgdGhlcmUgd2FzIGEgbmFtZSBjb25mbGljdC4KKyAgICBib29sIGFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciopOworICAgIHZvaWQgcmVt
b3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpOwogCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKworICAg
IHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKKwogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBIYXNoQ291
bnRlZFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKIAogICAgIFZlY3RvcjxXZWJD
b3JlOjpVc2VyU2NyaXB0PiBtX3VzZXJTY3JpcHRzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB7CisgICAg
RGlkUG9zdE1lc3NhZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25u
ZWN0aW9uCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjkwMTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk4OSw2ICs5
ODksMTAgQEAKIAkJN0MxMzVBQTgxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
MzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovOyB9Owog
CQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJD
QTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyog
UGx1Z2luSW5mb3JtYXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzEzNUFBQTE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRp
b25NYWMubW0gKi87IH07CisJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzM2MUQ2RjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuY3BwICovOyB9OworCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMzYxRDcwMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5o
ICovOyB9OworCQk3QzM2MUQ3ODE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzNjFENzYxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJN0MzNjFE
NzkxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzYx
RDc3MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3Nh
Z2VzLmggKi87IH07CiAJCTdDMzg3NDM0MTcyRjU2MTUwMDFCRDg4QSAvKiBQYWdlQmFubmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzg3NDMz
MTcyRjU2MTUwMDFCRDg4QSAvKiBQYWdlQmFubmVyLmNwcCAqLzsgfTsKIAkJN0MzRjhDOTAxNzNB
RjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0Y4QzhFMTczQUY1MkQwMDdCN0YzOSAvKiBQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CiAJCTdDM0Y4QzkxMTczQUY1MkQwMDdCN0YzOSAv
KiBQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MzRjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9u
LmggKi87IH07CkBAIC0xMDAzLDggKzEwMDcsNyBAQAogCQk3Q0IxNkZGMjE3MjRCQTI4MDA3QTBB
OTUgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWct
aW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0IxNkZFNTE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBs
dWdpbi5zYiAqLzsgfTsKIAkJN0NCMTZGRjMxNzI0QkEyRjAwN0EwQTk1IC8qIGNvbS5taWNyb3Nv
ZnQuU2lsdmVybGlnaHRQbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTZGRTYxNzI0QjlCNTAwN0Ew
QTk1IC8qIGNvbS5taWNyb3NvZnQuU2lsdmVybGlnaHRQbHVnaW4uc2IgKi87IH07CiAJCTdDQjE2
RkY0MTcyNEJBMzAwMDdBMEE5NSAvKiBjb20ub3JhY2xlLmphdmEuSmF2YUFwcGxldFBsdWdpbi5z
YiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0IxNkZFNzE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm9yYWNsZS5qYXZh
LkphdmFBcHBsZXRQbHVnaW4uc2IgKi87IH07Ci0JCTdDQzk5QTM0MThFRjdCMTIwMDQ4QzhCNCAv
KiBXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzk5QTMzMThFRjdCMTIwMDQ4QzhCNCAvKiBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk3Q0M5OUEzNjE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3Jp
cHRNZXNzYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NDOTlBMzUxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZVByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
Q0M5OUEzNjE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzk5QTM1MThFRjdD
QkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDRDEwMkRBMTg2Njc3MDYwMEVENDI5
RCAvKiBBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0QxMDJEOTE4NjY3NzA2MDBFRDQyOUQgLyogQXV0b0NvcnJl
Y3Rpb25DYWxsYmFjay5oICovOyB9OwogCQk3Q0Q1RUJCODE3NDZBMTVCMDAwQzFDNDUgLyogV0tP
YmpDVHlwZVdyYXBwZXJSZWYubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Q0Q1RUJCNjE3NDZBMTVCMDAwQzFDNDUgLyogV0tPYmpDVHlwZVdyYXBwZXJS
ZWYubW0gKi87IH07CiAJCTdDRDVFQkI5MTc0NkExNUIwMDBDMUM0NSAvKiBXS09iakNUeXBlV3Jh
cHBlclJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NENUVCQjcxNzQ2QTE1QjAwMEMxQzQ1IC8qIFdLT2JqQ1R5cGVXcmFwcGVyUmVmLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5NzUsNiArMjk3
OCwxMSBAQAogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxMzVBQTcxNzNCMEJD
QTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzEzNUFBQTE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5JbmZvcm1h
dGlvbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjFENkYxOTI3RkEz
NjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjFENzAxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
MzYxRDc1MTkyODAyOEIwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzNjFENzYxOTI4MDNCRDAwMzZBNTlE
IC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IC4uLy4uLy4uLy4uLy4uLy4uLy4uLy4u
Ly4uLy4uLy4uL0J1aWxkcy9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0MzNjFENzcxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gLi4vLi4vLi4v
Li4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vQnVpbGRzL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzM4NzQzMzE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQmFubmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8q
IFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MzRjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yOTg5LDggKzI5OTcsNyBAQAogCQk3Q0IxNkZFNTE3MjRCOUI1
MDA3QTBBOTUgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbi5zYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSAiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbi5zYiI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjE2RkU2MTcyNEI5QjUwMDdBMEE5NSAv
KiBjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IGNvbS5taWNyb3NvZnQuU2lsdmVybGlnaHRQbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDQjE2RkU3MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20ub3JhY2xlLmphdmEu
SmF2YUFwcGxldFBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20ub3JhY2xlLmph
dmEuSmF2YUFwcGxldFBsdWdpbi5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0ND
OTlBMzMxOEVGN0IxMjAwNDhDOEI0IC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJDb250ZW50Q29udHJvbGxl
clByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NDOTlBMzUxOEVGN0NC
QzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3Q0M5OUEzNTE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdl
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTY3JpcHRNZXNz
YWdlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NEMTAyRDkxODY2
NzcwNjAwRUQ0MjlEIC8qIEF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0Q1RUJCNjE3NDZBMTVCMDAwQzFDNDUgLyogV0tPYmpDVHlwZVdy
YXBwZXJSZWYubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS09i
akNUeXBlV3JhcHBlclJlZi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NENUVC
QjcxNzQ2QTE1QjAwMEMxQzQ1IC8qIFdLT2JqQ1R5cGVXcmFwcGVyUmVmLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT2JqQ1R5cGVXcmFwcGVyUmVmLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NDIzLDggKzQ0MzAsMTEgQEAKIAkJMUFBRjA4OUUxOTI2ODFB
QzAwQjYzOTBDIC8qIFVzZXJDb250ZW50ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk3QzM2MUQ2RjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuY3BwICovLAorCQkJCTdDMzYxRDcwMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlci5oICovLAogCQkJCTFBQUYwODlGMTkyNjgxRDEwMEI2MzkwQyAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgKi8sCiAJCQkJMUFBRjA4QTAxOTI2
ODFEMTAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggKi8sCisJCQkJ
N0MzNjFENzUxOTI4MDI4QjAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBVc2VyQ29udGVudDsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00ODk5LDEzICs0OTA5LDEyIEBACiAJCQkJMUE3RTM3Nzcx
OEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5oICovLAogCQkJCTFBN0UzNzc2MThF
NEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UubW0gKi8sCiAJCQkJMUE3RTM3NzQxOEU0
QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCAqLywKLQkJCQk3Q0M5OUEz
NTE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oICovLAorCQkJCTdD
Qzk5QTM1MThFRjdDQkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oICovLAog
CQkJCTFBRDg3OTA5MThCNkMzOEEwMDZDQUZENyAvKiBXS1VJRGVsZWdhdGUuaCAqLywKIAkJCQkz
NzQzOTI1NzE4QkM0QzYwMDAxQzg2NzUgLyogV0tVSURlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJ
CTFBRkEzQUM3MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlci5oICov
LAogCQkJCTFBRkEzQUM2MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbSAqLywKIAkJCQkxQUFGMDhBMzE5MjY4MkRBMDBCNjM5MEMgLyogV0tVc2VyQ29udGVudENv
bnRyb2xsZXJJbnRlcm5hbC5oICovLAotCQkJCTdDQzk5QTMzMThFRjdCMTIwMDQ4QzhCNCAvKiBX
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCAqLywKIAkJCQkxQUFGMDg5OTE5MjY3RUU1
MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0LmggKi8sCiAJCQkJMUFBRjA4OTgxOTI2N0VFNTAwQjYz
OTBDIC8qIFdLVXNlclNjcmlwdC5tbSAqLywKIAkJCQkxQUFGMDg5QzE5MjY3RkM4MDBCNjM5MEMg
LyogV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCAqLywKQEAgLTY1NTMsMTAgKzY1NjIsNiBAQAogCQlD
MENFNzI5RDEyNDdFNzFEMDBCQzBFQzQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkxQUFGMDhCNTE5MjY5RTZEMDBCNjM5
MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJ
CQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVz
c2FnZXMuaCAqLywKLQkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMkRFNjk0M0MxOEJE
MkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICov
LAogCQkJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMkY1OEExMTJBODgzQUQwMDYyOTUzMCAvKiBB
dXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCUUxMTVDNzE1MTkwRjhBMjUw
MEVDQzUxNiAvKiBjb20uYXBwbGUuV2ViS2l0LkRhdGFiYXNlcy5zYiAqLywKQEAgLTY2MTYsNiAr
NjYyMSw4IEBACiAJCQkJRTE4RTY5MTIxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVz
c2FnZXMuaCAqLywKIAkJCQlFMThFNjkxMzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTQxNjlCNjY3QjAwOUI2Njcw
IC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTJERTY5NDNCMThCRDJBNjgw
MDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKKwkJCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8q
IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQTMzNERFQzE2REU4
Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovLAogCQkJCTFBQjMxQTk0
MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CkBAIC02NjkyLDYgKzY2OTksMTAgQEAKIAkJCQkzMzM2NzY1NDEzMEM5RUNBMDA2QzlERTIgLyog
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJNTFGMDYwREQx
NjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKIAkJCQk1MUYwNjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlcy5oICovLAorCQkJCTFBQUYwOEI1MTkyNjlFNkQwMEI2MzkwQyAvKiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTFBQUYwOEI2MTkyNjlFNkQw
MEI2MzkwQyAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlcy5oICovLAorCQkJCTdD
MzYxRDc2MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJN0MzNjFENzcxOTI4MDNCRDAwMzZBNTlEIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkzRjQxOEVGNTE4
ODdCRDk3MDAyNzk1RkQgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJM0Y0MThFRjYxODg3QkQ5NzAwMjc5NUZEIC8qIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTNGNDE4RUY3MTg4N0JEOTcwMDI3OTVGRCAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApA
QCAtNjk3MSw2ICs2OTgyLDcgQEAKIAkJCQlCQ0U4MUQ4RDEzMTlGN0VGMDAyNDE5MTAgLyogRm9u
dEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQkMzREZDMTg5OUY1MUMwMDRGMDYyNiAvKiBX
S05hdmlnYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTIxOTIwMURB
NzAwQTFGQTM3IC8qIEFQSUNvbnRleHRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFu
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMTQwRUIwMThGMzdCRTAwMDVFNzVBMCAvKiBQYWdl
T3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NTNGMTE4QkFCRjAw
MDdEOUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNzAzNCw3ICs3
MDQ2LDcgQEAKIAkJCQkxQTIzMjhGRjE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdl
RmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDZDMTgzMjdDMTIwMDA4N0RENyAvKiBT
dHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDQzk5QTM2MThFRjdDQkMwMDQ4
QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3Q0M5
OUEzNjE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdl
UmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQw
MSAvKiBNb2R1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzQxOCw3ICs3NDMwLDYgQEAKIAkJCQlC
Q0UyMzE1RDEyMkMzMENBMDBENUMzNUEgLyogQVBJVVJMUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM5MEExRDIxMjJERDU1RTAwQ0M4QzUwIC8qIEFQSVVSTFJlc3BvbnNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNjExM0UyNTEyNkNFMTgyMDA1N0QwQTcgLyogV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0M5OUEzNDE4RUY3QjEyMDA0OEM4QjQg
LyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OUNENTVBQTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzJEMTI0RUMyRTEwMDQ4RDEzQyAvKiBXS0FQ
SUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkUzNEU1MTMwQjREMDUwMEFCRDE5QSAvKiBX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTc1NTcsNiArNzU2
OCw3IEBACiAJCQkJQkM3QjYzMzcxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzJEMDIxOTEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5
cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQ
YWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzNjFENzkxOTI4MDNC
RDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMTc3NDY1MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1BhZ2VQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UxN0I3RTEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdl
UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRkQzOEMxNkIwRTg4QzAwQjJGMEU4
IC8qIFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjU5LDYgKzg2
NzEsNyBAQAogCQkJCTFBNkZCRDI5MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2FwZVBsdWdpbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmluZENs
aWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAvKiBO
ZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDMzYxRDcyMTkyN0ZBMzYw
MDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTRBOUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1
Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMxMUVFNzA0MDAwNjFC
ODgyIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODg2MSw2
ICs4ODc0LDcgQEAKIAkJCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1l
bnUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNUIxMTJGNEZCQjAwMzM3QkFCIC8qIFdl
YkNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDIxRTlDMTJCMTY3
ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTdDMzYxRDc4MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTI5MzVENzEyODhE
MTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI5MjMyREY5MThCMkFCM0EwMEQwNTk2RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRkJCOUExMjg4Qzk1RTAwQUZGREY0IC8qIFdl
YkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNjkwMTQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpZiBF
TkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorI2luY2x1ZGUgPFdlYkNvcmUvVXNlck1lc3Nh
Z2VIYW5kbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODIsNCArOTIsNzkgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OnJlbW92ZUFsbAogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU2NyaXB0
cyhtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdF
X0hBTkRMRVJTKQorY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5IDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5Piwg
cHVibGljIFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6OkNsaWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclByb3h5PiBjcmVhdGUoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKiBjb250cm9sbGVyLCBj
b25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eShj
b250cm9sbGVyLCBuYW1lLCBpZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2Vi
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KCkKKyAgICB7CisgICAgfQorCisgICAg
Ly8gV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6Q2xpZW50CisgICAgdmly
dHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlciYgaGFu
ZGxlciwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IGhhbmRsZXIuZnJhbWUoKTsKKyAgICAgICAgaWYg
KCFmcmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAgICAgV2ViRnJhbWUqIHdl
YkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKKyAgICAgICAgaWYgKCF3
ZWJGcmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gd2ViRnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpE
aWRQb3N0TWVzc2FnZSgKKyAgICAgICAgICAgIHdlYlBhZ2UtPnBhZ2VJRCgpLAorICAgICAgICAg
ICAgd2ViRnJhbWUtPmZyYW1lSUQoKSwKKyAgICAgICAgICAgIG1faWRlbnRpZmllciwKKyAgICAg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKQorICAgICAgICApLCBtX2Nv
bnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CisgICAgfQorCisgICAgV2ViQ29yZTo6VXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcigpIHsgcmV0dXJuIG1fZGVzY3JpcHRvci5n
ZXQoKTsgfQorICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHko
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKiBjb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIG5hbWUs
IHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIp
CisgICAgICAgICwgbV9kZXNjcmlwdG9yKFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6OmNy
ZWF0ZShuYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgKnRoaXMpKQorICAgICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I+IG1fZGVzY3JpcHRvcjsKKyAgICB1aW50NjRfdCBt
X2lkZW50aWZpZXI7Cit9OworI2VuZGlmCisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlckhhbmRsZT4mIHNjcmlwdE1lc3NhZ2VIYW5kbGVycykKK3sKKyNpZiBFTkFCTEUo
VVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGZvciAoYXV0byYgaGFuZGxlIDogc2NyaXB0TWVz
c2FnZUhhbmRsZXJzKSB7CisgICAgICAgIFJlZlB0cjxXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yUHJveHk+IGRlc2NyaXB0b3IgPSBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
UHJveHk6OmNyZWF0ZSh0aGlzLCBoYW5kbGUubmFtZSwgaGFuZGxlLmlkZW50aWZpZXIpOworCisg
ICAgICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMuYWRkKGRlc2NyaXB0b3ItPmlk
ZW50aWZpZXIoKSwgZGVzY3JpcHRvcik7CisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LT5hZGRVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKGRlc2NyaXB0b3ItPmRlc2NyaXB0b3Io
KSk7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGF1dG8gaXQgPSBtX3VzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3JzLmZpbmQoaWRlbnRpZmllcik7CisgICAgQVNTRVJUKGl0ICE9
IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMuZW5kKCkpOworICAgIAorICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKGl0
LT52YWx1ZS0+ZGVzY3JpcHRvcigpKTsKKyAgICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JzLnJlbW92ZShpdCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2OTAxNCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxNSBAQAogI2RlZmluZSBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJD
b250ZW50Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTsKKwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciAgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gZ2V0T3JDcmVhdGUodWludDY0X3Qg
aWRlbnRpZmllcik7CkBAIC0zOSw2ICs0Myw4IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlVz
ZXJDb250ZW50Q29udHJvbGxlciYgdXNlckNvbnRlbnRDb250cm9sbGVyKCkgeyByZXR1cm4gbV91
c2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCk7IH0KIAorICAgIHVpbnQ2NF90IGlkZW50aWZpZXIo
KSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0gCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCkBAIC00OCw4ICs1
NCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlVzZXJTY3JpcHQ+JiB1c2VyU2NyaXB0cyk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2Vy
U2NyaXB0cygpOwogCisgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0
IFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mIHNjcmlwdE1lc3NhZ2VIYW5k
bGVycyk7CisgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWludDY0X3Qp
OworCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFJlZjxXZWJDb3JlOjpVc2VyQ29u
dGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk+PiBtX3Vz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDQgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciB7
CiAgICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3Jp
cHRzKTsKICAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cygpCisKKyAgICBBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxl
PiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOworICAgIFJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231669</attachid>
            <date>2014-05-18 15:42:26 -0700</date>
            <delta_ts>2014-05-18 15:47:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133053-20140518154202.patch</filename>
            <type>text/plain</type>
            <size>124079</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNDY1LDYgKzQ2NSw3IEBACiAKICNkZWZpbmUgV1RG
X1VTRV9DRiAxCiAjZGVmaW5lIFdURl9VU0VfRk9VTkRBVElPTiAxCisjZGVmaW5lIEVOQUJMRV9V
U0VSX01FU1NBR0VfSEFORExFUlMgMQogCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTY5MDE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTQtMDUtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBbV2ViS2l0Ml0gSW1wbGVtZW50IFNjcmlwdE1lc3NhZ2VIYW5kbGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDUzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1VzZXJNZXNzYWdl
SGFuZGxlcnNOYW1lc3BhY2U6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNob3Vs
ZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6OndlYmtpdE5hbWVzcGFjZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjp1c2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9ycyk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6VXNlck1l
c3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6flVz
ZXJNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXI6
OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6bmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXI6OndvcmxkKToKKyAgICAg
ICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdl
SGFuZGxlci5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcjo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjp+VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6
OndvcmxkKToKKyAgICAgICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpD
bGllbnQ6On5DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3I6OmNsaWVudCk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yVHlwZXMuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlOjpVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6On5Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OmhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
LmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVzcGFjZTo6V2ViS2l0TmFtZXNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAg
ICogcGFnZS9XZWJLaXROYW1lc3BhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXROYW1lc3BhY2U6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9XZWJLaXROYW1lc3BhY2UuaWRs
OiBBZGRlZC4KKwogMjAxNC0wNS0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCBpT1MgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ4MCw2ICs0ODAsOSBAQCBOT05fU1ZHX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9wYWdlL1dlYktpdFBvaW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9wYWdlL1dlYktp
dE5hbWVzcGFjZS5pZGwgXAorICAgICQoV2ViQ29yZSkvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmlkbCBcCisgICAgJChXZWJDb3JlKS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9XaW5kb3dCYXNlNjQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL3BhZ2UvV2luZG93VGltZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9wYWdlL1dvcmtlck5h
dmlnYXRvci5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2OTAxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC05MDEs
NiArOTAxLDggQEAgX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWVEMUV2CiBfX1pO
N1dlYkNvcmUyMVVSTEJ5UmVtb3ZpbmdVc2VySW5mb0VQNU5TVVJMCiBfX1pON1dlYkNvcmUyMVVz
ZXJDb250ZW50Q29udHJvbGxlcjEzYWRkVXNlclNjcmlwdEVSTlNfMTVET01XcmFwcGVyV29ybGRF
TlN0M19fMTEwdW5pcXVlX3B0cklOU18xMFVzZXJTY3JpcHRFTlMzXzE0ZGVmYXVsdF9kZWxldGVJ
UzVfRUVFRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIxN3JlbW92ZVVzZXJT
Y3JpcHRzRVJOU18xNURPTVdyYXBwZXJXb3JsZEUKK19fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRD
b250cm9sbGVyMzFhZGRVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRVJOU18yOFVzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3JFCitfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjM0cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckVSTlNfMjhVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXI2Y3Jl
YXRlRXYKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyRDFFdgogX19aTjdXZWJD
b3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm41cGFyc2VFUktOM1dURjZTdHJpbmdFCkBAIC0xMDEx
LDYgKzEwMTMsOCBAQCBfX1pON1dlYkNvcmUyN3JlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvCiBf
X1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdXZWJD
b3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3UGFz
c1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjdQYXNzUmVmSU5TXzE4U3R5
bGVTaGVldENvbnRlbnRzRUVFCitfX1pON1dlYkNvcmUyOFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JDMUVSS04zV1RGMTJBdG9taWNTdHJpbmdFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVJOUzBf
NkNsaWVudEUKK19fWk43V2ViQ29yZTI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckQxRXYK
IF9fWk43V2ViQ29yZTI4ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTI4cmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckVQdgogX19aTjdX
ZWJDb3JlMjljb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZUVSS05TXzIxTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2OTAxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjMzOSwxMiArMjMzOSwyMyBAQAogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyog
SlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxl
bWVudC5oICovOyB9OwogCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3Bw
ICovOyB9OwogCQk3QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RU
YXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJC
REQzQzE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CisJ
CTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NkYxOTA4NzU3
QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CisJCTdDM0I3OTcyMTkw
ODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0I3OTcwMTkwODc1N0IwMEI0N0EyRCAvKiBV
c2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzNFNTEwQTE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRTUxMDgx
OERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyog
SFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDM0U1MTA5MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICovOyB9
OworCQk3QzQ4QTZEMDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhBNkNFMTkxQzlE
NjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwICovOyB9OworCQk3QzQ4QTZEMTE5MUM5
RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0
TmFtZXNwYWNlLmggKi87IH07CiAJCTdDNDkwMkEyMThCODI1RjgwMDdEOTI5OCAvKiBET01XaGVl
bEV2ZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OTg5RENBMEFDQzhCQkQwMEEwQkM1MSAvKiBET01XaGVl
bEV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1IC8qIElu
c3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3Bw
ICovOyB9OwogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
ICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggKi87
IH07CisJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNzNGQjA1MTkxRUY0MTYwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
LmNwcCAqLzsgfTsKKwkJN0M3M0ZCMDgxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNzNGQjA2MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJN0M3M0ZCMEMxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVz
cGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzczRkIwQTE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
LmNwcCAqLzsgfTsKKwkJN0M3M0ZCMEQxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VI
YW5kbGVyc05hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M3M0ZCMEIxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZS5oICovOyB9OworCQk3QzczRkIxMTE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2Vy
TWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M3M0ZCMEYxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVy
LmNwcCAqLzsgfTsKKwkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VI
YW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzczRkIxMDE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgfTsK
KwkJN0M3M0ZCMTkxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVz
cGFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzczRkIxNzE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJN0M3NEQ0MzMxODgyM0E5MzAwRTVFRDU3IC8qIFVU
ZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRp
bjEuY3BwICovOyB9OwogCQk3Qzc0RDQzNDE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRl
ckxhdGluMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLzsgfTsK
IAkJN0M3NEQ0MzcxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzUxODgyM0IxOTAw
RTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovOyB9OwpAQCAtMjM1Myw3ICsyMzY0LDEyIEBA
CiAJCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDNBMTg4MjQw
MDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKIAkJN0NDNTY0QjgxOEJB
QkVBNjAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M1NjRCNjE4QkFCRUE2MDAxQjk2NTIg
LyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3IuaCAqLzsgfTsKIAkJN0NDNTY0QkExOEJBQzcyMDAw
MUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDNTY0QjkxOEJBQzcyMDAwMUI5NjUy
IC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yQ29jb2EuY3BwICovOyB9OworCQk3Q0M2OTk0MDE5
MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDNjk5M0UxOTFFQzVGNTAwQUYyMjcwIC8q
IEpTV2ViS2l0TmFtZXNwYWNlLmNwcCAqLzsgfTsKKwkJN0NDNjk5NDExOTFFQzVGNTAwQUYyMjcw
IC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0M2OTkzRjE5MUVDNUY1MDBBRjIyNzAgLyogSlNXZWJLaXROYW1lc3Bh
Y2UuaCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRl
TGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9
OworCQk3Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0U2ODM0MjE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5j
cHAgKi87IH07CisJCTdDRTY4MzQ1MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0U2ODM0MzE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTdDRTY4MzQ3MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RTY4MzQ2MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
Q0U2Q0JGQjE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQTE4N0YzNzA3MDBENDZC
RjUgLyogRm9ybWF0Q29udmVydGVyLmggKi87IH07CiAJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJG
NSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NFNkNCRkMxODdGMzk0OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRl
ci5jcHAgKi87IH07CiAJCTdENzQxQkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTY1ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5o
ICovOyB9OwpAQCAtOTQwMSw4ICs5NDE3LDEzIEBACiAJCTdBRjlCMjBCMThDRkI1RjMwMEM2NEJF
RiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNWVFRSZWdpb25MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJERDNC
MTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpT
RE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Mz
Qjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJN
ZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNFNTEwODE4
REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDM0U1MTA5MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTENvbnZlcnRlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5h
bWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRO
YW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzQ4QTZDRjE5MUM5
RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdE5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QzQ4QTZEMjE5MUM5RDhFMDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJLaXROYW1lc3BhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUyMkQ0
OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92
ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yT3Zlcmxh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUzNDNGQTE3Qjc0QjYzMDA0MjMy
RjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05NDEyLDYgKzk0MzMsMTUgQEAKIAkJN0M2MTM2RjcxNzEwQzM1
MjAwRkY0QTU3IC8qIEluRmlsZXNDb21waWxlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVz
Q29tcGlsZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNDb21waWxlci5wbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2RjgxNzEwQzM1MjAwRkY0QTU3IC8qIEluRmlsZXNQ
YXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc1BhcnNlci5wbTsgcGF0aCA9IHNjcmlw
dHMvSW5GaWxlc1BhcnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2
RjkxNzEwQzM1MjAwRkY0QTU3IC8qIFN0YXRpY1N0cmluZy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBT
dGF0aWNTdHJpbmcucG07IHBhdGggPSBzY3JpcHRzL1N0YXRpY1N0cmluZy5wbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3M0ZCMDUxOTFFRjQxNjAwN0RFMDYxIC8qIFVzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDNzNGQjA2MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M3
M0ZCMDkxOTFFRjQ5RjAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzczRkIwQTE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDNzNGQjBCMTkxRUY1QTgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
NzNGQjBFMTkxRUY2MEUwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFVz
ZXJNZXNzYWdlSGFuZGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzNG
QjBGMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNzNGQjEwMTkxRUY2RjQwMDdERTA2MSAvKiBK
U1VzZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1VzZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzcz
RkIxNzE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVXNlck1lc3Nh
Z2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc0RDQzMjE4ODIzQTkzMDBFNUVE
NTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTQyMCw3ICs5NDUwLDEyIEBACiAJCTdDNzRENDNBMTg4MjQw
MDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDQzU2NEI2MThCQUJFQTYwMDFCOTY1MiAvKiBUZWxlcGhvbmVOdW1iZXJEZXRlY3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxlcGhvbmVOdW1iZXJEZXRl
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M1NjRCOTE4QkFDNzIwMDAx
Qjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3JDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZWxlcGhvbmVOdW1iZXJEZXRlY3RvckNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDNjk5M0UxOTFFQzVGNTAwQUYyMjcwIC8q
IEpTV2ViS2l0TmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViS2l0TmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0NDNjk5M0YxOTFFQzVGNTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViS2l0TmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElETlNjcmlwdFdoaXRlTGlzdC50
eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRTY4MzQyMTkyMTQzQTgwMEY0RDky
OCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0U2ODM0MzE5MjE0M0E4MDBGNEQ5MjggLyogVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDRTY4MzQ2MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0Q29udmVydGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDRTZDQkZDMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252
ZXJ0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0Q29u
dmVydGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzM0NEMDAxMjdGMzQw
RDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0
NzMsNiArMTY1MDgsMTggQEAKIAkJCQlFMTI3MUExMzBFRUVDODA0MDBGNjEyMTMgLyogV29ya2Vy
TmF2aWdhdG9yLmNwcCAqLywKIAkJCQlFMTI3MUEwQTBFRUVDNzdBMDBGNjEyMTMgLyogV29ya2Vy
TmF2aWdhdG9yLmggKi8sCiAJCQkJRTEyNzFBNTEwRUVFQ0QxQzAwRjYxMjEzIC8qIFdvcmtlck5h
dmlnYXRvci5pZGwgKi8sCisJCQkJN0M0OEE2Q0UxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5h
bWVzcGFjZS5jcHAgKi8sCisJCQkJN0M0OEE2Q0YxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5h
bWVzcGFjZS5oICovLAorCQkJCTdDNDhBNkQyMTkxQzlEOEUwMDAyNjY3NCAvKiBXZWJLaXROYW1l
c3BhY2UuaWRsICovLAorCQkJCTdDNzNGQjA1MTkxRUY0MTYwMDdERTA2MSAvKiBVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCAqLywKKwkJCQk3QzczRkIwNjE5MUVGNDE3MDA3REUwNjEg
LyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oICovLAorCQkJCTdDNzNGQjA5MTkxRUY0
OUYwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmlkbCAqLywKKwkJCQk3
QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLywKKwkJ
CQk3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi8sCisJ
CQkJN0M3M0ZCMEUxOTFFRjYwRTAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5pZGwgKi8s
CisJCQkJN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuY3BwICovLAorCQkJCTdDRTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yLmggKi8sCisJCQkJN0NFNjgzNDYxOTIxODIxNTAwRjREOTI4IC8q
IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBwYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwNTg5LDcgKzIwNjM2LDYg
QEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZG
IC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZG
IC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRUYxMkIwMkVFNDAwRENGMzNCIC8q
IEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGMDEyQjAy
RUU0MDBEQ0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovLApAQCAtMjA2MTAsNiAr
MjA2NTYsNyBAQAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwICovLAogCQkJCUFENzI2RkVBMTZEOUY0MEIwMDNBNEU2RCAvKiBK
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uaCAqLywKIAkJCQlCQzIwRkI3RTBDMEU4RTZDMDBE
MTQ0N0YgLyogSlNDU1NWYWx1ZUN1c3RvbS5jcHAgKi8sCisJCQkJMDdGQkRFMkIxOEZFRDE3ODAw
MUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIwNTAw
MzQyMUE4IC8qIEpTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcCAqLywKIAkJCQk0MTYyQTQ1MzEwMTE0
NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8s
CiAJCQkJMzFGQjFBNkIxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0
b20uY3BwICovLApAQCAtMjA2OTcsNiArMjA3NDQsNyBAQAogCQkJCTA3ODQ2Mzg0MTQ1QjFCOEUw
MEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi8sCiAJCQkJMDdCNUEzMEExNDY4N0I4NDAwQTgx
RUNFIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJNTE2QkI3OTIwQ0U5MUU2ODAw
NTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgKi8sCisJCQkJN0M3M0ZCMTcxOTFFRjgw
ODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgKi8s
CiAJCQkJQkU2REY3MDgxNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0N1c3RvbS5jcHAg
Ki8sCiAJCQkJQkU2REY3MEExNzFDQTJDNTAwREQ1MkI4IC8qIEpTVmlkZW9UcmFja0xpc3RDdXN0
b20uY3BwICovLAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgKi8sCkBAIC0yMDgyNCw2ICsyMDg3MiwxMiBAQAogCQkJCUJD
RUMwMUMxMEMyNzREREQwMDlGNEVDOSAvKiBKU1NjcmVlbi5oICovLAogCQkJCTQ5NEJENzlCMEY1
NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLywKIAkJCQk0OTRCRDc5QzBGNTVD
OTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovLAorCQkJCTdDQzY5OTNFMTkxRUM1RjUw
MEFGMjI3MCAvKiBKU1dlYktpdE5hbWVzcGFjZS5jcHAgKi8sCisJCQkJN0NDNjk5M0YxOTFFQzVG
NTAwQUYyMjcwIC8qIEpTV2ViS2l0TmFtZXNwYWNlLmggKi8sCisJCQkJN0M3M0ZCMEExOTFFRjVB
ODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgKi8sCisJCQkJ
N0M3M0ZCMEIxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZS5oICovLAorCQkJCTdDNzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFu
ZGxlci5jcHAgKi8sCisJCQkJN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdpbmRvdzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yMjk5MCw2ICsyMzA0NCw3IEBACiAJCQkJMjlBODEyNDMwRkJCOUMx
RDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQky
OUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTA3QjAxMTNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmls
aXR5TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NFNjgzNDcxOTIxODIxNTAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzZDREQyRjMxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQyRjcxMTAzREE2NjAwNjgwNTIxIC8qIEFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZDREQyRjUxMTAz
REE2NjAwNjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmggaW4gSGVhZGVycyAq
LywKQEAgLTIzNTQ3LDYgKzIzNjAyLDcgQEAKIAkJCQkyRDlBMjQ3NTE1QjlDMkUzMDBEMzQ1Mjcg
LyogRE9NRE9NU2VjdXJpdHlQb2xpY3lJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIz
QTg4NzIxNDU2MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Njk0NTY1QjEyMTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5MaXN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzczRkIwODE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBQkEyNUExNEJD
NjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVBQ0E5QzAw
QTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcx
MTk4MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01FbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LApAQCAtMjQ0ODMsNiArMjQ1MzksNyBAQAogCQkJCUY1QzA0MUU3MEZGQ0E5NkQwMDgzOUQ0QSAv
KiBKU0hUTUxEYXRhTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzNTlEOEJGMTI5
Q0E1NUMwMDA2RTVEMiAvKiBKU0hUTUxEZXRhaWxzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzY4MDhCNTAxNTlEQURGQTAwMkI1MjMzIC8qIEpTSFRNTERpYWxvZ0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdDQzY5OTQxMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVz
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRTcwQTFCMjQwNTAwRDhDODdDIC8qIEpT
SFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMkI3MEExQjJB
QzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg1
QjFFOTBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI0NjUwLDYgKzI0NzA3LDcgQEAKIAkJCQkwNzk2OURCQzE3RDE0MTUxMDA3RkY4NDIg
LyogSlNSVENTZXNzaW9uRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJF
MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzk2OURDMDE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c0Nh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzczRkIwRDE5MUVGNUE4MDA3REUwNjEgLyog
SlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2
OURDMjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc5NjlEQzQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxQzMwQzI3NERERDAwOUY0RUM5IC8qIEpTU2NyZWVuLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI0OTY4LDYgKzI1MDI2LDcgQEAKIAkJCQk5MzJBRDcwNjE3RUZB
MkM0MDAzOEY4RkYgLyogTWFpbkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTg3MDU2MzE2
RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
OEY2QkM2MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNj
dW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTNGMTNENzZEN0UwMDkyQTI3NSAv
KiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTkyLDYgKzI1
MjUxLDcgQEAKIAkJCQlGRDU4MUZCNTE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUQ1REMyRTBGNDIzQTczMDA4RjIwRkQgLyogUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUQwRkYyQTVFMTFGOEM0
NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzQ4QTZEMTE5
MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxMzE2M0UxNkVEMENDODAwMzVDQzA0IC8qIFBsYXRmb3JtQ0FGaWx0ZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlENjZCMkQ1QzE4NjgzMDA1MDA3M0M0REQgLyogUGxhdGZv
cm1DQUZpbHRlcnNNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUyMDIsNiArMjUyNjIsNyBAQAog
CQkJCUJDNUM3NjJCMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNjYwMUVCRjE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3Rv
cnlJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NFNjgzNDUxOTIx
NDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jv
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDU2MkY5NjExNTczRjg4RjAw
MzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYzMjIsNiArMjYz
ODMsNyBAQAogCQkJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29w
ZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENDQkI0RDE1MUY4MzNCMDBBQjdDRTkgLyog
V29ya2VyR2xvYmFsU2NvcGVXZWJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM2RTA3
QTUxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdDM0I3OTcyMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE4RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3Jr
ZXJMb2FkZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NEQwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1MDBGNTQ2
QTgyMDBCMEYxQkEgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAt
MjcyMjAsNiArMjcyODIsNyBAQAogCQkJCTg1OUE5QzUwMEFBNUUzQkQwMEI2OTRCMiAvKiBET01I
VE1MU3R5bGVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjgyMUUwQUE3ODQ5RTAw
NDg2QUQ3IC8qIERPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODVERjgyMjAwQUE3ODQ5RTAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJN0M3M0ZCMTExOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1l
c3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1REY4MjIyMEFBNzg0OUUwMDQ4
NkFENyAvKiBET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVE
RjgyNzEwQUE3OEI4QjAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZUVsZW1lbnQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4NURGODIyNDBBQTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlUm93RWxl
bWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjc5OTksNiArMjgwNjIsNyBAQAogCQkJCUE4MEU3
QjEzMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxUaXRsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcwNzU2RDMxNDIzOUE0RTAwNDE0MTYxIC8qIEpTSFRNTFRyYWNrRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjIxMDBBMUIyNTg3MDBEOEM4N0MgLyogSlNIVE1M
VUxpc3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0I3OTcxMTkwODc1N0IwMEI0
N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU0QUJD
RDQxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0NDYxNDE2MENENjgyNjkwMEZBREE3NSAvKiBKU0hUTUxWaWRlb0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTExRUYyQzAxN0YwRkQzNTAwRTRGQTE2IC8qIEpTSURC
QW55LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg1MDIsNiArMjg1NjYsNyBAQAogCQkJCUNEQTk4
RTBEMTYwM0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEVBODAwOTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdDQzY5OTQwMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVz
cGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNFMzBDRDY4MTlGMDBGQURBNzUgLyog
TWVkaWFQbGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyQzhCMTExMzFDNTE4NjAwQTRG
Q0U5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlERjlBRkQ3MzEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjg1NDgsNiArMjg2MTMsNyBAQAogCQkJ
CUUxQURFQ0MwMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzhFNTI2RjEzNDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTM3RERDRDk0MTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVh
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBV
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcy
QzRFMEM0RUIzMDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUU0NTM5MDFEMEVBRkNBQ0EwMDM2OTVDOCAvKiBNSU1FVHlwZVJlZ2lzdHJ5SU9TLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NzJDNUUwQzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBl
UmVnaXN0cnlNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTI4NzAyLDYgKzI4NzY4LDcgQEAKIAkJ
CQlBMUUxMTU0NjEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M3M0ZCMTkxOTFFRjgwODAwN0RFMDYx
IC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDQ1QTk1OTE3NUQ0MTcxMDBDMjFFQzggLyogUG9seWdvblNoYXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxODlGMERFMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUY4MDgyNDVFNTkwMDFFOUFCQyAvKiBQb3Np
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTM1LDYgKzI5MjAyLDcgQEAKIAkJCQkwOEI1
RjI1NTEzQjVGRkYyMDAyOTU5RUMgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQzQjkzMzZBMTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFBMzAyMTEzQjg5RENDMDA3NzkxRTQgLyogU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNDhBNkQw
MTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODM2RkJDRUMxNzhDMTE3RjAwQjIxQTE1IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDMxNDJFN0ExM0IxRTk3NzAwRjFDODcxIC8qIFNWR0FuaW1hdGVk
UmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0E2MjY2NzEzQjNEMTEwMDBBQzk0QjggLyog
U1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTM0NSw2ICsyOTQxMyw3
IEBACiAJCQkJNDRDOTkxQTAwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFNjU5RTkwRUE5MkZGQTAwN0U0NTMzIC8qIFRoZW1lTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc2RDZDOTQxMjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4
IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEI5MDU2MUUwRjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTdBQUJEMTYxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDE4MTRGQTA5RDUwMDc0NTdB
RSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yOTUyNSw2ICsyOTU5NCw3IEBACiAJCQkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1
NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzRjQyQjMxRTE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4MjAzMEQxMzk1QUI2QTAwRjk1NkM2IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywK
KwkJCQk3QzczRkIwQzE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTNGQkM0QUVGMTg5ODgxMzgwMDQ2RUUzOCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbE1lZGlh
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUYxMjE3MUY1MTZBOENFRDIwMDAwNTNDQSAv
KiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAxNjkwMTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvTWljcm90YXNrLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAorI2lmIEVOQUJMRShVU0VSX01FU1NBR0Vf
SEFORExFUlMpCisjaW5jbHVkZSAiSlNXZWJLaXROYW1lc3BhY2UuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlNh
ZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaCIKQEAgLTc3LDYgKzgxLDExIEBAIHZvaWQgSlNET01X
aW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYKICAgICB9OwogICAgIAogICAgIGFkZFN0YXRp
Y0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7
CisKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorICAgIGlmIChtX2ltcGwtPnNo
b3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh3b3JsZCgpKSkKKyAgICAgICAgcHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyKCZ2bSwgIndlYmtpdCIpLCB0b0pTKGdsb2JhbEV4ZWMoKSwgdGhp
cywgbV9pbXBsLT53ZWJraXROYW1lc3BhY2UoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFt
ZXNwYWNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZS5oIgorCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKworI2luY2x1
ZGUgIkpTVXNlck1lc3NhZ2VIYW5kbGVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6
OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChVc2VyTWVzc2Fn
ZUhhbmRsZXIqIGhhbmRsZXIgPSBpbXBsKCkuaGFuZGxlcihwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSkpIHsKKyAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaGFuZGxlcikpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVVNF
Ul9NRVNTQUdFX0hBTkRMRVJTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2
aXNpb24gMTY5MDE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoVVNFUl9N
RVNTQUdFX0hBTkRMRVJTKQorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJLaXRO
YW1lc3BhY2UuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBST1hJTUlUWV9FVkVOVFMpCiAjaW5j
bHVkZSAiRGV2aWNlUHJveGltaXR5Q29udHJvbGxlci5oIgogI2VuZGlmCkBAIC03MTIsNiArNzE4
LDQyIEBAIExvY2F0aW9uKiBET01XaW5kb3c6OmxvY2F0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
bV9sb2NhdGlvbi5nZXQoKTsKIH0KIAorI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMp
Citib29sIERPTVdpbmRvdzo6c2hvdWxkSGF2ZVdlYktpdE5hbWVzcGFjZUZvcldvcmxkKERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogdXNlckNvbnRlbnRDb250cm9s
bGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7CisgICAgaWYgKCF1c2VyQ29udGVu
dENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIGRlc2NyaXB0
b3JNYXAgPSB1c2VyQ29udGVudENvbnRyb2xsZXItPnVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JzKCk7CisgICAgaWYgKCFkZXNjcmlwdG9yTWFwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBmb3IgKGF1dG8mIGRlc2NyaXB0b3IgOiBkZXNjcmlwdG9yTWFwLT52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAoJmRlc2NyaXB0b3ItPndvcmxkKCkgPT0gJndvcmxkKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitXZWJLaXROYW1l
c3BhY2UqIERPTVdpbmRvdzo6d2Via2l0TmFtZXNwYWNlKCkgY29uc3QKK3sKKyAgICBpZiAoIWlz
Q3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpZiAoIW1fd2Via2l0TmFtZXNwYWNlKQorICAgICAgICBtX3dlYmtpdE5hbWVzcGFjZSA9IFdl
YktpdE5hbWVzcGFjZTo6Y3JlYXRlKCptX2ZyYW1lKTsKKyAgICByZXR1cm4gbV93ZWJraXROYW1l
c3BhY2UuZ2V0KCk7Cit9CisjZW5kaWYKKwogU3RvcmFnZSogRE9NV2luZG93OjpzZXNzaW9uU3Rv
cmFnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAx
NjkwMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBET01BcHBs
aWNhdGlvbkNhY2hlOwogICAgIGNsYXNzIERPTVNlbGVjdGlvbjsKICAgICBjbGFzcyBET01VUkw7
CisgICAgY2xhc3MgRE9NV2luZG93Q1NTOwogICAgIGNsYXNzIERPTVdpbmRvd1Byb3BlcnR5Owor
ICAgIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKICAgICBjbGFzcyBEYXRhYmFzZTsKICAgICBjbGFz
cyBEYXRhYmFzZUNhbGxiYWNrOwogICAgIGNsYXNzIERvY3VtZW50OwpAQCAtNzMsOCArNzUsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwog
ICAgIGNsYXNzIFN0b3JhZ2U7CiAgICAgY2xhc3MgU3R5bGVNZWRpYTsKKyAgICBjbGFzcyBXZWJL
aXROYW1lc3BhY2U7CiAgICAgY2xhc3MgV2ViS2l0UG9pbnQ7Ci0gICAgY2xhc3MgRE9NV2luZG93
Q1NTOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIGNsYXNzIFJl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOwpAQCAtNDI2LDYgKzQyOCwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaGFzVG91Y2hFdmVudExpc3RlbmVycygpIGNvbnN0
IHsgcmV0dXJuIG1fdG91Y2hFdmVudExpc3RlbmVyQ291bnQgPiAwOyB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisgICAgICAgIGJvb2wgc2hvdWxkSGF2ZVdl
YktpdE5hbWVzcGFjZUZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCYpOworICAgICAgICBXZWJLaXRO
YW1lc3BhY2UqIHdlYmtpdE5hbWVzcGFjZSgpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgLy8g
RklYTUU6IFdoZW4gdGhpcyBET01XaW5kb3cgaXMgbm8gbG9uZ2VyIHRoZSBhY3RpdmUgRE9NV2lu
ZG93IChpLmUuLAogICAgICAgICAvLyB3aGVuIGl0cyBkb2N1bWVudCBpcyBubyBsb25nZXIgdGhl
IGRvY3VtZW50IHRoYXQgaXMgZGlzcGxheWVkIGluIGl0cwogICAgICAgICAvLyBmcmFtZSksIHdl
IHdvdWxkIGxpa2UgdG8gemVybyBvdXQgbV9mcmFtZSB0byBhdm9pZCBiZWluZyBjb25mdXNlZApA
QCAtNTAxLDYgKzUwOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENTUzNf
Q09ORElUSU9OQUxfUlVMRVMpCiAgICAgICAgIG11dGFibGUgUmVmUHRyPERPTVdpbmRvd0NTUz4g
bV9jc3M7CiAjZW5kaWYKKworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisgICAg
ICAgIG11dGFibGUgUmVmUHRyPFdlYktpdE5hbWVzcGFjZT4gbV93ZWJraXROYW1lc3BhY2U7Cisj
ZW5kaWYKICAgICB9OwogCiAgICAgaW5saW5lIFN0cmluZyBET01XaW5kb3c6OnN0YXR1cygpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAxNjkwMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVk
ZSAiVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0LmgiCiAKKyNpZiBFTkFC
TEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorI2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxVc2Vy
Q29udGVudENvbnRyb2xsZXI+IFVzZXJDb250ZW50Q29udHJvbGxlcjo6Y3JlYXRlKCkKQEAgLTE1
MSw2ICsxNTUsMjQgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdAog
ICAgIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAK
KyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQordm9pZCBVc2VyQ29udGVudENvbnRy
b2xsZXI6OmFkZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoIW1fdXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcnMpCisgICAgICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JNYXA+KCk7CisKKyAg
ICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLT5hZGQoc3RkOjptYWtlX3BhaXIoZGVz
Y3JpcHRvci5uYW1lKCksICZkZXNjcmlwdG9yLndvcmxkKCkpLCAmZGVzY3JpcHRvcik7Cit9CisK
K3ZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yKFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAg
aWYgKCFtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLT5yZW1vdmUoc3RkOjptYWtlX3Bh
aXIoZGVzY3JpcHRvci5uYW1lKCksICZkZXNjcmlwdG9yLndvcmxkKCkpKTsKK30KKyNlbmRpZgor
CiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnQoKQogewog
ICAgIG1fdXNlclNjcmlwdHMgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAxNjkwMTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyNpbmNsdWRlICJV
c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKQEAgLTM5LDYgKzQzLDcgQEAgY2xh
c3MgUGFnZTsKIGNsYXNzIFVSTDsKIGNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVT
aGVldDsKK2NsYXNzIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I7CiAKIGNsYXNzIFVzZXJD
b250ZW50Q29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJDb250ZW50Q29udHJvbGxl
cj4gewogcHVibGljOgpAQCAtNjIsNiArNjcsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1v
dmVBbGxVc2VyQ29udGVudCgpOwogCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykK
KyAgICBjb25zdCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yTWFwKiB1c2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9ycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcnMuZ2V0KCk7IH0KKworICAgIHZvaWQgYWRkVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvcihVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yJik7CisgICAgdm9pZCByZW1vdmVVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3ImKTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcigpOwogCkBAIC03
MSw2ICs4Myw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdE1h
cD4gbV91c2VyU2NyaXB0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXRNYXA+
IG1fdXNlclN0eWxlU2hlZXRzOworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JNYXA+IG1fdXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVc2VyTWVzc2FnZUhhbmRsZXIuaCIKKworI2lmIEVO
QUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Vz
ZXJNZXNzYWdlSGFuZGxlcjo6VXNlck1lc3NhZ2VIYW5kbGVyKEZyYW1lJiBmcmFtZSwgVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICA6IEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlcigmZnJhbWUpCisgICAgLCBtX2Rlc2NyaXB0b3IoZGVzY3JpcHRvcikKK3sKK30K
KworVXNlck1lc3NhZ2VIYW5kbGVyOjp+VXNlck1lc3NhZ2VIYW5kbGVyKCkKK3sKK30KKwordm9p
ZCBVc2VyTWVzc2FnZUhhbmRsZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSkKK3sKKyAgICBtX2Rlc2NyaXB0b3ItPmNsaWVudCgpLmRpZFBvc3RN
ZXNzYWdlKCp0aGlzLCB2YWx1ZS5nZXQoKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVXNl
ck1lc3NhZ2VIYW5kbGVyOjpuYW1lKCkKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5uYW1l
KCk7Cit9CisKK0RPTVdyYXBwZXJXb3JsZCYgVXNlck1lc3NhZ2VIYW5kbGVyOjp3b3JsZCgpCit7
CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+d29ybGQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lc3NhZ2VIYW5kbGVy
X2gKKyNkZWZpbmUgVXNlck1lc3NhZ2VIYW5kbGVyX2gKKworI2lmIEVOQUJMRShVU0VSX01FU1NB
R0VfSEFORExFUlMpCisKKyNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKKyNp
bmNsdWRlICJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8YmluZGlu
Z3MvU2NyaXB0VmFsdWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVc2VyTWVz
c2FnZUhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVzc2FnZUhhbmRsZXI+LCBwdWJs
aWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZjxVc2VyTWVzc2FnZUhhbmRsZXI+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBVc2VyTWVzc2FnZUhhbmRsZXIoZnJhbWUsIGRlc2NyaXB0b3IpKTsKKyAgICB9Cisg
ICAgdmlydHVhbCB+VXNlck1lc3NhZ2VIYW5kbGVyKCk7CisKKyAgICB2b2lkIHBvc3RNZXNzYWdl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CisKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUoKTsKKyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkKCk7CisKK3ByaXZhdGU6
CisgICAgVXNlck1lc3NhZ2VIYW5kbGVyKEZyYW1lJiwgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvciYpOworICAgIAorICAgIFJlZjxVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yPiBtX2Rl
c2NyaXB0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorI2VuZGlmIC8vIFVzZXJNZXNzYWdlSGFuZGxlcl9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0
aW9uYWw9VVNFUl9NRVNTQUdFX0hBTkRMRVJTCitdIGludGVyZmFjZSBVc2VyTWVzc2FnZUhhbmRs
ZXIgeworICAgIHZvaWQgcG9zdE1lc3NhZ2UoU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2Up
OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hB
TkRMRVJTKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6VXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsIENsaWVudCYgY2xpZW50KQorICAgIDogbV9uYW1lKG5hbWUpCisgICAgLCBtX3dvcmxkKHdv
cmxkKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yOjp+VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcigpCit7Cit9CisKK2NvbnN0
IEF0b21pY1N0cmluZyYgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6bmFtZSgpCit7Cisg
ICAgcmV0dXJuIG1fbmFtZTsKK30KKworRE9NV3JhcHBlcldvcmxkJiBVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yOjp3b3JsZCgpCit7CisgICAgcmV0dXJuIG1fd29ybGQuZ2V0KCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0Vf
SEFORExFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Jf
aAorI2RlZmluZSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yX2gKKworI2lmIEVOQUJMRShV
U0VSX01FU1NBR0VfSEFORExFUlMpCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEZyYW1lOworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xhc3MgVXNlck1lc3NhZ2VIYW5k
bGVyOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCitjbGFzcyBVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcj4geworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RN
ZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopID0gMDsK
KyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvcj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgQ2xpZW50JiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IobmFtZSwgd29ybGQsIGNsaWVudCkpOworICAg
IH0KKyAgICB+VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcigpOworCisgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKCk7CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpOworICAgIAor
ICAgIENsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKGNvbnN0IEF0b21p
Y1N0cmluZyYsIERPTVdyYXBwZXJXb3JsZCYsIENsaWVudCYpOworICAgIAorICAgIEF0b21pY1N0
cmluZyBtX25hbWU7CisgICAgUmVmPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKKyAgICBDbGll
bnQmIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyNlbmRpZiAvLyBVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzX2gKKyNkZWZpbmUgVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclR5cGVzX2gKKworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV3JhcHBlcldvcmxk
OworY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKKwordHlwZWRlZiBIYXNoTWFw
PHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+PiwgUmVmUHRy
PFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I+PiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yTWFwOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVVNF
Ul9NRVNTQUdFX0hBTkRMRVJTKQorI2VuZGlmIC8vIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JUeXBlc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNO
YW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3Nh
Z2VIYW5kbGVyc05hbWVzcGFjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIgorCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FH
RV9IQU5ETEVSUykKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2U6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UoRnJhbWUmIGZyYW1lKQorICAgIDogRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyKCZmcmFtZSkKK3sKK30KKworVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZTo6flVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UoKQoreworfQorCitVc2Vy
TWVzc2FnZUhhbmRsZXIqIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmhhbmRsZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIC8v
IEZpcnN0LCBjaGVjayBpZiB3ZSBoYXZlIGEgaGFuZGxlciBpbnN0YW5jZSBhbHJlYWR5LgorICAg
IGZvciAoYXV0byYgaGFuZGxlciA6IG1fbWVzc2FnZUhhbmRsZXJzKSB7CisgICAgICAgIGlmICho
YW5kbGVyLT5uYW1lKCkgPT0gbmFtZSAmJiAmaGFuZGxlci0+d29ybGQoKSA9PSAmd29ybGQpCisg
ICAgICAgICAgICByZXR1cm4gJmhhbmRsZXIuZ2V0KCk7CisgICAgfQorCisgICAgLy8gU2Vjb25k
LCBhdHRlbXB0IHRvIGNyZWF0ZSBhIGhhbmRsZXIgaW5zdGFuY2UgZnJvbSBhIGRlc2NyaXB0b3Iu
CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFBhZ2Uq
IHBhZ2UgPSBmcmFtZSgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAKKyAgICBjb25zdCBhdXRvKiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBw
YWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKTsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBhdXRvKiB1c2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9ycyA9IHVzZXJDb250ZW50Q29udHJvbGxlci0+dXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvcnMoKTsKKyAgICBpZiAoIXVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvcnMtPmdldChzdGQ6Om1ha2VfcGFpcihuYW1lLCAmd29ybGQpKTsKKyAgICBpZiAoIWRlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9tZXNzYWdlSGFuZGxlcnMu
YXBwZW5kKFVzZXJNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKCpmcmFtZSgpLCAqZGVzY3JpcHRvcikp
OworICAgIHJldHVybiAmbV9tZXNzYWdlSGFuZGxlcnMubGFzdCgpLmdldCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRM
RVJTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlX2gKKyNk
ZWZpbmUgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZV9oCisKKyNpZiBFTkFCTEUoVVNFUl9N
RVNTQUdFX0hBTkRMRVJTKQorCisjaW5jbHVkZSAiRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgi
CisjaW5jbHVkZSAiVXNlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBVc2Vy
TWVzc2FnZUhhbmRsZXI7CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CisKK2NsYXNzIFVzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlPiwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWY8VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZT4gY3JlYXRl
KEZyYW1lJiBmcmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UoZnJhbWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5V
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKCk7CisKKyAgICBVc2VyTWVzc2FnZUhhbmRsZXIq
IGhhbmRsZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgRE9NV3JhcHBlcldvcmxkJik7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZShGcmFtZSYpOwor
CisgICAgVmVjdG9yPFJlZjxVc2VyTWVzc2FnZUhhbmRsZXI+PiBtX21lc3NhZ2VIYW5kbGVyczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCisjZW5kaWYgLy8gVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZV9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZS5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNj
cmlwdG9yLAorICAgIENvbmRpdGlvbmFsPVVTRVJfTUVTU0FHRV9IQU5ETEVSUworXSBpbnRlcmZh
Y2UgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSB7Cit9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdE5hbWVz
cGFjZS5oIgorCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKworI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJLaXROYW1lc3BhY2U6OldlYktpdE5hbWVzcGFj
ZShGcmFtZSYgZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmZnJhbWUpCisgICAgLCBt
X21lc3NhZ2VIYW5kbGVyTmFtZXNwYWNlKFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmNy
ZWF0ZShmcmFtZSkpCit7Cit9CisKK1dlYktpdE5hbWVzcGFjZTo6fldlYktpdE5hbWVzcGFjZSgp
Cit7Cit9CisKK1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIFdlYktpdE5hbWVzcGFjZTo6
bWVzc2FnZUhhbmRsZXJzKCkKK3sKKyAgICByZXR1cm4gJm1fbWVzc2FnZUhhbmRsZXJOYW1lc3Bh
Y2UuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShVU0VSX01FU1NBR0VfSEFORExFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktp
dE5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFt
ZXNwYWNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVz
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYktpdE5hbWVzcGFjZV9oCisjZGVmaW5lIFdlYktpdE5hbWVzcGFjZV9oCisKKyNpZiBF
TkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVy
dHkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEZyYW1lOworY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTsKKworY2xhc3Mg
V2ViS2l0TmFtZXNwYWNlIDogcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgUmVmQ291
bnRlZDxXZWJLaXROYW1lc3BhY2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJLaXROYW1lc3BhY2U+IGNyZWF0ZShGcmFtZSYgZnJhbWUpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYktpdE5hbWVzcGFjZShmcmFtZSkpOworICAgIH0KKworICAgIHZp
cnR1YWwgfldlYktpdE5hbWVzcGFjZSgpOworCisgICAgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVz
cGFjZSogbWVzc2FnZUhhbmRsZXJzKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViS2l0
TmFtZXNwYWNlKEZyYW1lJik7CisKKyAgICBSZWY8VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZT4gbV9tZXNzYWdlSGFuZGxlck5hbWVzcGFjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisjZW5kaWYgLy8g
V2ViS2l0TmFtZXNwYWNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNw
YWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFj
ZS5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFj
ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworWwor
ICAgIENvbmRpdGlvbmFsPVVTRVJfTUVTU0FHRV9IQU5ETEVSUworXSBpbnRlcmZhY2UgV2ViS2l0
TmFtZXNwYWNlIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZSBtZXNzYWdlSGFuZGxlcnM7Cit9OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5
MDE1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNzAgQEAKKzIwMTQtMDUtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbV2ViS2l0Ml0gSW1wbGVtZW50IFNjcmlwdE1lc3NhZ2VIYW5kbGVycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKHN0
cnVjdF9vcl9jbGFzcyk6CisgICAgICAgIChhcmd1bWVudF9jb2Rlcl9oZWFkZXJzX2Zvcl90eXBl
KToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tOgorICAgICAgICAoLVtXS1NjcmlwdE1lc3NhZ2UgX2lu
aXRXaXRoQm9keTp3ZWJWaWV3Om5hbWU6XSk6CisgICAgICAgICgtW1dLU2NyaXB0TWVzc2FnZSBi
b2R5XSk6CisgICAgICAgICgtW1dLU2NyaXB0TWVzc2FnZSB3ZWJWaWV3XSk6CisgICAgICAgICgt
W1dLU2NyaXB0TWVzc2FnZSBuYW1lXSk6CisgICAgICAgICgtW1dLU2NyaXB0TWVzc2FnZSBfc2Ny
aXB0V29ybGRdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2Ny
aXB0TWVzc2FnZUludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6
XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbW92ZVNjcmlwdE1lc3Nh
Z2VIYW5kbGVyRm9yTmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
X2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6d29ybGQ6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZv
ck5hbWU6d29ybGQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKHBhZ2VUb1Zp
ZXdNYXApOgorICAgICAgICAoZnJvbVdlYlBhZ2VQcm94eSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBk
ZWFsbG9jXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ckhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXJIYW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6V2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6fldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQ6On5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXI6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyOjpjbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yUHJveHk6On5XZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJv
eHk6OmRpZFBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvclByb3h5OjpkZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5OjpXZWJVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKwogMjAxNC0wNS0xOCAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE2OTAwMS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24g
MTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBj
b3B5KQpAQCAtNjIsNiArNjIsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9QbHVnaW5zIFwKICAg
ICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TdG9yYWdlIFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9Vc2VyQ29udGVudCBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvbWFjIFwKICAgICAkKFdl
YktpdDIpL1VJUHJvY2Vzcy9pb3MgXAogIwpAQCAtMTM1LDYgKzEzNiw3IEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkgXAogICAgIFdlYlJl
c291cmNlTG9hZGVyIFwKICAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgXAorICAgIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
IFwKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgXAogIwpJbmRleDogU291cmNl
L1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQkocmV2aXNpb24gMTY5MDE0KQor
KysgU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yMTQsNiArMjE0LDcgQEAgZGVmIHN0cnVjdF9vcl9jbGFzcyhuYW1lc3BhY2UsIHR5
cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAgICAg
ICAgJ1dlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZScsCiAgICAgICAgICdXZWJLaXQ6OldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMnLAorICAgICAgICAnV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlckhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6OldpbmRvd0dlb21ldHJ5JywKICAg
ICBdKQogCkBAIC0zOTYsNiArMzk3LDcgQEAgZGVmIGFyZ3VtZW50X2NvZGVyX2hlYWRlcnNfZm9y
X3R5cGUodHlwZQogICAgICAgICAnU3RyaW5nJzogJyJBcmd1bWVudENvZGVycy5oIicsCiAgICAg
ICAgICdXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyJzogJyJJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiJywKICAgICAgICAgJ1dlYktpdDo6V2ViQ29udGV4
dFVzZXJNZXNzYWdlRW5jb2Rlcic6ICciV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgiJywK
KyAgICAgICAgJ1dlYktpdDo6U2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGUnOiAnIldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyLmgiJywKICAgICB9CiAKICAgICBoZWFkZXJzID0gW10KQEAgLTQzOSw2
ICs0NDEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6
V2ViTW91c2VFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYlRv
dWNoRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2
ZW50JzogWyciV2ViRXZlbnQuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6V2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJIYW5kbGUnOiBbJyJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIiddLAogICAgIH0K
IAogICAgIGhlYWRlcnMgPSBbXQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2UubW0JKHJldmlzaW9uIDE2OTAxNCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw0MCArMjQsNDUgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZVByaXZhdGUuaCIKKyNpbXBvcnQgIldLU2NyaXB0
TWVzc2FnZUludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0vLyBGSVhNRTogQ29u
c2lkZXIgYWRkaW5nIHRoZSBuYXZpZ2F0aW9uIGFzIHdlbGwuCisjaW1wb3J0ICJXZWFrT2JqQ1B0
ci5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1AaW1wbGVtZW50YXRpb24gV0tTY3Jp
cHRNZXNzYWdlCitAaW1wbGVtZW50YXRpb24gV0tTY3JpcHRNZXNzYWdlIHsKKyAgICBSZXRhaW5Q
dHI8aWQ+IF9ib2R5OworICAgIFdlYktpdDo6V2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmll
dzsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9uYW1lOworfQogCi0tIChpZClib2R5CistIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoQm9keTooaWQpYm9keSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQu
Ci0gICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9ib2R5ID0gW2JvZHkgY29weV07CisgICAgX3dlYlZpZXcg
PSB3ZWJWaWV3OworICAgIF9uYW1lID0gYWRvcHROUyhbbmFtZSBjb3B5XSk7CisKKyAgICByZXR1
cm4gc2VsZjsKKwogfQogCi0tIChXS1dlYlZpZXcgKil3ZWJWaWV3CistIChpZClib2R5CiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBfYm9k
eS5nZXQoKTsKIH0KIAotLSAoTlNTdHJpbmcgKiluYW1lCistIChXS1dlYlZpZXcgKil3ZWJWaWV3
CiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biBfd2ViVmlldy5nZXRBdXRvcmVsZWFzZWQoKTsKIH0KIAotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gV0tTY3JpcHRNZXNzYWdlIChXS1ByaXZhdGUpCi0KLS0gKF9XS1NjcmlwdFdvcmxkICopX3Nj
cmlwdFdvcmxkCistIChOU1N0cmluZyAqKW5hbWUKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
LgotICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIF9uYW1lLmdldCgpOwogfQogCiBAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUlu
dGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1NjcmlwdE1lc3NhZ2VJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjg5OTQpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlUHJpdmF0ZS5oOjE2
ODk5NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNz
YWdlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCA8V2ViS2l0L1dLU2NyaXB0TWVzc2FnZS5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworQGNsYXNzIF9XS1NjcmlwdFdvcmxkOworCitAaW50ZXJmYWNlIFdLU2NyaXB0TWVzc2Fn
ZSAoV0tQcml2YXRlKQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS1Njcmlw
dFdvcmxkICpfc2NyaXB0V29ybGQ7CisKK0BlbmQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3Nh
Z2VJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLU2NyaXB0TWVzc2FnZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDE1ICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbXBvcnQgPFdlYktpdC9XS1NjcmlwdE1lc3NhZ2UuaD4KKyNpbXBvcnQgIldLU2NyaXB0TWVz
c2FnZS5oIgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotQGNsYXNzIF9XS1NjcmlwdFdvcmxkOwor
QGludGVyZmFjZSBXS1NjcmlwdE1lc3NhZ2UgKCkKIAotQGludGVyZmFjZSBXS1NjcmlwdE1lc3Nh
Z2UgKFdLUHJpdmF0ZSkKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tTY3Jp
cHRXb3JsZCAqX3NjcmlwdFdvcmxkOworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aEJvZHk6KGlk
KWJvZHkgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYW1lOihOU1N0cmluZyAqKW5hbWU7
CiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nj
cmlwdE1lc3NhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1NjcmlwdE1lc3NhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDE2OTAxNCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTY3JpcHRNZXNzYWdlUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0IDxXZWJLaXQvV0tTY3JpcHRNZXNzYWdlLmg+Ci0KLSNpZiBXS19BUElfRU5BQkxFRAotCi1A
Y2xhc3MgX1dLU2NyaXB0V29ybGQ7Ci0KLUBpbnRlcmZhY2UgV0tTY3JpcHRNZXNzYWdlIChXS1By
aXZhdGUpCi0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLU2NyaXB0V29ybGQg
Kl9zY3JpcHRXb3JsZDsKLQotQGVuZAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbQkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgs
OSArMjgsMTUgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIldLU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCIKKyNpbXBvcnQgIldLU2NyaXB0TWVzc2FnZUludGVybmFsLmgiCiAjaW1w
b3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwu
aCIKKyNpbXBvcnQgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW1wb3J0ICJXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oIgotI2ltcG9ydCAiX1dLU2NyaXB0V29ybGQuaCIKKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dC5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNWYWx1ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVXNlclNjcmlwdC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCkBAIC04NywyOCArOTMsNDMgQEAgLSAodm9pZClyZW1vdmVBbGxVc2VyU2Ny
aXB0cwogICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlw
dHMoKTsKIH0KIAotLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0
TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFt
ZQotewotICAgIFtzZWxmIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpzY3JpcHRNZXNzYWdlSGFu
ZGxlciBuYW1lOm5hbWUgd29ybGQ6W19XS1NjcmlwdFdvcmxkIGRlZmF1bHRXb3JsZF1dOwotfQot
Ci0tICh2b2lkKXJlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTooTlNTdHJpbmcgKilu
YW1lCi17Ci0gICAgW3NlbGYgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9yTmFtZTpuYW1l
IHdvcmxkOltfV0tTY3JpcHRXb3JsZCBkZWZhdWx0V29ybGRdXTsKLX0KLQotQGVuZAorY2xhc3Mg
U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworcHVibGljOgorICAgIFNjcmlwdE1lc3NhZ2VI
YW5kbGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIGlkIDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyLCBOU1N0cmluZyAqbmFtZSkKKyAgICAgICAg
OiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2hhbmRsZXIoaGFuZGxlcikK
KyAgICAgICAgLCBtX25hbWUoYWRvcHROUyhbbmFtZSBjb3B5XSkpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPEpT
Q29udGV4dD4gY29udGV4dCA9IGFkb3B0TlMoW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlh
bGl6ZShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCAwKTsKKyAgICAgICAgSlNWYWx1ZSAq
dmFsdWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnZhbHVlUmVmIGluQ29udGV4dDpj
b250ZXh0LmdldCgpXTsKKyAgICAgICAgaWQgYm9keSA9IFt2YWx1ZSB0b0RpY3Rpb25hcnldOwor
CisgICAgICAgIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IG1lc3NhZ2UgPSBhZG9wdE5TKFtb
V0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJvZHkgd2ViVmlldzpmcm9tV2Vi
UGFnZVByb3h5KHBhZ2UpIG5hbWU6bV9uYW1lLmdldCgpXSk7CisgICAgCisgICAgICAgIFttX2hh
bmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNlaXZl
U2NyaXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKKyAgICB9CiAKLUBpbXBsZW1lbnRhdGlvbiBX
S1VzZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQorcHJpdmF0ZToKKyAgICBSZXRhaW5Q
dHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8
aWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+PiBtX2hhbmRsZXI7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBtX25hbWU7Cit9OwogCi0tICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjoo
aWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5T
U3RyaW5nICopbmFtZSB3b3JsZDooX1dLU2NyaXB0V29ybGQgKil3b3JsZAorLSAodm9pZClhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1l
c3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCisgICAgUmVmUHRyPFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRs
ZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFu
ZGxlciwgbmFtZSksIG5hbWUpOworICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCisgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRl
bXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25l
IGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQogCi0tICh2b2lkKV9yZW1vdmVTY3JpcHRNZXNz
YWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICopbmFtZSB3b3JsZDooX1dLU2NyaXB0V29ybGQg
Kil3b3JsZAorLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3Ry
aW5nICopbmFtZQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgX3VzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKG5hbWUpOwog
fQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaAko
cmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCIKKyNpbXBvcnQgIldLVXNlckNv
bnRlbnRDb250cm9sbGVyLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgJKHJldmlzaW9uIDE2OTAxNCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlci5oPgotCi0jaWYgV0tfQVBJX0VOQUJM
RUQKLQotQGNsYXNzIF9XS1NjcmlwdFdvcmxkOwotCi1AaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRD
b250cm9sbGVyIChXS1ByaXZhdGUpCi0KLS0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZToo
TlNTdHJpbmcgKiluYW1lIHdvcmxkOihfV0tTY3JpcHRXb3JsZCAqKXdvcmxkOwotLSAodm9pZClf
cmVtb3ZlU2NyaXB0TWVzc2FnZUhhbmRsZXJGb3JOYW1lOihOU1N0cmluZyAqKW5hbWUgd29ybGQ6
KF9XS1NjcmlwdFdvcmxkICopd29ybGQ7Ci0KLUBlbmQKLQotI2VuZGlmCi0KLQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlz
aW9uIDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw4IEBACiAjaW1wb3J0ICJfV0tSZW1v
dGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1Byb3Zp
ZGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgor
I2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA0LDYg
KzEwNiwxOCBAQCAtIChVSVZpZXdDb250cm9sbGVyICopX3ZpZXdDb250cm9sbGVyRm9yCiAjaW1w
b3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjZW5kaWYKIAorCitzdGF0aWMgSGFzaE1hcDxXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIFdLV2ViVmlldyAqPiYgcGFnZVRvVmlld01hcCgpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXS1dl
YlZpZXcgKj4+IG1hcDsKKyAgICByZXR1cm4gbWFwOworfQorCitXS1dlYlZpZXcqIGZyb21XZWJQ
YWdlUHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2VU
b1ZpZXdNYXAoKS5nZXQoJnBhZ2UpOworfQorCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+IF9uYXZpZ2F0aW9u
U3RhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6VUlEZWxlZ2F0ZT4gX3VpRGVsZWdh
dGU7CkBAIC0yMzIsNiArMjQ2LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcgogCiAgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKIAorICAgIHBhZ2VUb1ZpZXdNYXAoKS5hZGQoX3BhZ2Uu
Z2V0KCksIHNlbGYpOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTI0NSw2ICsyNjEsOCBA
QCAtICh2b2lkKWRlYWxsb2MKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwogI2VuZGlmCiAKKyAgICBwYWdlVG9WaWV3TWFwKCku
cmVtb3ZlKF9wYWdlLmdldCgpKTsKKwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaAkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw0ICs4
MCw2IEBAIHN0cnVjdCBWaWV3U25hcHNob3Q7CiAjZW5kaWYKIEBlbmQKIAorV0tXZWJWaWV3KiBm
cm9tV2ViUGFnZVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CisKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCisKKyNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlckhhbmRsZTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8
IG5hbWU7Cit9CisKK2Jvb2wgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU6OmRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5k
bGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZS5pZGVudGlmaWVy
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5k
bGUubmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgdWlu
dDY0X3QgaWRlbnRpZmllcjsKKworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK1Bhc3NS
ZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihzdGQ6
Om1vdmUoY2xpZW50KSwgbmFtZSkpOworfQorCitXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xpZW50LCBjb25z
dCBTdHJpbmcmIG5hbWUpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkp
CisgICAgLCBtX2NsaWVudChzdGQ6Om1vdmUoY2xpZW50KSkKKyAgICAsIG1fbmFtZShuYW1lKQor
eworfQorCitXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6fldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyX2gK
KyNkZWZpbmUgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsK
K2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworY2xhc3MgV2ViRnJhbWVQcm94eTsKKworc3RydWN0IFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVySGFuZGxlIHsKKyAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2Rl
ciYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYs
IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlJik7CisKKyAgICB1aW50NjRfdCBpZGVudGlm
aWVyOworICAgIFN0cmluZyBuYW1lOworfTsKKworY2xhc3MgV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4geworcHVibGlj
OgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGll
bnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7
CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmluZyYgbmFtZSk7ICAg
IAorICAgIHZpcnR1YWwgfldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKCk7CisKKyAgICBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlckhhbmRsZSBoYW5kbGUoKSB7IHJldHVybiB7IG1faWRlbnRpZmllciwg
bV9uYW1lIH07IH0KKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQorCisgICAgQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7IH0KKwor
cHJpdmF0ZToKKyAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihzdGQ6OnVuaXF1ZV9wdHI8Q2xp
ZW50PiwgY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gbV9jbGllbnQ7CisgICAgU3RyaW5nIG1fbmFt
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorICAgIAorI2VuZGlmIC8vIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmNwcAkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTU5LDE0ICs2MywyMiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRQCiAgICAgaWYgKCFtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSku
aXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCisgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CisKICAgICB3ZWJQcm9j
ZXNzUHJveHkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OkFkZFVzZXJTY3JpcHRzKG1fdXNlclNjcmlwdHMpLCBtX2lkZW50aWZpZXIpOworICAg
IAorICAgIFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4gbWVzc2FnZUhhbmRs
ZXJIYW5kbGVzOworICAgIGZvciAoYXV0byYgaGFuZGxlciA6IG1fc2NyaXB0TWVzc2FnZUhhbmRs
ZXJzLnZhbHVlcygpKQorICAgICAgICBtZXNzYWdlSGFuZGxlckhhbmRsZXMuYXBwZW5kKGhhbmRs
ZXItPmhhbmRsZSgpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkuY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcnMobWVzc2FnZUhhbmRsZXJIYW5kbGVzKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm94eSkKIHsKICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMo
JndlYlByb2Nlc3NQcm94eSkpOwogCi0gICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNz
UHJveHkpOworICAgIGlmIChtX3Byb2Nlc3Nlcy5yZW1vdmUoJndlYlByb2Nlc3NQcm94eSkpCisg
ICAgICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0KQpAQCAtODUsNCArOTcsNTUg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwogICAgICAgICBwcm9j
ZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoKSwgbV9pZGVudGlmaWVyKTsKIH0K
IAorYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKiBoYW5kbGVyKQoreworICAgIGZvciAo
YXV0byYgZXhpc3RpbmdIYW5kbGVyIDogbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMudmFsdWVzKCkp
IHsKKyAgICAgICAgaWYgKGV4aXN0aW5nSGFuZGxlci0+bmFtZSgpID09IGhhbmRsZXItPm5hbWUo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3NjcmlwdE1lc3Nh
Z2VIYW5kbGVycy5hZGQoaGFuZGxlci0+aWRlbnRpZmllcigpLCBoYW5kbGVyKTsKKworICAgIGZv
ciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3NB
bmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgaGFuZGxlci0+aGFuZGxl
KCkgfSksIG1faWRlbnRpZmllcik7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZv
ck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0
TWVzc2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09
IG5hbWUpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9j
ZXNzZXMpCisgICAgICAgICAgICAgICAgcHJvY2Vzc0FuZENvdW50LmtleS0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihpdC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIG1faWRlbnRpZmllcik7
CisgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbWVzc2FnZUhh
bmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQoreworICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwor
ICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViUHJvY2Vzc1Byb3h5KiB3
ZWJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpmcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
KyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHdlYlByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj46OmlzVmFsaWRLZXkobWVz
c2FnZUhhbmRsZXJJRCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmdldChtZXNz
YWdlSGFuZGxlcklEKTsKKyAgICBpZiAoIWhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gYnVmZmVyID0gZGF0YVJlZmVyZW5jZS52ZWN0b3IoKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YWRvcHQoYnVmZmVyKTsKKworICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RN
ZXNzYWdlKCpwYWdlLCAqZnJhbWUsICp2YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJKHJldmlzaW9u
IDE2OTAxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTcg
QEAKICNpZm5kZWYgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlfaAogI2RlZmluZSBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eV9oCiAKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNl
dC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNz
IERhdGFSZWZlcmVuY2U7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVzZXJTY3Jp
cHQ7CiB9CkBAIC0zNyw4ICs0NCw5IEBAIGNsYXNzIFVzZXJTY3JpcHQ7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworY2xhc3MgV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI7CiAKLWNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHsKK2NsYXNzIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gY3Jl
YXRlKCk7CiAgICAgfldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCk7CkBAIC01MSwxMyAr
NTksMjMgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2Ny
aXB0KTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CiAKKyAgICAvLyBSZXR1cm5z
IGZhbHNlIGlmIHRoZXJlIHdhcyBhIG5hbWUgY29uZmxpY3QuCisgICAgYm9vbCBhZGRVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIqKTsKKyAgICB2b2lkIHJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKIAorICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CisKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgSGFzaENv
dW50ZWRTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXM7CiAKICAgICBWZWN0b3I8V2Vi
Q29yZTo6VXNlclNjcmlwdD4gbV91c2VyU2NyaXB0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgeworICAg
IERpZFBvc3RNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29u
bmVjdGlvbgorfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05ODksNiAr
OTg5LDEwIEBACiAJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsK
IAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8q
IFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MxMzVBQUExNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0
aW9uTWFjLm1tICovOyB9OworCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MzNjFENkYxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyLmNwcCAqLzsgfTsKKwkJN0MzNjFENzMxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzM2MUQ3MDE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIu
aCAqLzsgfTsKKwkJN0MzNjFENzgxOTI4MDNCRDAwMzZBNTlEIC8qIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzYxRDc2MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTdDMzYx
RDc5MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM2
MUQ3NzE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNz
YWdlcy5oICovOyB9OwogCQk3QzM4NzQzNDE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM4NzQz
MzE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5jcHAgKi87IH07CiAJCTdDM0Y4QzkwMTcz
QUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNGOEM4RTE3M0FGNTJEMDA3QjdGMzkgLyog
UGx1Z2luSW5mb3JtYXRpb24uY3BwICovOyB9OwogCQk3QzNGOEM5MTE3M0FGNTJEMDA3QjdGMzkg
LyogUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDM0Y4QzhGMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlv
bi5oICovOyB9OwpAQCAtMTAwMyw4ICsxMDA3LDcgQEAKIAkJN0NCMTZGRjIxNzI0QkEyODAwN0Ew
QTk1IC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4uc2IgaW4gQ29weSBQbHVn
LWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NCMTZGRTUxNzI0QjlCNTAwN0EwQTk1IC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5w
bHVnaW4uc2IgKi87IH07CiAJCTdDQjE2RkYzMTcyNEJBMkYwMDdBMEE5NSAvKiBjb20ubWljcm9z
b2Z0LlNpbHZlcmxpZ2h0UGx1Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjE2RkU2MTcyNEI5QjUwMDdB
MEE5NSAvKiBjb20ubWljcm9zb2Z0LlNpbHZlcmxpZ2h0UGx1Z2luLnNiICovOyB9OwogCQk3Q0Ix
NkZGNDE3MjRCQTMwMDA3QTBBOTUgLyogY29tLm9yYWNsZS5qYXZhLkphdmFBcHBsZXRQbHVnaW4u
c2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NCMTZGRTcxNzI0QjlCNTAwN0EwQTk1IC8qIGNvbS5vcmFjbGUuamF2
YS5KYXZhQXBwbGV0UGx1Z2luLnNiICovOyB9OwotCQk3Q0M5OUEzNDE4RUY3QjEyMDA0OEM4QjQg
LyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M5OUEzMzE4RUY3QjEyMDA0OEM4QjQgLyogV0tV
c2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0NDOTlBMzYxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2Ny
aXB0TWVzc2FnZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDQzk5QTM1MThFRjdDQkMwMDQ4QzhCNCAvKiBXS1NjcmlwdE1lc3NhZ2VQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0NDOTlBMzYxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZUludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M5OUEzNTE4RUY3
Q0JDMDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0QxMDJEQTE4NjY3NzA2MDBFRDQy
OUQgLyogQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0NEMTAyRDkxODY2NzcwNjAwRUQ0MjlEIC8qIEF1dG9Db3Jy
ZWN0aW9uQ2FsbGJhY2suaCAqLzsgfTsKIAkJN0NENUVCQjgxNzQ2QTE1QjAwMEMxQzQ1IC8qIFdL
T2JqQ1R5cGVXcmFwcGVyUmVmLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NENUVCQjYxNzQ2QTE1QjAwMEMxQzQ1IC8qIFdLT2JqQ1R5cGVXcmFwcGVy
UmVmLm1tICovOyB9OwogCQk3Q0Q1RUJCOTE3NDZBMTVCMDAwQzFDNDUgLyogV0tPYmpDVHlwZVdy
YXBwZXJSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDRDVFQkI3MTc0NkExNUIwMDBDMUM0NSAvKiBXS09iakNUeXBlV3JhcHBlclJlZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTc1LDYgKzI5
NzgsMTEgQEAKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQbHVnaW5JbmZv
cm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE3MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MxMzVBQUExNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luSW5mb3Jt
YXRpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzYxRDZGMTkyN0ZB
MzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzYxRDcwMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QzM2MUQ3NTE5MjgwMjhCMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzYxRDc2MTkyODAzQkQwMDM2QTU5
RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdDMzYxRDc3MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MzODc0MzMxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUJhbm5lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDM0Y4QzhFMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1h
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5JbmZv
cm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y4QzhGMTczQUY1
MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbHVnaW5JbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjk4OSw4ICsyOTk3LDcgQEAKIAkJN0NCMTZGRTUxNzI0QjlCNTAwN0EwQTk1IC8qIGNv
bS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4uc2IiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0IxNkZFNjE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm1pY3Jvc29m
dC5TaWx2ZXJsaWdodFBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20ubWljcm9z
b2Z0LlNpbHZlcmxpZ2h0UGx1Z2luLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0IxNkZFNzE3MjRCOUI1MDA3QTBBOTUgLyogY29tLm9yYWNsZS5qYXZhLkphdmFBcHBsZXRQbHVn
aW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLm9yYWNsZS5qYXZhLkphdmFBcHBsZXRQ
bHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDQzk5QTMzMThFRjdCMTIw
MDQ4QzhCNCAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDQzk5QTM1MThFRjdDQkMwMDQ4QzhCNCAvKiBX
S1NjcmlwdE1lc3NhZ2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLU2NyaXB0TWVzc2FnZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0NDOTlBMzUxOEVGN0NCQzAwNDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2NyaXB0TWVzc2FnZUludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDEwMkQ5MTg2Njc3MDYwMEVENDI5RCAv
KiBBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0NENUVCQjYxNzQ2QTE1QjAwMEMxQzQ1IC8qIFdLT2JqQ1R5cGVXcmFwcGVyUmVmLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tPYmpDVHlwZVdyYXBwZXJS
ZWYubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDVFQkI3MTc0NkExNUIwMDBD
MUM0NSAvKiBXS09iakNUeXBlV3JhcHBlclJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS09iakNUeXBlV3JhcHBlclJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDQyMyw4ICs0NDMwLDExIEBACiAJCTFBQUYwODlFMTkyNjgxQUMwMEI2MzkwQyAvKiBV
c2VyQ29udGVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJN0MzNjFENkYxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNw
cCAqLywKKwkJCQk3QzM2MUQ3MDE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaCAqLywKIAkJCQkxQUFGMDg5RjE5MjY4MUQxMDBCNjM5MEMgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwICovLAogCQkJCTFBQUYwOEEwMTkyNjgxRDEwMEI2MzkwQyAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oICovLAorCQkJCTdDMzYxRDc1MTkyODAy
OEIwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiAq
LywKIAkJCSk7CiAJCQlwYXRoID0gVXNlckNvbnRlbnQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtNDg5OSwxMyArNDkwOSwxMiBAQAogCQkJCTFBN0UzNzc3MThFNEE0RkUwMDNEMEZG
RiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCAqLywKIAkJCQkxQTdFMzc3NjE4RTRBNEZFMDAzRDBGRkYg
LyogV0tTY3JpcHRNZXNzYWdlLm1tICovLAogCQkJCTFBN0UzNzc0MThFNEEzM0EwMDNEMEZGRiAv
KiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmggKi8sCi0JCQkJN0NDOTlBMzUxOEVGN0NCQzAwNDhD
OEI0IC8qIFdLU2NyaXB0TWVzc2FnZVByaXZhdGUuaCAqLywKKwkJCQk3Q0M5OUEzNTE4RUY3Q0JD
MDA0OEM4QjQgLyogV0tTY3JpcHRNZXNzYWdlSW50ZXJuYWwuaCAqLywKIAkJCQkxQUQ4NzkwOTE4
QjZDMzhBMDA2Q0FGRDcgLyogV0tVSURlbGVnYXRlLmggKi8sCiAJCQkJMzc0MzkyNTcxOEJDNEM2
MDAwMUM4Njc1IC8qIFdLVUlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKIAkJCQkxQUZBM0FDNzE4RTYx
QzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaCAqLywKIAkJCQkxQUZBM0FD
NjE4RTYxQzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8sCiAJCQkJ
MUFBRjA4QTMxOTI2ODJEQTAwQjYzOTBDIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJu
YWwuaCAqLywKLQkJCQk3Q0M5OUEzMzE4RUY3QjEyMDA0OEM4QjQgLyogV0tVc2VyQ29udGVudENv
bnRyb2xsZXJQcml2YXRlLmggKi8sCiAJCQkJMUFBRjA4OTkxOTI2N0VFNTAwQjYzOTBDIC8qIFdL
VXNlclNjcmlwdC5oICovLAogCQkJCTFBQUYwODk4MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJT
Y3JpcHQubW0gKi8sCiAJCQkJMUFBRjA4OUMxOTI2N0ZDODAwQjYzOTBDIC8qIFdLVXNlclNjcmlw
dEludGVybmFsLmggKi8sCkBAIC02NTUzLDEwICs2NTYyLDYgQEAKIAkJQzBDRTcyOUQxMjQ3RTcx
RDAwQkMwRUM0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJMUFBRjA4QjUxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJMUFBRjA4QjYxOTI2
OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmggKi8sCi0J
CQkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAotCQkJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQk1MTJGNThB
MDEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQk1MTJGNThBMTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25N
YW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQlFMTE1QzcxNTE5MEY4QTI1MDBFQ0M1MTYgLyogY29t
LmFwcGxlLldlYktpdC5EYXRhYmFzZXMuc2IgKi8sCkBAIC02NjE2LDYgKzY2MjEsOCBAQAogCQkJ
CUUxOEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggKi8sCiAJ
CQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMkRF
Njk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8q
IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLywKIAkJCQkxQUIzMUE5NDE2QkM2ODgxMDBGNkRC
QzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNjY5Miw2ICs2
Njk5LDEwIEBACiAJCQkJMzMzNjc2NTQxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgx
QiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTFGMDYw
REUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCAqLywKKwkJ
CQkxQUFGMDhCNTE5MjY5RTZEMDBCNjM5MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkxQUFGMDhCNjE5MjY5RTZEMDBCNjM5MEMgLyogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCAqLywKKwkJCQk3QzM2MUQ3NjE5MjgwM0JE
MDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLAorCQkJCTdDMzYxRDc3MTkyODAzQkQwMDM2QTU5RCAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJM0Y0MThFRjUxODg3QkQ5NzAwMjc5NUZE
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTNGNDE4RUY2MTg4N0JEOTcwMDI3OTVGRCAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVz
c2FnZXMuaCAqLywKIAkJCQkzRjQxOEVGNzE4ODdCRDk3MDAyNzk1RkQgLyogV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTY5NzEsNiArNjk4
Miw3IEBACiAJCQkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUJDM0RGQzE4OTlGNTFDMDA0RjA2MjYgLyogV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjkyMTkyMDFEQTcwMEExRkEzNyAvKiBB
UElDb250ZXh0Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzNjFENzMxOTI3
RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTA1RkU1NDE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDE0MEVCMDE4RjM3QkUwMDA1RTc1QTAgLyogUGFnZU92ZXJsYXlDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE3NzUzRjExOEJBQkYwMDA3RDlFOUEgLyogR2Vu
ZXJpY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTcwMzQsNyArNzA0Niw3IEBACiAJCQkJ
MUEyMzI4RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0M5OUEzNjE4RUY3Q0JDMDA0OEM4QjQgLyogV0tTY3Jp
cHRNZXNzYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NDOTlBMzYxOEVGN0NCQzAw
NDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTNFRUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMEUzQUE3QzEyMDlFODNDMDBBNDlEMDEgLyogTW9kdWxlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc0MTgsNyArNzQzMCw2IEBACiAJCQkJQkNFMjMxNUQxMjJDMzBD
QTAwRDVDMzVBIC8qIEFQSVVSTFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTBBMUQy
MTIyREQ1NUUwMENDOEM1MCAvKiBBUElVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJN0NDOTlBMzQxOEVGN0IxMjAwNDhDOEI0IC8qIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlDRDU1QUExMjhFMjk0
RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0REQjMyRDEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEgLyogV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTU3LDYgKzc1NjgsNyBAQAogCQkJCUJD
N0I2MzM3MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMyRDAyMTkxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1By
aXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMzYxRDc5MTkyODAzQkQwMDM2QTU5RCAvKiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE3NzQ2NTExOEI5RkY0MDA3RDlFOUEgLyogV0tQYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNFMTdCN0UxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNp
YmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODY1OSw2ICs4NjcxLDcgQEAKIAkJCQkx
QTZGQkQyOTExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDBCOTY2MTkxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUU1QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQbHVnaW5N
YWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyogV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4
MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNEE5QzlBMTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTU4ODkzMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTg4NjEsNiArODg3NCw3IEBACiAJ
CQkJNTE4NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMTExQTVCMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJDb250ZXh0TWVudUNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTAyMUU5QzEyQjE2Nzg4MDA1QzAzM0MgLyog
V2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk3QzM2MUQ3ODE5
MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyOTM1RDcxMjg4RDE5NDAwQTRCNjk1IC8q
IFdlYkNvbnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTIzMkRGOTE4QjJB
QjNBMDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxMEZCQjlBMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxMiArMjYsMjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcmlw
dENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaWYgRU5BQkxFKFVTRVJfTUVT
U0FHRV9IQU5ETEVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJNZXNzYWdlSGFuZGxlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oPgorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgy
LDQgKzkyLDc0IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGwKICAg
ICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclNjcmlwdHMobWFpblRocmVhZE5v
cm1hbFdvcmxkKCkpOwogfQogCisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKK2Ns
YXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4sIHB1YmxpYyBXZWJDb3Jl
OjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4gY3Jl
YXRlKFdlYlVzZXJDb250ZW50Q29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBu
YW1lLCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkoY29udHJvbGxlciwgbmFt
ZSwgaWRlbnRpZmllcikpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYlVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3JQcm94eSgpCisgICAgeworICAgIH0KKworICAgIC8vIFdlYkNvcmU6OlVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6OkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRQ
b3N0TWVzc2FnZShXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXImIGhhbmRsZXIsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBoYW5kbGVyLmZyYW1lKCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgCisgICAgICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZy
YW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CisgICAgICAgIGlmICghd2ViRnJhbWUpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lLT5w
YWdlKCk7CisgICAgICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uo
d2ViUGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5mcmFtZUlEKCksIG1faWRlbnRpZmllciwgSVBD
OjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVy
KCkpOworICAgIH0KKworICAgIFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IoKSB7IHJldHVybiAqbV9kZXNjcmlwdG9yOyB9CisgICAgdWludDY0X3QgaWRl
bnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFdlYlVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgaWRlbnRpZmllcikKKyAg
ICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICAgICAgLCBtX2Rlc2NyaXB0b3Io
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6Y3JlYXRlKG5hbWUsIG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCAqdGhpcykpCisgICAgICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisg
ICAgeworICAgIH0KKworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29u
dHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
cj4gbV9kZXNjcmlwdG9yOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKK307CisjZW5kaWYK
Kwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcnMoY29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlPiYgc2NyaXB0
TWVzc2FnZUhhbmRsZXJzKQoreworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCisg
ICAgZm9yIChhdXRvJiBoYW5kbGUgOiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpIHsKKyAgICAgICAg
UmVmUHRyPFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4gZGVzY3JpcHRvciA9
IFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKHRoaXMsIGhhbmRs
ZS5uYW1lLCBoYW5kbGUuaWRlbnRpZmllcik7CisKKyAgICAgICAgbV91c2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9ycy5hZGQoZGVzY3JpcHRvci0+aWRlbnRpZmllcigpLCBkZXNjcmlwdG9yKTsK
KyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3IoZGVzY3JpcHRvci0+ZGVzY3JpcHRvcigpKTsKKyAgICB9CisjZW5kaWYKK30KKwor
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQoreworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFO
RExFUlMpCisgICAgYXV0byBpdCA9IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoaXQgIT0gbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9ycy5lbmQoKSk7CisgICAgCisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92
ZVVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoaXQtPnZhbHVlLT5kZXNjcmlwdG9yKCkpOwor
ICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMucmVtb3ZlKGl0KTsKKyNlbmRpZgor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuaAkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDE1IEBACiAjZGVmaW5lIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcl9oCiAKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5OworCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyICB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKQEAgLTM5LDYgKzQz
LDggQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyJiB1c2Vy
Q29udGVudENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQo
KTsgfQogCisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fSAKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIodWlu
dDY0X3QgaWRlbnRpZmllcik7CiAKQEAgLTQ4LDggKzU0LDE0IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNlclNjcmlwdD4mIHVzZXJT
Y3JpcHRzKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CiAKKyAgICB2b2lkIGFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVySGFuZGxlPiYgc2NyaXB0TWVzc2FnZUhhbmRsZXJzKTsKKyAgICB2b2lkIHJlbW92ZVVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50NjRfdCk7CisKICAgICB1aW50NjRfdCBtX2lkZW50
aWZpZXI7CiAgICAgUmVmPFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29u
dGVudENvbnRyb2xsZXI7CisjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5Pj4gbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yczsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTY5MDE0KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI2LDQgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlciB7CiAgICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYkNvcmU6OlVz
ZXJTY3JpcHQ+IHVzZXJTY3JpcHRzKTsKICAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cygpCisKKyAg
ICBBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6OldlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVySGFuZGxlPiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOworICAgIFJlbW92ZVVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQogfQo=
</data>
<flag name="review"
          id="256112"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>