<?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>136721</bug_id>
          
          <creation_ts>2014-09-10 15:51:40 -0700</creation_ts>
          <short_desc>Rename activation to be more in line with spec language</short_desc>
          <delta_ts>2014-09-11 11:24:22 -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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1034447</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-09-10 15:51:40 -0700</bug_when>
    <thetext>Rename activation to be more in line with spec language</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034629</commentid>
    <comment_count>1</comment_count>
      <attachid>237960</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-09-11 10:10:46 -0700</bug_when>
    <thetext>Created attachment 237960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034631</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-11 10:13:20 -0700</bug_when>
    <thetext>Attachment 237960 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/Arguments.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/interpreter/CallFrame.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/debugger/DebuggerScope.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.h:28:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.h:117:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.h:119:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 10 in 52 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>1034633</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-09-11 10:15:05 -0700</bug_when>
    <thetext>These errors are either pre-existing (i don&apos;t want o change too much) or related to our inlines file that needs to be after other includes so is typically out of order.

(In reply to comment #2)
&gt; Attachment 237960 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/runtime/Arguments.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/interpreter/CallFrame.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/debugger/DebuggerScope.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.h:28:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.h:117:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
&gt; ERROR: Source/JavaScriptCore/runtime/JSLexicalEnvironment.h:119:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
&gt; Total errors found: 10 in 52 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034638</commentid>
    <comment_count>4</comment_count>
      <attachid>237960</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-09-11 10:29:01 -0700</bug_when>
    <thetext>Comment on attachment 237960
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/CallVariant.h:41
&gt; +//     instance, that is associated with a particular lexical environment. This pinpoints not just the code

Reflow the comment so that all lines break about the same length.

&gt; Source/JavaScriptCore/debugger/DebuggerScope.cpp:168
&gt; +    // lexical environment object. Hence, a lexical environment object implies a function or eval scope.

Reflow the comment line breaks.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:473
&gt; +    // a lexical environment object, the lexical environment object will only be set up after

Reflow the comment line breaks.

&gt; Source/JavaScriptCore/runtime/Arguments.cpp:388
&gt; +    // If we have a captured argument that logically aliases lexical environment storage,
&gt; +    // but we optimize away the lexicalEnvironment, the argument needs to tear off into

Reflow the comment line breaks.

&gt; Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp:2
&gt; + * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.

Add 2014

&gt; Source/JavaScriptCore/runtime/JSLexicalEnvironment.h:2
&gt; + * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.

Add 2014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034652</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-09-11 11:24:22 -0700</bug_when>
    <thetext>Committed r173517: &lt;http://trac.webkit.org/changeset/173517&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237960</attachid>
            <date>2014-09-11 10:10:46 -0700</date>
            <delta_ts>2014-09-11 10:29:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136721-20140911101042.patch</filename>
            <type>text/plain</type>
            <size>132738</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjQ4ZjMxM2Y5MzdlZjU1YzFmMWVhNjk5NDI0MmE4MWZhZThlNTM2Li5lODY0ZGY0MzA3OWYxZTQ1
YjM3ZDFjZTFmN2MxYjVkOTk2MGJlOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTQtMDktMTEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgYWN0aXZhdGlvbiB0byBiZSBtb3JlIGluIGxpbmUgd2l0aCBzcGVj
IGxhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzY3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTb21ld2hhdCBiaWdnZXIgdGhhbiB0aGUgbGFzdCBvbmUsIGJ1dCBzdGlsbCBqdXN0IGEgcmVu
YW1lLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUub3JkZXI6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50Lmg6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmlzQ2FwdHVyZWQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5hbWVG
b3JSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6c2V0QWN0aXZhdGlvblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphY3RpdmF0aW9uUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVu
Y2hlY2tlZEFjdGl2YXRpb25SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmVl
ZHNBY3RpdmF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpzZXRBY3RpdmF0aW9uUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6YWN0aXZhdGlvblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6Omhhc0FjdGl2YXRpb25SZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXR1cm4pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6
RGVidWdnZXJDYWxsRnJhbWU6OnNjb3BlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJTY29wZTo6aXNGdW5jdGlvbk9yRXZhbFNj
b3BlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnRyeUdl
dEFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRSZWdpc3RlcnMp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsZXhpY2FsRW52
aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldEFjdGl2YXRpb24pOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWU6OmFjdGl2YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGlu
dGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9SZWdpc3Rlci5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90ZWFy
X29mZl9sZXhpY2FsX2Vudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rl
YXJfb2ZmX2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90ZWFyX29mZl9h
Y3RpdmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9h
Y3RpdmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RlYXJfb2ZmX2xleGljYWxfZW52aXJvbm1lbnQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX2FjdGl2YXRpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50
aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6dGVhck9mZik6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6ZGlkVGVhck9mZkFjdGl2YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1l
bnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6b2Zmc2V0T2ZBY3RpdmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6QXJndW1lbnRzOjphcmd1bWVudCk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50
czo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmFjdGl2YXRpb25TdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcC4KKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6c3ltYm9sVGFibGVQ
dXQpOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OnN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJv
bm1lbnQ6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50Ojp0b1RoaXMpOgor
ICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6YXJndW1lbnRzR2V0dGVyKToKKyAg
ICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaC4KKyAgICAgICAgKEpTQzo6
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZp
cm9ubWVudDo6SlNMZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjphc0FjdGl2YXRp
b24pOgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6bGV4aWNhbEVudmlyb25tZW50KToKKyAgICAg
ICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OnJlZ2lzdGVyc09mZnNldCk6CisgICAgICAg
IChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50Ojp0ZWFyT2ZmKToKKyAgICAgICAgKEpTQzo6SlNM
ZXhpY2FsRW52aXJvbm1lbnQ6OmlzVG9ybk9mZik6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVu
dmlyb25tZW50OjpzdG9yYWdlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJv
bm1lbnQ6OnN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6YWxs
b2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6aXNWYWxp
ZEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmlzVmFsaWQpOgor
ICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6cmVnaXN0ZXJBdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6Cisg
ICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
aDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKwogMjAxNC0wOS0xMSAgTMOhc3psw7MgTGFu
Z8OzICA8bGxhbmdvLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0ph
dmFTY3JpcHRDb3JlXSBGaXggRlRMIG9uIHBsYXRmb3JtIEVGTC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBjNWZkNjIxNjRlMDVjOWE4YWQ1MmI4OGIxMGY3OWQxNTA4NzY3
ZDgwLi4yMjBmZWZkM2I1ZTUzNDY0ZjRiMzVjYjAyMGRkZWQ3OTU3ZDRiYWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MjcsNyArNDI3LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwCiAg
ICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNBUElWYWx1ZVdy
YXBwZXIuY3BwCi0gICAgcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisgICAgcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
CiAgICAgcnVudGltZS9KU0FycmF5LmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlciBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgppbmRleCA2MTE3Mzkx
ZmNmMzM5YmI0MWMzMmYzMjBkOTg4NTIwOTk5YjRiNmY3Li45YmE2MDQxMDE3NTlkNDQ4ZmQ1MGFm
MTE1MzU4N2I5NjY3ODI0MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUub3JkZXIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLm9yZGVyCkBAIC0xMzAwLDcgKzEzMDAsNiBAQCBfX1pOM1dURjlIYXNoVGFibGVJTlN0M19f
MTRwYWlySVBOM0pTQzhKU09iamVjdEVqRUVOU18xMktleVZhbHVlUGFpcklTNl9OUzNfNFdlYQog
X19aTjNXVEY5SGFzaFRhYmxlSU5TdDNfXzE0cGFpcklQTjNKU0M4SlNPYmplY3RFakVFTlNfMTJL
ZXlWYWx1ZVBhaXJJUzZfTlMzXzRXZWFrSU5TM185U3RydWN0dXJlRUVFRUVOU18yNEtleVZhbHVl
UGFpcktleUV4dHJhY3RvcklTQl9FRU5TXzhQYWlySGFzaElTNV9qRUVOU18xOEhhc2hNYXBWYWx1
ZVRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzZfRUVOU0hfSVNBX0VFRUVTSV9FM2FkZElOU18xN0hh
c2hNYXBUcmFuc2xhdG9ySVNLX1NGX0VFUzZfTlMzXzhQYXNzV2Vha0lTOV9FRUVFTlNfMThIYXNo
VGFibGVBZGRSZXN1bHRJTlNfMTdIYXNoVGFibGVJdGVyYXRvcklTNl9TQl9TRF9TRl9TS19TSV9F
RUVFUktUMF9SS1QxXwogX19aTjNXVEY5SGFzaFRhYmxlSU5TdDNfXzE0cGFpcklQTjNKU0M4SlNP
YmplY3RFakVFTlNfMTJLZXlWYWx1ZVBhaXJJUzZfTlMzXzRXZWFrSU5TM185U3RydWN0dXJlRUVF
RUVOU18yNEtleVZhbHVlUGFpcktleUV4dHJhY3RvcklTQl9FRU5TXzhQYWlySGFzaElTNV9qRUVO
U18xOEhhc2hNYXBWYWx1ZVRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzZfRUVOU0hfSVNBX0VFRUVT
SV9FNmxvb2t1cElOU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJU0ZfRUVTNl9FRVBTQl9SS1Qw
XwogX19aTjNXVEY5SGFzaFRhYmxlSU5TdDNfXzE0cGFpcklQTjNKU0M4SlNPYmplY3RFakVFTlNf
MTJLZXlWYWx1ZVBhaXJJUzZfTlMzXzRXZWFrSU5TM185U3RydWN0dXJlRUVFRUVOU18yNEtleVZh
bHVlUGFpcktleUV4dHJhY3RvcklTQl9FRU5TXzhQYWlySGFzaElTNV9qRUVOU18xOEhhc2hNYXBW
YWx1ZVRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzZfRUVOU0hfSVNBX0VFRUVTSV9FNnJlaGFzaEVp
Ci1fX1pOM0pTQzEySlNBY3RpdmF0aW9uNmNyZWF0ZUVSTlNfMlZNRVBOU185RXhlY1N0YXRlRVBO
U185Q29kZUJsb2NrRQogX19aTkszSlNDN0pTVmFsdWUzZ2V0RVBOU185RXhlY1N0YXRlRU5TXzEy
UHJvcGVydHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk5LM0pTQzE5QnJhY2tldEFjY2Vz
c29yTm9kZTEwaXNMb2NhdGlvbkV2CiBfX1pOSzNKU0MxOUJyYWNrZXRBY2Nlc3Nvck5vZGUyMWlz
QnJhY2tldEFjY2Vzc29yTm9kZUV2CkBAIC0xMzEyLDggKzEzMTEsNiBAQCBfX1pOSzNKU0M3SlNT
Y29wZTE0aXNEeW5hbWljU2NvcGVFUmIKIF9fWk4zSlNDMTdBc3NpZ25CcmFja2V0Tm9kZTEyZW1p
dEJ5dGVjb2RlRVJOU18xN0J5dGVjb2RlR2VuZXJhdG9yRVBOU18xMFJlZ2lzdGVySURFCiBfX1pO
M0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IxMmVtaXRQdXRCeVZhbEVQTlNfMTBSZWdpc3RlcklERVMy
X1MyXwogX19aTjNKU0MxMlJlZ0V4cE9iamVjdEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RVBOU185
U3RydWN0dXJlRVBOU182UmVnRXhwRQotX19aTjNKU0MxMkpTQWN0aXZhdGlvbjE4Z2V0T3duUHJv
cGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJO
U18xMlByb3BlcnR5U2xvdEUKLV9fWk4zSlNDMTJKU0FjdGl2YXRpb24xNHN5bWJvbFRhYmxlR2V0
RU5TXzEyUHJvcGVydHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTdPYmplY3RD
b25zdHJ1Y3RvcjE4Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRl
RU5TXzEyUHJvcGVydHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMjFnZXRTdGF0
aWNGdW5jdGlvblNsb3RJTlNfOEpTT2JqZWN0RUVFYlBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hU
YWJsZUVQUzFfTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0Mx
NEFycmF5UHJvdG90eXBlMThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVj
U3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQpAQCAtMjYyNCw3ICsy
NjIxLDYgQEAgX19aTjNKU0MxOEZ1bmN0aW9uRXhlY3V0YWJsZTEzdmlzaXRDaGlsZHJlbkVQTlNf
NkpTQ2VsbEVSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDOUNvZGVCbG9jazI5c3Ryb25nbHlW
aXNpdFN0cm9uZ1JlZmVyZW5jZXNFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzEzRXZhbENv
ZGVDYWNoZTE0dmlzaXRBZ2dyZWdhdGVFUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzlDb2Rl
QmxvY2syN3N0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlc0VSTlNfMTFTbG90VmlzaXRvckUKLV9f
Wk4zSlNDMTJKU0FjdGl2YXRpb24xM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0NlbGxFUk5TXzExU2xv
dFZpc2l0b3JFCiBfX1pOM0pTQzlDb2RlQmxvY2szMXBlcmZvcm1UcmFjaW5nRml4cG9pbnRJdGVy
YXRpb25FUk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE2SlNDYWxsYmFja09iamVjdElOU18y
MEpTRGVzdHJ1Y3RpYmxlT2JqZWN0RUUxM3Zpc2l0Q2hpbGRyZW5FUE5TXzZKU0NlbGxFUk5TXzEx
U2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE4UmVnRXhwTWF0Y2hlc0FycmF5MTN2aXNpdENoaWxkcmVu
RVBOU182SlNDZWxsRVJOU18xMVNsb3RWaXNpdG9yRQpAQCAtMzA2MCw3ICszMDU2LDYgQEAgX19a
TkszSlNDMjZVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTExcGFyYW1TdHJpbmdFdgogX19aTjNK
U0MyMmpzTWFrZU5vbnRyaXZpYWxTdHJpbmdJUEtjTjNXVEY2U3RyaW5nRVMyX1M0X1MyX1M0X0VF
TlNfN0pTVmFsdWVFUE5TXzlFeGVjU3RhdGVFVF9UMF9UMV9UMl9UM19UNF8KIF9fWk4zV1RGMTN0
cnlNYWtlU3RyaW5nSVBLY05TXzZTdHJpbmdFUzJfUzNfUzJfUzNfRUVOU18xMFBhc3NSZWZQdHJJ
TlNfMTBTdHJpbmdJbXBsRUVFVF9UMF9UMV9UMl9UM19UNF8KIF9fWk4zSlNDNFlhcnIxMkJ5dGVD
b21waWxlcjI2YWx0ZXJuYXRpdmVCb2R5RGlzanVuY3Rpb25FYgotX19aTjNKU0M5QXJndW1lbnRz
MjBkaWRUZWFyT2ZmQWN0aXZhdGlvbkVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTJKU0FjdGl2YXRpb25F
CiBfX1pOM0pTQzNKSVQyNGVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50c0VQTlNfMTFJbnN0cnVjdGlv
bkUKIF9fWk4zSlNDM0pJVDE2ZW1pdF9vcF9uZXdfZnVuY0VQTlNfMTFJbnN0cnVjdGlvbkUKIF9j
dGlfb3BfY3JlYXRlX2FyZ3VtZW50cwpAQCAtMzcyNyw4ICszNzIyLDYgQEAgX19aTjNKU0MzREZH
MTVBc3NlbWJseUhlbHBlcnM5Ym94RG91YmxlRU5TXzEyWDg2UmVnaXN0ZXJzMTNYTU1SZWdpc3Rl
cklERU5TMl8xMFIKIF9fWk4zSlNDM0RGRzEyR1BSVGVtcG9yYXJ5QzFFUE5TMF8xNFNwZWN1bGF0
aXZlSklURVJOUzBfMjNTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZEUKIF9fWk4zSlNDM0RGRzEyR1BS
VGVtcG9yYXJ5QzJFUE5TMF8xNFNwZWN1bGF0aXZlSklURVJOUzBfMjNTcGVjdWxhdGVJbnRlZ2Vy
T3BlcmFuZEUKIF9fWk4zSlNDMjNNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjljb21wYXJlMzJFTlMw
XzE5UmVsYXRpb25hbENvbmRpdGlvbkVOU18xMlg4NlJlZ2lzdGVyczEwUmVnaXN0ZXJJREVOU18y
MkFic3RyYWN0TWFjcm9Bc3NlbWJsZXJJTlNfMTJYODZBc3NlbWJsZXJFRTEyVHJ1c3RlZEltbTMy
RVMzXwotX19aTjNKU0MxMkpTQWN0aXZhdGlvbjNwdXRFUE5TXzZKU0NlbGxFUE5TXzlFeGVjU3Rh
dGVFTlNfMTJQcm9wZXJ0eU5hbWVFTlNfN0pTVmFsdWVFUk5TXzE1UHV0UHJvcGVydHlTbG90RQot
X19aTjNKU0MxMkpTQWN0aXZhdGlvbjE0c3ltYm9sVGFibGVQdXRFUE5TXzlFeGVjU3RhdGVFTlNf
MTJQcm9wZXJ0eU5hbWVFTlNfN0pTVmFsdWVFYgogX2N0aV9vcF9tb2QKIF9fWk4zSlNDM0RGRzE0
U3BlY3VsYXRpdmVKSVQyMWNvbXBpbGVPYmplY3RFcXVhbGl0eUVQTlMwXzROb2RlRQogX19aTjNK
U0NMMjRkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmdFUE5TXzlFeGVjU3RhdGVFCkBAIC00MTM1LDcg
KzQxMjgsNiBAQCBfX1pOM0pTQ0wyMGNhbGxBcnJheUNvbnN0cnVjdG9yRVBOU185RXhlY1N0YXRl
RQogX19aTjNXVEY1RGVxdWVJTlNfMTlGdW5jdGlvbldpdGhDb250ZXh0RUxtMEVFNnJlbW92ZUVt
CiBfX1pOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IyMGVtaXRMb2FkR2xvYmFsT2JqZWN0RVBOU18x
MFJlZ2lzdGVySURFCiBfX1pOM0pTQzRZYXJyMTNZYXJyR2VuZXJhdG9ySUxOUzBfMThZYXJySklU
Q29tcGlsZU1vZGVFMUVFMjlnZW5lcmF0ZVBhdHRlcm5DaGFyYWN0ZXJGaXhlZEVtCi1fX1pOM0pT
QzEySlNBY3RpdmF0aW9uMTVhcmd1bWVudHNHZXR0ZXJFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFs
dWVFTlNfMTJQcm9wZXJ0eU5hbWVFCiBfX1pOM0pTQ0wyMWRhdGVQcm90b0Z1bmNTZXRNb250aEVQ
TlNfOUV4ZWNTdGF0ZUUKIF9vcGVyYXRpb25Db21wYXJlTGVzcwogX19aTjNKU0NMMjNkYXRlUHJv
dG9GdW5jU2V0VVRDRGF0ZUVQTlNfOUV4ZWNTdGF0ZUUKQEAgLTQ3NjQsNyArNDc1Niw2IEBAIF9f
Wk4zSlNDTDI2Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pO
M0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IzNWVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0
aW9uRXYKIF9fWk4zSlNDMjJjcmVhdGVPdXRPZk1lbW9yeUVycm9yRVBOU18xNEpTR2xvYmFsT2Jq
ZWN0RQogX19aTjNKU0NMMTdtYXRoUHJvdG9GdW5jQUNvc0VQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4z
SlNDMTJKU0FjdGl2YXRpb24xNGRlbGV0ZVByb3BlcnR5RVBOU182SlNDZWxsRVBOU185RXhlY1N0
YXRlRU5TXzEyUHJvcGVydHlOYW1lRQogX19aTjNKU0MxMUpTTmFtZVNjb3BlM3B1dEVQTlNfNkpT
Q2VsbEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVOU183SlNWYWx1ZUVSTlNfMTVQ
dXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzE0c3ltYm9sVGFibGVQdXRJTlNfMTFKU05hbWVTY29w
ZUVFRWJQVF9QTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFtZUVOU183SlNWYWx1ZUViCiBf
X1pOM0pTQzE1TmFtZUNvbnN0cnVjdG9yMTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNfOENh
bGxEYXRhRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggZGExMjIx
YmMyYzFjOTA5OGIyNjFiMWI0ZjczOTg0NWJkMDgzNmQ5My4uY2VmNDNiYzk3YzgzOTFlNWY2NTI1
MzU4ZmY5ZDRhYjU0MTZiYTk4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCkBAIC03MDEsNyArNzAxLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU0FQSVZhbHVlV3JhcHBlci5jcHAiIC8+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQWN0aXZhdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTGV4aWNhbEVudmlyb25tZW50LmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcmd1bWVudHNJdGVyYXRvci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXkuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5SXRlcmF0b3IuY3BwIiAvPgpA
QCAtMTQ1NCw3ICsxNDU0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SW50ZXJuYWxGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJbnRyaW5zaWMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNB
UElWYWx1ZVdyYXBwZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNBY3RpdmF0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TGV4aWNhbEVudmlyb25tZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTQXJndW1lbnRzSXRlcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FycmF5QnVmZmVyLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggMTRhZmVjZTA5M2RmNjk0MmQzY2RiY2U5MjNlMTU5YTA3
NjMyMDcyNi4uZjE1ZTg2Njg1ZTZiMDIwYmUyNjZiMDkwMDMxZWRiYTgxMjhjNDkxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjIx
LDcgKzYyMSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFs
RnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FjdGl2YXRpb24u
Y3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMZXhpY2FsRW52aXJv
bm1lbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FQSVZhbHVlV3JhcHBl
ci5jcHAiPgpAQCAtMjU3Niw3ICsyNTc2LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSW50cmluc2ljLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQWN0
aXZhdGlvbi5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBUElWYWx1ZVdy
YXBwZXIuaCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2NTNjZTUxNTJmMDRj
MTdlNTliMWFlYTYwMDk1ZTg3MjVhZjIzMjIuLmU1ZmVjZDU4M2NmMzAzMzBiZDMyY2RlMjg2N2U1
ODlmMWYxOTc5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODIsNyArNjgy
LDcgQEAKIAkJMEZGRkM5NjAxNEVGOTBCRDAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3RlckFs
bG9jYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZGRkM5NTQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3RlckFsbG9j
YXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTE0MDU2NkM0MTA3RUMyNTUwMDVEQkM4RCAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRENTBG
QUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwICovOyB9OwogCQkxNDA1NjZE
NjEwN0VDMjcxMDA1REJDOEQgLyogSlNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1RTAyNTU1OTdEMDFGRjYwRjcgLyogSlNG
dW5jdGlvbi5jcHAgKi87IH07Ci0JCTE0MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0FjdGl2
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTREQTgxOEYwRDk5RkQyMDAwQjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5jcHAgKi87IH07CisJCTE0
MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERBODE4RjBEOTlGRDIw
MDBCMEE0RkIgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQkxNDBEMTdENzBF
OEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFz
ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxNDEyMTEzMTBBNDg3OTREMDA0ODAyNTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVC
RDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJ
MTQxMjExMzQwQTQ4Nzk1ODAwNDgwMjU1IC8qIG1pbmlkb20uYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTAyMEE0ODc4MDkwMDQ4MDI1NSAvKiBt
aW5pZG9tLmMgKi87IH07CkBAIC05NTMsNyArOTUzLDcgQEAKIAkJNTU0MDc2RkIxOERBNThBRDAw
RUZGN0YyIC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRl
bmRlZFN0cnVjdHVyZUNoYWluLmggKi87IH07CiAJCTU1NDA3NkZDMThEQTU4QUQwMEVGRjdGMiAv
KiBJbnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5o
ICovOyB9OwogCQk1NTQwNzZGRTE4REE1OEFEMDBFRkY3RjIgLyogSW50cmluc2ljLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1
MDA0REUzNkEgLyogSW50cmluc2ljLmggKi87IH07Ci0JCTU1NDA3NzE4MThEQTU4QUQwMEVGRjdG
MiAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQk1NTQwNzcxODE4REE1OEFEMDBF
RkY3RjIgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJ
CTU1NDA3NzE5MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwODk0RDYwRkFGQkEyRDAw
MDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmggKi87IH07CiAJCTU1NDA3NzFCMThEQTU4QUQw
MEVGRjdGMiAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDQzE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1
bWVudHNJdGVyYXRvci5oICovOyB9OwogCQk1NTQwNzcxQzE4REE1OEFEMDBFRkY3RjIgLyogSlNB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM4
NzcyRTUwMzhCRkUxOTAwODYzNUNFIC8qIEpTQXJyYXkuaCAqLzsgfTsKQEAgLTE2NjcsNyArMTY2
Nyw3IEBACiAJCUJDMThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOEI0QTBEMzJDMzlB
MDA0MUJDRkYgLyogSmF2YVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRD
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FB
OEI0QjBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRD
b3JlUHJlZml4LmggKi87IH07Ci0JCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0xleGljYWxFbnZpcm9ubWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCUJDMThDNDE3MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU0FycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5Mzg3NzJFNTAzOEJGRTE5MDA4NjM1Q0UgLyogSlNBcnJheS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDE4
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjcxMTM4MEE0NjBCQkIwMDgwRUVFQSAvKiBKU0Jhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDMThDNDE5
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGOEFDMEE1MDhEMjAwMDA1RjA2
MSAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCAqLzsgfTsKQEAgLTI3MDIsOCArMjcwMiw4IEBA
CiAJCTE0RDg0NEEyMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdG90eXBlTWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREODQ0QTMxNkFBMkM3MDAwQTY1QUYwIC8qIFByb3RvdHlw
ZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b3R5cGVNYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8q
IHRlc3RhcGkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSB0ZXN0
YXBpLmpzOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBY3RpdmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBY3RpdmF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREQTgxOEUwRDk5RkQyMDAwQjBB
NEZCIC8qIEpTTGV4aWNhbEVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTGV4aWNhbEVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0xleGljYWxFbnZpcm9ubWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0REUwRDY4MEQwMjQzMTQwMEFB
Q0NBMiAvKiBKU0dsb2JhbE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LmNwcDsgfTsKIAkJMTRERjA0RDkxNkIzOTk2RDAwMTZBNTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5h
bHlzaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUHJvcGVydHlB
bmFseXNpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEU4NEY5OTE0RUUxQUND
MDBENkQ1RDQgLyogV2Vha0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYWtCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDc5
LDggKzQ0NzksOCBAQAogCQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1
bmN0aW9uLmNwcCAqLywKIAkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxG
dW5jdGlvbi5oICovLAogCQkJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMu
aCAqLywKLQkJCQkxNERBODE4RjBEOTlGRDIwMDBCMEE0RkIgLyogSlNBY3RpdmF0aW9uLmNwcCAq
LywKLQkJCQkxNERBODE4RTBEOTlGRDIwMDBCMEE0RkIgLyogSlNBY3RpdmF0aW9uLmggKi8sCisJ
CQkJMTREQTgxOEYwRDk5RkQyMDAwQjBBNEZCIC8qIEpTTGV4aWNhbEVudmlyb25tZW50LmNwcCAq
LywKKwkJCQkxNERBODE4RTBEOTlGRDIwMDBCMEE0RkIgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCAqLywKIAkJCQlBNzYxNDBDQjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRv
ci5jcHAgKi8sCiAJCQkJQTc2MTQwQ0MxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRl
cmF0b3IuaCAqLywKIAkJCQk5M0FERkNFNjBDQ0JEN0FDMDBEMzBCMDggLyogSlNBcnJheS5jcHAg
Ki8sCkBAIC01NTI1LDcgKzU1MjUsNyBAQAogCQkJCTU1NDA3NURBMThEQTU4QUQwMEVGRjdGMiAv
KiBEYXRlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzY3MTE4REE1OEFEMDBF
RkY3RjIgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc2OTEx
OERBNThBRDAwRUZGN0YyIC8qIENvbnNvbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTU1NDA3NzE4MThEQTU4QUQwMEVGRjdGMiAvKiBKU0FjdGl2YXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTU1NDA3NzE4MThEQTU4QUQwMEVGRjdGMiAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3MUIxOERBNThBRDAwRUZGN0YyIC8qIEpTQXJndW1l
bnRzSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NDA3NzIyMThEQTU4QUQwMEVGRjdG
MiAvKiBKU0FycmF5SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NDA3NzQ4MThEQTU4
QUQwMEVGRjdGMiAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNjIwNSw3ICs2MjA1LDcgQEAKIAkJCQkwRjVFRjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklU
VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MTJFMzE3Q0Q4NzkzMDA4Q0M5M0MgLyog
SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FjdGl2YXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZp
cm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8q
IEpTQVBJVmFsdWVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCN0UyOTE5QTExQjgw
MDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC03NDc0LDcgKzc0NzQsNyBAQAogCQkJCTE0QTIzRDc1MEY0RTFBQkIwMDIzQ0RB
RCAvKiBKSVRTdHVicy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVFRjkxRTE2ODc4RjdBMDAz
RTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzcxMkUyMTdDRDg3
OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkxNDBCN0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNBY3RpdmF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1
MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJD
RjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3NjE0MEQxMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDY0MmM0YmI3MTM1MTIzY2I2MmUwMGNhNDI0OTkxODI3
YzIyMmFkNTcuLjA0ZTc2ZGNjMjhiM2MzOTgwZDg5MDJkNmU5MWJiYTc0NzMyYjhiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAg
LTQsNyArNCw3IEBACiAgICAgICAgICJtYWNyb05hbWVDb21wb25lbnQiIDogIkJZVEVDT0RFIiwg
ImFzbVByZWZpeCIgOiAibGxpbnRfIiwgCiAgICAgICAgICJieXRlY29kZXMiIDogWwogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZW50ZXIiLCAibGVuZ3RoIiA6IDEgfSwKLSAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9hY3RpdmF0aW9uIiwgImxlbmd0aCIgOiAyIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5n
dGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG91Y2hfZW50cnkiLCAibGVu
Z3RoIiA6IDEgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luaXRfbGF6eV9yZWciLCAi
bGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9hcmd1bWVu
dHMiLCAibGVuZ3RoIiA6IDIgfSwKQEAgLTk5LDcgKzk5LDcgQEAKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NhbGxfZXZhbCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfY2FsbF92YXJhcmdzIiwgImxlbmd0aCIgOiA5IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF90ZWFyX29mZl9hY3RpdmF0aW9uIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF90ZWFyX29mZl9sZXhpY2FsX2Vudmlyb25tZW50IiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90ZWFyX29mZl9hcmd1bWVudHMiLCAibGVu
Z3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3JldCIsICJsZW5ndGgiIDog
MiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmV0X29iamVjdF9vcl90aGlzIiwgImxl
bmd0aCIgOiAzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCmluZGV4IDM0NWY3MTA3OTA3N2Y5OTIyZmU1YzViYzk3NDU0YTllOGNhZjMzMWQu
LjQ1YjY1NDhlMDBmOWFkZDVjMTY0MjI4ZDRjNDIzMDBiNTBhMGFjZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC01OSwxMCArNTks
MTAgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19jYXB0dXJlZF9mdW5jOgot
ICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246IAorICAgIGNhc2Ugb3BfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQ6IAogICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czoKICAgICBjYXNl
IG9wX3RvX3RoaXM6Ci0gICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIGNhc2Ug
b3BfdGVhcl9vZmZfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2ls
bF9jYWxsOgogICAgIGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2FsbDoKICAgICBjYXNlIG9wX3Byb2Zp
bGVfdHlwZToKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAg
IGNhc2Ugb3BfbmV4dF9lbnVtZXJhdG9yX3BuYW1lOgogICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29w
ZToKICAgICBjYXNlIG9wX3N0cmNhdDoKLSAgICBjYXNlIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246
CisgICAgY2FzZSBvcF90ZWFyX29mZl9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3Bf
dG9fcHJpbWl0aXZlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfdGhp
czoKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ug
b3BfdG9fdGhpczoKICAgICBjYXNlIG9wX2dldF9jYWxsZWU6CiAgICAgY2FzZSBvcF9pbml0X2xh
enlfcmVnOgotICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgY2FzZSBvcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6CiAg
ICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAppbmRleCBlODU5ODNjYjU0ZTc4
ODJmYWFmYzk1MTk3ZWRhYTk0NTk2YjhjYzVhLi5hZjYxZWQ3NWExMGQ0YWUzNmUzMGE4Yjg4MDdh
ZDc4NTk1MDA2NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGNhbGxlZSBpbiBv
bmUgb2YgdGhlIGZvbGxvd2luZyBmb3VyIGZvcm1zOgogLy8KIC8vIEpTRnVuY3Rpb24gY2FsbGVl
OiBUaGlzIG1lYW5zIHRoYXQgd2UgZXhwZWN0IHRoZSBjYWxsc2l0ZSB0byBhbHdheXMgY2FsbCBh
IHBhcnRpY3VsYXIgZnVuY3Rpb24KLS8vICAgICBpbnN0YW5jZSwgdGhhdCBpcyBhc3NvY2lhdGVk
IHdpdGggYSBwYXJ0aWN1bGFyIGFjdGl2YXRpb24uIFRoaXMgcGlucG9pbnRzIG5vdCBqdXN0IHRo
ZSBjb2RlCisvLyAgICAgaW5zdGFuY2UsIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGlj
dWxhciBsZXhpY2FsIGVudmlyb25tZW50LiBUaGlzIHBpbnBvaW50cyBub3QganVzdCB0aGUgY29k
ZQogLy8gICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgKGkuZS4gdGhlIGV4ZWN1dGFibGUpIGJ1dCBh
bHNvIHRoZSBzY29wZSB3aXRoaW4gd2hpY2ggdGhlIGNvZGUgcnVucy4KIC8vCiAvLyBFeGVjdXRh
YmxlIGNhbGxlZTogVGhpcyBjb3JyZXNwb25kcyB0byBhIGNhbGwgdG8gYSBjbG9zdXJlLiBJbiB0
aGlzIGNhc2UsIHdlIGtub3cgdGhhdCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNDc4YTc4OTQ0M2VmMDg2MjExZDU1M2NhZTg5ZGIxZDUx
YWY0NWFhNC4uYTFmZWRlNTllMjJiMzBiNzBjOTZmMTg5MjNhYWFlMjAyMjRkOWJlZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzLDkgKzQz
LDkgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVFN0dWJzLmgiCi0jaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0xleGljYWxF
bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRF
bnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgpAQCAtNTg4LDcg
KzU4OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkK
ICAgICAgICAgICAgIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3Rl
cigpKS5vZmZzZXQoKSk7CiAgICAgfQogICAgIGlmIChuZWVkc0FjdGl2YXRpb24oKSAmJiBjb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAgb3V0LnByaW50ZigiOyBhY3RpdmF0aW9u
IGluIHIlZCIsIGFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgpKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiOyBsZXhpY2FsIGVudmlyb25tZW50IGluIHIlZCIsIGFjdGl2YXRpb25SZWdpc3Rlcigp
Lm9mZnNldCgpKTsKICAgICBvdXQucHJpbnRmKCJcbiIpOwogICAgIAogICAgIFN0dWJJbmZvTWFw
IHN0dWJJbmZvczsKQEAgLTc0Myw5ICs3NDMsOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAidG91Y2hfZW50cnkiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246IHsKKyAgICAgICAgY2FzZSBvcF9jcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjcmVhdGVfYWN0aXZhdGlvbiIsIHIwKTsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50IiwgcjApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOiB7CkBAIC0x
MzE3LDkgKzEzMTcsOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIG9wX3RlYXJf
b2ZmX2FjdGl2YXRpb246IHsKKyAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9sZXhpY2FsX2Vudmly
b25tZW50OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInRlYXJfb2ZmX2FjdGl2YXRpb24iLCByMCk7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0ZWFy
X29mZl9sZXhpY2FsX2Vudmlyb25tZW50IiwgcjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6IHsKQEAgLTE2MzcsNyAr
MTYzNyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJs
b2NrJiBvdGhlcikKICAgICAsIG1faW5zdHJ1Y3Rpb25zKG90aGVyLm1faW5zdHJ1Y3Rpb25zKQog
ICAgICwgbV90aGlzUmVnaXN0ZXIob3RoZXIubV90aGlzUmVnaXN0ZXIpCiAgICAgLCBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyKG90aGVyLm1fYXJndW1lbnRzUmVnaXN0ZXIpCi0gICAgLCBtX2FjdGl2YXRp
b25SZWdpc3RlcihvdGhlci5tX2FjdGl2YXRpb25SZWdpc3RlcikKKyAgICAsIG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIob3RoZXIubV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcikKICAg
ICAsIG1faXNTdHJpY3RNb2RlKG90aGVyLm1faXNTdHJpY3RNb2RlKQogICAgICwgbV9uZWVkc0Fj
dGl2YXRpb24ob3RoZXIubV9uZWVkc0FjdGl2YXRpb24pCiAgICAgLCBtX21heUJlRXhlY3V0aW5n
KGZhbHNlKQpAQCAtMTY5Niw3ICsxNjk2LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAg
ICAsIG1fdm0odW5saW5rZWRDb2RlQmxvY2stPnZtKCkpCiAgICAgLCBtX3RoaXNSZWdpc3Rlcih1
bmxpbmtlZENvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkpCiAgICAgLCBtX2FyZ3VtZW50c1JlZ2lz
dGVyKHVubGlua2VkQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKQotICAgICwgbV9hY3Rp
dmF0aW9uUmVnaXN0ZXIodW5saW5rZWRDb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKQor
ICAgICwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcih1bmxpbmtlZENvZGVCbG9jay0+YWN0
aXZhdGlvblJlZ2lzdGVyKCkpCiAgICAgLCBtX2lzU3RyaWN0TW9kZSh1bmxpbmtlZENvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX25lZWRzQWN0aXZhdGlvbih1bmxpbmtlZENvZGVC
bG9jay0+aGFzQWN0aXZhdGlvblJlZ2lzdGVyKCkgJiYgdW5saW5rZWRDb2RlQmxvY2stPmNvZGVU
eXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAgICwgbV9tYXlCZUV4ZWN1dGluZyhmYWxzZSkKQEAg
LTE5NTAsOCArMTk1MCw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBS
ZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgbmVlZHNBY3RpdmF0aW9uKCksIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlKTsK
ICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgM10udS5vcGVyYW5kID0gb3AudHlwZTsKICAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gb3AuZGVwdGg7Ci0gICAg
ICAgICAgICBpZiAob3AuYWN0aXZhdGlvbikKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIDVdLnUuYWN0aXZhdGlvbi5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AuYWN0aXZh
dGlvbik7CisgICAgICAgICAgICBpZiAob3AubGV4aWNhbEVudmlyb25tZW50KQorICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0udS5sZXhpY2FsRW52aXJvbm1lbnQuc2V0KCp2bSgp
LCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCkBAIC0yMDE2LDcgKzIwMTYsNyBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbgogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgb3RoZXIgdmFsdWVzIGZv
ciBvcC50eXBlIGhlcmUsIGFuZCBhbHNvIGNvbnNpZGVyIHdoYXQgdG8gZG8gd2hlbiB3ZSBjYW4n
dCBzdGF0aWNhbGx5IGRldGVybWluZSB0aGUgZ2xvYmFsSUQKICAgICAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTg0CiAgICAgICAgICAg
ICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikKLSAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sVGFibGUgPSBvcC5hY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZSA9IG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsK
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKICAgICAgICAg
ICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFi
bGUoKTsKICAgICAgICAgICAgICAgICAKQEAgLTI1MzQsMTIgKzI1MzQsMTIgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkKICAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvblsyXS51LmpzQ2VsbC5jbGVhcigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOiB7Ci0gICAgICAgICAgICAgICAgV3JpdGVC
YXJyaWVyQmFzZTxKU0FjdGl2YXRpb24+JiBhY3RpdmF0aW9uID0gY3VySW5zdHJ1Y3Rpb25bNV0u
dS5hY3RpdmF0aW9uOwotICAgICAgICAgICAgICAgIGlmICghYWN0aXZhdGlvbiB8fCBIZWFwOjpp
c01hcmtlZChhY3RpdmF0aW9uLmdldCgpKSkKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJC
YXNlPEpTTGV4aWNhbEVudmlyb25tZW50PiYgbGV4aWNhbEVudmlyb25tZW50ID0gY3VySW5zdHJ1
Y3Rpb25bNV0udS5sZXhpY2FsRW52aXJvbm1lbnQ7CisgICAgICAgICAgICAgICAgaWYgKCFsZXhp
Y2FsRW52aXJvbm1lbnQgfHwgSGVhcDo6aXNNYXJrZWQobGV4aWNhbEVudmlyb25tZW50LmdldCgp
KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5n
IGRlYWQgYWN0aXZhdGlvbiAlcC5cbiIsIGFjdGl2YXRpb24uZ2V0KCkpOwotICAgICAgICAgICAg
ICAgIGFjdGl2YXRpb24uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIGRlYWQgbGV4aWNhbEVudmlyb25tZW50ICVwLlxuIiwgbGV4aWNhbEVudmlyb25tZW50
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQuY2xlYXIoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2Zyb21fc2NvcGU6CkBAIC0yODMxLDcgKzI4MzEsNyBAQCBib29sIENvZGVCbG9jazo6aXND
YXB0dXJlZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRgogICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBpbmxpbmVDYWxs
RnJhbWUtPmNhcHR1cmVkVmFycy5nZXQob3BlcmFuZC50b0xvY2FsKCkpOwogCi0gICAgLy8gVGhl
IGFjdGl2YXRpb24gb2JqZWN0IGlzbid0IGluIHRoZSBjYXB0dXJlZCByZWdpb24sIGJ1dCBpdCdz
ICJjYXB0dXJlZCIKKyAgICAvLyBUaGUgbGV4aWNhbCBlbnZpcm9ubWVudCBvYmplY3QgaXNuJ3Qg
aW4gdGhlIGNhcHR1cmVkIHJlZ2lvbiwgYnV0IGl0J3MgImNhcHR1cmVkIgogICAgIC8vIGluIHRo
ZSBzZW5zZSB0aGF0IHN0b3JlcyB0byBpdHMgbG9jYXRpb24gY2FuIGJlIG9ic2VydmVkIGluZGly
ZWN0bHkuCiAgICAgaWYgKG5lZWRzQWN0aXZhdGlvbigpICYmIG9wZXJhbmQgPT0gYWN0aXZhdGlv
blJlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzgzNyw3ICszODM3LDcgQEAg
U3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlvbigpICYm
IHZpcnR1YWxSZWdpc3RlciA9PSBhY3RpdmF0aW9uUmVnaXN0ZXIoKSkKLSAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiYWN0aXZhdGlvbiIpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJsZXhpY2FsIGVudmlyb25tZW50Iik7CiAgICAgaWYgKHZpcnR1YWxSZWdpc3RlciA9PSB0aGlz
UmVnaXN0ZXIoKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGhpcyIpOwogICAgIGlm
ICh1c2VzQXJndW1lbnRzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAppbmRleCBkMzE2ZWM0OWRiYmM3N2VmM2JlNDY4ZjNmZTc2YzI1MmZlNjExODcwLi5h
ODYwNDI1NjlmNjllYTQwMmUxMDA1NjdhNmQ0ZjRmMzU3ZWUyNmM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zNDIsMjUgKzM0MiwyNSBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZvaWQgc2V0QWN0aXZhdGlvblJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rl
ciBhY3RpdmF0aW9uUmVnaXN0ZXIpCiAgICAgewotICAgICAgICBtX2FjdGl2YXRpb25SZWdpc3Rl
ciA9IGFjdGl2YXRpb25SZWdpc3RlcjsKKyAgICAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3RlciA9IGFjdGl2YXRpb25SZWdpc3RlcjsKICAgICB9CiAKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YWN0aXZhdGlvblJlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2FjdGl2
YXRpb25SZWdpc3Rlci5pc1ZhbGlkKCkpOwotICAgICAgICByZXR1cm4gbV9hY3RpdmF0aW9uUmVn
aXN0ZXI7CisgICAgICAgIEFTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLmlzVmFs
aWQoKSk7CisgICAgICAgIHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyOwogICAg
IH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciB1bmNoZWNrZWRBY3RpdmF0aW9uUmVnaXN0ZXIoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYWN0aXZhdGlvblJlZ2lzdGVyOworICAgICAgICByZXR1
cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKICAgICB9CiAKICAgICBib29sIHVzZXNB
cmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyLmlzVmFsaWQoKTsg
fQogCiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fYWN0aXZhdGlvblJlZ2lzdGVyLmlzVmFsaWQoKSA9PSBtX25lZWRzQWN0aXZhdGlvbik7
CisgICAgICAgIEFTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLmlzVmFsaWQoKSA9
PSBtX25lZWRzQWN0aXZhdGlvbik7CiAgICAgICAgIHJldHVybiBtX25lZWRzQWN0aXZhdGlvbjsK
ICAgICB9CiAgICAgCkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFy
cmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90
aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fYXJndW1lbnRzUmVnaXN0ZXI7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIG1fYWN0aXZhdGlvblJlZ2lzdGVyOworICAgIFZpcnR1YWxSZWdp
c3RlciBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyOwogCiAgICAgYm9vbCBtX2lzU3RyaWN0
TW9kZTsKICAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAppbmRleCAxODFlNDRjNTc2ODY1N2RjNGUyYzViZDYx
YjFmNDk4N2IwN2NhYzY5Li5hYjlkMmQ2ZDk0ODAwZmJmZTdjZDI0NWMzZjM4NWZmMzEyOTg2Mjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAt
MTE3LDcgKzExNyw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUqIGFycmF5QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgICAgIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKICAgICAgICAgVmFyaWFibGVX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0OwotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpT
QWN0aXZhdGlvbj4gYWN0aXZhdGlvbjsKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0xleGlj
YWxFbnZpcm9ubWVudD4gbGV4aWNhbEVudmlyb25tZW50OwogICAgICAgICB2b2lkKiBwb2ludGVy
OwogICAgICAgICBib29sKiBwcmVkaWNhdGVQb2ludGVyOwogICAgICAgICBUb1RoaXNTdGF0dXMg
dG9UaGlzU3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAppbmRleCAyMmU1MDgwNGFkNDgwNjBjMGY3ZjZjMWU2YmNmMmU1NGZk
ZDAxZmU5Li42NWYyOGJkNjBmYzc1MDgwZDZhNjVkNzk2MTNmOWQ1ZWE5NDUyMWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApA
QCAtMjgyLDcgKzI4Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNwZWNpYWwgcmVnaXN0ZXJzCiAg
ICAgdm9pZCBzZXRUaGlzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3RlcikgeyBt
X3RoaXNSZWdpc3RlciA9IHRoaXNSZWdpc3RlcjsgfQotICAgIHZvaWQgc2V0QWN0aXZhdGlvblJl
Z2lzdGVyKFZpcnR1YWxSZWdpc3RlciBhY3RpdmF0aW9uUmVnaXN0ZXIpIHsgbV9hY3RpdmF0aW9u
UmVnaXN0ZXIgPSBhY3RpdmF0aW9uUmVnaXN0ZXI7IH0KKyAgICB2b2lkIHNldEFjdGl2YXRpb25S
ZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgYWN0aXZhdGlvblJlZ2lzdGVyKSB7IG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIgPSBhY3RpdmF0aW9uUmVnaXN0ZXI7IH0KIAogICAgIHZvaWQgc2V0
QXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyKSB7IG1f
YXJndW1lbnRzUmVnaXN0ZXIgPSBhcmd1bWVudHNSZWdpc3RlcjsgfQogICAgIGJvb2wgdXNlc0Fy
Z3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpOyB9
CkBAIC00MjksOCArNDI5LDggQEAgcHVibGljOgogICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdp
c3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9Ci0gICAgVmlydHVhbFJlZ2lz
dGVyIGFjdGl2YXRpb25SZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZhdGlvblJlZ2lz
dGVyOyB9Ci0gICAgYm9vbCBoYXNBY3RpdmF0aW9uUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2YXRpb25SZWdpc3Rlci5pc1ZhbGlkKCk7IH0KKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYWN0
aXZhdGlvblJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3RlcjsgfQorICAgIGJvb2wgaGFzQWN0aXZhdGlvblJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlci5pc1ZhbGlkKCk7IH0KIAogICAgIHZvaWQgYWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uKQogICAgIHsKQEAgLTUyMCw3ICs1MjAsNyBAQCBwcml2YXRlOgogCiAgICAgVmlydHVhbFJl
Z2lzdGVyIG1fdGhpc1JlZ2lzdGVyOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX2FyZ3VtZW50c1Jl
Z2lzdGVyOwotICAgIFZpcnR1YWxSZWdpc3RlciBtX2FjdGl2YXRpb25SZWdpc3RlcjsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgbV9nbG9iYWxPYmplY3RSZWdpc3RlcjsKIAogICAgIGJvb2wgbV9uZWVkc0Z1bGxT
Y29wZUNoYWluIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMmZkNWIzYTVkNTkyYTgzMGMzNTQ3
M2JmMDc4NTIzY2QwZjQwYWJlNi4uNTcxZjM5YTVlOTcxNjc0ZWIwYzllNTZhMjY0ZGVhMzliMjY4
MDliMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKLSNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0xNjQsNyAr
MTY0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJv
Z3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICAsIG1fc2NvcGVOb2RlKHByb2dy
YW1Ob2RlKQogICAgICwgbV9jb2RlQmxvY2sodm0sIGNvZGVCbG9jaykKICAgICAsIG1fdGhpc1Jl
Z2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCi0gICAgLCBtX2FjdGl2YXRp
b25SZWdpc3RlcigwKQorICAgICwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcigwKQogICAg
ICwgbV9lbXB0eVZhbHVlUmVnaXN0ZXIoMCkKICAgICAsIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIo
MCkKICAgICAsIG1fZmluYWxseURlcHRoKDApCkBAIC0yMDgsNyArMjA4LDcgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y3Rpb25Cb2R5LCBVbmwKICAgICAsIG1fc3ltYm9sVGFibGUoY29kZUJsb2NrLT5zeW1ib2xUYWJs
ZSgpKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Cb2R5KQogICAgICwgbV9jb2RlQmxvY2so
dm0sIGNvZGVCbG9jaykKLSAgICAsIG1fYWN0aXZhdGlvblJlZ2lzdGVyKDApCisgICAgLCBtX2xl
eGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKDApCiAgICAgLCBtX2VtcHR5VmFsdWVSZWdpc3Rlcigw
KQogICAgICwgbV9nbG9iYWxPYmplY3RSZWdpc3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgo
MCkKQEAgLTI0NSwxMSArMjQ1LDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAKICAgICBl
bWl0T3Bjb2RlKG9wX2VudGVyKTsKICAgICBpZiAobV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSB7Ci0gICAgICAgIG1fYWN0aXZhdGlv
blJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0gICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKG1fYWN0
aXZhdGlvblJlZ2lzdGVyKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldEFjdGl2YXRpb25SZWdp
c3RlcihtX2FjdGl2YXRpb25SZWdpc3Rlci0+dmlydHVhbFJlZ2lzdGVyKCkpOwotICAgICAgICBl
bWl0T3Bjb2RlKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgbV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlciA9IGFkZFZhcigpOworICAgICAgICBlbWl0SW5pdExhenlSZWdp
c3RlcihtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgbV9jb2RlQmxvY2st
PnNldEFjdGl2YXRpb25SZWdpc3RlcihtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLT52aXJ0
dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9sZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQogCiAgICAgbV9zeW1ib2xUYWJsZS0+c2V0
Q2FwdHVyZVN0YXJ0KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKG1fY29kZUJsb2NrLT5tX251bVZh
cnMpLm9mZnNldCgpKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENv
ZAogICAgICwgbV9zY29wZU5vZGUoZXZhbE5vZGUpCiAgICAgLCBtX2NvZGVCbG9jayh2bSwgY29k
ZUJsb2NrKQogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZz
ZXQoKSkKLSAgICAsIG1fYWN0aXZhdGlvblJlZ2lzdGVyKDApCisgICAgLCBtX2xleGljYWxFbnZp
cm9ubWVudFJlZ2lzdGVyKDApCiAgICAgLCBtX2VtcHR5VmFsdWVSZWdpc3RlcigwKQogICAgICwg
bV9nbG9iYWxPYmplY3RSZWdpc3RlcigwKQogICAgICwgbV9maW5hbGx5RGVwdGgoMCkKQEAgLTE4
NTUsMTUgKzE4NTUsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxs
VmFyYXJncyhPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwKIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQogewotICAgIGlm
IChtX2FjdGl2YXRpb25SZWdpc3RlcikgewotICAgICAgICBlbWl0T3Bjb2RlKG9wX3RlYXJfb2Zm
X2FjdGl2YXRpb24pOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9hY3RpdmF0aW9u
UmVnaXN0ZXItPmluZGV4KCkpOworICAgIGlmIChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
KSB7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfbGV4aWNhbF9lbnZpcm9ubWVudCk7
CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyLT5pbmRleCgpKTsKICAgICB9CiAKICAgICBpZiAobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVu
dHMoKSAmJiBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICE9IDEgJiYgIWlzU3RyaWN0TW9k
ZSgpKSB7CiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3Rlcigp
Lm9mZnNldCgpKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJl
Z2lzdGVyID8gbV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkgOiBlbWl0TG9hZCgwLCBKU1Zh
bHVlKCkpLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fbGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXIgPyBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLT5pbmRl
eCgpIDogZW1pdExvYWQoMCwgSlNWYWx1ZSgpKS0+aW5kZXgoKSk7CiAgICAgfQogCiAgICAgLy8g
Q29uc3RydWN0b3JzIHVzZSBvcF9yZXRfb2JqZWN0X29yX3RoaXMgdG8gY2hlY2sgdGhlIHJlc3Vs
dCBpcyBhbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDc5YWJiZjIyNDllYmMyZDM0OGIwNmJmZjkzMjBmZWZm
MjM5NGVjNzAuLjAxYzYxOWEyNGZjNzQ0NmY4ODU5YTQwYzc3ZDBjMjY1MGE4YTlhYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKQEAgLTcxMCw3ICs3MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
aXN0ZXJJRCBtX2lnbm9yZWRSZXN1bHRSZWdpc3RlcjsKICAgICAgICAgUmVnaXN0ZXJJRCBtX3Ro
aXNSZWdpc3RlcjsKICAgICAgICAgUmVnaXN0ZXJJRCBtX2NhbGxlZVJlZ2lzdGVyOwotICAgICAg
ICBSZWdpc3RlcklEKiBtX2FjdGl2YXRpb25SZWdpc3RlcjsKKyAgICAgICAgUmVnaXN0ZXJJRCog
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9lbXB0
eVZhbHVlUmVnaXN0ZXI7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZ2xvYmFsT2JqZWN0UmVnaXN0
ZXI7CiAgICAgICAgIFZlY3RvcjxJZGVudGlmaWVyLCAxNj4gbV93YXRjaGFibGVWYXJpYWJsZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcAppbmRleCBlNjJlYTA3Nzk2ZGEzZWE5ZmJiMzk3ZTE1ODdmYzUyY2I4OTE3NzYxLi42
ZDYwZDkzZjdiYTg2OTUyZWU1Mjg0MDljN2FmNGVhYTY1NjdjNWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTMz
LDggKzMzLDggQEAKICNpbmNsdWRlICJEZWJ1Z2dlckV2YWxFbmFibGVyLmgiCiAjaW5jbHVkZSAi
RGVidWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCi0jaW5jbHVkZSAiSlNB
Y3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNl
ci5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpAQCAtMTQ2LDkgKzE0Niw5IEBAIERlYnVn
Z2VyU2NvcGUqIERlYnVnZ2VyQ2FsbEZyYW1lOjpzY29wZSgpCiAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICBpZiAoY29kZUJs
b2NrICYmIGNvZGVCbG9jay0+bmVlZHNBY3RpdmF0aW9uKCkgJiYgIW1fY2FsbEZyYW1lLT5oYXNB
Y3RpdmF0aW9uKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9jYWxsRnJhbWUtPnNjb3BlKCkt
PmlzV2l0aFNjb3BlKCkpOwotICAgICAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
SlNBY3RpdmF0aW9uOjpjcmVhdGUodm0sIG1fY2FsbEZyYW1lLCBjb2RlQmxvY2spOwotICAgICAg
ICAgICAgbV9jYWxsRnJhbWUtPnNldEFjdGl2YXRpb24oYWN0aXZhdGlvbik7Ci0gICAgICAgICAg
ICBtX2NhbGxGcmFtZS0+c2V0U2NvcGUoYWN0aXZhdGlvbik7CisgICAgICAgICAgICBKU0xleGlj
YWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OmNyZWF0ZSh2bSwgbV9jYWxsRnJhbWUsIGNvZGVCbG9jayk7CisgICAgICAgICAgICBtX2NhbGxG
cmFtZS0+c2V0QWN0aXZhdGlvbihsZXhpY2FsRW52aXJvbm1lbnQpOworICAgICAgICAgICAgbV9j
YWxsRnJhbWUtPnNldFNjb3BlKGxleGljYWxFbnZpcm9ubWVudCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBtX3Njb3BlLnNldCh2bSwgRGVidWdnZXJTY29wZTo6Y3JlYXRlKHZtLCBtX2NhbGxGcmFt
ZS0+c2NvcGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyU2NvcGUuY3BwCmluZGV4IDAxNDI0NTIxMjJmMzJhNTg4MTllNTc4MDg1MTM3Y2FiNTYzYjU5
NDguLjNmMzhmMzdhNWMwOTRkYjdkOTU5ZmUxNjBkZjU2ODZmNzIxYzAwNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgi
CiAKLSNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogCkBAIC0xNjUsNyArMTY1LDcgQEAgYm9vbCBEZWJ1Z2dlclNjb3BlOjppc0dsb2JhbFNjb3Bl
KCkgY29uc3QKIGJvb2wgRGVidWdnZXJTY29wZTo6aXNGdW5jdGlvbk9yRXZhbFNjb3BlKCkgY29u
c3QKIHsKICAgICAvLyBJbiB0aGUgY3VycmVudCBkZWJ1Z2dlciBpbXBsZW1lbnRhdGlvbiwgZXZl
cnkgZnVuY3Rpb24gb3IgZXZhbCB3aWxsIGNyZWF0ZSBhbgotICAgIC8vIGFjdGl2YXRpb24gb2Jq
ZWN0LiBIZW5jZSwgYW4gYWN0aXZhdGlvbiBvYmplY3QgaW1wbGllcyBhIGZ1bmN0aW9uIG9yIGV2
YWwgc2NvcGUuCisgICAgLy8gbGV4aWNhbCBlbnZpcm9ubWVudCBvYmplY3QuIEhlbmNlLCBhIGxl
eGljYWwgZW52aXJvbm1lbnQgb2JqZWN0IGltcGxpZXMgYSBmdW5jdGlvbiBvciBldmFsIHNjb3Bl
LgogICAgIHJldHVybiBtX3Njb3BlLT5pc0FjdGl2YXRpb25PYmplY3QoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhOGJh
NWI5NWQ4N2Y2MjY1ZWZjZTYzMTNiNzg4ZGRhMDAxMWJlOTExLi5kZmZlY2ZlZGUyOTE1YjgwMDRi
MTM4MmU0NTUxYTJkY2ZmMWNhY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkRGR0pJ
VENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgot
I2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKQEAgLTMxOTMsMTEgKzMxOTMsMTEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICAgICAgICAg
IGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAgICAgICAgICAgICAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5hY3Rp
dmF0aW9uLmdldCgpOwotICAgICAgICAgICAgICAgIGlmIChhY3RpdmF0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICYmIGFjdGl2YXRpb24tPnN5bWJvbFRhYmxlKCktPm1fZnVuY3Rpb25FbnRlcmVk
T25jZS5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZ1
bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE9wSW5mbyhhY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgp
KSk7Ci0gICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgd2Vha0pT
Q29uc3RhbnQoYWN0aXZhdGlvbikpOworICAgICAgICAgICAgICAgIEpTTGV4aWNhbEVudmlyb25t
ZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5sZXhpY2Fs
RW52aXJvbm1lbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKGxleGljYWxFbnZpcm9ubWVu
dAorICAgICAgICAgICAgICAgICAgICAmJiBsZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxl
KCktPm1fZnVuY3Rpb25FbnRlcmVkT25jZS5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE9wSW5mbyhsZXhp
Y2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudChsZXhpY2FsRW52aXJvbm1lbnQp
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgZ2V0U2NvcGUoZGVwdGgpKTsKQEAg
LTMyNjksOCArMzI2OSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNl
IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogc2NvcGVOb2RlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpOwotICAgICAgICAgICAg
ICAgIGlmIChKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBtX2dyYXBoLnRyeUdldEFjdGl2YXRp
b24oc2NvcGVOb2RlKSkgewotICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9s
VGFibGUgPSBhY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgICAgIGlmIChK
U0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gbV9ncmFwaC50cnlHZXRB
Y3RpdmF0aW9uKHNjb3BlTm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlID0gbGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOwogICAgICAg
ICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9s
b2NrKTsKICAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlLT5maW5kKGxvY2tlciwgdWlkKTsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGl0ZXIgIT0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpKTsKQEAgLTMzODksOSArMzM4
OSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbml0X2xhenlfcmVnKTsKICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246IHsKKyAgICAgICAg
Y2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDogewogICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFw
aChDcmVhdGVBY3RpdmF0aW9uLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpKSkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2Fj
dGl2YXRpb24pOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVh
dGVfYXJndW1lbnRzOiB7CkBAIC0zNDAyLDkgKzM0MDIsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Y3JlYXRlX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IG9wX3RlYXJfb2ZmX2FjdGl2YXRpb246IHsKKyAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9sZXhp
Y2FsX2Vudmlyb25tZW50OiB7CiAgICAgICAgICAgICBhZGRUb0dyYXBoKFRlYXJPZmZBY3RpdmF0
aW9uLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF90ZWFyX29mZl9hY3RpdmF0aW9uKTsKKyAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RlYXJfb2ZmX2xleGljYWxfZW52aXJvbm1lbnQpOwog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBlNzc1ZmVh
ZDYyZGRhMjZkZDVjMjFjOGVmMzczNGQwZDZmNDFmMGNjLi4yN2RkNmNjNTE1ZDEwMTY0MzRiNDll
MWIyOGY4NTU2MDAyZThjYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCkBAIC0yMzAsOCArMjMwLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWMKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAKICAgICBjYXNlIG9wX25ld19yZWdl
eHA6IAotICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246Ci0gICAgY2FzZSBvcF90ZWFyX29m
Zl9hY3RpdmF0aW9uOgorICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6Cisg
ICAgY2FzZSBvcF90ZWFyX29mZl9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfbmV3
X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfY2FwdHVyZWRfZnVuYzoKICAgICBjYXNlIG9wX25ld19m
dW5jX2V4cDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggN2RhN2Rm
OTE1MDcxYzgyMTVjMTIwZDM0NDBjMWI4NWM2MDVkNzA3Zi4uMzc5OTcxMmEwNjYwZGE2MWY1ZWY1
NjM2ZmRkYzM1YWMxMDNmMjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKICNpbmNsdWRlICJKSVQuaCIKLSNp
bmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAi
T3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtODUyLDE5ICs4
NTIsMTkgQEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShjb25zdCBBYnN0
cmFjdFZhbHVlJiBiYXNlLCBQcm9wZXJ0eU9mZnNldAogICAgIHJldHVybiB0cnlHZXRDb25zdGFu
dFByb3BlcnR5KGJhc2UubV92YWx1ZSwgYmFzZS5tX3N0cnVjdHVyZSwgb2Zmc2V0KTsKIH0KIAot
SlNBY3RpdmF0aW9uKiBHcmFwaDo6dHJ5R2V0QWN0aXZhdGlvbihOb2RlKiBub2RlKQorSlNMZXhp
Y2FsRW52aXJvbm1lbnQqIEdyYXBoOjp0cnlHZXRBY3RpdmF0aW9uKE5vZGUqIG5vZGUpCiB7Ci0g
ICAgcmV0dXJuIG5vZGUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNBY3RpdmF0aW9uKj4oKTsKKyAg
ICByZXR1cm4gbm9kZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0xleGljYWxFbnZpcm9ubWVudCo+
KCk7CiB9CiAKIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIEdyYXBoOjp0cnlHZXRSZWdpc3Rl
cnMoTm9kZSogbm9kZSkKIHsKLSAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSB0cnlHZXRB
Y3RpdmF0aW9uKG5vZGUpOwotICAgIGlmICghYWN0aXZhdGlvbikKKyAgICBKU0xleGljYWxFbnZp
cm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50ID0gdHJ5R2V0QWN0aXZhdGlvbihub2RlKTsKKyAg
ICBpZiAoIWxleGljYWxFbnZpcm9ubWVudCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFh
Y3RpdmF0aW9uLT5pc1Rvcm5PZmYoKSkKKyAgICBpZiAoIWxleGljYWxFbnZpcm9ubWVudC0+aXNU
b3JuT2ZmKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhY3RpdmF0aW9uLT5yZWdp
c3RlcnMoKTsKKyAgICByZXR1cm4gbGV4aWNhbEVudmlyb25tZW50LT5yZWdpc3RlcnMoKTsKIH0K
IAogSlNBcnJheUJ1ZmZlclZpZXcqIEdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSogbm9k
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCBhY2JlMGQ4OTBiZGRlNTg0
YTZlYWFlMmU0YzMwNDIyNDQ0ZThhZjk4Li45MDYwYjU1MDQzMWFjNWE4NzcxYmM2MDA3MTMzMjk5
MWFkNDg5YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02OTgsNyAr
Njk4LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1Zh
bHVlIGJhc2UsIGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmLCBQcm9wZXJ0eU9mZnNldCk7
CiAgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5KGNvbnN0IEFic3RyYWN0VmFsdWUm
LCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgCi0gICAgSlNBY3RpdmF0aW9uKiB0cnlHZXRBY3RpdmF0
aW9uKE5vZGUqKTsKKyAgICBKU0xleGljYWxFbnZpcm9ubWVudCogdHJ5R2V0QWN0aXZhdGlvbihO
b2RlKik7CiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogdHJ5R2V0UmVnaXN0ZXJzKE5v
ZGUqKTsKICAgICAKICAgICBKU0FycmF5QnVmZmVyVmlldyogdHJ5R2V0Rm9sZGFibGVWaWV3KE5v
ZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA3NjRhNmIw
OGY4MWJmNjZjNTZjNDFkOTljZGVlNTgwNWMyNTc0ZTI5Li43MTFkOGFlMTJjNzVkZjFhOTg4ZjA4
N2VkN2E2NDk2MmNmOTk4YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCkBAIC0yNTQsNyArMjU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKENyZWF0ZUFjdGl2YXRpb24sIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFRl
YXJPZmZBY3RpdmF0aW9uLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAotICAgIC8qIE5vZGVz
IHVzZWQgZm9yIGFyZ3VtZW50cy4gU2ltaWxhciB0byBhY3RpdmF0aW9uIHN1cHBvcnQsIG9ubHkg
aXQgbWFrZXMgZXZlbiBsZXNzICovXAorICAgIC8qIE5vZGVzIHVzZWQgZm9yIGFyZ3VtZW50cy4g
U2ltaWxhciB0byBsZXhpY2FsIGVudmlyb25tZW50IHN1cHBvcnQsIG9ubHkgaXQgbWFrZXMgZXZl
biBsZXNzICovXAogICAgIC8qIHNlbnNlLiAqL1wKICAgICBtYWNybyhDcmVhdGVBcmd1bWVudHMs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFBoYW50b21Bcmd1bWVudHMsIE5vZGVSZXN1bHRK
UykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXgg
NGQ5ODQzYzM0MDI3ZTMyNTlkM2I5MDMyMzg3NjIzYjk0MDliY2IwMC4uNWQ0NWZjNWQ5N2FiYzVk
Y2JmY2JiZGJhYWIzYjMwZTExZDlmMGZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCi0jaW5j
bHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTmFt
ZUluc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAyMzM0YWVjMjk0YjY0NGU0ZjdjODJjZDcwZDE5ZDIw
ZGI1MTdjOGU0Li45ZWE4YWM0YzE0YmZmZGE4ODg2ZTY1YWY4N2Q1YmQwNjAxNTU3ZWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5j
bHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC00MjUyLDcgKzQyNTIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENyZWF0ZWQgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1
YWwsIGFjdGl2YXRpb25WYWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKTsKIAogICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX2ppdC5zeW1i
b2xUYWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpbnQgcmVnaXN0ZXJz
T2Zmc2V0ID0gSlNBY3RpdmF0aW9uOjpyZWdpc3RlcnNPZmZzZXQoc3ltYm9sVGFibGUpOworICAg
ICAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0ID0gSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnJlZ2lzdGVy
c09mZnNldChzeW1ib2xUYWJsZSk7CiAKICAgICAgICAgaW50IGJ5dGVjb2RlQ2FwdHVyZVN0YXJ0
ID0gc3ltYm9sVGFibGUtPmNhcHR1cmVTdGFydCgpOwogICAgICAgICBpbnQgbWFjaGluZUNhcHR1
cmVTdGFydCA9IG1faml0LmdyYXBoKCkubV9tYWNoaW5lQ2FwdHVyZVN0YXJ0OwpAQCAtNDI3Myw3
ICs0MjczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgICAgICBhY3RpdmF0aW9uVmFsdWVQYXlsb2FkR1BSLCByZWdpc3RlcnNPZmZz
ZXQgKyAoYnl0ZWNvZGVDYXB0dXJlU3RhcnQgLSBpKSAqIHNpemVvZihSZWdpc3RlcikgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAg
ICAgICAgIH0KICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3RlcnNPZmZz
ZXQpLCBhY3RpdmF0aW9uVmFsdWVQYXlsb2FkR1BSLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgbV9q
aXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYWN0aXZhdGlvblZh
bHVlUGF5bG9hZEdQUiwgSlNBY3RpdmF0aW9uOjpvZmZzZXRPZlJlZ2lzdGVycygpKSk7CisgICAg
ICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGFjdGl2
YXRpb25WYWx1ZVBheWxvYWRHUFIsIEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlJlZ2lz
dGVycygpKSk7CiAgICAgICAgIAogICAgICAgICBub3RDcmVhdGVkLmxpbmsoJm1faml0KTsKICAg
ICAgICAgbm9SZXN1bHQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiMmMzZDE2YTNkY2RmMDA2ZDY5OTk4ZjI3YTdl
ODhiM2EzY2NhMmY2Li45YTM3YjZmYjJiMmFiNTBkYjhhYjFmNjY0MDM0ZTVhZTAyNjk5NzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTQzMTYsNyArNDMxNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q3JlYXRlZCA9IG1faml0LmJy
YW5jaFRlc3Q2NChKSVRDb21waWxlcjo6WmVybywgYWN0aXZhdGlvblZhbHVlR1BSKTsKIAogICAg
ICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX2ppdC5zeW1ib2xUYWJsZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0ID0gSlNBY3Rp
dmF0aW9uOjpyZWdpc3RlcnNPZmZzZXQoc3ltYm9sVGFibGUpOworICAgICAgICBpbnQgcmVnaXN0
ZXJzT2Zmc2V0ID0gSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnJlZ2lzdGVyc09mZnNldChzeW1ib2xU
YWJsZSk7CiAKICAgICAgICAgaW50IGJ5dGVjb2RlQ2FwdHVyZVN0YXJ0ID0gc3ltYm9sVGFibGUt
PmNhcHR1cmVTdGFydCgpOwogICAgICAgICBpbnQgbWFjaGluZUNhcHR1cmVTdGFydCA9IG1faml0
LmdyYXBoKCkubV9tYWNoaW5lQ2FwdHVyZVN0YXJ0OwpAQCAtNDMzMyw3ICs0MzMzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlcnNPZmZzZXQgKyAoYnl0ZWNvZGVDYXB0dXJlU3RhcnQgLSBpKSAqIHNpemVvZihS
ZWdpc3RlcikpKTsKICAgICAgICAgfQogICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMy
KHJlZ2lzdGVyc09mZnNldCksIGFjdGl2YXRpb25WYWx1ZUdQUiwgc2NyYXRjaEdQUik7Ci0gICAg
ICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGFjdGl2
YXRpb25WYWx1ZUdQUiwgSlNBY3RpdmF0aW9uOjpvZmZzZXRPZlJlZ2lzdGVycygpKSk7CisgICAg
ICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGFjdGl2
YXRpb25WYWx1ZUdQUiwgSlNMZXhpY2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mUmVnaXN0ZXJzKCkp
KTsKIAogICAgICAgICBub3RDcmVhdGVkLmxpbmsoJm1faml0KTsKICAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCmluZGV4IDU2ZTA3M2UxYzRjNGQ2NWFmODc1ZWU0MjQ1MzA1MDU1ZTU4N2U1NzMuLmRjYzJi
YzVjZjk1YTk1YjljNzIxMmVkYmFhZjQ5N2IwYjVmYjNhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCi0jaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CkBAIC0xNDYsMjAgKzE0NiwyMCBAQCBDYWxsRnJhbWUqIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWUo
Vk1FbnRyeUZyYW1lKiYgY3VyclZNRW50cnlGcmFtZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q2FsbEZyYW1lKj4oY2FsbGVyRnJhbWVPclZNRW50cnlGcmFtZSgpKTsKIH0KIAotSlNBY3RpdmF0
aW9uKiBDYWxsRnJhbWU6OmFjdGl2YXRpb24oKSBjb25zdAorSlNMZXhpY2FsRW52aXJvbm1lbnQq
IENhbGxGcmFtZTo6bGV4aWNhbEVudmlyb25tZW50KCkgY29uc3QKIHsKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpOwogICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVC
bG9jay0+bmVlZHNBY3RpdmF0aW9uKCkpOwogICAgIFZpcnR1YWxSZWdpc3RlciBhY3RpdmF0aW9u
UmVnaXN0ZXIgPSBjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpOwotICAgIHJldHVybiBy
ZWdpc3RlcnMoKVthY3RpdmF0aW9uUmVnaXN0ZXIub2Zmc2V0KCldLlJlZ2lzdGVyOjphY3RpdmF0
aW9uKCk7CisgICAgcmV0dXJuIHJlZ2lzdGVycygpW2FjdGl2YXRpb25SZWdpc3Rlci5vZmZzZXQo
KV0uUmVnaXN0ZXI6OmxleGljYWxFbnZpcm9ubWVudCgpOwogfQogCi12b2lkIENhbGxGcmFtZTo6
c2V0QWN0aXZhdGlvbihKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24pCit2b2lkIENhbGxGcmFtZTo6
c2V0QWN0aXZhdGlvbihKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50KQog
ewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGFjdGl2YXRpb25SZWdpc3RlciA9IGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVy
KCk7Ci0gICAgcmVnaXN0ZXJzKClbYWN0aXZhdGlvblJlZ2lzdGVyLm9mZnNldCgpXSA9IGFjdGl2
YXRpb247CisgICAgcmVnaXN0ZXJzKClbYWN0aXZhdGlvblJlZ2lzdGVyLm9mZnNldCgpXSA9IGxl
eGljYWxFbnZpcm9ubWVudDsKIH0KIAogdm9pZCBDYWxsRnJhbWU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApp
bmRleCBkNjUxMTg3ZjE5ZTYwMTQ3ZWQzYTIxY2U1Y2MwZGUyZTdiYzA4M2MxLi5lZWJmZGQyZTVk
NGZhMjRmYzE5MDg0YWYzYWUwOTFiOGY4OTEzYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2Ug
SlNDICB7CiAKICAgICBjbGFzcyBBcmd1bWVudHM7Ci0gICAgY2xhc3MgSlNBY3RpdmF0aW9uOwor
ICAgIGNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50OwogICAgIGNsYXNzIEludGVycHJldGVyOwog
ICAgIGNsYXNzIEpTU2NvcGU7CiAKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyAgewog
ICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
ISF1bmNoZWNrZWRBY3RpdmF0aW9uKCk7IH0KLSAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uKCkgY29uc3Q7CisgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJv
bm1lbnQoKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSB1bmNoZWNrZWRBY3RpdmF0aW9uKCkgY29u
c3Q7CiAKICAgICAgICAgLy8gR2xvYmFsIG9iamVjdCBpbiB3aGljaCBleGVjdXRpb24gYmVnYW4u
CkBAIC0xODYsNyArMTg2LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAgICAgIHZvaWQgc2V0
Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkuY2FsbGVy
RnJhbWUgPSBmcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlKEpTU2NvcGUqIHNjb3BlKSB7
IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6U2NvcGVDaGFpbl0gPSBzY29w
ZTsgfQotICAgICAgICB2b2lkIHNldEFjdGl2YXRpb24oSlNBY3RpdmF0aW9uKik7CisgICAgICAg
IHZvaWQgc2V0QWN0aXZhdGlvbihKU0xleGljYWxFbnZpcm9ubWVudCopOwogCiAgICAgICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBpbml0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiog
dlBDLCBKU1Njb3BlKiBzY29wZSwKICAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUs
IGludCBhcmdjLCBKU09iamVjdCogY2FsbGVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMjhlZTFkMGQxZjAwYTRkMDEzZjFh
NTJjMjk1MzdmMjFhNGU2ZGNhYS4uODcxNTk3ZTA1MGFjZDVjZWQ0ZGIzZGU0ZGUyNDAzNGM1YWNl
YTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSAiRXZhbENvZGVDYWNoZS5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
LSNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNp
bmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgpAQCAtNDUwLDE2ICs0NTAsMTYgQEAgc3RhdGljIGJv
b2wgdW53aW5kQ2FsbEZyYW1lKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgQVNTRVJU
KCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIGFjdGl2
YXRpb247CisgICAgSlNWYWx1ZSBsZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAgaWYgKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRp
b24oKSkgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghdmlz
aXRvci0+aXNJbmxpbmVkRnJhbWUoKSk7CiAjZW5kaWYKLSAgICAgICAgYWN0aXZhdGlvbiA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQWN0aXZhdGlvbigpOwotICAgICAgICAvLyBQcm90ZWN0IGFnYWlu
c3QgdGhlIGFjdGl2YXRpb24gbm90IGJlaW5nIGNyZWF0ZWQsIG9yIHRoZSB2YXJpYWJsZSBzdGls
bCBiZWluZworICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFjdGl2YXRpb24oKTsKKyAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IHRoZSBsZXhpY2FsIGVu
dmlyb25tZW50IG5vdCBiZWluZyBjcmVhdGVkLCBvciB0aGUgdmFyaWFibGUgc3RpbGwgYmVpbmcK
ICAgICAgICAgLy8gaW5pdGlhbGl6ZWQgdG8gVW5kZWZpbmVkIGluc2lkZSBvcF9lbnRlci4KLSAg
ICAgICAgaWYgKGFjdGl2YXRpb24gJiYgYWN0aXZhdGlvbi5pc0NlbGwoKSkgewotICAgICAgICAg
ICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+
KGFjdGl2YXRpb24pOworICAgICAgICBpZiAobGV4aWNhbEVudmlyb25tZW50ICYmIGxleGljYWxF
bnZpcm9ubWVudC5pc0NlbGwoKSkgeworICAgICAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQq
IGFjdGl2YXRpb25PYmplY3QgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQqPihsZXhpY2Fs
RW52aXJvbm1lbnQpOwogICAgICAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IHRocm93aW5nIGV4
Y2VwdGlvbnMgYWZ0ZXIgdGVhci1vZmYuCiAgICAgICAgICAgICBpZiAoIWFjdGl2YXRpb25PYmpl
Y3QtPmlzVG9ybk9mZigpKQogICAgICAgICAgICAgICAgIGFjdGl2YXRpb25PYmplY3QtPnRlYXJP
ZmYoKnNjb3BlLT52bSgpKTsKQEAgLTQ2OCw4ICs0NjgsOCBAQCBzdGF0aWMgYm9vbCB1bndpbmRD
YWxsRnJhbWUoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgaWYgKGNvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHsK
ICAgICAgICAgaWYgKEFyZ3VtZW50cyogYXJndW1lbnRzID0gdmlzaXRvci0+ZXhpc3RpbmdBcmd1
bWVudHMoKSkgewotICAgICAgICAgICAgaWYgKGFjdGl2YXRpb24gJiYgYWN0aXZhdGlvbi5pc0Nl
bGwoKSkKLSAgICAgICAgICAgICAgICBhcmd1bWVudHMtPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGNh
bGxGcmFtZSwganNDYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2YXRpb24pKTsKKyAgICAgICAgICAg
IGlmIChsZXhpY2FsRW52aXJvbm1lbnQgJiYgbGV4aWNhbEVudmlyb25tZW50LmlzQ2VsbCgpKQor
ICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+ZGlkVGVhck9mZkFjdGl2YXRpb24oY2FsbEZyYW1l
LCBqc0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQqPihsZXhpY2FsRW52aXJvbm1lbnQpKTsKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgICAgIGVsc2UgaWYgKHZpc2l0b3ItPmlzSW5saW5l
ZEZyYW1lKCkpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLT50ZWFyT2ZmKGNhbGxGcmFtZSwg
dmlzaXRvci0+aW5saW5lQ2FsbEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXIuaAppbmRleCBjNmQ3YjI1MWNiN2ZhY2YwNjYwZTVhNDAxNzhmODFj
OGJkZjg4MzZkLi5hY2FlYmRlNGJmYzQ3MzI5OWU5ZThjNDNhYzc5YjI1YTgxN2Q3N2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaApAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFz
cyBFeGVjU3RhdGU7Ci0gICAgY2xhc3MgSlNBY3RpdmF0aW9uOworICAgIGNsYXNzIEpTTGV4aWNh
bEVudmlyb25tZW50OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTU2NvcGU7CiAK
QEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVyJiBvcGVy
YXRvcj0oSlNTY29wZSopOwogCiAgICAgICAgIGludDMyX3QgaSgpIGNvbnN0OwotICAgICAgICBK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24oKSBjb25zdDsKKyAgICAgICAgSlNMZXhpY2FsRW52aXJv
bm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCgpIGNvbnN0OwogICAgICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSgpIGNvbnN0OwogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0Owog
ICAgICAgICBKU09iamVjdCogZnVuY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCA2MzViNDMwNjY2YjQwZDA3MWU4YjVhZWRmZTI4NGU0OGUyNmJiZjZlLi4zZDRk
ODQ3MTVmOTJmNmYyY2U1NzQwZDMxMmU2NDRhNjUxY2EwODJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZW5kKQogICAgICAgICBERUZJTkVfT1Aob3BfZW50ZXIpCi0gICAgICAgIERFRklORV9PUChvcF9j
cmVhdGVfYWN0aXZhdGlvbikKKyAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50KQogICAgICAgICBERUZJTkVfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9PUChv
cF9lcV9udWxsKQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9vdXRfb2ZfbGluZToKQEAgLTI5
Niw3ICsyOTYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9zd2l0Y2hfY2hhcikKICAgICAgICAgREVGSU5FX09QKG9wX3N3aXRjaF9p
bW0pCiAgICAgICAgIERFRklORV9PUChvcF9zd2l0Y2hfc3RyaW5nKQotICAgICAgICBERUZJTkVf
T1Aob3BfdGVhcl9vZmZfYWN0aXZhdGlvbikKKyAgICAgICAgREVGSU5FX09QKG9wX3RlYXJfb2Zm
X2xleGljYWxfZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9PUChvcF90ZWFyX29mZl9hcmd1
bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF90aHJvdykKICAgICAgICAgREVGSU5FX09QKG9w
X3Rocm93X3N0YXRpY19lcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDEwNGVjMGFh
ZWNiNWRlOTM1YTI2MmIxODk3ZGNmYjJkOTQ4YTczMmYuLjUzZDQyOWE2MjExZGNkZmQyYTczMzFl
YjQ1NzcxY2U0YWNjMGIyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDc1LDcgKzQ3
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2VudGVyKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9j
cmVhdGVfYWN0aXZhdGlvbihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2VxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lcV9udWxsKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsK
QEAgLTU0Myw3ICs1NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29w
X3N3aXRjaF9jaGFyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hf
aW1tKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9sZXhpY2FsX2Vudmly
b25tZW50KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90ZWFyX29mZl9hcmd1
bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Rocm93KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90aHJvd19zdGF0aWNfZXJyb3IoSW5zdHJ1Y3Rp
b24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDdhZWZm
MjFmMmVhZWQ5YWIyNDU5ZmY5NmMyODg0ZWJlNDczMzNjZDIuLjM5M2U3ZDQxNTc4ZTcwNGRmYjA3
NGZhMzYyN2E4ZDBkOWJmYjkzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtMjMzLDExICsyMzMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5n
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF90ZWFyX29m
Zl9sZXhpY2FsX2Vudmlyb25tZW50KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
Ci0gICAgaW50IGFjdGl2YXRpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwot
ICAgIEp1bXAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBicmFuY2hUZXN0NjQoWmVybywgYWRkcmVz
c0ZvcihhY3RpdmF0aW9uKSk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihhY3RpdmF0aW9u
LCByZWdUMCk7CisgICAgaW50IGxleGljYWxFbnZpcm9ubWVudCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CisgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaFRl
c3Q2NChaZXJvLCBhZGRyZXNzRm9yKGxleGljYWxFbnZpcm9ubWVudCkpOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIobGV4aWNhbEVudmlyb25tZW50LCByZWdUMCk7CiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbiwgcmVnVDApOwogICAgIGFjdGl2YXRpb25O
b3RDcmVhdGVkLmxpbmsodGhpcyk7CiB9CkBAIC0yNDUsMTEgKzI0NSwxMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB2b2lkIEpJVDo6ZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgYXJndW1lbnRzID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKLSAgICBpbnQgYWN0aXZhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQ7CisgICAgaW50IGxleGljYWxFbnZpcm9ubWVudCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBKdW1wIGFyZ3NOb3RDcmVhdGVkID0gYnJhbmNo
VGVzdDY0KFplcm8sIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIHNpemVvZihSZWdpc3Rlcikg
KiAodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMp
KS5vZmZzZXQoKSkpKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSkub2Zmc2V0KCksIHJlZ1Qw
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFjdGl2YXRpb24sIHJlZ1QxKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGxleGljYWxFbnZpcm9ubWVudCwgcmVnVDEpOwogICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVGVhck9mZkFyZ3VtZW50cywgcmVnVDAsIHJlZ1QxKTsKICAg
ICBhcmdzTm90Q3JlYXRlZC5saW5rKHRoaXMpOwogfQpAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKikKICAgICBlbWl0RW50ZXJPcHRpbWl6YXRp
b25DaGVjaygpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYWN0aXZhdGlvbihJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDRiOTNhMmRhMzY4
ODEzODNkNTc2MjU1ZGY3M2JiNjU1MmI3ZDhjZTAuLjBkNjBmMmY5Nzc1MWE3ZWFlMGEwOTMyN2Fh
NzZmMTk4NWQyNDJkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKQEAgLTM1MCwxMSArMzUwLDExIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3N0
cmluZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRTdG9yZUJvb2wo
ZHN0LCByZWdUMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24o
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX3RlYXJf
b2ZmX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKLSAgICBpbnQgYWN0aXZhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
Ci0gICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdGb3Io
YWN0aXZhdGlvbiksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7Ci0gICAg
ZW1pdExvYWRQYXlsb2FkKGFjdGl2YXRpb24sIHJlZ1QwKTsKKyAgICBpbnQgbGV4aWNhbEVudmly
b25tZW50ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBKdW1wIGFjdGl2
YXRpb25Ob3RDcmVhdGVkID0gYnJhbmNoMzIoRXF1YWwsIHRhZ0ZvcihsZXhpY2FsRW52aXJvbm1l
bnQpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworICAgIGVtaXRMb2Fk
UGF5bG9hZChsZXhpY2FsRW52aXJvbm1lbnQsIHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblRlYXJPZmZBY3RpdmF0aW9uLCByZWdUMCk7CiAgICAgYWN0aXZhdGlvbk5vdENyZWF0
ZWQubGluayh0aGlzKTsKIH0KQEAgLTM2MiwxMSArMzYyLDExIEBAIHZvaWQgSklUOjplbWl0X29w
X3RlYXJfb2ZmX2FjdGl2YXRpb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZv
aWQgSklUOjplbWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAgaW50IGFjdGl2YXRp
b24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBsZXhpY2FsRW52
aXJvbm1lbnQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgSnVtcCBh
cmdzTm90Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdGb3IodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKGFyZ3VtZW50cykub2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1w
dHlWYWx1ZVRhZykpOwogICAgIGVtaXRMb2FkUGF5bG9hZCh1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cykpLm9mZnNldCgpLCByZWdUMCk7Ci0gICAg
ZW1pdExvYWRQYXlsb2FkKGFjdGl2YXRpb24sIHJlZ1QxKTsKKyAgICBlbWl0TG9hZFBheWxvYWQo
bGV4aWNhbEVudmlyb25tZW50LCByZWdUMSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25U
ZWFyT2ZmQXJndW1lbnRzLCByZWdUMCwgcmVnVDEpOwogICAgIGFyZ3NOb3RDcmVhdGVkLmxpbmso
dGhpcyk7CiB9CkBAIC05MDQsMTIgKzkwNCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hY3RpdmF0aW9uKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGludCBhY3Rp
dmF0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgbGV4aWNh
bEVudmlyb25tZW50ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbiwgMCk7Ci0gICAgZW1pdFN0b3Jl
Q2VsbChhY3RpdmF0aW9uLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFN0b3JlQ2VsbChsZXhp
Y2FsRW52aXJvbm1lbnQsIHJldHVyblZhbHVlR1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNDM3OTQ0NWMyZjIx
ZGQzNjQxOGVmODhhOTVmMGZlMjllOTQ4YWNlZi4uM2RhMGNkZTE4M2FiZDVhOTg3ZWE1MzRhNTky
YTliNGIxNWQ5NDg0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC0xMzgxLDkgKzEzODEsOSBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlQWN0aXZhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3Qgb2Zmc2V0KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwotICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlv
bjo6Y3JlYXRlKHZtLCBleGVjLCBleGVjLT5yZWdpc3RlcnMoKSArIG9mZnNldCwgZXhlYy0+Y29k
ZUJsb2NrKCkpOwotICAgIGV4ZWMtPnNldFNjb3BlKGFjdGl2YXRpb24pOwotICAgIHJldHVybiBh
Y3RpdmF0aW9uOworICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQg
PSBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlKHZtLCBleGVjLCBleGVjLT5yZWdpc3RlcnMo
KSArIG9mZnNldCwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIGV4ZWMtPnNldFNjb3BlKGxleGlj
YWxFbnZpcm9ubWVudCk7CisgICAgcmV0dXJuIGxleGljYWxFbnZpcm9ubWVudDsKIH0KIAogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4
ZWMpCkBAIC0xNTk1LDE0ICsxNTk1LDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25U
ZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYWN0aXZhdGlvCiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgQVNTRVJUKGV4
ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0FjdGl2YXRpb24oKSk7Ci0gICAganNDYXN0PEpTQWN0aXZh
dGlvbio+KGFjdGl2YXRpb25DZWxsKS0+dGVhck9mZih2bSk7CisgICAganNDYXN0PEpTTGV4aWNh
bEVudmlyb25tZW50Kj4oYWN0aXZhdGlvbkNlbGwpLT50ZWFyT2ZmKHZtKTsKIH0KIAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBK
U0NlbGwqIGFyZ3VtZW50c0NlbGwsIEpTQ2VsbCogYWN0aXZhdGlvbkNlbGwpCiB7CiAgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkpOwogICAgIGlmIChhY3RpdmF0
aW9uQ2VsbCkgewotICAgICAgICBqc0Nhc3Q8QXJndW1lbnRzKj4oYXJndW1lbnRzQ2VsbCktPmRp
ZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMsIGpzQ2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9u
Q2VsbCkpOworICAgICAgICBqc0Nhc3Q8QXJndW1lbnRzKj4oYXJndW1lbnRzQ2VsbCktPmRpZFRl
YXJPZmZBY3RpdmF0aW9uKGV4ZWMsIGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KGFjdGl2
YXRpb25DZWxsKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAganNDYXN0PEFyZ3VtZW50
cyo+KGFyZ3VtZW50c0NlbGwpLT50ZWFyT2ZmKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4MDExOTFlNGUxM2ZjMDIyNzllYzgzYzkwMjk0NDE2
NjAwZDg4ZDEzLi4wYmZiZDU5MTRmYWY4NWY5Njk0M2RmZTJlOTZmYTRiYjdmMGQxN2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNjksNyArNjksNyBA
QCBleHRlcm4gIkMiIHsKICAgICBJZGM6IGNvbnN0IElkZW50aWZpZXIqCiAgICAgSjogRW5jb2Rl
ZEpTVmFsdWUKICAgICBKY3A6IGNvbnN0IEpTVmFsdWUqCi0gICAgSnNhOiBKU0FjdGl2YXRpb24q
CisgICAgSnNhOiBKU0xleGljYWxFbnZpcm9ubWVudCoKICAgICBKc3M6IEpTU3RyaW5nKgogICAg
IE86IEpTT2JqZWN0KgogICAgIFA6IHBvaW50ZXIgKGNoYXIqKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZDliOTU4ZDI5NGIwM2M2NTQ4
NjNhM2I2YjIzY2FmOWVjY2E1MDg3My4uY2M3Njc0ZjdkOTE1Yzg2MWQzYzM1Yjg4MWY4NDMxMzhi
NzkxYTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCi0jaW5jbHVkZSAiSlNBY3Rp
dmF0aW9uLmgiCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmgiCkBAIC00NzAsNyArNDcwLDcgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc3RhY2tfY2hlY2spCiAjZW5kaWYKICAgICAvLyBUaGlzIHN0YWNrIGNoZWNrIGlzIGRvbmUg
aW4gdGhlIHByb2xvZ3VlIGZvciBhIGZ1bmN0aW9uIGNhbGwsIGFuZCB0aGUKICAgICAvLyBDYWxs
RnJhbWUgaXMgbm90IGNvbXBsZXRlbHkgc2V0IHVwIHlldC4gRm9yIGV4YW1wbGUsIGlmIHRoZSBm
cmFtZSBuZWVkcwotICAgIC8vIGFuIGFjdGl2YXRpb24gb2JqZWN0LCB0aGUgYWN0aXZhdGlvbiBv
YmplY3Qgd2lsbCBvbmx5IGJlIHNldCB1cCBhZnRlcgorICAgIC8vIGEgbGV4aWNhbCBlbnZpcm9u
bWVudCBvYmplY3QsIHRoZSBsZXhpY2FsIGVudmlyb25tZW50IG9iamVjdCB3aWxsIG9ubHkgYmUg
c2V0IHVwIGFmdGVyCiAgICAgLy8gd2Ugc3RhcnQgZXhlY3V0aW5nIHRoZSBmdW5jdGlvbi4gSWYg
d2UgbmVlZCB0byB0aHJvdyBhIFN0YWNrT3ZlcmZsb3dFcnJvcgogICAgIC8vIGhlcmUsIHRoZW4g
d2UgbmVlZCB0byB0ZWxsIHRoZSBwcm9sb2d1ZSB0byBzdGFydCB0aGUgc3RhY2sgdW53aW5kaW5n
IGZyb20KICAgICAvLyB0aGUgY2FsbGVyIGZyYW1lICh3aGljaCBpcyBmdWxseSBzZXQgdXApIGlu
c3RlYWQuIFRvIGRvIHRoYXQsIHdlIHJldHVybgpAQCAtNDk3LDE1ICs0OTcsMTUgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhl
Yyk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlv
bikKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudCkKIHsKICAgICBMTElOVF9CRUdJTigpOwogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5H
Ci0gICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIsIGV4
ZWMpOworICAgIGRhdGFMb2dGKCJDcmVhdGluZyBhbiBsZXhpY2FsRW52aXJvbm1lbnQsIGV4ZWMg
PSAlcCFcbiIsIGV4ZWMpOwogI2VuZGlmCi0gICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
SlNBY3RpdmF0aW9uOjpjcmVhdGUodm0sIGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpKTsKLSAgICBl
eGVjLT5zZXRTY29wZShhY3RpdmF0aW9uKTsKLSAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3Rp
dmF0aW9uKSk7CisgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9
IEpTTGV4aWNhbEVudmlyb25tZW50OjpjcmVhdGUodm0sIGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygp
KTsKKyAgICBleGVjLT5zZXRTY29wZShsZXhpY2FsRW52aXJvbm1lbnQpOworICAgIExMSU5UX1JF
VFVSTihKU1ZhbHVlKGxleGljYWxFbnZpcm9ubWVudCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X29iamVjdCkKQEAgLTEyNDUsMTEgKzEyNDUsMTEgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbCkKICAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hY3Rp
dmF0aW9uKQorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2xleGljYWxf
ZW52aXJvbm1lbnQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKICAgICBBU1NFUlQoZXhlYy0+Y29k
ZUJsb2NrKCktPm5lZWRzQWN0aXZhdGlvbigpKTsKLSAgICBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4o
TExJTlRfT1AoMSkuanNWYWx1ZSgpKS0+dGVhck9mZih2bSk7CisgICAganNDYXN0PEpTTGV4aWNh
bEVudmlyb25tZW50Kj4oTExJTlRfT1AoMSkuanNWYWx1ZSgpKS0+dGVhck9mZih2bSk7CiAgICAg
TExJTlRfRU5EKCk7CiB9CiAKQEAgLTEyNTksNyArMTI1OSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hcmd1bWVudHMpCiAgICAgQVNTRVJUKGV4ZWMtPmNvZGVC
bG9jaygpLT51c2VzQXJndW1lbnRzKCkpOwogICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0ganND
YXN0PEFyZ3VtZW50cyo+KGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKFZpcnR1YWxSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5vZmZzZXQoKSkuanNWYWx1ZSgp
KTsKICAgICBpZiAoSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkKLSAgICAgICAgYXJndW1lbnRzLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLCBqc0Nh
c3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvblZhbHVlKSk7CisgICAgICAgIGFyZ3VtZW50cy0+
ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYywganNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4o
YWN0aXZhdGlvblZhbHVlKSk7CiAgICAgZWxzZQogICAgICAgICBhcmd1bWVudHMtPnRlYXJPZmYo
ZXhlYyk7CiAgICAgTExJTlRfRU5EKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCmluZGV4IDc3NzhkZTM0ZTE2ZjJjYWU0ZGVhZjVhMTIxOWRjMGI1ZjU0
OTg1ODcuLmJlN2FiZWMyNTIxY2I3MjJhNjdiYTRmOTI3NGY1MTQyNjI3OTY0YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC02Miw3ICs2Miw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChsb29wX29z
cik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wocmVwbGFjZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc3RhY2tfY2hlY2spOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X29iamVjdCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NpemUpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3JfdmFyYXJn
cyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYXJncyk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF92YXJhcmdz
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9ldmFsKTsKLUxM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGVhcl9vZmZfYWN0aXZhdGlvbik7
CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2xleGljYWxf
ZW52aXJvbm1lbnQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90ZWFy
X29mZl9hcmd1bWVudHMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
dHJjYXQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRp
dmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA3NDQ2ZWEwYWE3MDFmYzgzMTJmM2E4Mzc1MTY2NTFi
MzliYjdiYTJiLi5hNjY5Y2MyOGEyNzE3NzUzNjcxOTExN2UyNzBhOTg4MGUxYWJmMDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQpAQCAtNzE5LDEwICs3MTksMTAgQEAgX2xsaW50X29wX2VudGVyOgogICAg
IGRpc3BhdGNoKDEpCiAKIAotX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorX2xsaW50X29w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBs
b2FkaSA0W1BDXSwgdDAKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVf
YWN0aXZhdGlvbikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudCkKICAgICBkaXNwYXRjaCgyKQogCiAKQEAgLTE5NzEsMTEgKzE5NzEs
MTEgQEAgbWFjcm8gZG9DYWxsKHNsb3dQYXRoKQogZW5kCiAKIAotX2xsaW50X29wX3RlYXJfb2Zm
X2FjdGl2YXRpb246CitfbGxpbnRfb3BfdGVhcl9vZmZfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgYmllcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3Jl
YXRlZAotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RlYXJfb2ZmX2FjdGl2YXRp
b24pCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdGVhcl9vZmZfbGV4aWNhbF9l
bnZpcm9ubWVudCkKIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKICAgICBkaXNwYXRj
aCgyKQogCkBAIC0yMDcwLDcgKzIwNzAsNyBAQCBtYWNybyBnZXREZUJydWlqblNjb3BlKGRlQnJ1
aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKICAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29k
ZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCiAgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVl
ZHNBY3RpdmF0aW9uW3QxXSwgLmxvb3AKIAotICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0
aW9uUmVnaXN0ZXJbdDFdLCB0MQorICAgIGxvYWRpIENvZGVCbG9jazo6bV9sZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3Rlclt0MV0sIHQxCiAKICAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lw
IG92ZXIgb25lIHNjb3BlLgogICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZh
bHVlVGFnLCAubm9BY3RpdmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDliNGZlZjA1ZWRmMjc3MWMxNzVm
MDUyYWIwYjhmYTVjYWZhYTczNzQuLjBjNDlmNGVmZjZiNWE4OTQ2OWVlM2NmZDU3ZTFiMTQ0YzY5
YmRhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC02MDcsMTAgKzYwNywxMCBAQCBfbGxpbnRfb3BfZW50ZXI6
CiAgICAgZGlzcGF0Y2goMSkKIAogCi1fbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CitfbGxp
bnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICBkaXNwYXRjaCgyKQogCiAK
QEAgLTE4MjgsMTEgKzE4MjgsMTEgQEAgbWFjcm8gZG9DYWxsKHNsb3dQYXRoKQogZW5kCiAKIAot
X2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CitfbGxpbnRfb3BfdGVhcl9vZmZfbGV4aWNh
bF9lbnZpcm9ubWVudDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3Ry
dWN0aW9uKDEsIHQwKQogICAgIGJ0cXogW2NmciwgdDAsIDhdLCAub3BUZWFyT2ZmQWN0aXZhdGlv
bk5vdENyZWF0ZWQKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90ZWFyX29mZl9h
Y3RpdmF0aW9uKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3RlYXJfb2ZmX2xl
eGljYWxfZW52aXJvbm1lbnQpCiAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CiAgICAg
ZGlzcGF0Y2goMikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5j
cHAKaW5kZXggZjM0MDU1YTMwNjIxNGU2YWZhZDM2ODM5NDgxZDdjZjExYTM2ZThlOS4uZmIwMjUw
YzE0YjJhZTJjYWM5ZTJiYWFkNThiOGNhYzIzNTA4MjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRl
ICJBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1
ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEFyZ3VtZW50czo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAg
ICAgICAgdGhpc09iamVjdC0+bV9zbG93QXJndW1lbnREYXRhLmdldCgpLCBTbG93QXJndW1lbnRE
YXRhOjpzaXplRm9yTnVtQXJndW1lbnRzKHRoaXNPYmplY3QtPm1fbnVtQXJndW1lbnRzKSk7CiAg
ICAgfQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxlZSk7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbik7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbGV4aWNhbEVudmlyb25tZW50KTsKIH0KIAogdm9pZCBBcmd1bWVu
dHM6OmNvcHlCYWNraW5nU3RvcmUoSlNDZWxsKiBjZWxsLCBDb3B5VmlzaXRvciYgdmlzaXRvciwg
Q29weVRva2VuIHRva2VuKQpAQCAtMzg0LDEwICszODQsMTAgQEAgdm9pZCBBcmd1bWVudHM6OnRl
YXJPZmYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgYWxsb2NhdGVSZWdpc3RlckFycmF5KGNh
bGxGcmFtZS0+dm0oKSk7CiAgICAgbV9yZWdpc3RlcnMgPSBtX3JlZ2lzdGVyQXJyYXkuZ2V0KCkg
LSBDYWxsRnJhbWU6Om9mZnNldEZvcigxKSAtIDE7CiAKLSAgICAvLyBJZiB3ZSBoYXZlIGEgY2Fw
dHVyZWQgYXJndW1lbnQgdGhhdCBsb2dpY2FsbHkgYWxpYXNlcyBhY3RpdmF0aW9uIHN0b3JhZ2Us
Ci0gICAgLy8gYnV0IHdlIG9wdGltaXplIGF3YXkgdGhlIGFjdGl2YXRpb24sIHRoZSBhcmd1bWVu
dCBuZWVkcyB0byB0ZWFyIG9mZiBpbnRvCisgICAgLy8gSWYgd2UgaGF2ZSBhIGNhcHR1cmVkIGFy
Z3VtZW50IHRoYXQgbG9naWNhbGx5IGFsaWFzZXMgbGV4aWNhbCBlbnZpcm9ubWVudCBzdG9yYWdl
LAorICAgIC8vIGJ1dCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBsZXhpY2FsRW52aXJvbm1lbnQsIHRo
ZSBhcmd1bWVudCBuZWVkcyB0byB0ZWFyIG9mZiBpbnRvCiAgICAgLy8gb3VyIHN0b3JhZ2UuIFRo
ZSBzaW1wbGVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byByZXZlcnQgaXQgdG8gTm9ybWFsIHN0YXR1
cy4KLSAgICBpZiAobV9zbG93QXJndW1lbnREYXRhICYmICFtX2FjdGl2YXRpb24pIHsKKyAgICBp
ZiAobV9zbG93QXJndW1lbnREYXRhICYmICFtX2xleGljYWxFbnZpcm9ubWVudCkgewogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtQXJndW1lbnRzOyArK2kpIHsKICAgICAgICAg
ICAgIGlmIChtX3Nsb3dBcmd1bWVudERhdGEtPnNsb3dBcmd1bWVudHMoKVtpXS5zdGF0dXMgIT0g
U2xvd0FyZ3VtZW50OjpDYXB0dXJlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQw
MCwxNiArNDAwLDE2IEBAIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmKENhbGxGcmFtZSogY2FsbEZy
YW1lKQogICAgICAgICB0cnlTZXRBcmd1bWVudChjYWxsRnJhbWUtPnZtKCksIGksIGNhbGxGcmFt
ZS0+YXJndW1lbnRBZnRlckNhcHR1cmUoaSkpOwogfQogCi12b2lkIEFyZ3VtZW50czo6ZGlkVGVh
ck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24p
Cit2b2lkIEFyZ3VtZW50czo6ZGlkVGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50KQogewotICAgIFJFTEVBU0Vf
QVNTRVJUKGFjdGl2YXRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxleGljYWxFbnZpcm9ubWVu
dCk7CiAgICAgaWYgKGlzVG9ybk9mZigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
bnVtQXJndW1lbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9hY3RpdmF0aW9uLnNl
dChleGVjLT52bSgpLCB0aGlzLCBhY3RpdmF0aW9uKTsKKyAgICBtX2xleGljYWxFbnZpcm9ubWVu
dC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGV4aWNhbEVudmlyb25tZW50KTsKICAgICB0ZWFyT2Zm
KGV4ZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmlu
ZGV4IDU2NDhlMDVhZDU0ZDgyZTQwYmM1YmE0NWI1N2NiZDQzZGQ4Y2VmMjIuLjJkNGFkYTU2Nzdj
Y2IzYzE1MmUzYjJjMGExMjU1MWFhM2Y1MmIzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5oCkBAIC0yNSw5ICsyNSw5IEBACiAjZGVmaW5lIEFyZ3VtZW50c19o
CiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCi0jaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVySW5s
aW5lcy5oIgpAQCAtODIsMTQgKzgyLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlYXJPZmYoQ2Fs
bEZyYW1lKik7CiAgICAgdm9pZCB0ZWFyT2ZmKENhbGxGcmFtZSosIElubGluZUNhbGxGcmFtZSop
OwogICAgIGJvb2wgaXNUb3JuT2ZmKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlckFycmF5Lmdl
dCgpOyB9Ci0gICAgdm9pZCBkaWRUZWFyT2ZmQWN0aXZhdGlvbihFeGVjU3RhdGUqLCBKU0FjdGl2
YXRpb24qKTsKKyAgICB2b2lkIGRpZFRlYXJPZmZBY3RpdmF0aW9uKEV4ZWNTdGF0ZSosIEpTTGV4
aWNhbEVudmlyb25tZW50Kik7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkgCiAgICAgeyAKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQXJndW1lbnRzVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOyAKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFj
dGl2YXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX2FjdGl2YXRp
b24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFjdGl2YXRpb24oKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX2xleGljYWxFbnZpcm9ubWVudCk7IH0KICAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtQXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEFyZ3VtZW50cywgbV9udW1Bcmd1bWVudHMpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZk92ZXJyb2RlTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFy
Z3VtZW50cywgbV9vdmVycm9kZUxlbmd0aCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mSXNTdHJpY3RNb2RlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9p
c1N0cmljdE1vZGUpOyB9CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW5pdChDYWxsRnJhbWUqKTsKIAotICAgIFdyaXRlQmFycmllcjxKU0FjdGl2YXRpb24+IG1fYWN0
aXZhdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNMZXhpY2FsRW52aXJvbm1lbnQ+IG1fbGV4aWNh
bEVudmlyb25tZW50OwogCiAgICAgdW5zaWduZWQgbV9udW1Bcmd1bWVudHM7CiAKQEAgLTI2NSwx
MCArMjY1LDEwIEBAIGlubGluZSBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBBcmd1bWVudHM6
OmFyZ3VtZW50KHNpemVfdCBhcmd1bWVudCkKICAgICAgICAgcmV0dXJuIG1fcmVnaXN0ZXJzW0Nh
bGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQpXTsKIAogICAgIGludCBpbmRleCA9IG1f
c2xvd0FyZ3VtZW50RGF0YS0+c2xvd0FyZ3VtZW50cygpW2FyZ3VtZW50XS5pbmRleDsKLSAgICBp
ZiAoIW1fYWN0aXZhdGlvbiB8fCBtX3Nsb3dBcmd1bWVudERhdGEtPnNsb3dBcmd1bWVudHMoKVth
cmd1bWVudF0uc3RhdHVzICE9IFNsb3dBcmd1bWVudDo6Q2FwdHVyZWQpCisgICAgaWYgKCFtX2xl
eGljYWxFbnZpcm9ubWVudCB8fCBtX3Nsb3dBcmd1bWVudERhdGEtPnNsb3dBcmd1bWVudHMoKVth
cmd1bWVudF0uc3RhdHVzICE9IFNsb3dBcmd1bWVudDo6Q2FwdHVyZWQpCiAgICAgICAgIHJldHVy
biBtX3JlZ2lzdGVyc1tpbmRleF07CiAKLSAgICByZXR1cm4gbV9hY3RpdmF0aW9uLT5yZWdpc3Rl
ckF0KGluZGV4IC0gbV9zbG93QXJndW1lbnREYXRhLT5ieXRlY29kZVRvTWFjaGluZUNhcHR1cmVP
ZmZzZXQoKSk7CisgICAgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50LT5yZWdpc3RlckF0KGlu
ZGV4IC0gbV9zbG93QXJndW1lbnREYXRhLT5ieXRlY29kZVRvTWFjaGluZUNhcHR1cmVPZmZzZXQo
KSk7CiB9CiAKIGlubGluZSB2b2lkIEFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24oQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCkBAIC0yOTcsNyArMjk3LDcgQEAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjpm
aW5pc2hDcmVhdGlvbihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgICAgIGNvZGVCbG9j
ay0+ZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRBY3RpdmF0aW9uUmVnaXN0ZXJzKCkpOwogICAgIH0K
IAotICAgIC8vIFRoZSBieXRlY29kZSBnZW5lcmF0b3Igb21pdHMgb3BfdGVhcl9vZmZfYWN0aXZh
dGlvbiBpbiBjYXNlcyBvZiBubworICAgIC8vIFRoZSBieXRlY29kZSBnZW5lcmF0b3Igb21pdHMg
b3BfdGVhcl9vZmZfbGV4aWNhbF9lbnZpcm9ubWVudCBpbiBjYXNlcyBvZiBubwogICAgIC8vIGRl
Y2xhcmVkIHBhcmFtZXRlcnMsIHNvIHdlIG5lZWQgdG8gdGVhciBvZmYgaW1tZWRpYXRlbHkuCiAg
ICAgaWYgKG1faXNTdHJpY3RNb2RlIHx8ICFjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0
ZXJDb3VudCgpKQogICAgICAgICB0ZWFyT2ZmKGNhbGxGcmFtZSk7CkBAIC0zMjMsNyArMzIzLDcg
QEAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSW5saW5lQ2FsbEZyYW1lKiBpbmwKICAgICBtX2lzU3RyaWN0TW9kZSA9IGpzQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihpbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpLT5p
c1N0cmljdE1vZGUoKTsKICAgICBBU1NFUlQoIWpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihp
bmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpLT5zeW1ib2xUYWJsZShpbmxpbmVDYWxs
RnJhbWUtPnNwZWNpYWxpemF0aW9uS2luZCgpKS0+c2xvd0FyZ3VtZW50cygpKTsKIAotICAgIC8v
IFRoZSBieXRlY29kZSBnZW5lcmF0b3Igb21pdHMgb3BfdGVhcl9vZmZfYWN0aXZhdGlvbiBpbiBj
YXNlcyBvZiBubworICAgIC8vIFRoZSBieXRlY29kZSBnZW5lcmF0b3Igb21pdHMgb3BfdGVhcl9v
ZmZfbGV4aWNhbF9lbnZpcm9ubWVudCBpbiBjYXNlcyBvZiBubwogICAgIC8vIGRlY2xhcmVkIHBh
cmFtZXRlcnMsIHNvIHdlIG5lZWQgdG8gdGVhciBvZmYgaW1tZWRpYXRlbHkuCiAgICAgaWYgKG1f
aXNTdHJpY3RNb2RlIHx8ICFjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgp
KQogICAgICAgICB0ZWFyT2ZmKGNhbGxGcmFtZSwgaW5saW5lQ2FsbEZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGJk
MWZiZGQ0NDMzNjI5ODI0MWRjNTY2YzM3ZWJmY2Q3YjA1ZTI3MTcuLjIzNTQxNzdmZGE0NzVmYmQ2
MzFjODQxYTJhMDRlMTU2OThiNzIzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzgsOSArMzgsOSBAQAogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
LSNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU0xleGljYWxFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyYTJkYTMxZjc1ZjEwNWMwM2Y0MDFjNzMxMjNkOTlkYzllM2I3OTIyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKLSNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEpTQWN0aXZhdGlv
bjo6c19pbmZvID0geyAiSlNBY3RpdmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU0FjdGl2YXRpb24pIH07Ci0KLXZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgSlNBY3Rp
dmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotCi0gICAgLy8gTm8gbmVlZCB0byBt
YXJrIG91ciByZWdpc3RlcnMgaWYgdGhleSdyZSBzdGlsbCBpbiB0aGUgSlNTdGFjay4KLSAgICBp
ZiAoIXRoaXNPYmplY3QtPmlzVG9ybk9mZigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmNhcHR1cmVDb3VudCgp
OyArK2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5zdG9yYWdlKClbaV0p
OwotfQotCi1pbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7Ci0gICAgaWYgKGVudHJ5LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUgaW5zcGVjdG9yIGFza2luZyBmb3IgYSB2YXIgYWZ0ZXIg
aXQgaGFzIGJlZW4gb3B0aW1pemVkIG91dC4KLSAgICBpZiAoaXNUb3JuT2ZmKCkgJiYgIWlzVmFs
aWQoZW50cnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzbG90LnNldFZhbHVlKHRo
aXMsIERvbnRFbnVtLCByZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdl
dChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCi17Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGlu
ZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAgIGlmIChlbnRyeS5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRGVmZW5kIGFnYWluc3QgdGhlIGluc3BlY3RvciBh
c2tpbmcgZm9yIGEgdmFyIGFmdGVyIGl0IGhhcyBiZWVuIG9wdGltaXplZCBvdXQuCi0gICAgaWYg
KGlzVG9ybk9mZigpICYmICFpc1ZhbGlkKGVudHJ5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgo
KSkuZ2V0KCksIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgQVNTRVJUKCFIZWFwOjpoZWFw
KHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKLSAgICAK
LSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7Ci0gICAgewotICAgICAgICBHQ1Nh
ZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2ssIGV4ZWMt
PnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKLSAgICAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIEFTU0VSVCghaXRlci0+dmFsdWUuaXNOdWxsKCkpOwotICAgICAg
ICBpZiAoaXRlci0+dmFsdWUuaXNSZWFkT25seSgpKSB7Ci0gICAgICAgICAgICBpZiAoc2hvdWxk
VGhyb3cpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IHRoZSBpbnNwZWN0b3IgYXNraW5nIGZv
ciBhIHZhciBhZnRlciBpdCBoYXMgYmVlbiBvcHRpbWl6ZWQgb3V0LgotICAgICAgICBpZiAoaXNU
b3JuT2ZmKCkgJiYgIWlzVmFsaWQoaXRlci0+dmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBpZiAoVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQgPSBpdGVyLT52YWx1
ZS53YXRjaHBvaW50U2V0KCkpCi0gICAgICAgICAgICBzZXQtPmludmFsaWRhdGUoVmFyaWFibGVX
cml0ZUZpcmVEZXRhaWwodGhpcywgcHJvcGVydHlOYW1lKSk7IC8vIERvbid0IG1lc3MgYXJvdW5k
IC0gaWYgd2UgaGFkIGZvdW5kIHRoaXMgc3RhdGljYWxseSwgd2Ugd291bGQgaGF2ZSBpbnZjYWxp
ZGF0ZWQgaXQuCi0gICAgICAgIHJlZyA9ICZyZWdpc3RlckF0KGl0ZXItPnZhbHVlLmdldEluZGV4
KCkpOwotICAgIH0KLSAgICByZWctPnNldCh2bSwgdGhpcywgdmFsdWUpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIEpTQWN0aXZhdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQotewotICAgIEpTQWN0aXZhdGlvbiog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihvYmplY3QpOwotCi0gICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFJlZ2lz
dGVyKj4odGhpc09iamVjdC0+bV9yZWdpc3RlcnMpKTsKLSAgICBpZiAoc2hvdWxkSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyhtb2RlKSAmJiAhdGhpc09iamVjdC0+aXNUb3JuT2ZmKCkgJiYgKGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSB8fCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT51c2VzRXZhbCgpKSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cyk7Ci0KLSAgICB7Ci0gICAgICAgIENvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmVuZChsb2NrZXIpOwotICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERv
bnRFbnVtICYmICFzaG91bGRJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc1ZhbGlk
KGl0LT52YWx1ZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICAvLyBTa2lwIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkIGltcGxlbWVudGF0
aW9uIG9mIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcwotICAgIEpTT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9k
ZSk7Ci19Ci0KLWlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0
cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8
fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKLSAgICAKLSAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7Ci0gICAgewotICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS51aWQoKSk7Ci0gICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChs
b2NrZXIpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwotICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKLSAgICAgICAgaWYgKCFpc1ZhbGlkKGVudHJ5KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgCi0gICAgICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7Ci0g
ICAgICAgIHJlZyA9ICZyZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpOwotICAgIH0KLSAgICBy
ZWctPnNldCh2bSwgdGhpcywgdmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEpT
QWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQot
ewotICAgIEpTQWN0aXZhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihv
YmplY3QpOwotCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YXJndW1lbnRzKSB7Ci0gICAgICAgIC8vIERlZmVuZCBhZ2FpbnN0IHRoZSBpbnNwZWN0b3IgYXNr
aW5nIGZvciB0aGUgYXJndW1lbnRzIG9iamVjdCBhZnRlciBpdCBoYXMgYmVlbiBvcHRpbWl6ZWQg
b3V0LgotICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8UmVnaXN0ZXIqPih0aGlzT2JqZWN0LT5tX3JlZ2lzdGVycykpOwotICAg
ICAgICBpZiAoIXRoaXNPYmplY3QtPmlzVG9ybk9mZigpICYmIChjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT51c2VzQXJndW1lbnRzKCkgfHwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+dXNlc0V2YWwo
KSkpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIERvbnRFbnVtLCBh
cmd1bWVudHNHZXR0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBz
bG90KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwot
ICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpIHsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIC8vIFdlIGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09iamVjdCBiZWNhdXNlIHRoZXJl
J3Mgbm8gd2F5IHRvIGdpdmUgYW4gCi0gICAgLy8gYWN0aXZhdGlvbiBvYmplY3QgZ2V0dGVyIHBy
b3BlcnRpZXMgb3IgYSBwcm90b3R5cGUuCi0gICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5wcm90b3R5cGUo
KS5pc051bGwoKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEpTQWN0aXZhdGlvbjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgSlNBY3Rp
dmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGNlbGwpOwotICAgIEFT
U0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVh
cCh0aGlzT2JqZWN0KSk7Ci0KLSAgICBpZiAodGhpc09iamVjdC0+c3ltYm9sVGFibGVQdXQoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFdlIGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09iamVjdCBiZWNhdXNl
IF9fcHJvdG9fXyBhbmQgZ2V0dGVyL3NldHRlciAKLSAgICAvLyBwcm9wZXJ0aWVzIGFyZSBub24t
c3RhbmRhcmQgZXh0ZW5zaW9ucyB0aGF0IG90aGVyIGltcGxlbWVudGF0aW9ucyBkbyBub3QKLSAg
ICAvLyBleHBvc2UgaW4gdGhlIGFjdGl2YXRpb24gb2JqZWN0LgotICAgIEFTU0VSVCghdGhpc09i
amVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICB0aGlzT2JqZWN0LT5wdXRP
d25EYXRhUHJvcGVydHkoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci19
Ci0KLWJvb2wgSlNBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShjZWxsLCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwotfQotCi1KU1ZhbHVlIEpTQWN0aXZhdGlvbjo6dG9UaGlzKEpTQ2VsbCos
IEV4ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2Rl
ID09IFN0cmljdE1vZGUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVy
biBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNBY3RpdmF0
aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
biA9IGpzQ2FzdDxKU0FjdGl2YXRpb24qPihzbG90QmFzZSk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oYWN0
aXZhdGlvbi0+bV9yZWdpc3RlcnMpKTsKLSAgICBBU1NFUlQoIWFjdGl2YXRpb24tPmlzVG9ybk9m
ZigpICYmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgfHwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+dXNlc0V2YWwoKSkpOwotICAgIGlmIChhY3RpdmF0aW9uLT5pc1Rv
cm5PZmYoKSB8fCAhKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSB8fCBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT51c2VzRXZhbCgpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVu
dHNSZWdpc3RlciA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmFyZ3VtZW50c1JlZ2lzdGVyKCk7
Ci0gICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFyZ3Vt
ZW50c1JlZ2lzdGVyLm9mZnNldCgpKS5qc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXJndW1lbnRzKTsKLSAgICBpbnQgcmVhbEFyZ3VtZW50c1JlZ2lzdGVyID0gdW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKS5vZmZzZXQoKTsKLQot
ICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShjYWxsRnJh
bWUtPnZtKCksIGNhbGxGcmFtZSkpOwotICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihhcmd1bWVu
dHNSZWdpc3Rlci5vZmZzZXQoKSkgPSBhcmd1bWVudHM7Ci0gICAgY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKHJlYWxBcmd1bWVudHNSZWdpc3RlcikgPSBhcmd1bWVudHM7Ci0gICAgCi0gICAgQVNTRVJU
KGNhbGxGcmFtZS0+dW5jaGVja2VkUihyZWFsQXJndW1lbnRzUmVnaXN0ZXIpLmpzVmFsdWUoKS5p
bmhlcml0cyhBcmd1bWVudHM6OmluZm8oKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FsbEZyYW1lLT51bmNoZWNrZWRSKHJlYWxBcmd1bWVudHNSZWdpc3RlcikuanNWYWx1ZSgpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmNkOGZhODg4
MWFiNTA0NzI1OGQ5NTEyNTU0Mzk1OWIzMDE5MzlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpZm5kZWYgSlNB
Y3RpdmF0aW9uX2gKLSNkZWZpbmUgSlNBY3RpdmF0aW9uX2gKLQotI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgotI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTRW52aXJv
bm1lbnRSZWNvcmQuaCIKLSNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIlN5bWJvbFRhYmxl
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBSZWdpc3RlcjsKLSAgICAKLWNsYXNzIEpT
QWN0aXZhdGlvbiA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVjb3JkIHsKLXByaXZhdGU6Ci0gICAg
SlNBY3RpdmF0aW9uKFZNJiwgQ2FsbEZyYW1lKiwgUmVnaXN0ZXIqLCBTeW1ib2xUYWJsZSopOwot
ICAgIAotcHVibGljOgotICAgIHR5cGVkZWYgSlNFbnZpcm9ubWVudFJlY29yZCBCYXNlOwotCi0g
ICAgc3RhdGljIEpTQWN0aXZhdGlvbiogY3JlYXRlKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIFJlZ2lzdGVyKiByZWdpc3RlcnMsIENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIHsKLSAg
ICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgp
OwotICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7
Ci0gICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoCi0gICAgICAgICAgICBO
b3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEpTQWN0aXZhdGlvbj4oCi0gICAgICAg
ICAgICAgICAgdm0uaGVhcCwKLSAgICAgICAgICAgICAgICBhbGxvY2F0aW9uU2l6ZShzeW1ib2xU
YWJsZSkKLSAgICAgICAgICAgICkKLSAgICAgICAgKSBKU0FjdGl2YXRpb24odm0sIGNhbGxGcmFt
ZSwgcmVnaXN0ZXJzLCBzeW1ib2xUYWJsZSk7Ci0gICAgICAgIGFjdGl2YXRpb24tPmZpbmlzaENy
ZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIGFjdGl2YXRpb247Ci0gICAgfQotICAgICAgICAK
LSAgICBzdGF0aWMgSlNBY3RpdmF0aW9uKiBjcmVhdGUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgewotICAgICAgICByZXR1cm4gY3JlYXRl
KHZtLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBjb2RlQmxvY2stPmZyYW1l
UG9pbnRlck9mZnNldFRvR2V0QWN0aXZhdGlvblJlZ2lzdGVycygpLCBjb2RlQmxvY2spOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKLQotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgZ2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotCi0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
Ci0KLSAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUpOwotCi0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIEVDTUFNb2RlKTsKLQotICAgIHZvaWQgdGVhck9mZihWTSYpOwotICAgICAgICAKLSAg
ICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSB7IHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oQWN0aXZhdGlvbk9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgfQotCi0gICAgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiYgcmVnaXN0ZXJBdChpbnQpIGNvbnN0OwotICAgIGJvb2wgaXNWYWxpZElu
ZGV4KGludCkgY29uc3Q7Ci0gICAgYm9vbCBpc1ZhbGlkKGNvbnN0IFN5bWJvbFRhYmxlRW50cnkm
KSBjb25zdDsKLSAgICBib29sIGlzVG9ybk9mZigpOwotICAgIGludCByZWdpc3RlcnNPZmZzZXQo
KTsKLSAgICBzdGF0aWMgaW50IHJlZ2lzdGVyc09mZnNldChTeW1ib2xUYWJsZSopOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwotCi1wcml2YXRlOgotICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgYm9vbCBzeW1ib2xUYWJsZUdldChQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7Ci0gICAg
Ym9vbCBzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwotICAgIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0KLSAgICBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplKFN5bWJvbFRhYmxlKik7Ci0gICAgc3RhdGljIHNpemVfdCBzdG9yYWdlT2Zm
c2V0KCk7Ci0KLSAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UoKTsgLy8gY2FwdHVy
ZUNvdW50KCkgbnVtYmVyIG9mIHJlZ2lzdGVycy4KLX07Ci0KLWV4dGVybiBpbnQgYWN0aXZhdGlv
bkNvdW50OwotZXh0ZXJuIGludCBhbGxUaGVUaGluZ3NDb3VudDsKLQotaW5saW5lIEpTQWN0aXZh
dGlvbjo6SlNBY3RpdmF0aW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVy
KiByZWdpc3RlcnMsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKLSAgICA6IEJhc2UoCi0gICAg
ICAgIHZtLAotICAgICAgICBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YWN0aXZh
dGlvblN0cnVjdHVyZSgpLAotICAgICAgICByZWdpc3RlcnMsCi0gICAgICAgIGNhbGxGcmFtZS0+
c2NvcGUoKSwKLSAgICAgICAgc3ltYm9sVGFibGUpCi17Ci0gICAgV3JpdGVCYXJyaWVyPFVua25v
d24+KiBzdG9yYWdlID0gdGhpcy0+c3RvcmFnZSgpOwotICAgIHNpemVfdCBjYXB0dXJlQ291bnQg
PSBzeW1ib2xUYWJsZS0+Y2FwdHVyZUNvdW50KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjYXB0dXJlQ291bnQ7ICsraSkKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmc3RvcmFnZVtpXSkg
V3JpdGVCYXJyaWVyPFVua25vd24+OwotfQotCi1KU0FjdGl2YXRpb24qIGFzQWN0aXZhdGlvbihK
U1ZhbHVlKTsKLQotaW5saW5lIEpTQWN0aXZhdGlvbiogYXNBY3RpdmF0aW9uKEpTVmFsdWUgdmFs
dWUpCi17Ci0gICAgQVNTRVJUKGFzT2JqZWN0KHZhbHVlKS0+aW5oZXJpdHMoSlNBY3RpdmF0aW9u
OjppbmZvKCkpKTsKLSAgICByZXR1cm4ganNDYXN0PEpTQWN0aXZhdGlvbio+KGFzT2JqZWN0KHZh
bHVlKSk7Ci19Ci0gICAgCi1BTFdBWVNfSU5MSU5FIEpTQWN0aXZhdGlvbiogUmVnaXN0ZXI6OmFj
dGl2YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBhc0FjdGl2YXRpb24oanNWYWx1ZSgpKTsK
LX0KLQotaW5saW5lIGludCBKU0FjdGl2YXRpb246OnJlZ2lzdGVyc09mZnNldChTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUpCi17Ci0gICAgcmV0dXJuIHN0b3JhZ2VPZmZzZXQoKSArICgoc3ltYm9s
VGFibGUtPmNhcHR1cmVDb3VudCgpIC0gc3ltYm9sVGFibGUtPmNhcHR1cmVTdGFydCgpICAtIDEp
ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpOwotfQotCi1pbmxpbmUgdm9pZCBKU0Fj
dGl2YXRpb246OnRlYXJPZmYoVk0mIHZtKQotewotICAgIEFTU0VSVCghaXNUb3JuT2ZmKCkpOwot
Ci0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZHN0ID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KAotICAgICAgICByZWludGVycHJldF9jYXN0
PGNoYXIqPih0aGlzKSArIHJlZ2lzdGVyc09mZnNldChzeW1ib2xUYWJsZSgpKSk7Ci0gICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogc3JjID0gbV9yZWdpc3RlcnM7Ci0KLSAgICBpbnQgY2Fw
dHVyZUVuZCA9IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVFbmQoKTsKLSAgICBmb3IgKGludCBpID0g
c3ltYm9sVGFibGUoKS0+Y2FwdHVyZVN0YXJ0KCk7IGkgPiBjYXB0dXJlRW5kOyAtLWkpCi0gICAg
ICAgIGRzdFtpXS5zZXQodm0sIHRoaXMsIHNyY1tpXS5nZXQoKSk7Ci0KLSAgICBtX3JlZ2lzdGVy
cyA9IGRzdDsKLSAgICBBU1NFUlQoaXNUb3JuT2ZmKCkpOwotfQotCi1pbmxpbmUgYm9vbCBKU0Fj
dGl2YXRpb246OmlzVG9ybk9mZigpCi17Ci0gICAgcmV0dXJuIG1fcmVnaXN0ZXJzID09IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPigKLSAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyByZWdpc3RlcnNPZmZzZXQoc3ltYm9sVGFibGUo
KSkpOwotfQotCi1pbmxpbmUgc2l6ZV90IEpTQWN0aXZhdGlvbjo6c3RvcmFnZU9mZnNldCgpCi17
Ci0gICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KT4oc2l6ZW9mKEpTQWN0aXZhdGlvbikpOwotfQotCi1pbmxpbmUgV3JpdGVCYXJy
aWVyPFVua25vd24+KiBKU0FjdGl2YXRpb246OnN0b3JhZ2UoKQotewotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0X3B0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPigKLSAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBzdG9yYWdlT2Zmc2V0KCkpOwotfQotCi1pbmxpbmUg
c2l6ZV90IEpTQWN0aXZhdGlvbjo6YWxsb2NhdGlvblNpemUoU3ltYm9sVGFibGUqIHN5bWJvbFRh
YmxlKQotewotICAgIHNpemVfdCBvYmplY3RTaXplSW5CeXRlcyA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEpTQWN0aXZhdGlv
bikpOwotICAgIHNpemVfdCBzdG9yYWdlU2l6ZUluQnl0ZXMgPSBzeW1ib2xUYWJsZS0+Y2FwdHVy
ZUNvdW50KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKLSAgICByZXR1cm4gb2Jq
ZWN0U2l6ZUluQnl0ZXMgKyBzdG9yYWdlU2l6ZUluQnl0ZXM7Ci19Ci0KLWlubGluZSBib29sIEpT
QWN0aXZhdGlvbjo6aXNWYWxpZEluZGV4KGludCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5k
ZXggPiBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlU3RhcnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChpbmRleCA8PSBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlRW5kKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJvb2wgSlNBY3Rp
dmF0aW9uOjppc1ZhbGlkKGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KSBjb25zdAotewot
ICAgIHJldHVybiBpc1ZhbGlkSW5kZXgoZW50cnkuZ2V0SW5kZXgoKSk7Ci19Ci0KLWlubGluZSBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBKU0FjdGl2YXRpb246OnJlZ2lzdGVyQXQoaW50IGlu
ZGV4KSBjb25zdAotewotICAgIEFTU0VSVChpc1ZhbGlkSW5kZXgoaW5kZXgpKTsKLSAgICByZXR1
cm4gQmFzZTo6cmVnaXN0ZXJBdChpbmRleCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0j
ZW5kaWYgLy8gSlNBY3RpdmF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAppbmRleCA2NDg3Y2E2MzJjY2VmNjA3NDZkNzg0MGNhNTY1OGVjZmFjNzhlYWRh
Li4zNmFiOWE1YTc1Y2JkYTQxYmZjMDUxMGU3YTU0ZGNiZTk2ZWE0ZjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKLWNsYXNzIEpTQWN0aXZhdGlvbjsKK2NsYXNz
IEpTTGV4aWNhbEVudmlyb25tZW50OwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk4ZmRlNzlm
ZjY1ZmNjYTAxMDdmMWRiZTU3ODVlNDQ4YTk5NDRjYTMuLmJkMWY5ZDE1NGYzNzJkOGJjZTMyY2E5
NDliNDI3YmEzYjlmYjY0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQVBJ
V3JhcHBlck9iamVjdC5oIgotI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpT
QXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgiCkBAIC03NCw2ICs3Myw3IEBACiAjaW5jbHVk
ZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRv
ci5oIgpAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFs
dWUgcHJvdG90eXBlKQogICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5z
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0RhdGFWaWV3OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCkp
KTsKIAogICAgIG1fbmFtZVNjb3BlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNOYW1lU2NvcGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKLSAgICBtX2FjdGl2YXRpb25T
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0FjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcykpOworICAgIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1f
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0
aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVi
dWdnZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRl
U3RydWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7
CkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmFtZVNjb3BlU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZkluZGV4aW5nU2hhcGVzOyArK2kpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA4
NjRjYjFlYjUyMGVmNTZmYTAwZjkwMDdhMWY1MWY3N2VmNTRmNTUzLi5iZjEwY2I4NWRlOTdlNTlj
YzA3ZTRmOTVjNzE0MDQ5NGU5ZmZhZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE4OSw3ICsxODksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7Ci0gICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hY3RpdmF0aW9uU3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZVNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fYXJndW1lbnRzU3RydWN0dXJlOwogICAgICAgICAKQEAgLTM5NSw3
ICszOTUsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAg
U3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29w
ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJl
LmdldCgpOyB9Ci0gICAgU3RydWN0dXJlKiBhY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBhY3Rp
dmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVTY29wZVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZVNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBh
cmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1N0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUzMzE5YTdhN2NlNTQ0M2VlNTA4MjEwZDE5ZDAyOTA0NDYyY2M5NDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5jcHAKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTGV4
aWNhbEVudmlyb25tZW50LmgiCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnNfaW5mbyA9IHsgIkpTTGV4aWNhbEVu
dmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0xleGlj
YWxFbnZpcm9ubWVudCkgfTsKKwordm9pZCBKU0xleGljYWxFbnZpcm9ubWVudDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTGV4aWNh
bEVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICAv
LyBObyBuZWVkIHRvIG1hcmsgb3VyIHJlZ2lzdGVycyBpZiB0aGV5J3JlIHN0aWxsIGluIHRoZSBK
U1N0YWNrLgorICAgIGlmICghdGhpc09iamVjdC0+aXNUb3JuT2ZmKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+
Y2FwdHVyZUNvdW50KCk7ICsraSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
PnN0b3JhZ2UoKVtpXSk7Cit9CisKK2lubGluZSBib29sIEpTTGV4aWNhbEVudmlyb25tZW50Ojpz
eW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGlu
ZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOworICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRGVmZW5kIGFnYWluc3QgdGhlIGluc3BlY3RvciBh
c2tpbmcgZm9yIGEgdmFyIGFmdGVyIGl0IGhhcyBiZWVuIG9wdGltaXplZCBvdXQuCisgICAgaWYg
KGlzVG9ybk9mZigpICYmICFpc1ZhbGlkKGVudHJ5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51bSwgcmVnaXN0ZXJBdChlbnRyeS5nZXRJ
bmRleCgpKS5nZXQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIEpTTGV4
aWNhbEVudmlyb25tZW50OjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwor
ICAgIGlmIChlbnRyeS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
RGVmZW5kIGFnYWluc3QgdGhlIGluc3BlY3RvciBhc2tpbmcgZm9yIGEgdmFyIGFmdGVyIGl0IGhh
cyBiZWVuIG9wdGltaXplZCBvdXQuCisgICAgaWYgKGlzVG9ybk9mZigpICYmICFpc1ZhbGlkKGVu
dHJ5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKHJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCksIGVudHJ5LmdldEF0dHJpYnV0
ZXMoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIEpTTGV4aWNhbEVudmly
b25tZW50OjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOworICAgIAorICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIHJlZzsKKyAgICB7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKKyAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQo
bG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOworICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZSgpLT5lbmQobG9ja2VyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
QVNTRVJUKCFpdGVyLT52YWx1ZS5pc051bGwoKSk7CisgICAgICAgIGlmIChpdGVyLT52YWx1ZS5p
c1JlYWRPbmx5KCkpIHsKKyAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy8g
RGVmZW5kIGFnYWluc3QgdGhlIGluc3BlY3RvciBhc2tpbmcgZm9yIGEgdmFyIGFmdGVyIGl0IGhh
cyBiZWVuIG9wdGltaXplZCBvdXQuCisgICAgICAgIGlmIChpc1Rvcm5PZmYoKSAmJiAhaXNWYWxp
ZChpdGVyLT52YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChW
YXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRTZXQoKSkK
KyAgICAgICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbCh0aGlz
LCBwcm9wZXJ0eU5hbWUpKTsgLy8gRG9uJ3QgbWVzcyBhcm91bmQgLSBpZiB3ZSBoYWQgZm91bmQg
dGhpcyBzdGF0aWNhbGx5LCB3ZSB3b3VsZCBoYXZlIGludmNhbGlkYXRlZCBpdC4KKyAgICAgICAg
cmVnID0gJnJlZ2lzdGVyQXQoaXRlci0+dmFsdWUuZ2V0SW5kZXgoKSk7CisgICAgfQorICAgIHJl
Zy0+c2V0KHZtLCB0aGlzLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSlNM
ZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBKU0xleGljYWxFbnZpcm9ubWVudCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KG9iamVjdCk7CisKKyAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
UmVnaXN0ZXIqPih0aGlzT2JqZWN0LT5tX3JlZ2lzdGVycykpOworICAgIGlmIChzaG91bGRJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKG1vZGUpICYmICF0aGlzT2JqZWN0LT5pc1Rvcm5PZmYoKSAm
JiAoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpIHx8IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPnVzZXNFdmFsKCkpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKTsKKworICAgIHsKKyAgICAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKKyAg
ICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9s
VGFibGUoKS0+ZW5kKGxvY2tlcik7CisgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygp
ICYgRG9udEVudW0gJiYgIXNob3VsZEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMobW9kZSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlz
VmFsaWQoaXQtPnZhbHVlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAg
ICAgICB9CisgICAgfQorICAgIC8vIFNraXAgdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQgaW1wbGVt
ZW50YXRpb24gb2YgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzCisgICAgSlNPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKK30KKworaW5saW5lIGJvb2wgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnN5bWJvbFRh
YmxlUHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIEFTU0VSVCghSGVhcDo6
aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7Cisg
ICAgCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVnOworICAgIHsKKyAgICAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKKyAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQo
bG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOworICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZSgpLT5lbmQobG9ja2VyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgQVNTRVJUKCFl
bnRyeS5pc051bGwoKSk7CisgICAgICAgIGlmICghaXNWYWxpZChlbnRyeSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBlbnRyeS5zZXRBdHRyaWJ1dGVzKGF0
dHJpYnV0ZXMpOworICAgICAgICByZWcgPSAmcmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKTsK
KyAgICB9CisgICAgcmVnLT5zZXQodm0sIHRoaXMsIHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4ob2JqZWN0KTsKKworICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgeworICAgICAg
ICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUgaW5zcGVjdG9yIGFza2luZyBmb3IgdGhlIGFyZ3VtZW50
cyBvYmplY3QgYWZ0ZXIgaXQgaGFzIGJlZW4gb3B0aW1pemVkIG91dC4KKyAgICAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFJlZ2lz
dGVyKj4odGhpc09iamVjdC0+bV9yZWdpc3RlcnMpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0
LT5pc1Rvcm5PZmYoKSAmJiAoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygp
IHx8IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnVzZXNFdmFsKCkpKSB7CisgICAgICAgICAgICBz
bG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBEb250RW51bSwgYXJndW1lbnRzR2V0dGVyKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICBpZiAoSlNWYWx1ZSB2YWx1
ZSA9IHRoaXNPYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMpKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgYXR0cmlidXRlcywg
dmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBXZSBkb24ndCBj
YWxsIHRocm91Z2ggdG8gSlNPYmplY3QgYmVjYXVzZSB0aGVyZSdzIG5vIHdheSB0byBnaXZlIGEg
CisgICAgLy8gbGV4aWNhbCBlbnZpcm9ubWVudCBvYmplY3QgZ2V0dGVyIHByb3BlcnRpZXMgb3Ig
YSBwcm90b3R5cGUuCisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5wcm90b3R5cGUoKS5pc051bGwoKSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTTGV4aWNhbEVudmlyb25tZW50OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU0xleGljYWxF
bnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KGNl
bGwpOworICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkg
PT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CisKKyAgICBpZiAodGhpc09iamVjdC0+c3ltYm9s
VGFibGVQdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09i
amVjdCBiZWNhdXNlIF9fcHJvdG9fXyBhbmQgZ2V0dGVyL3NldHRlciAKKyAgICAvLyBwcm9wZXJ0
aWVzIGFyZSBub24tc3RhbmRhcmQgZXh0ZW5zaW9ucyB0aGF0IG90aGVyIGltcGxlbWVudGF0aW9u
cyBkbyBub3QKKyAgICAvLyBleHBvc2UgaW4gdGhlIGxleGljYWxFbnZpcm9ubWVudCBvYmplY3Qu
CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwor
ICAgIHRoaXNPYmplY3QtPnB1dE93bkRhdGFQcm9wZXJ0eShleGVjLT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKK30KKworYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYXJndW1lbnRzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gQmFzZTo6
ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lKTsKK30KKworSlNWYWx1ZSBK
U0xleGljYWxFbnZpcm9ubWVudDo6dG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgRUNN
QU1vZGUgZWNtYU1vZGUpCit7CisgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFs
dWUoKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmFyZ3VtZW50
c0dldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCit7CisgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9u
bWVudCA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVudCo+KHNsb3RCYXNlKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8UmVn
aXN0ZXIqPihsZXhpY2FsRW52aXJvbm1lbnQtPm1fcmVnaXN0ZXJzKSk7CisgICAgQVNTRVJUKCFs
ZXhpY2FsRW52aXJvbm1lbnQtPmlzVG9ybk9mZigpICYmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT51c2VzQXJndW1lbnRzKCkgfHwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+dXNlc0V2YWwoKSkp
OworICAgIGlmIChsZXhpY2FsRW52aXJvbm1lbnQtPmlzVG9ybk9mZigpIHx8ICEoY2FsbEZyYW1l
LT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpIHx8IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PnVzZXNFdmFsKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKS0+YXJndW1lbnRzUmVnaXN0ZXIoKTsKKyAgICBpZiAoSlNWYWx1ZSBhcmd1
bWVudHMgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIub2Zmc2V0KCkp
LmpzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcmd1bWVudHMpOwor
ICAgIGludCByZWFsQXJndW1lbnRzUmVnaXN0ZXIgPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoYXJndW1lbnRzUmVnaXN0ZXIpLm9mZnNldCgpOworCisgICAgSlNWYWx1ZSBhcmd1bWVudHMg
PSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lKSk7
CisgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyLm9mZnNldCgpKSA9
IGFyZ3VtZW50czsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIocmVhbEFyZ3VtZW50c1JlZ2lz
dGVyKSA9IGFyZ3VtZW50czsKKyAgICAKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT51bmNoZWNrZWRS
KHJlYWxBcmd1bWVudHNSZWdpc3RlcikuanNWYWx1ZSgpLmluaGVyaXRzKEFyZ3VtZW50czo6aW5m
bygpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
cmVhbEFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNmRkM2Y0Nzg1ZWU5ZjExN2YwOWM2YTI5OGRjNDZlYWZh
MTg3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIEpTTGV4
aWNhbEVudmlyb25tZW50X2gKKyNkZWZpbmUgSlNMZXhpY2FsRW52aXJvbm1lbnRfaAorCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgorI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVk
ZSAiU3ltYm9sVGFibGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFJlZ2lzdGVyOwor
ICAgIAorY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJl
Y29yZCB7Citwcml2YXRlOgorICAgIEpTTGV4aWNhbEVudmlyb25tZW50KFZNJiwgQ2FsbEZyYW1l
KiwgUmVnaXN0ZXIqLCBTeW1ib2xUYWJsZSopOworICAgIAorcHVibGljOgorICAgIHR5cGVkZWYg
SlNFbnZpcm9ubWVudFJlY29yZCBCYXNlOworCisgICAgc3RhdGljIEpTTGV4aWNhbEVudmlyb25t
ZW50KiBjcmVhdGUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXIqIHJlZ2lz
dGVycywgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgeworICAgICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgICAgIEFTU0VSVChj
b2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsKKyAgICAgICAgSlNMZXhpY2Fs
RW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9IG5ldyAoCisgICAgICAgICAgICBOb3RO
dWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEpTTGV4aWNhbEVudmlyb25tZW50PigKKyAg
ICAgICAgICAgICAgICB2bS5oZWFwLAorICAgICAgICAgICAgICAgIGFsbG9jYXRpb25TaXplKHN5
bWJvbFRhYmxlKQorICAgICAgICAgICAgKQorICAgICAgICApIEpTTGV4aWNhbEVudmlyb25tZW50
KHZtLCBjYWxsRnJhbWUsIHJlZ2lzdGVycywgc3ltYm9sVGFibGUpOworICAgICAgICBsZXhpY2Fs
RW52aXJvbm1lbnQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGxleGljYWxF
bnZpcm9ubWVudDsKKyAgICB9CisgICAgICAgIAorICAgIHN0YXRpYyBKU0xleGljYWxFbnZpcm9u
bWVudCogY3JlYXRlKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29k
ZUJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPnJlZ2lzdGVycygpICsgY29kZUJsb2NrLT5mcmFtZVBvaW50ZXJPZmZzZXRUb0dldEFj
dGl2YXRpb25SZWdpc3RlcnMoKSwgY29kZUJsb2NrKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKKworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworCisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKworICAg
IHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CisK
KyAgICB2b2lkIHRlYXJPZmYoVk0mKTsKKyAgICAgICAgCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwganNOdWxsKCksIFR5cGVJbmZvKEFjdGl2YXRpb25PYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7IH0KKworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIHJlZ2lz
dGVyQXQoaW50KSBjb25zdDsKKyAgICBib29sIGlzVmFsaWRJbmRleChpbnQpIGNvbnN0OworICAg
IGJvb2wgaXNWYWxpZChjb25zdCBTeW1ib2xUYWJsZUVudHJ5JikgY29uc3Q7CisgICAgYm9vbCBp
c1Rvcm5PZmYoKTsKKyAgICBpbnQgcmVnaXN0ZXJzT2Zmc2V0KCk7CisgICAgc3RhdGljIGludCBy
ZWdpc3RlcnNPZmZzZXQoU3ltYm9sVGFibGUqKTsKKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
cHJpdmF0ZToKKyAgICBib29sIHN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgYm9vbCBzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOworICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmLCBib29sJiBzbG90SXNXcml0ZWFibGUpOworICAgIGJvb2wgc3ltYm9sVGFibGVQdXQo
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAg
ICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoVk0mLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xU
YWJsZSopOworICAgIHN0YXRpYyBzaXplX3Qgc3RvcmFnZU9mZnNldCgpOworCisgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+KiBzdG9yYWdlKCk7IC8vIGNhcHR1cmVDb3VudCgpIG51bWJlciBvZiBy
ZWdpc3RlcnMuCit9OworCitleHRlcm4gaW50IGFjdGl2YXRpb25Db3VudDsKK2V4dGVybiBpbnQg
YWxsVGhlVGhpbmdzQ291bnQ7CisKK2lubGluZSBKU0xleGljYWxFbnZpcm9ubWVudDo6SlNMZXhp
Y2FsRW52aXJvbm1lbnQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXIqIHJl
Z2lzdGVycywgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSgKKyAgICAgICAg
dm0sCisgICAgICAgIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hY3RpdmF0aW9u
U3RydWN0dXJlKCksCisgICAgICAgIHJlZ2lzdGVycywKKyAgICAgICAgY2FsbEZyYW1lLT5zY29w
ZSgpLAorICAgICAgICBzeW1ib2xUYWJsZSkKK3sKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHN0b3JhZ2UgPSB0aGlzLT5zdG9yYWdlKCk7CisgICAgc2l6ZV90IGNhcHR1cmVDb3VudCA9IHN5
bWJvbFRhYmxlLT5jYXB0dXJlQ291bnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNh
cHR1cmVDb3VudDsgKytpKQorICAgICAgICBuZXcgKE5vdE51bGwsICZzdG9yYWdlW2ldKSBXcml0
ZUJhcnJpZXI8VW5rbm93bj47Cit9CisKK0pTTGV4aWNhbEVudmlyb25tZW50KiBhc0FjdGl2YXRp
b24oSlNWYWx1ZSk7CisKK2lubGluZSBKU0xleGljYWxFbnZpcm9ubWVudCogYXNBY3RpdmF0aW9u
KEpTVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKGFzT2JqZWN0KHZhbHVlKS0+aW5oZXJpdHMo
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmluZm8oKSkpOworICAgIHJldHVybiBqc0Nhc3Q8SlNMZXhp
Y2FsRW52aXJvbm1lbnQqPihhc09iamVjdCh2YWx1ZSkpOworfQorICAgIAorQUxXQVlTX0lOTElO
RSBKU0xleGljYWxFbnZpcm9ubWVudCogUmVnaXN0ZXI6OmxleGljYWxFbnZpcm9ubWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGFzQWN0aXZhdGlvbihqc1ZhbHVlKCkpOworfQorCitpbmxpbmUg
aW50IEpTTGV4aWNhbEVudmlyb25tZW50OjpyZWdpc3RlcnNPZmZzZXQoU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlKQoreworICAgIHJldHVybiBzdG9yYWdlT2Zmc2V0KCkgKyAoKHN5bWJvbFRhYmxl
LT5jYXB0dXJlQ291bnQoKSAtIHN5bWJvbFRhYmxlLT5jYXB0dXJlU3RhcnQoKSAgLSAxKSAqIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKTsKK30KKworaW5saW5lIHZvaWQgSlNMZXhpY2Fs
RW52aXJvbm1lbnQ6OnRlYXJPZmYoVk0mIHZtKQoreworICAgIEFTU0VSVCghaXNUb3JuT2ZmKCkp
OworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZHN0ID0gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KAorICAgICAgICByZWludGVycHJldF9j
YXN0PGNoYXIqPih0aGlzKSArIHJlZ2lzdGVyc09mZnNldChzeW1ib2xUYWJsZSgpKSk7CisgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogc3JjID0gbV9yZWdpc3RlcnM7CisKKyAgICBpbnQg
Y2FwdHVyZUVuZCA9IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVFbmQoKTsKKyAgICBmb3IgKGludCBp
ID0gc3ltYm9sVGFibGUoKS0+Y2FwdHVyZVN0YXJ0KCk7IGkgPiBjYXB0dXJlRW5kOyAtLWkpCisg
ICAgICAgIGRzdFtpXS5zZXQodm0sIHRoaXMsIHNyY1tpXS5nZXQoKSk7CisKKyAgICBtX3JlZ2lz
dGVycyA9IGRzdDsKKyAgICBBU1NFUlQoaXNUb3JuT2ZmKCkpOworfQorCitpbmxpbmUgYm9vbCBK
U0xleGljYWxFbnZpcm9ubWVudDo6aXNUb3JuT2ZmKCkKK3sKKyAgICByZXR1cm4gbV9yZWdpc3Rl
cnMgPT0gcmVpbnRlcnByZXRfY2FzdF9wdHI8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KAor
ICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIHJlZ2lzdGVyc09mZnNldChz
eW1ib2xUYWJsZSgpKSk7Cit9CisKK2lubGluZSBzaXplX3QgSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OnN0b3JhZ2VPZmZzZXQoKQoreworICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihKU0xleGljYWxFbnZpcm9ubWVu
dCkpOworfQorCitpbmxpbmUgV3JpdGVCYXJyaWVyPFVua25vd24+KiBKU0xleGljYWxFbnZpcm9u
bWVudDo6c3RvcmFnZSgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFdyaXRl
QmFycmllcjxVbmtub3duPio+KAorICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlz
KSArIHN0b3JhZ2VPZmZzZXQoKSk7Cit9CisKK2lubGluZSBzaXplX3QgSlNMZXhpY2FsRW52aXJv
bm1lbnQ6OmFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKK3sKKyAgICBz
aXplX3Qgb2JqZWN0U2l6ZUluQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihKU0xleGljYWxFbnZpcm9ubWVudCkpOwor
ICAgIHNpemVfdCBzdG9yYWdlU2l6ZUluQnl0ZXMgPSBzeW1ib2xUYWJsZS0+Y2FwdHVyZUNvdW50
KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICByZXR1cm4gb2JqZWN0U2l6
ZUluQnl0ZXMgKyBzdG9yYWdlU2l6ZUluQnl0ZXM7Cit9CisKK2lubGluZSBib29sIEpTTGV4aWNh
bEVudmlyb25tZW50Ojppc1ZhbGlkSW5kZXgoaW50IGluZGV4KSBjb25zdAoreworICAgIGlmIChp
bmRleCA+IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVTdGFydCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGluZGV4IDw9IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBKU0xl
eGljYWxFbnZpcm9ubWVudDo6aXNWYWxpZChjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNWYWxpZEluZGV4KGVudHJ5LmdldEluZGV4KCkpOworfQor
CitpbmxpbmUgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OnJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChpc1ZhbGlkSW5kZXgo
aW5kZXgpKTsKKyAgICByZXR1cm4gQmFzZTo6cmVnaXN0ZXJBdChpbmRleCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNMZXhpY2FsRW52aXJvbm1lbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZGNlNDAxZmIzMTU3MWE4OTY3
ZTY5Y2QwZDE4NWQ4MWEwMzRiY2E1MS4uMTMyMDQ4MzkzZTI2NDQzOGM0Njg3MTAxNzNhNzgzNjk3
MzliZDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC01
NzMsNyArNTczLDcgQEAgcHVibGljOgogICAgIC8vICAtIGFzc3VtZXMgdGhlIG9iamVjdCBjb250
YWlucyBubyBvd24gZ2V0dGVyL3NldHRlciBwcm9wZXJ0aWVzLgogICAgIC8vICAtIHByb3ZpZGVz
IG5vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXwogICAgIC8vICAtIGRvZXMgbm90IHdh
bGsgdGhlIHByb3RvdHlwZSBjaGFpbiAodG8gY2hlY2sgZm9yIGFjY2Vzc29ycyBvciBub24td3Jp
dGFibGUgcHJvcGVydGllcykuCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IEpTQWN0aXZhdGlvbi4K
KyAgICAvLyBUaGlzIGlzIHVzZWQgYnkgSlNMZXhpY2FsRW52aXJvbm1lbnQuCiAgICAgYm9vbCBw
dXRPd25EYXRhUHJvcGVydHkoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOwogCiAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggN2RkNTI0MjRl
MDZlOGRjY2RhZjhjNGZhNzA2YWU3NWVkZTAyMmY4Yy4uZmI2MDhkYjlkOGM0Y2JiM2Y4ZjA4MTIw
OWRkNDIwMzc5Nzk4Zjg1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJK
U1Njb3BlLmgiCiAKLSNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKQEAgLTQ3LDI2ICs0NywyNiBAQCB2b2lkIEpTU2NvcGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIC8vIFJldHVybnMgdHJ1ZSBpZiB3
ZSBmb3VuZCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdGVybWluYXRlIG9wdGltaXphdGlvbi4KIHN0
YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgR2V0T3JQdXQgZ2V0T3JQdXQsIHNpemVf
dCBkZXB0aCwgYm9vbCYgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIFJlc29sdmVPcCYgb3ApCiB7
Ci0gICAgaWYgKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNBY3Rp
dmF0aW9uKj4oc2NvcGUpKSB7CisgICAgaWYgKEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2Fs
RW52aXJvbm1lbnQgPSBqc0R5bmFtaWNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4oc2NvcGUp
KSB7CiAgICAgICAgIGlmIChpZGVudCA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRz
KSB7Ci0gICAgICAgICAgICAvLyBXZSBrbm93IHRoZSBwcm9wZXJ0eSB3aWxsIGJlIGF0IHRoaXMg
YWN0aXZhdGlvbiBzY29wZSwgYnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGNhY2hlIGl0LgorICAg
ICAgICAgICAgLy8gV2Uga25vdyB0aGUgcHJvcGVydHkgd2lsbCBiZSBhdCB0aGlzIGxleGljYWwg
ZW52aXJvbm1lbnQgc2NvcGUsIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0byBjYWNoZSBpdC4KICAg
ICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKER5bmFtaWMsIDAsIDAsIDAsIDAsIDApOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gYWN0aXZhdGlvbi0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7Cisg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBsZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJv
bFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICBpZiAoZW50cnkuaXNSZWFkT25s
eSgpICYmIGdldE9yUHV0ID09IFB1dCkgewotICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgcHJv
cGVydHkgd2lsbCBiZSBhdCB0aGlzIGFjdGl2YXRpb24gc2NvcGUsIGJ1dCB3ZSBkb24ndCBrbm93
IGhvdyB0byBjYWNoZSBpdC4KKyAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIHByb3BlcnR5IHdp
bGwgYmUgYXQgdGhpcyBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlLCBidXQgd2UgZG9uJ3Qga25v
dyBob3cgdG8gY2FjaGUgaXQuCiAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChEeW5hbWljLCAw
LCAwLCAwLCAwLCAwKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewotICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3Ao
bWFrZVR5cGUoQ2xvc3VyZVZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgMCwg
YWN0aXZhdGlvbiwgZW50cnkud2F0Y2hwb2ludFNldCgpLCBlbnRyeS5nZXRJbmRleCgpKTsKKyAg
ICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKENsb3N1cmVWYXIsIG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIGxleGljYWxFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hw
b2ludFNldCgpLCBlbnRyeS5nZXRJbmRleCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKGFjdGl2YXRpb24tPnN5bWJvbFRhYmxlKCktPnVzZXNO
b25TdHJpY3RFdmFsKCkpCisgICAgICAgIGlmIChsZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCktPnVzZXNOb25TdHJpY3RFdmFsKCkpCiAgICAgICAgICAgICBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggNTdhMWZiYjRjMDgxODAwMmEyNzNjYjVi
ZDUxNzVlNWZlNzA1ZjY3YS4uZTc1MzkzMTQ1NDcwNjYzYTZhODg0YjgzYzA2YzM2NGM0YjJmZDI3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtOTksMTEgKzk5
LDExIEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5
cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3AgewotICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0
eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0FjdGl2YXRpb24qIGFj
dGl2YXRpb24sIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90
IG9wZXJhbmQpCisgICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJv
bm1lbnQsIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9w
ZXJhbmQpCiAgICAgICAgIDogdHlwZSh0eXBlKQogICAgICAgICAsIGRlcHRoKGRlcHRoKQogICAg
ICAgICAsIHN0cnVjdHVyZShzdHJ1Y3R1cmUpCi0gICAgICAgICwgYWN0aXZhdGlvbihhY3RpdmF0
aW9uKQorICAgICAgICAsIGxleGljYWxFbnZpcm9ubWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAg
ICAgICAgICwgd2F0Y2hwb2ludFNldCh3YXRjaHBvaW50U2V0KQogICAgICAgICAsIG9wZXJhbmQo
b3BlcmFuZCkKICAgICB7CkBAIC0xMTIsNyArMTEyLDcgQEAgc3RydWN0IFJlc29sdmVPcCB7CiAg
ICAgUmVzb2x2ZVR5cGUgdHlwZTsKICAgICBzaXplX3QgZGVwdGg7CiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7Ci0gICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uOworICAgIEpTTGV4aWNhbEVu
dmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0
KiB3YXRjaHBvaW50U2V0OwogICAgIHVpbnRwdHJfdCBvcGVyYW5kOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5k
ZXggNWNmZDQyMWM4YTczOTc4Mzk0NWFjMmM4Y2RlYjI2MjBiZDk0NWYxMC4uMzhkOGI3ZmIzMGZh
NTE4NWQwMDZiNjQ1YzVmZTZkMTM4ZjA1MmM0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTI5LDggKzI5LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1N5bWJvbFRhYmxlT2JqZWN0Lmgi
CiAKLSNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNOYW1lU2Nv
cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJy
YXkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFs
QWN0aXZhdGlvbi5oCmluZGV4IGUwMmJiNjE1ZDA0ZmIxNWVjN2Y1Y2YxNDdhYjE2OTkxZTBhYzUx
ZDguLmZjODgxMDBhMTkxZDE1MDJjYzI5OTAxMDI3YjFlNzUzYzVhZmFlNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaApA
QCAtMzYsOSArMzYsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaWN0RXZhbEFjdGl2YXRp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewotICAgICAgICBTdHJpY3RFdmFsQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmljdEV2
YWxBY3RpdmF0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oZXhlYyk7
Ci0gICAgICAgIGFjdGl2YXRpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOwotICAgICAg
ICByZXR1cm4gYWN0aXZhdGlvbjsKKyAgICAgICAgU3RyaWN0RXZhbEFjdGl2YXRpb24qIGxleGlj
YWxFbnZpcm9ubWVudCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmljdEV2YWxBY3Rp
dmF0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oZXhlYyk7CisgICAg
ICAgIGxleGljYWxFbnZpcm9ubWVudC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAg
ICAgIHJldHVybiBsZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBjYjNiMzk5ZjQwODcwZGNlMGU2OTEwMWY4
NDMyZWQxYjlkZmE4ZTA3Li40OTE0MTk3MmQ5YmNkYWExY2M5OGQ3NTEzNDdhN2VmMTVmMjRlNjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MywxMSArNTMsMTEgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRl
ICJKU0FQSVZhbHVlV3JhcHBlci5oIgotI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAi
SlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJK
U05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIK
</data>
<flag name="review"
          id="262722"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>