<?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>122206</bug_id>
          
          <creation_ts>2013-10-01 23:18:54 -0700</creation_ts>
          <short_desc>CTTE: DOMWrapperWorlds should be passed around by reference</short_desc>
          <delta_ts>2013-10-02 11:17:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>935356</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-01 23:18:54 -0700</bug_when>
    <thetext>CTTE: DOMWrapperWorlds should be passed around by reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935357</commentid>
    <comment_count>1</comment_count>
      <attachid>213154</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-01 23:21:25 -0700</bug_when>
    <thetext>Created attachment 213154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935358</commentid>
    <comment_count>2</comment_count>
      <attachid>213154</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-10-01 23:33:01 -0700</bug_when>
    <thetext>Comment on attachment 213154
Patch

Attachment 213154 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2903255</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935359</commentid>
    <comment_count>3</comment_count>
      <attachid>213154</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-02 00:07:16 -0700</bug_when>
    <thetext>Comment on attachment 213154
Patch

Attachment 213154 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/2904315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935422</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-02 10:01:44 -0700</bug_when>
    <thetext>Committed r156769: &lt;http://trac.webkit.org/changeset/156769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935457</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-02 11:17:59 -0700</bug_when>
    <thetext>Looks like this patch broke binding tests:
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29/builds/13432/steps/bindings-generation-tests/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213154</attachid>
            <date>2013-10-01 23:21:25 -0700</date>
            <delta_ts>2013-10-02 00:07:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122206-20131001232125.patch</filename>
            <type>text/plain</type>
            <size>127101</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Njc2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MCBAQAorMjAxMy0xMC0wMSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENUVEU6IERPTVdyYXBwZXJXb3JsZHMg
c2hvdWxkIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3Js
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OkRPTVdyYXBwZXJXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6On5ET01XcmFwcGVyV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpjbGVhcldyYXBwZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6Om1haW5UaHJl
YWROb3JtYWxXb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmg6
CisgICAgICAgIChXZWJDb3JlOjpkZWJ1Z2dlcldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBs
dWdpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRXb3JsZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6CisgICAgICAgIChX
ZWJDb3JlOjp3cmFwcGVyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbmxpbmVDYWNo
ZWRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldElubGluZUNhY2hlZFdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldENhY2hlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnVuY2FjaGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzU3RyaW5nV2l0aENhY2hlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9i
YWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTUdsb2JhbE9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NR2xvYmFsT2JqZWN0Ojp3b3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6SlNET01X
aW5kb3dCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3cpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6
SlNET01XaW5kb3dTaGVsbCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpz
ZXRXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdpbmRvd1NoZWxsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvd1NoZWxsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dT
aGVsbDo6d29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXJyb3JIYW5kbGVyOjpKU0Vycm9ySGFuZGxlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXJyb3JIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNMaXN0ZW5lckZ1
bmN0aW9ucyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3RlbmVyOjpKU0xhenlFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTTXV0YXRpb25DYWxsYmFjazo6SlNNdXRhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZU93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRB
Y3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6flNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6ZGVzdHJveVdpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpnZXRBbGxXb3JsZHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlU2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OndpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmV4aXN0aW5nV2luZG93U2hlbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aXNDb250
ZW50U2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjU3RhdGVGcm9tTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
U3RhdGVGcm9tUGFnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6V2ViQ29yZUpTQ2xpZW50RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpub3JtYWxXb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpnZXRBbGxXb3JsZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29yZUpTQ2xpZW50RGF0YTo6cmVtZW1iZXJXb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpmb3JnZXRXb3JsZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZlck93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjplbnN1cmVJc29sYXRlZFdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z0luSW1hZ2VFbGVt
ZW50SXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6OmRpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hH
bG9iYWxPYmplY3RBdmFpbGFibGVJbkFsbFdvcmxkcyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFi
bGUpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvd0V4dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5zaW9uKToKKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvd0V4dGVuc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5z
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjp3b3Js
ZCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJT
Y3JpcHRzRm9yV29ybGQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFVzZXJTY3Jp
cHRUb1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hl
ZXRUb1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlw
dEZyb21Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHls
ZVNoZWV0RnJvbVdvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6cmVtb3ZlVXNl
clNjcmlwdHNGcm9tV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVV
c2VyU3R5bGVTaGVldHNGcm9tV29ybGQpOgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6CisK
IDIwMTMtMTAtMDEgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIGNvbnRlbnRlZGl0YWJsZSBqdXN0aWZ5IGNvbW1hbmRzIGFwcGxpZWQgdG8gbmV4dCBw
YXJhZ3JhcGggYXMgd2VsbApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE1Njc1
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01
NjQsMTMgKzU2NCwxMyBAQCBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1
CiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0
RU5TXzE0TmF2aWdhdGlvblR5cGVFCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUV2
CiBfX1pON1dlYkNvcmUxNlJlc291cmNlUmVzcG9uc2UxOXNldENlcnRpZmljYXRlQ2hhaW5FUEs5
X19DRkFycmF5Ci1fX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxMGluaXRTY3JpcHRFUE5T
XzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTBpbml0
U2NyaXB0RVJOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJv
bGxlcjExY3JlYXRlV29ybGRFdgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTNleGVj
dXRlU2NyaXB0RVJLTjNXVEY2U3RyaW5nRWIKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxl
cjE3Y2FuRXhlY3V0ZVNjcmlwdHNFTlNfMzNSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlw
dHNFCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxN2phdmFTY3JpcHRDb250ZXh0RXYK
IF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE4d2luZG93U2NyaXB0T2JqZWN0RXYKLV9f
Wk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjIwZXhlY3V0ZVNjcmlwdEluV29ybGRFUE5TXzE1
RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRWIKK19fWk43V2ViQ29yZTE2U2NyaXB0Q29u
dHJvbGxlcjIwZXhlY3V0ZVNjcmlwdEluV29ybGRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNX
VEY2U3RyaW5nRWIKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjIxcHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlRXYKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjI0anNPYmplY3RGb3JQ
bHVnaW5FbGVtZW50RVBOU18xN0hUTUxQbHVnSW5FbGVtZW50RQogX19aTjdXZWJDb3JlMTZUaHJl
YWRHbG9iYWxEYXRhMTBzdGF0aWNEYXRhRQpAQCAtNjE0LDcgKzYxNCw3IEBAIF9fWk43V2ViQ29y
ZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVS
S04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVSS05TXzIx
TmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVOU1VSTAotX19aTjdXZWJDb3JlMThET01XaW5k
b3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKK19fWk43V2Vi
Q29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVSTlNfMTVET01XcmFwcGVyV29y
bGRFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CiBfX1pO
N1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEzYnVmZmVyRm9yVHlwZUVSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTNzdHJpbmdGb3JUeXBlRVJLTjNX
VEY2U3RyaW5nRQpAQCAtMTI1NywxNiArMTI1NywxNiBAQCBfX1pON1dlYkNvcmU5UGFnZUdyb3Vw
MTZzeW5jTG9jYWxTdG9yYWdlCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTdjbG9zZUxvY2FsU3Rv
cmFnZUV2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMThhZGRWaXNpdGVkTGlua0hhc2hFeQogX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDE4bnVtYmVyT2ZQYWdlR3JvdXBzRXYKLV9fWk43V2ViQ29yZTlQ
YWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04z
V1RGNlN0cmluZ0VSS05TXzNVUkxFUktOUzNfNlZlY3RvcklTNF9MbTBFTlMzXzE1Q3Jhc2hPbk92
ZXJmbG93RUVFU0VfTlNfMjNVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUVOU18yNVVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXNFCitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjBhZGRVc2VyU2NyaXB0VG9X
b3JsZEVSTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFUktOU18zVVJMRVJLTlMz
XzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzIzVXNlclNjcmlw
dEluamVjdGlvblRpbWVFTlNfMjVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzRQogX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDIwcmVtb3ZlQWxsVXNlckNvbnRlbnRFdgogX19aTjdXZWJDb3JlOVBhZ2VH
cm91cDIxcmVtb3ZlQWxsVmlzaXRlZExpbmtzRXYKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNGFk
ZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJp
bmdFUktOU18zVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VF
RVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHlsZUxldmVsRU5T
XzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92
ZVVzZXJTY3JpcHRGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNfM1VSTEUKLV9f
Wk43V2ViQ29yZTlQYWdlR3JvdXAyNnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkRVBOU18xNURP
TVdyYXBwZXJXb3JsZEUKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAyNGFkZFVzZXJTdHlsZVNoZWV0
VG9Xb3JsZEVSTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFUktOU18zVVJMRVJL
TlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzI1VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHlsZUxldmVsRU5TXzIyVXNlclN0eWxlSW5q
ZWN0aW9uVGltZUUKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92ZVVzZXJTY3JpcHRGcm9t
V29ybGRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNfM1VSTEUKK19fWk43V2ViQ29yZTlQYWdl
R3JvdXAyNnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkRVJOU18xNURPTVdyYXBwZXJXb3JsZEUK
IF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzRWIKLV9f
Wk43V2ViQ29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkRVBOU18x
NURPTVdyYXBwZXJXb3JsZEVSS05TXzNVUkxFCitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjlyZW1v
dmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZEVSTlNfMTVET01XcmFwcGVyV29ybGRFUktOU18zVVJM
RQogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDMwY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2Vz
RXYKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAzMHJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3Js
ZEVQTlNfMTVET01XcmFwcGVyV29ybGRFCitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMzByZW1vdmVV
c2VyU3R5bGVTaGVldHNGcm9tV29ybGRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDlwYWdlR3JvdXBFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU5U2Ny
b2xsYmFyMTBtb3VzZU1vdmVkRVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCiBfX1pON1dlYkNv
cmU5U2Nyb2xsYmFyMTFtb3VzZUV4aXRlZEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDE4ICszNiwxOCBAQCBET01XcmFwcGVyV29ybGQ6OkRPTVdyYXBwZXJXb3JsZChKU0M6
OlZNCiB7CiAgICAgVk06OkNsaWVudERhdGEqIGNsaWVudERhdGEgPSBtX3ZtLT5jbGllbnREYXRh
OwogICAgIEFTU0VSVChjbGllbnREYXRhKTsKLSAgICBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGll
bnREYXRhKj4oY2xpZW50RGF0YSktPnJlbWVtYmVyV29ybGQodGhpcyk7CisgICAgc3RhdGljX2Nh
c3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KGNsaWVudERhdGEpLT5yZW1lbWJlcldvcmxkKCp0aGlz
KTsKIH0KIAogRE9NV3JhcHBlcldvcmxkOjp+RE9NV3JhcHBlcldvcmxkKCkKIHsKICAgICBWTTo6
Q2xpZW50RGF0YSogY2xpZW50RGF0YSA9IG1fdm0tPmNsaWVudERhdGE7CiAgICAgQVNTRVJUKGNs
aWVudERhdGEpOwotICAgIHN0YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPihjbGllbnRE
YXRhKS0+Zm9yZ2V0V29ybGQodGhpcyk7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50
RGF0YSo+KGNsaWVudERhdGEpLT5mb3JnZXRXb3JsZCgqdGhpcyk7CiAKICAgICAvLyBUaGVzZSBp
dGVtcyBhcmUgY3JlYXRlZCBsYXppbHkuCiAgICAgd2hpbGUgKCFtX3NjcmlwdENvbnRyb2xsZXJz
V2l0aFdpbmRvd1NoZWxscy5pc0VtcHR5KCkpCi0gICAgICAgICgqbV9zY3JpcHRDb250cm9sbGVy
c1dpdGhXaW5kb3dTaGVsbHMuYmVnaW4oKSktPmRlc3Ryb3lXaW5kb3dTaGVsbCh0aGlzKTsKKyAg
ICAgICAgKCptX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5iZWdpbigpKS0+ZGVz
dHJveVdpbmRvd1NoZWxsKCp0aGlzKTsKIH0KIAogdm9pZCBET01XcmFwcGVyV29ybGQ6OmNsZWFy
V3JhcHBlcnMoKQpAQCAtNTcsMjAgKzU3LDIwIEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVh
cldyYXBwZXJzKCkKIAogICAgIC8vIFRoZXNlIGl0ZW1zIGFyZSBjcmVhdGVkIGxhemlseS4KICAg
ICB3aGlsZSAoIW1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93U2hlbGxzLmlzRW1wdHkoKSkK
LSAgICAgICAgKCptX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5iZWdpbigpKS0+
ZGVzdHJveVdpbmRvd1NoZWxsKHRoaXMpOworICAgICAgICAoKm1fc2NyaXB0Q29udHJvbGxlcnNX
aXRoV2luZG93U2hlbGxzLmJlZ2luKCkpLT5kZXN0cm95V2luZG93U2hlbGwoKnRoaXMpOwogfQog
Ci1ET01XcmFwcGVyV29ybGQqIG5vcm1hbFdvcmxkKEpTQzo6Vk0mIHZtKQorRE9NV3JhcHBlcldv
cmxkJiBub3JtYWxXb3JsZChKU0M6OlZNJiB2bSkKIHsKICAgICBWTTo6Q2xpZW50RGF0YSogY2xp
ZW50RGF0YSA9IHZtLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKGNsaWVudERhdGEpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4oY2xpZW50RGF0YSktPm5vcm1h
bFdvcmxkKCk7CiB9CiAKLURPTVdyYXBwZXJXb3JsZCogbWFpblRocmVhZE5vcm1hbFdvcmxkKCkK
K0RPTVdyYXBwZXJXb3JsZCYgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGNhY2hlZE5vcm1h
bFdvcmxkID0gbm9ybWFsV29ybGQoKkpTRE9NV2luZG93Ojpjb21tb25WTSgpKTsKKyAgICBzdGF0
aWMgRE9NV3JhcHBlcldvcmxkJiBjYWNoZWROb3JtYWxXb3JsZCA9IG5vcm1hbFdvcmxkKCpKU0RP
TVdpbmRvdzo6Y29tbW9uVk0oKSk7CiAgICAgcmV0dXJuIGNhY2hlZE5vcm1hbFdvcmxkOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAko
cmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBl
cldvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEyICs2NywxMiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc05vcm1hbDsKIH07CiAKLURPTVdyYXBwZXJXb3JsZCogbm9ybWFsV29ybGQoSlND
OjpWTSYpOwotRE9NV3JhcHBlcldvcmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsKLWlubGlu
ZSBET01XcmFwcGVyV29ybGQqIGRlYnVnZ2VyV29ybGQoKSB7IHJldHVybiBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKTsgfQotaW5saW5lIERPTVdyYXBwZXJXb3JsZCogcGx1Z2luV29ybGQoKSB7IHJl
dHVybiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsgfQorRE9NV3JhcHBlcldvcmxkJiBub3JtYWxX
b3JsZChKU0M6OlZNJik7CitET01XcmFwcGVyV29ybGQmIG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
OworaW5saW5lIERPTVdyYXBwZXJXb3JsZCYgZGVidWdnZXJXb3JsZCgpIHsgcmV0dXJuIG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpOyB9CitpbmxpbmUgRE9NV3JhcHBlcldvcmxkJiBwbHVnaW5Xb3Js
ZCgpIHsgcmV0dXJuIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpOyB9CiAKLWlubGluZSBET01XcmFw
cGVyV29ybGQqIGN1cnJlbnRXb3JsZChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK2lubGluZSBET01X
cmFwcGVyV29ybGQmIGN1cnJlbnRXb3JsZChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBy
ZXR1cm4gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT53b3JsZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCShyZXZpc2lv
biAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzEsNyArMzcxLDcgQEAgSlNWYWx1
ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcgogICAgIGlmICghY3NzVmFsdWUpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIGN1cnJlbnRXb3JsZChleGVjKS0+bV9jc3NW
YWx1ZVJvb3RzLmFkZChjc3NWYWx1ZS5nZXQoKSwgcm9vdChpbXBsKCkpKTsgLy8gQmFsYW5jZWQg
YnkgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgorICAgIGN1cnJlbnRXb3JsZChleGVjKS5t
X2Nzc1ZhbHVlUm9vdHMuYWRkKGNzc1ZhbHVlLmdldCgpLCByb290KGltcGwoKSkpOyAvLyBCYWxh
bmNlZCBieSBKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKCkuCiAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNzc1ZhbHVlKSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCShyZXZp
c2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsOCArNzAsOCBAQCBib29sIEpTQ1NTVmFsdWVP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhCiB2b2lkIEpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAg
SlNDU1NWYWx1ZSoganNDU1NWYWx1ZSA9IGpzQ2FzdDxKU0NTU1ZhbHVlKj4oaGFuZGxlLmdldCgp
LmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9N
V3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgd29ybGQtPm1fY3NzVmFsdWVSb290cy5yZW1v
dmUoanNDU1NWYWx1ZS0+aW1wbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHdvcmxkLm1fY3NzVmFs
dWVSb290cy5yZW1vdmUoanNDU1NWYWx1ZS0+aW1wbCgpKTsKICAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwganNDU1NWYWx1ZS0+aW1wbCgpLCBqc0NTU1ZhbHVlKTsKICAgICBqc0NTU1ZhbHVlLT5y
ZWxlYXNlSW1wbCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsODcgKzExMiw4NyBAQCBjbGFz
cyBET01TdHJpbmdMaXN0OwogICAgICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNDOjpKU09iamVj
dCo+KGFzT2JqZWN0KGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KHZtLCBKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpLT5zdG9yZWRQcm90b3R5cGUoKSkp
OwogICAgIH0KIAotICAgIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqKQorICAgIGlubGluZSBK
U0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IEpTQzo6QXJyYXlCdWZmZXIqKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcio+KHdvcmxkLT52bSgpLT5tX3R5cGVkQXJyYXlDb250
cm9sbGVyLmdldCgpKS0+d3JhcHBlck93bmVyKCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIqPih3b3JsZC52bSgpLT5tX3R5cGVkQXJyYXlD
b250cm9sbGVyLmdldCgpKS0+d3JhcHBlck93bmVyKCk7CiAgICAgfQogICAgIAotICAgIGlubGlu
ZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBKU0M6OkFycmF5
QnVmZmVyKikKKyAgICBpbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciopCiAgICAgewotICAgICAgICByZXR1cm4gd29ybGQ7
CisgICAgICAgIHJldHVybiAmd29ybGQ7CiAgICAgfQogCi0gICAgaW5saW5lIEpTRE9NV3JhcHBl
ciogZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQqLCB2b2lkKikgeyByZXR1
cm4gMDsgfQotICAgIGlubGluZSBib29sIHNldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBl
cldvcmxkKiwgdm9pZCosIEpTRE9NV3JhcHBlciosIEpTQzo6V2Vha0hhbmRsZU93bmVyKiwgdm9p
ZCopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgaW5saW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRX
cmFwcGVyKERPTVdyYXBwZXJXb3JsZCosIHZvaWQqLCBKU0RPTVdyYXBwZXIqKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGlubGluZSBKU0RPTVdyYXBwZXIqIGdldElubGluZUNhY2hlZFdyYXBwZXIo
RE9NV3JhcHBlcldvcmxkJiwgdm9pZCopIHsgcmV0dXJuIDA7IH0KKyAgICBpbmxpbmUgYm9vbCBz
ZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqLCBKU0RPTVdyYXBw
ZXIqLCBKU0M6OldlYWtIYW5kbGVPd25lciosIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGlubGluZSBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmLCB2
b2lkKiwgSlNET01XcmFwcGVyKikgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGlubGluZSBKU0RP
TVdyYXBwZXIqIGdldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
U2NyaXB0V3JhcHBhYmxlKiBkb21PYmplY3QpCisgICAgaW5saW5lIEpTRE9NV3JhcHBlciogZ2V0
SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBTY3JpcHRXcmFwcGFi
bGUqIGRvbU9iamVjdCkKICAgICB7Ci0gICAgICAgIGlmICghd29ybGQtPmlzTm9ybWFsKCkpCisg
ICAgICAgIGlmICghd29ybGQuaXNOb3JtYWwoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICByZXR1cm4gZG9tT2JqZWN0LT53cmFwcGVyKCk7CiAgICAgfQogCi0gICAgaW5saW5lIEpT
Qzo6SlNBcnJheUJ1ZmZlciogZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQq
IHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKiBidWZmZXIpCisgICAgaW5saW5lIEpTQzo6SlNBcnJh
eUJ1ZmZlciogZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBK
U0M6OkFycmF5QnVmZmVyKiBidWZmZXIpCiAgICAgewotICAgICAgICBpZiAoIXdvcmxkLT5pc05v
cm1hbCgpKQorICAgICAgICBpZiAoIXdvcmxkLmlzTm9ybWFsKCkpCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bV93cmFwcGVyLmdldCgpOwogICAgIH0KIAot
ICAgIGlubGluZSBib29sIHNldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCwgU2NyaXB0V3JhcHBhYmxlKiBkb21PYmplY3QsIEpTRE9NV3JhcHBlciogd3JhcHBlciwg
SlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lciwgdm9pZCogY29udGV4dCkKKyAgICBp
bmxpbmUgYm9vbCBzZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IFNjcmlwdFdyYXBwYWJsZSogZG9tT2JqZWN0LCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIsIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoIXdvcmxkLT5pc05vcm1hbCgpKQorICAgICAgICBpZiAoIXdvcmxkLmlzTm9ybWFs
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRvbU9iamVjdC0+c2V0V3Jh
cHBlcih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNvbnRleHQpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBzZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqIGRvbU9iamVjdCwgSlNDOjpKU0Fy
cmF5QnVmZmVyKiB3cmFwcGVyLCBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyLCB2
b2lkKiBjb250ZXh0KQorICAgIGlubGluZSBib29sIHNldElubGluZUNhY2hlZFdyYXBwZXIoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciogZG9tT2JqZWN0LCBKU0M6OkpT
QXJyYXlCdWZmZXIqIHdyYXBwZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIs
IHZvaWQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIXdvcmxkLT5pc05vcm1hbCgpKQor
ICAgICAgICBpZiAoIXdvcmxkLmlzTm9ybWFsKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGRvbU9iamVjdC0+bV93cmFwcGVyID0gSlNDOjpXZWFrPEpTQzo6SlNBcnJheUJ1
ZmZlcj4od3JhcHBlciwgd3JhcHBlck93bmVyLCBjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERP
TVdyYXBwZXJXb3JsZCogd29ybGQsIFNjcmlwdFdyYXBwYWJsZSogZG9tT2JqZWN0LCBKU0RPTVdy
YXBwZXIqIHdyYXBwZXIpCisgICAgaW5saW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVy
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFNjcmlwdFdyYXBwYWJsZSogZG9tT2JqZWN0LCBKU0RP
TVdyYXBwZXIqIHdyYXBwZXIpCiAgICAgewotICAgICAgICBpZiAoIXdvcmxkLT5pc05vcm1hbCgp
KQorICAgICAgICBpZiAoIXdvcmxkLmlzTm9ybWFsKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGRvbU9iamVjdC0+Y2xlYXJXcmFwcGVyKHdyYXBwZXIpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBjbGVhcklubGluZUNhY2hlZFdy
YXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciogZG9tT2JqZWN0
LCBKU0M6OkpTQXJyYXlCdWZmZXIqIHdyYXBwZXIpCisgICAgaW5saW5lIGJvb2wgY2xlYXJJbmxp
bmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIq
IGRvbU9iamVjdCwgSlNDOjpKU0FycmF5QnVmZmVyKiB3cmFwcGVyKQogICAgIHsKLSAgICAgICAg
aWYgKCF3b3JsZC0+aXNOb3JtYWwoKSkKKyAgICAgICAgaWYgKCF3b3JsZC5pc05vcm1hbCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB3ZWFrQ2xlYXIoZG9tT2JqZWN0LT5t
X3dyYXBwZXIsIHdyYXBwZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRDYWNo
ZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QpCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0
Q2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0
KQogICAgIHsKICAgICAgICAgaWYgKEpTQzo6SlNPYmplY3QqIHdyYXBwZXIgPSBnZXRJbmxpbmVD
YWNoZWRXcmFwcGVyKHdvcmxkLCBkb21PYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7Ci0gICAgICAgIHJldHVybiB3b3JsZC0+bV93cmFwcGVycy5nZXQoZG9tT2JqZWN0KTsKKyAg
ICAgICAgcmV0dXJuIHdvcmxkLm1fd3JhcHBlcnMuZ2V0KGRvbU9iamVjdCk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlu
bGluZSB2b2lkIGNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBET01DbGFzcyog
ZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSB2b2lkIGNhY2hlV3JhcHBl
cihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBXcmFwcGVyQ2xh
c3MqIHdyYXBwZXIpCiAgICAgewogICAgICAgICBKU0M6OldlYWtIYW5kbGVPd25lciogb3duZXIg
PSB3cmFwcGVyT3duZXIod29ybGQsIGRvbU9iamVjdCk7CiAgICAgICAgIHZvaWQqIGNvbnRleHQg
PSB3cmFwcGVyQ29udGV4dCh3b3JsZCwgZG9tT2JqZWN0KTsKICAgICAgICAgaWYgKHNldElubGlu
ZUNhY2hlZFdyYXBwZXIod29ybGQsIGRvbU9iamVjdCwgd3JhcHBlciwgb3duZXIsIGNvbnRleHQp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrQWRkKHdvcmxkLT5tX3dyYXBwZXJz
LCAodm9pZCopZG9tT2JqZWN0LCBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4od3JhcHBlciwgb3du
ZXIsIGNvbnRleHQpKTsKKyAgICAgICAgd2Vha0FkZCh3b3JsZC5tX3dyYXBwZXJzLCAodm9pZCop
ZG9tT2JqZWN0LCBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4od3JhcHBlciwgb3duZXIsIGNvbnRl
eHQpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1l
IFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNzKiB3cmFwcGVyKQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxp
bmUgdm9pZCB1bmNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyog
ZG9tT2JqZWN0LCBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIpCiAgICAgewogICAgICAgICBpZiAoY2xl
YXJJbmxpbmVDYWNoZWRXcmFwcGVyKHdvcmxkLCBkb21PYmplY3QsIHdyYXBwZXIpKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrUmVtb3ZlKHdvcmxkLT5tX3dyYXBwZXJzLCAodm9p
ZCopZG9tT2JqZWN0LCB3cmFwcGVyKTsKKyAgICAgICAgd2Vha1JlbW92ZSh3b3JsZC5tX3dyYXBw
ZXJzLCAodm9pZCopZG9tT2JqZWN0LCB3cmFwcGVyKTsKICAgICB9CiAgICAgCiAgICAgI2RlZmlu
ZSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBjbGFzc05hbWUsIG9iamVj
dCkgY3JlYXRlV3JhcHBlcjxKUyMjY2xhc3NOYW1lPihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRp
Y19jYXN0PGNsYXNzTmFtZSo+KG9iamVjdCkpCkBAIC01NzcsNyArNTc3LDcgQEAgY2xhc3MgRE9N
U3RyaW5nTGlzdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIEpTU3RyaW5n
Q2FjaGUmIHN0cmluZ0NhY2hlID0gY3VycmVudFdvcmxkKGV4ZWMpLT5tX3N0cmluZ0NhY2hlOwor
ICAgICAgICBKU1N0cmluZ0NhY2hlJiBzdHJpbmdDYWNoZSA9IGN1cnJlbnRXb3JsZChleGVjKS5t
X3N0cmluZ0NhY2hlOwogICAgICAgICBKU1N0cmluZ0NhY2hlOjpBZGRSZXN1bHQgYWRkUmVzdWx0
ID0gc3RyaW5nQ2FjaGUuYWRkKHN0cmluZ0ltcGwsIG51bGxwdHIpOwogICAgICAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gSlNDOjpqc1N0cmluZyhleGVjLCBTdHJpbmcoc3RyaW5nSW1wbCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNp
b24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIEpTRE9NR2xvYmFsT2JqZWN0
OjpKU0RPTUdsb2JhbE9iamVjdChWTSYKICAgICAsIG1fY3VycmVudEV2ZW50KDApCiAgICAgLCBt
X3dvcmxkKHdvcmxkKQogeworICAgIEFTU0VSVChtX3dvcmxkKTsKIH0KIAogdm9pZCBKU0RPTUds
b2JhbE9iamVjdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC0xMjQsMTIgKzEyNSwxMiBAQCBK
U0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTCiAgICAgcmV0dXJuIDA7CiB9
CiAKLUpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50KiBkb2N1
bWVudCwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK0pTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9N
R2xvYmFsT2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
IHsKICAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhkb2N1bWVudC0+ZnJhbWUoKSwgd29ybGQpOwog
fQogCi1KU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBET01XcmFwcGVyV29ybGQqIHdvcmxk
KQorSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
IHsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLCB3b3JsZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEwICs2
NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBET01X
cmFwcGVyV29ybGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorICAgICAgICBE
T01XcmFwcGVyV29ybGQmIHdvcmxkKCkgeyByZXR1cm4gKm1fd29ybGQ7IH0KIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgc3RhdGljIFdFQktJVF9FWFBPUlREQVRBIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvIHNfaW5mbzsKKwogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfQogCkBAIC0xMDAsOCArMTAxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFs
T2JqZWN0KERvY3VtZW50KiwgSlNDOjpFeGVjU3RhdGUqKTsKICAgICBKU0RPTUdsb2JhbE9iamVj
dCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpFeGVj
U3RhdGUqKTsKIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERv
Y3VtZW50KiwgRE9NV3JhcHBlcldvcmxkKik7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNE
T01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdyYXBwZXJXb3JsZCop
OworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50Kiwg
RE9NV3JhcHBlcldvcmxkJik7CisgICAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxP
YmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdyYXBwZXJXb3JsZCYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gCiBjb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGlu
ZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZh
U2NyaXB0RXhwZXJpbWVudHNFbmFibGVkLCAmcXVldWVUYXNrVG9FdmVudExvb3AgfTsKIAogSlNE
T01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwp
Ci0gICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBzaGVsbC0+d29ybGQoKSwg
JnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwg
c3RydWN0dXJlLCAmc2hlbGwtPndvcmxkKCksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQog
ICAgICwgbV9pbXBsKHdpbmRvdykKICAgICAsIG1fc2hlbGwoc2hlbGwpCiB7CkBAIC0yMTIsNyAr
MjEyLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRE9NV2luZG93KgogICAgIHJl
dHVybiBmcmFtZS0+c2NyaXB0KCkud2luZG93U2hlbGwoY3VycmVudFdvcmxkKGV4ZWMpKTsKIH0K
IAotSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29y
bGQqIHdvcmxkKQorSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqIGZyYW1lLCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJ
KHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIERPTVdpbmRvdyop
OwogCiAgICAgLy8gUmV0dXJucyBKU0RPTVdpbmRvdyBvciAwCi0gICAgSlNET01XaW5kb3cqIHRv
SlNET01XaW5kb3coRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKKyAgICBKU0RPTVdpbmRvdyog
dG9KU0RPTVdpbmRvdyhGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIEpTRE9NV2luZG93
KiB0b0pTRE9NV2luZG93KEpTQzo6SlNWYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd1NoZWxsOjpzX2luZm8g
PSB7ICJKU0RPTVdpbmRvd1NoZWxsIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0RPTVdpbmRvd1NoZWxsKSB9OwogCi1KU0RPTVdpbmRvd1NoZWxsOjpKU0RPTVdp
bmRvd1NoZWxsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQot
ICAgIDogQmFzZSgqd29ybGQtPnZtKCksIHN0cnVjdHVyZSkKLSAgICAsIG1fd29ybGQod29ybGQp
CitKU0RPTVdpbmRvd1NoZWxsOjpKU0RPTVdpbmRvd1NoZWxsKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgLCBtX3dvcmxkKCZ3b3JsZCkKIHsKIH0KIApAQCAtNjEsMTEgKzYxLDExIEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6ZGVzdHJveShKU0NlbGwqIGMKICAgICBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd1NoZWxsKj4oY2VsbCktPkpTRE9NV2luZG93U2hlbGw6On5KU0RPTVdpbmRvd1No
ZWxsKCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KEpTQzo6Vk0mIHZt
LCBKU0RPTVdpbmRvdyogd2luZG93KQordm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3co
Vk0mIHZtLCBKU0RPTVdpbmRvdyogd2luZG93KQogewogICAgIEFTU0VSVF9BUkcod2luZG93LCB3
aW5kb3cpOwogICAgIHNldFRhcmdldCh2bSwgd2luZG93KTsKLSAgICBzdHJ1Y3R1cmUoKS0+c2V0
R2xvYmFsT2JqZWN0KCpKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwgd2luZG93KTsKKyAgICBzdHJ1
Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCB3aW5kb3cpOwogICAgIGdjQ29udHJvbGxlcigp
LmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCkBAIC03NywxMyArNzcsMTUgQEAgdm9pZCBKU0RP
TVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZgogICAgIC8vIEV4cGxpY2l0bHkgcHJvdGVj
dCB0aGUgZ2xvYmFsIG9iamVjdCdzIHByb3RvdHlwZSBzbyBpdCBpc24ndCBjb2xsZWN0ZWQKICAg
ICAvLyB3aGVuIHdlIGFsbG9jYXRlIHRoZSBnbG9iYWwgb2JqZWN0LiAoT25jZSB0aGUgZ2xvYmFs
IG9iamVjdCBpcyBmdWxseQogICAgIC8vIGNvbnN0cnVjdGVkLCBpdCBjYW4gbWFyayBpdHMgb3du
IHByb3RvdHlwZS4pCi0gICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU0RPTVdp
bmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCpKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwg
MCwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3RvdHlwZT4gcHJvdG90eXBl
KCpKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSwgSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZSgq
SlNET01XaW5kb3c6OmNvbW1vblZNKCksIDAsIHByb3RvdHlwZVN0cnVjdHVyZSkpOwotCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0dXJlKCpKU0RP
TVdpbmRvdzo6Y29tbW9uVk0oKSwgMCwgcHJvdG90eXBlLmdldCgpKTsKLSAgICBKU0RPTVdpbmRv
dyoganNET01XaW5kb3cgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlKCpKU0RPTVdpbmRvdzo6Y29tbW9u
Vk0oKSwgc3RydWN0dXJlLCBkb21XaW5kb3csIHRoaXMpOwotICAgIHByb3RvdHlwZS0+c3RydWN0
dXJlKCktPnNldEdsb2JhbE9iamVjdCgqSlNET01XaW5kb3c6OmNvbW1vblZNKCksIGpzRE9NV2lu
ZG93KTsKLSAgICBzZXRXaW5kb3coKkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCBqc0RPTVdpbmRv
dyk7CisgICAgCisgICAgVk0mIHZtID0gKkpTRE9NV2luZG93Ojpjb21tb25WTSgpOworICAgIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgMCwganNOdWxsKCkpOworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3Rv
dHlwZT4gcHJvdG90eXBlKHZtLCBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCAwLCBw
cm90b3R5cGVTdHJ1Y3R1cmUpKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNET01X
aW5kb3c6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgMCwgcHJvdG90eXBlLmdldCgpKTsKKyAgICBKU0RP
TVdpbmRvdyoganNET01XaW5kb3cgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUs
IGRvbVdpbmRvdywgdGhpcyk7CisgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFs
T2JqZWN0KHZtLCBqc0RPTVdpbmRvdyk7CisgICAgc2V0V2luZG93KHZtLCBqc0RPTVdpbmRvdyk7
CiAgICAgQVNTRVJUKGpzRE9NV2luZG93LT5nbG9iYWxPYmplY3QoKSA9PSBqc0RPTVdpbmRvdyk7
CiAgICAgQVNTRVJUKHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkgPT0ganNET01XaW5kb3cpOwog
fQpAQCAtMTA4LDExICsxMTAsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRnJh
bWUqIGZyYQogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCkud2luZG93U2hlbGwoY3VycmVudFdv
cmxkKGV4ZWMpKTsKIH0KIAotSlNET01XaW5kb3dTaGVsbCogdG9KU0RPTVdpbmRvd1NoZWxsKEZy
YW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorSlNET01XaW5kb3dT
aGVsbCogdG9KU0RPTVdpbmRvd1NoZWxsKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4g
ZnJhbWUtPnNjcmlwdCgpLndpbmRvd1NoZWxsKGlzb2xhdGVkV29ybGQpOworICAgIHJldHVybiBm
cmFtZS0+c2NyaXB0KCkud2luZG93U2hlbGwod29ybGQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEpTRE9NV2luZG93U2hlbGwgOiBwdWJsaWMgSlNDOjpK
U1Byb3h5IHsKICAgICAgICAgdHlwZWRlZiBKU0M6OkpTUHJveHkgQmFzZTsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxET01XaW5kb3c+LCBKU0M6OlN0
cnVjdHVyZSosIERPTVdyYXBwZXJXb3JsZCopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVy
biBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KHRhcmdldCgpKTsgfQpAQCAtNTEsMTEgKzUwLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBET01XaW5kb3cqIGltcGwoKSBjb25z
dDsKIAotICAgICAgICBzdGF0aWMgSlNET01XaW5kb3dTaGVsbCogY3JlYXRlKFBhc3NSZWZQdHI8
RE9NV2luZG93PiB3aW5kb3csIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERPTVdyYXBwZXJX
b3JsZCogd29ybGQpIAorICAgICAgICBzdGF0aWMgSlNET01XaW5kb3dTaGVsbCogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBKU0M6OkhlYXAmIGhlYXAgPSBKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS0+aGVhcDsKLSAgICAg
ICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU0RPTVdpbmRvd1NoZWxsPihoZWFwKSkgSlNET01XaW5kb3dTaGVsbChzdHJ1Y3R1
cmUsIHdvcmxkKTsKLSAgICAgICAgICAgIHNoZWxsLT5maW5pc2hDcmVhdGlvbigqd29ybGQtPnZt
KCksIHdpbmRvdyk7CisgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01XaW5kb3dTaGVsbD4odm0uaGVhcCkpIEpT
RE9NV2luZG93U2hlbGwodm0sIHN0cnVjdHVyZSwgd29ybGQpOworICAgICAgICAgICAgc2hlbGwt
PmZpbmlzaENyZWF0aW9uKHZtLCB3aW5kb3cpOwogICAgICAgICAgICAgcmV0dXJuIHNoZWxsOyAK
ICAgICAgICAgfQogCkBAIC02NCwxNyArNjIsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6OlByb3h5VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCgpIHsgcmV0dXJuIG1f
d29ybGQuZ2V0KCk7IH0KKyAgICAgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIHsgcmV0dXJu
ICptX3dvcmxkOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTRE9NV2luZG93U2hlbGwo
SlNDOjpTdHJ1Y3R1cmUqLCBET01XcmFwcGVyV29ybGQqKTsKKyAgICAgICAgSlNET01XaW5kb3dT
aGVsbChKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBET01XcmFwcGVyV29ybGQmKTsKICAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgUGFzc1JlZlB0cjxET01XaW5kb3c+KTsK
IAogICAgICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIH07CiAKICAg
ICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKik7Ci0gICAgSlNET01X
aW5kb3dTaGVsbCogdG9KU0RPTVdpbmRvd1NoZWxsKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7
CisgICAgSlNET01XaW5kb3dTaGVsbCogdG9KU0RPTVdpbmRvd1NoZWxsKEZyYW1lKiwgRE9NV3Jh
cHBlcldvcmxkJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkocmV2aXNpb24gMTU2NzUy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSlNFcnJvckhhbmRsZXI6OkpTRXJyb3JIYW5kbGVyKEpTT2JqZWN0
KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKLSAgICA6IEpTRXZlbnRMaXN0ZW5lcihmdW5jdGlvbiwg
d3JhcHBlciwgaXNBdHRyaWJ1dGUsIGlzb2xhdGVkV29ybGQpCitKU0Vycm9ySGFuZGxlcjo6SlNF
cnJvckhhbmRsZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBp
c0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKyAgICA6IEpTRXZlbnRMaXN0ZW5l
cihmdW5jdGlvbiwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKQogewogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmgJKHJldmlzaW9uIDE1
Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDE1ICszNywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEpTRXJyb3JIYW5kbGVyIDogcHVibGljIEpTRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SlNFcnJvckhhbmRsZXI+IGNyZWF0ZShKU0M6OkpTT2JqZWN0
KiBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9N
V3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTRXJy
b3JIYW5kbGVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNPYmplY3Qq
IHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTRXJyb3JIYW5kbGVyKGxpc3RlbmVyLCB3
cmFwcGVyLCBpc0F0dHJpYnV0ZSwgaXNvbGF0ZWRXb3JsZCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEpTRXJyb3JIYW5kbGVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwg
d29ybGQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5KU0Vycm9ySGFuZGxlcigpOwogCiBwcml2
YXRlOgotICAgIEpTRXJyb3JIYW5kbGVyKEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpT
T2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQqIGlzb2xh
dGVkV29ybGQpOworICAgIEpTRXJyb3JIYW5kbGVyKEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBK
U0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQm
KTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50Kik7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICsz
OSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpT
RXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmpl
Y3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRX
b3JsZCkKK0pTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlv
biwgSlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCYg
aXNvbGF0ZWRXb3JsZCkKICAgICA6IEV2ZW50TGlzdGVuZXIoSlNFdmVudExpc3RlbmVyVHlwZSkK
ICAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQogICAgICwgbV9pc0F0dHJpYnV0ZShpc0F0dHJpYnV0
ZSkKLSAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQorICAgICwgbV9pc29sYXRl
ZFdvcmxkKCZpc29sYXRlZFdvcmxkKQogewogICAgIGlmICh3cmFwcGVyKSB7CiAgICAgICAgIEpT
Qzo6SGVhcDo6d3JpdGVCYXJyaWVyKHdyYXBwZXIsIGZ1bmN0aW9uKTsKQEAgLTg4LDcgKzg4LDcg
QEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgIGlmICghanNG
dW5jdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9p
c29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAqbV9pc29sYXRl
ZFdvcmxkKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkocmV2aXNp
b24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgSlNFdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNFdmVudExpc3RlbmVyPiBjcmVh
dGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wg
aXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNFdmVudExpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlz
dGVuZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSlNFdmVudExpc3RlbmVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwgaXNvbGF0
ZWRXb3JsZCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0V2ZW50TGlzdGVu
ZXIobGlzdGVuZXIsIHdyYXBwZXIsIGlzQXR0cmlidXRlLCB3b3JsZCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgc3RhdGljIGNvbnN0IEpTRXZlbnRMaXN0ZW5lciogY2FzdChjb25zdCBFdmVudExp
c3RlbmVyKiBsaXN0ZW5lcikKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dHJpYnV0ZTsg
fQogCiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGpzRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIGNvbnN0OwotICAgICAgICBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQoKSBj
b25zdCB7IHJldHVybiBtX2lzb2xhdGVkV29ybGQuZ2V0KCk7IH0KKyAgICAgICAgRE9NV3JhcHBl
cldvcmxkJiBpc29sYXRlZFdvcmxkKCkgY29uc3QgeyByZXR1cm4gKm1faXNvbGF0ZWRXb3JsZDsg
fQogCiAgICAgICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dy
YXBwZXIuZ2V0KCk7IH0KICAgICAgICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6Vk0mLCBKU0M6OkpT
T2JqZWN0KiB3cmFwcGVyKSBjb25zdCB7IG1fd3JhcHBlciA9IEpTQzo6V2VhazxKU0M6OkpTT2Jq
ZWN0Pih3cmFwcGVyKTsgfQpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCB2aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdDsKIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgSlNFdmVudExpc3RlbmVyKEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9u
LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29y
bGQqIGlzb2xhdGVkV29ybGQpOworICAgICAgICBKU0V2ZW50TGlzdGVuZXIoSlNDOjpKU09iamVj
dCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERP
TVdyYXBwZXJXb3JsZCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUs
NyArMjA1LDcgQEAgc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVuZXJGdW5jdGlvbnMoRQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gSGlkZSBsaXN0ZW5lcnMg
ZnJvbSBvdGhlciBjb250ZXh0cy4KLSAgICAgICAgaWYgKGpzTGlzdGVuZXItPmlzb2xhdGVkV29y
bGQoKSAhPSBjdXJyZW50V29ybGQoZXhlYykpCisgICAgICAgIGlmICgmanNMaXN0ZW5lci0+aXNv
bGF0ZWRXb3JsZCgpICE9ICZjdXJyZW50V29ybGQoZXhlYykpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNMaXN0ZW5lci0+anNGdW5jdGlvbihk
b2N1bWVudCk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTU2
NzUyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIGV2
ZW50TGlzdGVuZXJDb3VudGVyLCAoIkpTTGF6eUV2ZW50TGlzdGVuZXIiKSk7CiAKLUpTTGF6eUV2
ZW50TGlzdGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUs
IENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0
UG9zaXRpb24mIHBvc2l0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkKQorSlNMYXp5RXZlbnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcihj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBldmVudFBhcmFtZXRlck5h
bWUsIGNvbnN0IFN0cmluZyYgY29kZSwgQ29udGFpbmVyTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEpTT2JqZWN0KiB3cmFw
cGVyLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQpCiAgICAgOiBKU0V2ZW50TGlzdGVu
ZXIoMCwgd3JhcHBlciwgdHJ1ZSwgaXNvbGF0ZWRXb3JsZCkKICAgICAsIG1fZnVuY3Rpb25OYW1l
KGZ1bmN0aW9uTmFtZSkKICAgICAsIG1fZXZlbnRQYXJhbWV0ZXJOYW1lKGV2ZW50UGFyYW1ldGVy
TmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVu
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVu
dExpc3RlbmVyLmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfkpTTGF6eUV2ZW50TGlzdGVu
ZXIoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBj
b25zdCBTdHJpbmcmIGNvZGUsIENvbnRhaW5lck5vZGUqLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgY29uc3QgVGV4dFBvc2l0aW9uJiwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBl
cldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKyAgICAgICAgSlNMYXp5RXZlbnRMaXN0ZW5lcihjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBldmVudFBhcmFtZXRlck5hbWUs
IGNvbnN0IFN0cmluZyYgY29kZSwgQ29udGFpbmVyTm9kZSosIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBjb25zdCBUZXh0UG9zaXRpb24mLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFw
cGVyV29ybGQmIGlzb2xhdGVkV29ybGQpOwogCiAgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVj
dCogaW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0IE9W
RVJSSURFOwogICAgICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSlNNdXRhdGlv
bkNhbGxiYWNrOjpKU011dGF0aW9uQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogQWN0aXZlRE9NQ2FsbGJhY2soZ2xvYmFs
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxi
YWNrKQotICAgICwgbV9pc29sYXRlZFdvcmxkKGdsb2JhbE9iamVjdC0+d29ybGQoKSkKKyAgICAs
IG1faXNvbGF0ZWRXb3JsZCgmZ2xvYmFsT2JqZWN0LT53b3JsZCgpKQogewogfQogCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgSlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKGNvbnN0IFZlY3QKICAgICAg
ICAgcmV0dXJuOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogCi0gICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4
dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCAqbV9pc29sYXRlZFdvcmxkKTsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAg
IEpTVmFsdWUganNPYnNlcnZlciA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBvYnNlcnZlcik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIEpTTm9kZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSCiB2b2lkIEpTTm9kZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU05v
ZGUqIGpzTm9kZSA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7
Ci0gICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3Js
ZCo+KGNvbnRleHQpOworICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpz
Tm9kZS0+aW1wbCgpLCBqc05vZGUpOwogICAgIGpzTm9kZS0+cmVsZWFzZUltcGwoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHlwZSwg
Y2xhc3MgQmFzZT4gYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90JiBzbG90LCBUeXBlKiBlbGVtZW50KQogICAgIHsKLSAgICAgICAgaWYgKCFl
bGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29ybGQoKS0+aXNOb3JtYWwoKSkgeworICAgICAgICBp
ZiAoIWVsZW1lbnQtPmdsb2JhbE9iamVjdCgpLT53b3JsZCgpLmlzTm9ybWFsKCkpIHsKICAgICAg
ICAgICAgIGlmIChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdDxUeXBlLCBCYXNlPihleGVjLCAqVHlw
ZTo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLCBlbGVtZW50LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCShy
ZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOgogY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZCwgJnF1ZXVlVGFza1RvRXZlbnRMb29wIH07CiAKIEpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gaW1wbCkKLSAgICA6
IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIG5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0
dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKICAgICAs
IG1faW1wbChpbXBsKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3
ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBDb250ZW50U2VjdXJp
dHlQb2xpY3kqIHBvbGljeSkKK1Bhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBTY2hlZHVsZWRB
Y3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRX
b3JsZCwgQ29udGVudFNlY3VyaXR5UG9saWN5KiBwb2xpY3kpCiB7CiAgICAgSlNWYWx1ZSB2ID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC02NSw5ICs2NSw5
IEBAIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBTY2hlZHVsZWRBY3QKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFNjaGVkdWxlZEFjdGlvbihleGVjLCB2LCBpc29sYXRlZFdvcmxkKSk7CiB9
CiAKLVNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorU2NoZWR1bGVk
QWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9u
LCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQpCiAgICAgOiBtX2Z1bmN0aW9uKGV4ZWMt
PnZtKCksIGZ1bmN0aW9uKQotICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQpCisg
ICAgLCBtX2lzb2xhdGVkV29ybGQoJmlzb2xhdGVkV29ybGQpCiB7CiAgICAgLy8gc2V0VGltZW91
dChmdW5jdGlvbiwgaW50ZXJ2YWwsIGFyZzAsIGFyZzEuLi4pLgogICAgIC8vIFN0YXJ0IGF0IDIg
dG8gc2tpcCBmdW5jdGlvbiBhbmQgaW50ZXJ2YWwuCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBT
Y2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQwogCiB2b2lkIFNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgSlNET01XaW5kb3cqIHdpbmRv
dyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQtPmZyYW1lKCksIG1faXNvbGF0ZWRXb3JsZC5nZXQo
KSk7CisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQtPmZy
YW1lKCksICptX2lzb2xhdGVkV29ybGQpOwogICAgIGlmICghd2luZG93KQogICAgICAgICByZXR1
cm47CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShE
b2N1bWVudCogCiAgICAgaWYgKG1fZnVuY3Rpb24pCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbklu
Q29udGV4dCh3aW5kb3csIHdpbmRvdy0+c2hlbGwoKSwgZG9jdW1lbnQpOwogICAgIGVsc2UKLSAg
ICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJbldvcmxkKG1faXNvbGF0ZWRXb3Js
ZC5nZXQoKSwgbV9jb2RlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHRJ
bldvcmxkKCptX2lzb2xhdGVkV29ybGQsIG1fY29kZSk7CiB9CiAKICNpZiBFTkFCTEUoV09SS0VS
UykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5o
CShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTYgKzQ2LDE2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb24gewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTY2hlZHVsZWRBY3Rpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlKiwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8U2NoZWR1bGVk
QWN0aW9uPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVk
V29ybGQsIENvbnRlbnRTZWN1cml0eVBvbGljeSopOwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTY2hlZHVs
ZWRBY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7Ci0gICAgICAgIFNjaGVkdWxlZEFjdGlvbihjb25zdCBT
dHJpbmcmIGNvZGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKLSAgICAgICAgICAg
IDogbV9mdW5jdGlvbigqaXNvbGF0ZWRXb3JsZC0+dm0oKSkKKyAgICAgICAgU2NoZWR1bGVkQWN0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uLCBET01XcmFwcGVyV29y
bGQmIGlzb2xhdGVkV29ybGQpOworICAgICAgICBTY2hlZHVsZWRBY3Rpb24oY29uc3QgU3RyaW5n
JiBjb2RlLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQpCisgICAgICAgICAgICA6IG1f
ZnVuY3Rpb24oKmlzb2xhdGVkV29ybGQudm0oKSkKICAgICAgICAgICAgICwgbV9jb2RlKGNvZGUp
Ci0gICAgICAgICAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQorICAgICAgICAg
ICAgLCBtX2lzb2xhdGVkV29ybGQoJmlzb2xhdGVkV29ybGQpCiAgICAgICAgIHsKICAgICAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENh
Y2hlZEZyYW1lRGF0YS5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDEwICs3Myw5IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW0KICAg
ICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUuc2NyaXB0KCk7CiAg
ICAgU2NyaXB0Q29udHJvbGxlcjo6U2hlbGxNYXAmIHdpbmRvd1NoZWxscyA9IHNjcmlwdENvbnRy
b2xsZXIubV93aW5kb3dTaGVsbHM7CiAKLSAgICBTY3JpcHRDb250cm9sbGVyOjpTaGVsbE1hcDo6
aXRlcmF0b3Igd2luZG93U2hlbGxzRW5kID0gd2luZG93U2hlbGxzLmVuZCgpOwotICAgIGZvciAo
U2NyaXB0Q29udHJvbGxlcjo6U2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSB3aW5kb3dTaGVsbHMu
YmVnaW4oKTsgaXRlciAhPSB3aW5kb3dTaGVsbHNFbmQ7ICsraXRlcikgewotICAgICAgICBET01X
cmFwcGVyV29ybGQqIHdvcmxkID0gaXRlci0+a2V5LmdldCgpOwotICAgICAgICBKU0RPTVdpbmRv
d1NoZWxsKiB3aW5kb3dTaGVsbCA9IGl0ZXItPnZhbHVlLmdldCgpOworICAgIGZvciAoYXV0byBp
dCA9IHdpbmRvd1NoZWxscy5iZWdpbigpLCBlbmQgPSB3aW5kb3dTaGVsbHMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gaXQtPmtleS5n
ZXQoKTsKKyAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdC0+dmFsdWUu
Z2V0KCk7CiAKICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0
KHdvcmxkKS5nZXQoKSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cod2luZG93
LT52bSgpLCB3aW5kb3cpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwyNCArMzYsMjQgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAgY2xhc3MgSlNET01XaW5kb3c7Ci0g
ICAgY2xhc3MgRE9NV3JhcHBlcldvcmxkOwotCi0gICAgY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDwgUmVm
UHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6U3Ryb25nPEpTRE9NV2luZG93PiA+IEpTRE9NV2lu
ZG93U2V0OwotCi0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRDYWNoZWRGcmFtZURhdGEoRnJh
bWUmKTsKLSAgICAgICAgflNjcmlwdENhY2hlZEZyYW1lRGF0YSgpOwotCi0gICAgICAgIHZvaWQg
cmVzdG9yZShGcmFtZSYpOwotICAgICAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBKU0RPTVdpbmRvd1NldCBtX3dpbmRvd3M7Ci0gICAgfTsKKworY2xhc3MgRnJhbWU7
CitjbGFzcyBKU0RPTVdpbmRvdzsKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKKworY2xhc3MgU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHRDYWNo
ZWRGcmFtZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTY3Jp
cHRDYWNoZWRGcmFtZURhdGEoRnJhbWUmKTsKKyAgICB+U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKCk7
CisKKyAgICB2b2lkIHJlc3RvcmUoRnJhbWUmKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZh
dGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OlN0
cm9uZzxKU0RPTVdpbmRvdz4+IEpTRE9NV2luZG93U2V0OworICAgIEpTRE9NV2luZG93U2V0IG1f
d2luZG93czsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE1
Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MiwzMCArOTIsMzMgQEAgU2NyaXB0Q29udHJvbGxlcjo6flNj
cmlwdENvbnRyb2xsZXIoKQogICAgIC8vIEl0J3MgbGlrZWx5IHRoYXQgZGVzdHJveWluZyBtX3dp
bmRvd1NoZWxscyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJiYWdlLgogICAgIGlmICghbV93aW5k
b3dTaGVsbHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdoaWxlICghbV93aW5kb3dTaGVsbHMuaXNF
bXB0eSgpKQotICAgICAgICAgICAgZGVzdHJveVdpbmRvd1NoZWxsKG1fd2luZG93U2hlbGxzLmJl
Z2luKCktPmtleS5nZXQoKSk7CisgICAgICAgICAgICBkZXN0cm95V2luZG93U2hlbGwoKm1fd2lu
ZG93U2hlbGxzLmJlZ2luKCktPmtleSk7CiAgICAgICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VD
b2xsZWN0U29vbigpOwogICAgIH0KIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpkZXN0cm95
V2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6ZGVzdHJveVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgQVNT
RVJUKG1fd2luZG93U2hlbGxzLmNvbnRhaW5zKHdvcmxkKSk7Ci0gICAgbV93aW5kb3dTaGVsbHMu
cmVtb3ZlKHdvcmxkKTsKLSAgICB3b3JsZC0+ZGlkRGVzdHJveVdpbmRvd1NoZWxsKHRoaXMpOwor
ICAgIEFTU0VSVChtX3dpbmRvd1NoZWxscy5jb250YWlucygmd29ybGQpKTsKKyAgICBtX3dpbmRv
d1NoZWxscy5yZW1vdmUoJndvcmxkKTsKKyAgICB3b3JsZC5kaWREZXN0cm95V2luZG93U2hlbGwo
dGhpcyk7CiB9CiAKLUpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdp
bmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCitKU0RPTVdpbmRvd1NoZWxsKiBTY3Jp
cHRDb250cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxkKQog
ewotICAgIEFTU0VSVCghbV93aW5kb3dTaGVsbHMuY29udGFpbnMod29ybGQpKTsKLSAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSgqd29y
bGQtPnZtKCksIGpzTnVsbCgpKTsKLSAgICBTdHJvbmc8SlNET01XaW5kb3dTaGVsbD4gd2luZG93
U2hlbGwoKndvcmxkLT52bSgpLCBKU0RPTVdpbmRvd1NoZWxsOjpjcmVhdGUobV9mcmFtZS5kb2N1
bWVudCgpLT5kb21XaW5kb3coKSwgc3RydWN0dXJlLCB3b3JsZCkpOworICAgIEFTU0VSVCghbV93
aW5kb3dTaGVsbHMuY29udGFpbnMoJndvcmxkKSk7CisKKyAgICBWTSYgdm0gPSAqd29ybGQudm0o
KTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNET01XaW5kb3dTaGVsbDo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBqc051bGwoKSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93U2hlbGw+IHdp
bmRvd1NoZWxsKHZtLCBKU0RPTVdpbmRvd1NoZWxsOjpjcmVhdGUodm0sIG1fZnJhbWUuZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCksIHN0cnVjdHVyZSwgd29ybGQpKTsKICAgICBTdHJvbmc8SlNET01X
aW5kb3dTaGVsbD4gd2luZG93U2hlbGwyKHdpbmRvd1NoZWxsKTsKLSAgICBtX3dpbmRvd1NoZWxs
cy5hZGQod29ybGQsIHdpbmRvd1NoZWxsKTsKLSAgICB3b3JsZC0+ZGlkQ3JlYXRlV2luZG93U2hl
bGwodGhpcyk7CisgICAgbV93aW5kb3dTaGVsbHMuYWRkKCZ3b3JsZCwgd2luZG93U2hlbGwpOwor
ICAgIHdvcmxkLmRpZENyZWF0ZVdpbmRvd1NoZWxsKHRoaXMpOwogICAgIHJldHVybiB3aW5kb3dT
aGVsbC5nZXQoKTsKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCitTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKIHsKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpz
U291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlk
ZXIoKS0+dXJsKCk7CkBAIC0xNjQsNyArMTY3LDcgQEAgUGFzc1JlZlB0cjxET01XcmFwcGVyV29y
bGQ+IFNjcmlwdENvbnRybwogICAgIHJldHVybiBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZShKU0RP
TVdpbmRvdzo6Y29tbW9uVk0oKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxs
V29ybGRzKFZlY3RvcjxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiA+JiB3b3JsZHMpCit2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmdldEFsbFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+
JiB3b3JsZHMpCiB7CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KEpTRE9N
V2luZG93Ojpjb21tb25WTSgpLT5jbGllbnREYXRhKS0+Z2V0QWxsV29ybGRzKHdvcmxkcyk7CiB9
CkBAIC0yMDUsMTEgKzIwOCwxMSBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93
U2hlbGwoCiAgICAgICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQog
Ci1KU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCogd29ybGQpCitKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgQVNTRVJUKCFtX3dpbmRvd1No
ZWxscy5jb250YWlucyh3b3JsZCkpOworICAgIEFTU0VSVCghbV93aW5kb3dTaGVsbHMuY29udGFp
bnMoJndvcmxkKSk7CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC0+dm0oKSk7CisgICAg
SlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3
aW5kb3dTaGVsbCA9IGNyZWF0ZVdpbmRvd1NoZWxsKHdvcmxkKTsKIApAQCAtNDU2LDcgKzQ1OSw3
IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3QKICNlbmRpZgogfQog
Ci1TY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJH
ZXN0dXJlKQorU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKGZvcmNlVXNlckdlc3R1cmUgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDog
UG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291
cmNlQ29kZShzY3JpcHQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpOwpAQCAtNDcyLDggKzQ3
NSw4IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQnlwYXNzTWFpblcKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT50b3BDYWxsRnJhbWU7
CiAgICAgaWYgKCFjYWxsRnJhbWUgfHwgY2FsbEZyYW1lID09IENhbGxGcmFtZTo6bm9DYWxsZXIo
KSkgCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBET01XcmFwcGVyV29ybGQqIGRvbVdyYXBw
ZXJXb3JsZCA9IGN1cnJlbnRXb3JsZChjYWxsRnJhbWUpOwotICAgIGlmIChkb21XcmFwcGVyV29y
bGQtPmlzTm9ybWFsKCkpCisgICAgRE9NV3JhcHBlcldvcmxkJiBkb21XcmFwcGVyV29ybGQgPSBj
dXJyZW50V29ybGQoY2FsbEZyYW1lKTsKKyAgICBpZiAoZG9tV3JhcHBlcldvcmxkLmlzTm9ybWFs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBlbnVtIFJlYXNvbkZvckNhbGxpbmdD
YW5FeGVjdXRlU2NyaXB0cyB7CiAKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIGZyaWVu
ZCBjbGFzcyBTY3JpcHRDYWNoZWRGcmFtZURhdGE7Ci0gICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1NoZWxsPiA+
IFNoZWxsTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwg
SlNDOjpTdHJvbmc8SlNET01XaW5kb3dTaGVsbD4+IFNoZWxsTWFwOwogCiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgU2NyaXB0Q29udHJvbGxlcihGcmFtZSYpOwpAQCAtNzQsMjkgKzc0LDI5IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gY3JlYXRlV29y
bGQoKTsKIAotICAgIEpTRE9NV2luZG93U2hlbGwqIGNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBw
ZXJXb3JsZCopOwotICAgIHZvaWQgZGVzdHJveVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCop
OworICAgIEpTRE9NV2luZG93U2hlbGwqIGNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3Js
ZCYpOworICAgIHZvaWQgZGVzdHJveVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYpOwogCi0g
ICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
KyAgICBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxk
KQogICAgIHsKLSAgICAgICAgU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxs
cy5maW5kKHdvcmxkKTsKKyAgICAgICAgU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRv
d1NoZWxscy5maW5kKCZ3b3JsZCk7CiAgICAgICAgIHJldHVybiAoaXRlciAhPSBtX3dpbmRvd1No
ZWxscy5lbmQoKSkgPyBpdGVyLT52YWx1ZS5nZXQoKSA6IGluaXRTY3JpcHQod29ybGQpOwogICAg
IH0KLSAgICBKU0RPTVdpbmRvd1NoZWxsKiBleGlzdGluZ1dpbmRvd1NoZWxsKERPTVdyYXBwZXJX
b3JsZCogd29ybGQpIGNvbnN0CisgICAgSlNET01XaW5kb3dTaGVsbCogZXhpc3RpbmdXaW5kb3dT
aGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAogICAgIHsKLSAgICAgICAgU2hlbGxN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5maW5kKHdvcmxkKTsKKyAg
ICAgICAgU2hlbGxNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5maW5k
KCZ3b3JsZCk7CiAgICAgICAgIHJldHVybiAoaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKSkg
PyBpdGVyLT52YWx1ZS5nZXQoKSA6IDA7CiAgICAgfQotICAgIEpTRE9NV2luZG93KiBnbG9iYWxP
YmplY3QoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKKyAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2Jq
ZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4gd2luZG93
U2hlbGwod29ybGQpLT53aW5kb3coKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRBbGxX
b3JsZHMoVmVjdG9yPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+ID4mKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYpOwogCiAgICAgU2Ny
aXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAgICAgU2Ny
aXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlID0gZmFsc2UpOwotICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFT
Y3JpcHQgVVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmLCBT
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKQEAgLTEw
Niw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGlu
ZygpOwogCiAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYp
OwotICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiwgRE9NV3JhcHBlcldvcmxkKik7CisgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGVJbldvcmxkKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIFdURjo6VGV4
dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7CiAKQEAgLTE2NCw3ICsxNjQs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKTsKIAogcHJpdmF0ZToKLSAgICBKU0RPTVdpbmRvd1NoZWxsKiBpbml0U2NyaXB0
KERPTVdyYXBwZXJXb3JsZCogd29ybGQpOworICAgIEpTRE9NV2luZG93U2hlbGwqIGluaXRTY3Jp
cHQoRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RQbGF0Zm9ybVNjcmlw
dE9iamVjdHMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjks
NyArMzY5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRUbwogCiBi
b29sIFNjcmlwdERlYnVnU2VydmVyOjppc0NvbnRlbnRTY3JpcHQoRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBjdXJyZW50V29ybGQoZXhlYykgIT0gbWFpblRocmVhZE5vcm1hbFdvcmxk
KCk7CisgICAgcmV0dXJuICZjdXJyZW50V29ybGQoZXhlYykgIT0gJm1haW5UaHJlYWROb3JtYWxX
b3JsZCgpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2goSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBKU0M6
OkV4ZWNTdGF0ZSogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1lCiAgICAgcmV0dXJuIHNoZWxsLT53
aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogfQogCi1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bU5vZGUoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgTm9kZSogbm9kZSkKK0pTQzo6RXhlY1N0YXRl
KiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQog
ewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04NSw3ICs4NSw3IEBAIEpT
Qzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9kZShET01XcmEKICAgICByZXR1cm4gZnJhbWUt
PnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMoKTsKIH0KIAotSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIFBhZ2Uq
IHBhZ2UpCitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgUGFnZSogcGFnZSkKIHsKICAgICByZXR1cm4gcGFnZS0+bWFpbkZyYW1lKCkuc2Ny
aXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKS0+Z2xvYmFsRXhlYygpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCShyZXZpc2lvbiAxNTY3NTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MiwxMyArNTIsMTMgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAvLyBGb3Igbm93LCB0
aGUgc2VwYXJhdGlvbiBpcyBwdXJlbHkgYnkgY29udmVudGlvbi4KIHR5cGVkZWYgSlNDOjpFeGVj
U3RhdGUgU2NyaXB0U3RhdGU7CiAKLURPTVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShT
Y3JpcHRTdGF0ZSopOworRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6RXhl
Y1N0YXRlKik7CiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
RnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopOwogCiBKU0M6OkV4ZWNTdGF0ZSogbWFpbldv
cmxkRXhlY1N0YXRlKEZyYW1lKik7CiAKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9k
ZShET01XcmFwcGVyV29ybGQqLCBOb2RlKik7Ci1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVBhZ2UoRE9NV3JhcHBlcldvcmxkKiwgUGFnZSopOworSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0
ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYsIE5vZGUqKTsKK0pTQzo6RXhlY1N0YXRlKiBleGVj
U3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmLCBQYWdlKik7CiAKICNpZiBFTkFCTEUoV09S
S0VSUykKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUoV29y
a2VyR2xvYmFsU2NvcGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMTU2NzUyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg5Miw3ICsxODkyLDcgQEAgUGFzc093blB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OkFycmF5QgogICAgIH0KIAogICAgIE93blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+IGNvbnRlbnRzID0gYWRvcHRQdHIobmV3IEFycmF5QnVmZmVyQ29udGVudHNBcnJheShhcnJh
eUJ1ZmZlcnMuc2l6ZSgpKSk7Ci0gICAgVmVjdG9yPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+ID4g
d29ybGRzOworICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4gd29ybGRzOwogICAgIHN0
YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPihleGVjLT52bSgpLmNsaWVudERhdGEpLT5n
ZXRBbGxXb3JsZHMod29ybGRzKTsKIAogICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZp
c2l0ZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5oCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDEw
IEBAIGNsYXNzIFdlYkNvcmVKU0NsaWVudERhdGEgOiBwdWJsaWMgSlNDOjoKICAgICBmcmllbmQg
dm9pZCBpbml0Tm9ybWFsV29ybGRDbGllbnREYXRhKEpTQzo6Vk0qKTsKIAogcHVibGljOgotICAg
IFdlYkNvcmVKU0NsaWVudERhdGEoKSB7IH0KKyAgICBXZWJDb3JlSlNDbGllbnREYXRhKCkKKyAg
ICB7CisgICAgfQorCiAgICAgdmlydHVhbCB+V2ViQ29yZUpTQ2xpZW50RGF0YSgpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV93b3JsZFNldC5jb250YWlucyhtX25vcm1hbFdvcmxkLmdldCgpKSk7
CkBAIC00NiwyMiArNDksMjcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV93b3JsZFNldC5p
c0VtcHR5KCkpOwogICAgIH0KIAotICAgIERPTVdyYXBwZXJXb3JsZCogbm9ybWFsV29ybGQoKSB7
IHJldHVybiBtX25vcm1hbFdvcmxkLmdldCgpOyB9CisgICAgRE9NV3JhcHBlcldvcmxkJiBub3Jt
YWxXb3JsZCgpIHsgcmV0dXJuICptX25vcm1hbFdvcmxkOyB9CiAKLSAgICB2b2lkIGdldEFsbFdv
cmxkcyhWZWN0b3I8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gPiYgd29ybGRzKQorICAgIHZvaWQg
Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mIHdvcmxkcykKICAgICB7
Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihtX3dvcmxkU2V0LCB3b3JsZHMpOworICAgICAgICBBU1NF
UlQod29ybGRzLmlzRW1wdHkoKSk7CisKKyAgICAgICAgd29ybGRzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobV93b3JsZFNldC5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX3dvcmxk
U2V0LmJlZ2luKCksIGVuZCA9IG1fd29ybGRTZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAg
ICAgICAgICAgIHdvcmxkcy51bmNoZWNrZWRBcHBlbmQoKigqaXQpKTsKICAgICB9CiAKLSAgICB2
b2lkIHJlbWVtYmVyV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKKyAgICB2b2lkIHJlbWVt
YmVyV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgh
bV93b3JsZFNldC5jb250YWlucyh3b3JsZCkpOwotICAgICAgICBtX3dvcmxkU2V0LmFkZCh3b3Js
ZCk7CisgICAgICAgIEFTU0VSVCghbV93b3JsZFNldC5jb250YWlucygmd29ybGQpKTsKKyAgICAg
ICAgbV93b3JsZFNldC5hZGQoJndvcmxkKTsKICAgICB9Ci0gICAgdm9pZCBmb3JnZXRXb3JsZChE
T01XcmFwcGVyV29ybGQqIHdvcmxkKQorCisgICAgdm9pZCBmb3JnZXRXb3JsZChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fd29ybGRTZXQuY29udGFpbnMo
d29ybGQpKTsKLSAgICAgICAgbV93b3JsZFNldC5yZW1vdmUod29ybGQpOworICAgICAgICBBU1NF
UlQobV93b3JsZFNldC5jb250YWlucygmd29ybGQpKTsKKyAgICAgICAgbV93b3JsZFNldC5yZW1v
dmUoJndvcmxkKTsKICAgICB9CiAKICAgICBET01PYmplY3RIYXNoVGFibGVNYXAgaGFzaFRhYmxl
TWFwOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgV2ViQ29yZVR5cGVkQXJyYXlDb250
cm9sbGVyOjpKU0FycmEKIHsKICAgICBhdXRvJiB3cmFwcGVyID0gKnN0YXRpY19jYXN0PEpTQzo6
SlNBcnJheUJ1ZmZlcio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgYXV0byYgYnVmZmVy
ID0gKndyYXBwZXIuaW1wbCgpOwotICAgIHVuY2FjaGVXcmFwcGVyKHN0YXRpY19jYXN0PERPTVdy
YXBwZXJXb3JsZCo+KGNvbnRleHQpLCAmYnVmZmVyLCAmd3JhcHBlcik7CisgICAgdW5jYWNoZVdy
YXBwZXIoKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpLCAmYnVmZmVyLCAm
d3JhcHBlcik7CiAgICAgYnVmZmVyLmRlcmVmKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAx
NTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtOTM1LDE1ICs5MzUsMTUgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiaW5saW5lIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgJGltcGxUeXBl
KilcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiaW5saW5lIEpTQzo6V2Vha0hh
bmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgJGltcGxUeXBlKilcbiIp
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKUyR7aW50ZXJmYWNlTmFtZX1P
d25lciwganMke2ludGVyZmFjZU5hbWV9T3duZXIsICgpKTtcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHJldHVybiAmanMke2ludGVyZmFjZU5hbWV9T3duZXI7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiXG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImlubGluZSB2
b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCAkaW1wbFR5cGUqKVxu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJpbmxpbmUgdm9pZCogd3JhcHBlckNv
bnRleHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgJGltcGxUeXBlKilcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgcmV0dXJuIHdvcmxkO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgcmV0dXJuICZ3b3JsZDtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOwogICAgIH0KQEAgLTI2Mjcs
NyArMjYyNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCBKUyR7aW50ZXJmYWNlTmFtZX1Pd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpXG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSlMke2ludGVyZmFjZU5hbWV9KiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2lu
dGVyZmFjZU5hbWV9Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwganMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCksIGpzJHtpbnRl
cmZhY2VOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganMke2lu
dGVyZmFjZU5hbWV9LT5yZWxlYXNlSW1wbCgpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTU2
NzUyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjAyNiw3ICs2MDI2LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRy
b2xzVAogICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogfQogCi12b2lkIERv
Y3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCkKK3ZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewogICAgIGlmIChtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCkKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE1Njc1MikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
NyArMTEyLDYgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBMYXlvdXRQb2ludDsKIGNsYXNzIExh
eW91dFJlY3Q7CiBjbGFzcyBMaXZlTm9kZUxpc3RCYXNlOwotY2xhc3MgRE9NV3JhcHBlcldvcmxk
OwogY2xhc3MgSlNOb2RlOwogY2xhc3MgTG9jYWxlOwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3Rl
bmVyOwpAQCAtMTE4Miw3ICsxMTgxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Rm9udExv
YWRlcj4gZm9udGxvYWRlcigpOwogI2VuZGlmCiAKLSAgICB2b2lkIGVuc3VyZVBsdWdJbnNJbmpl
Y3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqKTsKKyAgICB2b2lkIGVuc3VyZVBsdWdJbnNJbmpl
Y3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZvaWQgc2V0VmlzdWFsVXBkYXRl
c0FsbG93ZWRCeUNsaWVudChib29sKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTU2NzUyKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgotI2luY2x1ZGUg
IkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
NjQsMTEgKzUxNjQsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlvcnNS
ZQogfQogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKLURPTVdyYXBwZXJXb3Js
ZCogSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlSXNvbGF0ZWRXb3JsZCgpCitET01XcmFwcGVyV29y
bGQmIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZUlzb2xhdGVkV29ybGQoKQogewogICAgIGlmICgh
bV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xhdGVkV29ybGQgPSBET01XcmFwcGVyV29y
bGQ6OmNyZWF0ZShKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7Ci0gICAgcmV0dXJuIG1faXNvbGF0
ZWRXb3JsZC5nZXQoKTsKKyAgICByZXR1cm4gKm1faXNvbGF0ZWRXb3JsZDsKIH0KIAogYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQpAQCAt
NTE4MSw3ICs1MTgxLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRy
bwogICAgIGlmICghbWVkaWFDb250cm9sc1NjcmlwdC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IGVuc3VyZUlzb2xhdGVkV29y
bGQoKTsKKyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gZW5zdXJlSXNvbGF0ZWRXb3JsZCgp
OwogICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdENvbnRyb2xsZXIgPSBwYWdlLT5tYWluRnJh
bWUoKS5zY3JpcHQoKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLmdsb2JhbE9iamVj
dCh3b3JsZCkpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CkBAIC01MjA1LDkgKzUyMDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
ZEFkZFVzZXJBZ2VudFNoCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBE
T01XcmFwcGVyV29ybGQqIHdvcmxkID0gZW5zdXJlSXNvbGF0ZWRXb3JsZCgpOwotICAgIGlmICgh
d29ybGQpCi0gICAgICAgIHJldHVybjsKKyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gZW5z
dXJlSXNvbGF0ZWRXb3JsZCgpOwogCiAgICAgaWYgKCFlbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0
ZWRTY3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNyArNjI3LDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgdmlydHVhbCB2
b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIE9WRVJSSURFOwotICAg
IERPTVdyYXBwZXJXb3JsZCogZW5zdXJlSXNvbGF0ZWRXb3JsZCgpOworICAgIERPTVdyYXBwZXJX
b3JsZCYgZW5zdXJlSXNvbGF0ZWRXb3JsZCgpOwogICAgIGJvb2wgZW5zdXJlTWVkaWFDb250cm9s
c0luamVjdGVkU2NyaXB0KCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTYsNiArMzU2LDEyIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tT
bmFwc2gKICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKIH0KIAor
c3RhdGljIERPTVdyYXBwZXJXb3JsZCYgcGx1Z0luSW1hZ2VFbGVtZW50SXNvbGF0ZWRXb3JsZCgp
Cit7CisgICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCA9ICpET01XcmFw
cGVyV29ybGQ6OmNyZWF0ZShKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSkubGVha1JlZigpOworICAg
IHJldHVybiBpc29sYXRlZFdvcmxkOworfQorCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIHsKICAgICBQYWdl
KiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CkBAIC0zNjksNyArMzc1LDcgQEAgdm9pZCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQQogICAgIAogICAgIFN0cmluZyBtaW1lVHlw
ZSA9IGxvYWRlZE1pbWVUeXBlKCk7CiAKLSAgICBzdGF0aWMgRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoSlNET01XaW5kb3c6OmNvbW1vblZN
KCkpLmxlYWtSZWYoKTsKKyAgICBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQgPSBwbHVn
SW5JbWFnZUVsZW1lbnRJc29sYXRlZFdvcmxkKCk7CiAgICAgZG9jdW1lbnQoKS5lbnN1cmVQbHVn
SW5zSW5qZWN0ZWRTY3JpcHQoaXNvbGF0ZWRXb3JsZCk7CiAKICAgICBTY3JpcHRDb250cm9sbGVy
JiBzY3JpcHRDb250cm9sbGVyID0gcGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAJKHJldmlzaW9uIDE1
Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDkgKzc3LDkgQEAgSW5zcGVjdG9yQWdlbnQ6On5JbnNwZWN0b3JB
Z2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBZ2VudCgwKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZy
YW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6
OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7Ci0gICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQor
ICAgIGlmICgmd29ybGQgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9pbmplY3RlZFNjcmlwdEZvck9yaWdpbi5pc0VtcHR5KCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAkocmV2aXNpb24gMTU2
NzUyKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250
ZW5kKCk7CiAKLSAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERP
TVdyYXBwZXJXb3JsZCopOworICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZy
YW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CiAKICAgICB2b2lkIGRpZENvbW1pdExvYWQoKTsKICAg
ICB2b2lkIGRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTY3
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMSw5ICsyMTEsOSBAQCBib29sIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omhhc0luc3BlY3RvckZyCiAgICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3ZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBpZiAod29ybGQgIT0gbWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpCisgICAgaWYgKCZ3b3JsZCAhPSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoZSBwYWdlIGlzIHN1cHBvc2VkIHRvIHNlcnZl
IGFzIEluc3BlY3RvckZyb250ZW5kIG5vdGlmeSBpbnNwZWN0b3IgZnJvbnRlbmQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAkocmV2aXNp
b24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ+KTsKICAgICBib29sIGhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3Q7Ci0g
ICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29y
bGQqKTsKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdy
YXBwZXJXb3JsZCYpOwogICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlKTsKIAogICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlzaW9u
IDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW4KICAgICBTdHJpbmcgc2NyaXB0SWQ7CiAgICAgU3RyaW5n
IHNvdXJjZU5hbWU7CiAgICAgaWYgKGF1dG8gc2NyaXB0TGlzdGVuZXIgPSBKU0V2ZW50TGlzdGVu
ZXI6OmNhc3QoZXZlbnRMaXN0ZW5lci5nZXQoKSkpIHsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRMaXN0ZW5lci0+aXNvbGF0ZWRXb3JsZCgpLT52bSgpKTsKKyAgICAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRMaXN0ZW5lci0+aXNvbGF0ZWRXb3JsZCgpLnZt
KCkpOwogICAgICAgICBzdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Ob2RlKHNjcmlwdExpc3RlbmVyLT5p
c29sYXRlZFdvcmxkKCksICZub2RlLT5kb2N1bWVudCgpKTsKICAgICAgICAgaGFuZGxlciA9IHNj
cmlwdExpc3RlbmVyLT5qc0Z1bmN0aW9uKCZub2RlLT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYg
KGhhbmRsZXIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZTo6
fkluc3BlY3QKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lLCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCk7CiAgICAgaWYgKHBh
Z2VBZ2VudCkKQEAgLTE2MiwxMiArMTYyLDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDbGVhclcKICAgICAgICAgaW5zcGVjdG9yQWdlbnQtPmRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChmcmFtZSwgd29ybGQpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPnBhZ2VEZWJ1Z2dlckFnZW50KCkpIHsKLSAgICAgICAgaWYgKHBhZ2VBZ2VudCAm
JiB3b3JsZCA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSAmJiBmcmFtZSA9PSBwYWdlQWdlbnQt
Pm1haW5GcmFtZSgpKQorICAgICAgICBpZiAocGFnZUFnZW50ICYmICZ3b3JsZCA9PSAmbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkgJiYgZnJhbWUgPT0gcGFnZUFnZW50LT5tYWluRnJhbWUoKSkKICAg
ICAgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7
CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKFBhZ2VSdW50aW1lQWdlbnQqIHBhZ2VSdW50aW1lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5wYWdlUnVudGltZUFnZW50KCkpIHsKLSAgICAgICAg
aWYgKHdvcmxkID09IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQorICAgICAgICBpZiAoJndvcmxk
ID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAgICAgICAgIHBhZ2VSdW50aW1lQWdl
bnQtPmRpZENyZWF0ZU1haW5Xb3JsZENvbnRleHQoZnJhbWUpOwogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBl
cldvcmxkKik7CisgICAgc3RhdGljIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZy
YW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgc3RhdGljIGJvb2wgaXNEZWJ1Z2dlclBhdXNl
ZChGcmFtZSopOwogCiAgICAgc3RhdGljIHZvaWQgd2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQq
LCBOb2RlKiBwYXJlbnQpOwpAQCAtMzE5LDcgKzMxOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9NV3JhcHBlcldv
cmxkKik7CisgICAgc3RhdGljIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKICAgICBzdGF0
aWMgYm9vbCBpc0RlYnVnZ2VyUGF1c2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAKICAg
ICBzdGF0aWMgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IE5vZGUqIHBhcmVudCk7CkBAIC01MTIsNyArNTEyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsK
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHJldmlzaW9uIDE1
Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NjgsOSArODY4LDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNldFNjcmlwdEV4ZWN1dAogICAgIG1faWdub3JlU2NyaXB0c0VuYWJsZWROb3RpZmljYXRp
b24gPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBm
cmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBpZiAod29ybGQgIT0gbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpCisgICAgaWYgKCZ3b3JsZCAhPSAmbWFpblRocmVhZE5vcm1hbFdv
cmxkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgJ
KHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAg
ICBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oRGV2aWNl
T3JpZW50YXRpb25EYXRhKik7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJ
Ci0gICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVy
V29ybGQqKTsKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERP
TVdyYXBwZXJXb3JsZCYpOwogICAgIHZvaWQgZG9tQ29udGVudEV2ZW50RmlyZWQoKTsKICAgICB2
b2lkIGxvYWRFdmVudEZpcmVkKCk7CiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChEb2N1bWVudExv
YWRlciopOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24g
MTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIG92
ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KERPTVdyYXBwZXJXb3JsZCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRB
dmFpbGFibGUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlv
bigpIGNvbnN0IHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNDgsMTMgKzMyNDgsMTMgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvdwogICAgIGlmICghbV9mcmFtZS5zY3JpcHQoKS5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFZlY3RvcjxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiA+IHdvcmxkczsKKyAgICBWZWN0
b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+IHdvcmxkczsKICAgICBTY3JpcHRDb250cm9sbGVyOjpn
ZXRBbGxXb3JsZHMod29ybGRzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmxkcy5z
aXplKCk7ICsraSkKICAgICAgICAgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQo
d29ybGRzW2ldLmdldCgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3ZvaWQgRnJhbWVM
b2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgaWYgKCFtX2ZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCAhbV9mcmFtZS5zY3JpcHQoKS5leGlzdGluZ1dp
bmRvd1NoZWxsKHdvcmxkKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI3MSw3ICszMjcxLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvdwogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCkKIHsKLSAgICBW
ZWN0b3I8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gPiB3b3JsZHM7CisgICAgVmVjdG9yPFJlZjxE
T01XcmFwcGVyV29ybGQ+PiB3b3JsZHM7CiAgICAgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29y
bGRzKHdvcmxkcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JsZHMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIG1fY2xpZW50LmRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKHdvcmxk
c1tpXS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNp
b24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVkT25s
b2FkRXZlbnRzKCk7CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKIAot
ICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldv
cmxkKik7CisgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5B
bGxXb3JsZHMoKTsKICAgICB2b2lkIGRpc3BhdGNoRG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDcgKzI3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUo
KSBjb25zdCA9IDA7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25z
dCA9IDA7IC8vICJOYXZpZ2F0aW9uIiBoZXJlIG1lYW5zIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBw
YWdlIHRvIGFub3RoZXIgdGhhdCBlbmRzIHVwIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KIApA
QCAtMzI4LDcgKzMyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqKSB7
IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUo
RE9NV3JhcHBlcldvcmxkKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdsb2Jh
bE9iamVjdEF2YWlsYWJsZShET01XcmFwcGVyV29ybGQmKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2Jq
ZWN0KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChET01XaW5kb3dF
eHRlbnNpb24qKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDYgQEAKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQogI2lu
Y2x1ZGUgIkNvcmVUZXh0L0NvcmVUZXh0LmgiCiAjZW5kaWYKLSNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiVVJMLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEz
ICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTVdpbmRvd0V4dGVuc2lvbjo6
RE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
K0RPTVdpbmRvd0V4dGVuc2lvbjo6RE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiBmcmFtZSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQotICAg
ICwgbV93b3JsZCh3b3JsZCkKKyAgICAsIG1fd29ybGQoJndvcmxkKQogICAgICwgbV93YXNEZXRh
Y2hlZChmYWxzZSkKIHsKICAgICBBU1NFUlQodGhpcy0+ZnJhbWUoKSk7Ci0gICAgQVNTRVJUKG1f
d29ybGQpOwogfQogCiB2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6ZGlzY29ubmVjdEZyYW1lRm9y
UGFnZUNhY2hlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24u
aAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRl
bnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBGcmFtZTsKIAog
Y2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV2luZG93RXh0
ZW5zaW9uPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxET01XaW5kb3dFeHRlbnNpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUsIERPTVdy
YXBwZXJXb3JsZCogd29ybGQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV2luZG93RXh0ZW5z
aW9uPiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XaW5kb3dFeHRlbnNpb24oZnJhbWUsIHdv
cmxkKSk7CiAgICAgfQpAQCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKSBPVkVSUklERTsKIAotICAg
IERPTVdyYXBwZXJXb3JsZCogd29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9
CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIGNvbnN0IHsgcmV0dXJuICptX3dvcmxkOyB9
CiAKIHByaXZhdGU6Ci0gICAgRE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldv
cmxkKik7CisgICAgRE9NV2luZG93RXh0ZW5zaW9uKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7
CiAKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogICAgIFJlZlB0cjxGcmFt
ZT4gbV9kaXNjb25uZWN0ZWRGcmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lv
biAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTM3LDEwICs1MzcsMTAgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNl
clNjcmlwdAogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gaXQgPSB1c2VyU2NyaXB0
cy0+YmVnaW4oKSwgZW5kID0gdXNlclNjcmlwdHMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgIGluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoaXQtPmtleS5nZXQoKSwgKml0LT52YWx1
ZSwgaW5qZWN0aW9uVGltZSk7CisgICAgICAgIGluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoKml0
LT5rZXkuZ2V0KCksICppdC0+dmFsdWUsIGluamVjdGlvblRpbWUpOwogfQogCi12b2lkIEZyYW1l
OjppbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0
IFVzZXJTY3JpcHRWZWN0b3ImIHVzZXJTY3JpcHRzLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lKQordm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0VmVjdG9yJiB1c2VyU2NyaXB0cywg
VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKICAgICBpZiAodXNlclNj
cmlwdHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShy
ZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZy
YW1lKFBhZ2UmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZUxvYWRlckNsaWVudCYpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERP
TVdyYXBwZXJXb3JsZCosIGNvbnN0IFVzZXJTY3JpcHRWZWN0b3ImLCBVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSk7CisgICAgICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01XcmFw
cGVyV29ybGQmLCBjb25zdCBVc2VyU2NyaXB0VmVjdG9yJiwgVXNlclNjcmlwdEluamVjdGlvblRp
bWUpOwogCiAgICAgICAgIEhhc2hTZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9kZXN0
cnVjdGlvbk9ic2VydmVyczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAkocmV2
aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjAsMzMgKzI2MCwyMyBAQCBTdG9yYWdlTmFtZXNwYWNlKiBQYWdlR3Jv
dXA6OnRyYW5zaWVudExvCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRl
bGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQordm9pZCBQYWdlR3Jv
dXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRl
bGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlv
blRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcykKIHsKLSAgICBBU1NFUlRfQVJHKHdvcmxkLCB3b3JsZCk7Ci0KICAgICBhdXRvIHVzZXJT
Y3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB3aGl0ZWxp
c3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOwogICAgIGlmICgh
bV91c2VyU2NyaXB0cykKICAgICAgICAgbV91c2VyU2NyaXB0cyA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclNjcmlwdE1hcD4oKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdFZlY3Rvcj4m
IHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJTY3JpcHRWZWN0b3I+JiBzY3Jp
cHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCgmd29ybGQsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoIXNjcmlwdHNJbldvcmxkKQogICAgICAgICBzY3JpcHRzSW5Xb3Js
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsKICAgICBzY3JpcHRzSW5X
b3JsZC0+YXBwZW5kKHN0ZDo6bW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKLXZvaWQgUGFnZUdyb3Vw
OjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVMZXZlbCBsZXZl
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclN0eWxlSW5q
ZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQordm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNo
ZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibGFja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsLCBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGlu
amVjdGlvblRpbWUpCiB7Ci0gICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOwotCiAgICAgYXV0
byB1c2VyU3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJj
ZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsKICAg
ICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzKQogICAgICAgICBtX3VzZXJTdHlsZVNoZWV0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRNYXA+KCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFVzZXJTdHlsZVNoZWV0VmVjdG9yPiYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVT
aGVldHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNl
clN0eWxlU2hlZXRzLT5hZGQoJndvcmxkLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
aWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCiAgICAgICAgIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IHN0
ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7CiAgICAgc3R5bGVTaGVldHNJ
bldvcmxkLT5hcHBlbmQoc3RkOjptb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CkBAIC0yOTUsMTQgKzI4
NSwxMiBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkCiAgICAgICAg
IGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAKLXZv
aWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCog
d29ybGQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTY3JpcHRG
cm9tV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAg
QVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOwotCiAgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGl0ID0gbV91c2VyU2NyaXB0cy0+ZmluZCh3b3JsZCk7
CisgICAgYXV0byBpdCA9IG1fdXNlclNjcmlwdHMtPmZpbmQoJndvcmxkKTsKICAgICBpZiAoaXQg
PT0gbV91c2VyU2NyaXB0cy0+ZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTMxNiwx
NCArMzA0LDEyIEBAIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmwKICAg
ICAgICAgbV91c2VyU2NyaXB0cy0+cmVtb3ZlKGl0KTsKIH0KIAotdm9pZCBQYWdlR3JvdXA6OnJl
bW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0
IFVSTCYgdXJsKQordm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxk
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIEFTU0VSVF9B
Ukcod29ybGQsIHdvcmxkKTsKLQogICAgIGlmICghbV91c2VyU3R5bGVTaGVldHMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gaXQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+ZmluZCh3b3JsZCk7
CisgICAgYXV0byBpdCA9IG1fdXNlclN0eWxlU2hlZXRzLT5maW5kKCZ3b3JsZCk7CiAgICAgYm9v
bCBzaGVldHNDaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGl0ID09IG1fdXNlclN0eWxlU2hlZXRz
LT5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ1LDI0ICszMzEsMjAgQEAgdm9pZCBQYWdl
R3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbQogICAgIGludmFsaWRhdGVJbmplY3RlZFN0
eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjpyZW1vdmVV
c2VyU2NyaXB0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQordm9pZCBQYWdlR3Jv
dXA6OnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7
Ci0gICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOwotCiAgICAgaWYgKCFtX3VzZXJTY3JpcHRz
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUod29ybGQpOwor
ICAgIG1fdXNlclNjcmlwdHMtPnJlbW92ZSgmd29ybGQpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6
cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit2
b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCiB7Ci0gICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOwotCiAgICAgaWYg
KCFtX3VzZXJTdHlsZVNoZWV0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3VzZXJT
dHlsZVNoZWV0cy0+cmVtb3ZlKHdvcmxkKSkKKyAgICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzLT5y
ZW1vdmUoJndvcmxkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW52YWxpZGF0ZUluamVjdGVk
U3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAko
d29ya2luZyBjb3B5KQpAQCAtOTAsMjAgKzkwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBTdG9yYWdlTmFtZXNwYWNlKiB0cmFuc2llbnRMb2NhbFN0b3JhZ2UoU2VjdXJpdHlP
cmlnaW4qIHRvcE9yaWdpbik7CiAKLSAgICAgICAgdm9pZCBhZGRVc2VyU2NyaXB0VG9Xb3JsZChE
T01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVs
aXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKTsKLSAgICAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3Jh
cHBlcldvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxp
c3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTdHlsZUxldmVsIGxldmVsID0gVXNlclN0
eWxlVXNlckxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2Vy
U3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUgPSBJbmplY3RJbkV4aXN0aW5nRG9jdW1l
bnRzKTsKLSAgICAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCosIGNvbnN0IFVSTCYpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJv
bVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYpOwotCi0gICAgICAgIHZvaWQgcmVt
b3ZlVXNlclNjcmlwdHNGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKik7Ci0gICAgICAgIHZvaWQg
cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCopOwotCisgICAg
ICAgIHZvaWQgYWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3Qs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKKyAgICAgICAgdm9pZCBhZGRVc2VyU3R5bGVT
aGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibGFja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZUxldmVs
ID0gVXNlclN0eWxlVXNlckxldmVsLCBVc2VyU3R5bGVJbmplY3Rpb25UaW1lID0gSW5qZWN0SW5F
eGlzdGluZ0RvY3VtZW50cyk7CisgICAgICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdEZyb21Xb3Js
ZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBVUkwmKTsKKyAgICAgICAgdm9pZCByZW1vdmVVc2Vy
U3R5bGVTaGVldEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBVUkwmKTsKKyAgICAg
ICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQmKTsKKyAg
ICAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxk
Jik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIAogICAgICAgICBjb25z
dCBVc2VyU2NyaXB0TWFwKiB1c2VyU2NyaXB0cygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclNjcmlw
dHMuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Njc2NCkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTEw
LTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1RURTogRE9NV3Jh
cHBlcldvcmxkcyBzaG91bGQgYmUgcGFzc2VkIGFyb3VuZCBieSByZWZlcmVuY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjIwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6Omdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0
T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpu
b3JtYWxXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
OmNvcmVXb3JsZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp3aW5kb3dTY3JpcHROUE9i
amVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpbkVsZW1lbnROUE9iamVj
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDEz
LTEwLTAxICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTIyMTkwPiBXZWJLaXQyIEFQSXMgcmV0dXJuaW5nIENGIGFuZCBOUyB0eXBl
cyBzaG91bGQgZXhwbGljaXRseSBkZWNsYXJlIHdoZXRoZXIgdGhleSByZXR1cm4gcmV0YWluZWQg
b2JqZWN0cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWQKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRv
UGFzcykpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2xl
YXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCogd29ybGQpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSog
ZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRD
bGVhcldpbmRvd09iamVjdEZvckZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0yODksNyArMjg5
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZAogICAgIG1fY2xp
ZW50LmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFt
ZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdlKiBwYWdl
LCBXZWJGcmFtZSogZnJhbWUsIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCogd29ybGQpCit2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVG
b3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFdlYkNvcmU6OkRPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5nbG9iYWxPYmplY3RJc0F2YWls
YWJsZUZvckZyYW1lKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDEyICs3NywxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKICAgICB2b2lk
IGRpZExheW91dChXZWJQYWdlKiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcywgUmVmUHRyPEFQ
SU9iamVjdD4mIHVzZXJEYXRhKTsKIAotICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JG
cmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKKyAg
ICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwg
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSopOwogICAgIHZvaWQgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYg
dXJsLCBkb3VibGUgZGVsYXksIGRvdWJsZSBkYXRlKTsKICAgICB2b2lkIGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSopOwogCi0gICAgdm9pZCBnbG9iYWxP
YmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZCopOworICAgIHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFt
ZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKICAgICB2
b2lkIHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdChXZWJQ
YWdlKiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKik7CiAgICAgdm9pZCBkaWRSZWNvbm5l
Y3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChXZWJQYWdlKiwgV2ViQ29yZTo6RE9N
V2luZG93RXh0ZW5zaW9uKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRP
TVdpbmRvd0V4dGVuc2lvbihXZWJQYWdlKiwgV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAJKHJldmlz
aW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDIwICs0
NywyMCBAQCBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IEluCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKFNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVdvcmxkKCkpKTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZShET01XcmFwcGVy
V29ybGQqIHdvcmxkKQorUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZShET01XcmFwcGVyV29ybGQmIHdvcmxk
KQogewotICAgIGlmICh3b3JsZCA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKKyAgICBpZiAo
JndvcmxkID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAgICAgcmV0dXJuIG5vcm1h
bFdvcmxkKCk7CiAKLSAgICBpZiAoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogZXhpc3RpbmdX
b3JsZCA9IGFsbFdvcmxkcygpLmdldCh3b3JsZCkpCisgICAgaWYgKEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqIGV4aXN0aW5nV29ybGQgPSBhbGxXb3JsZHMoKS5nZXQoJndvcmxkKSkKICAgICAg
ICAgcmV0dXJuIGV4aXN0aW5nV29ybGQ7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQoJndvcmxkKSk7CiB9CiAKIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkKIHsKLSAg
ICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQgPSBhZG9wdFJlZihuZXcg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQgPSBhZG9w
dFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgmbWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHdvcmxkOwogfQogCkBAIC03Nyw5ICs3Nyw5IEBA
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6On5JbmplY3RlZEJ1bmQKICAgICBhbGxXb3JsZHMo
KS5yZW1vdmUobV93b3JsZC5nZXQoKSk7CiB9CiAKLURPTVdyYXBwZXJXb3JsZCogSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZDo6Y29yZVdvcmxkKCkgY29uc3QKK0RPTVdyYXBwZXJXb3JsZCYgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y29yZVdvcmxkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV93b3JsZC5nZXQoKTsKKyAgICByZXR1cm4gKm1fd29ybGQuZ2V0KCk7CiB9CiAgICAgCiB2b2lk
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNsZWFyV3JhcHBlcnMoKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkIDogcHVibGljIFR5cGVkQVBJ
T2JqZWN0PEFQSU9iamVjdDo6VHlwZUJ1bmRsZVNjcmlwdFdvcmxkPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gY3JlYXRlKCk7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gZ2V0T3JDcmVh
dGUoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RE9NV3JhcHBlcldv
cmxkJik7CiAgICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIG5vcm1hbFdvcmxk
KCk7CiAKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKCk7CiAKLSAgICBX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQqIGNvcmVXb3JsZCgpIGNvbnN0OworICAgIFdlYkNvcmU6
OkRPTVdyYXBwZXJXb3JsZCYgY29yZVdvcmxkKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBjbGVh
cldyYXBwZXJzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
NSw3ICsxMzY1LDcgQEAgTlBPYmplY3QqIFBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5QT2JqZQog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RN
YXAuZ2V0T3JDcmVhdGVOUE9iamVjdCgqcGx1Z2luV29ybGQoKS0+dm0oKSwgZnJhbWUoKS0+c2Ny
aXB0KCkud2luZG93U2hlbGwocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKKyAgICByZXR1cm4g
bV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdCgqcGx1Z2luV29ybGQoKS52
bSgpLCBmcmFtZSgpLT5zY3JpcHQoKS53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgpKS0+d2luZG93
KCkpOwogfQogCiBOUE9iamVjdCogUGx1Z2luVmlldzo6cGx1Z2luRWxlbWVudE5QT2JqZWN0KCkK
QEAgLTEzODEsNyArMTM4MSw3IEBAIE5QT2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50
TlBPYmoKICAgICBKU09iamVjdCogb2JqZWN0ID0gZnJhbWUoKS0+c2NyaXB0KCkuanNPYmplY3RG
b3JQbHVnaW5FbGVtZW50KG1fcGx1Z2luRWxlbWVudC5nZXQoKSk7CiAgICAgQVNTRVJUKG9iamVj
dCk7CiAKLSAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVj
dCgqcGx1Z2luV29ybGQoKS0+dm0oKSwgb2JqZWN0KTsKKyAgICByZXR1cm4gbV9ucFJ1bnRpbWVP
YmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdCgqcGx1Z2luV29ybGQoKS52bSgpLCBvYmplY3Qp
OwogfQogCiBib29sIFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29u
c3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0LCBib29sIGFsbG93UG9w
dXBzKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE1
Njc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBT
dHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om92ZXJyaWRlTWVkCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENsZWFyV2lu
ZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQordm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwogICAgIGlmICghd2ViUGFnZSkKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2wKIH0KIAogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFwcGVyV29ybGQqIHdvcmxk
KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFi
bGUoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTk1LDkgKzE5NSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RD
b250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEdsb2JhbE9i
amVjdEF2YWlsYWJsZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoV2ViQ29yZTo6RE9NV3Jh
cHBlcldvcmxkJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbERpc2Nv
bm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRv
d0V4dGVuc2lvbiopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdlYkNvcmU6OkRPTVdpbmRvd0V4
dGVuc2lvbiopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxEZXN0cm95
R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVu
c2lvbiopIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NzY0KQor
KysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTMtMTAtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBDVFRFOiBET01XcmFwcGVyV29ybGRzIHNob3VsZCBiZSBwYXNzZWQgYXJvdW5kIGJ5IHJlZmVy
ZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5oOgorCiAyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRml4IHRoZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAkocmV2
aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTExLDcgKzUxMSw3IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVMKIAogICAgIC8vIFRoZSBj
b2RlIGJlbG93IGlzIG9ubHkgdmFsaWQgZm9yIEpTQywgVjggc3BlY2lmaWMgY29kZSBpcyB0byBi
ZSBhZGRlZAogICAgIC8vIHdoZW4gVjggd2lsbCBiZSBzdXBwb3J0ZWQgaW4gRUZMIHBvcnQuIFNl
ZSBRdCBpbXBsZW1lbmF0aW9uLgotICAgIHByb3h5LmV4ZWN1dGVTY3JpcHRJbldvcmxkKHNjcmlw
dFdvcmxkLmdldCgpLCBzY3JpcHQsIHRydWUpOworICAgIHByb3h5LmV4ZWN1dGVTY3JpcHRJbldv
cmxkKCpzY3JpcHRXb3JsZCwgc2NyaXB0LCB0cnVlKTsKIH0KIAogSlNHbG9iYWxDb250ZXh0UmVm
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Z2xvYmFsQ29udGV4dFJlZkZvckZyYW1lKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9u
IDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUzLDkgKzQ1Myw5IEBAIFN0cmluZyBG
cmFtZUxvYWRlckNsaWVudEVmbDo6b3ZlcnJpZGVNZWQKICAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChld2tfc2V0dGluZ3NfY3NzX21lZGlhX3R5cGVfZ2V0KCkpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQqIHdvcmxkKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAg
ICBpZiAod29ybGQgIT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCisgICAgaWYgKCZ3b3JsZCAh
PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlRnJhbWUobV9mcmFtZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmgJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgx
LDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCop
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyAgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY3NjQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMC0wMSAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENUVEU6IERPTVdyYXBwZXJXb3Js
ZHMgc2hvdWxkIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDEzLTA5LTMwICBCZW5qYW1pbiBQb3Vs
YWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIGNvZGUgZ3Vh
cmRlZCBieSBTVFlMRV9TQ09QRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDE1
Njc1MikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc1LDkgKzU3NSw5IEBAIFN0cmluZyBGcmFt
ZUxvYWRlckNsaWVudDo6b3ZlcnJpZGVNZWRpYVQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQog
ewotICAgIGlmICh3b3JsZCAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKKyAgICBpZiAoJndv
cmxkICE9ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gSXMgdGhpcyBvYnNvbGV0ZSBub3c/CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDE1
Njc1MikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6
OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VV
UkwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBl
cmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMTU2NzY0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTMtMTAtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KKworICAgICAgICBDVFRFOiBET01XcmFwcGVyV29ybGRzIHNob3VsZCBiZSBwYXNzZWQg
YXJvdW5kIGJ5IHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyMjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0V2lu
ZG93TlBPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OmdldFBsdWdpbkVsZW1lbnROUE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAg
ICAgKC1bV2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOndp
dGhHbG9iYWxPYmplY3Q6aW5TY3JpcHRXb3JsZDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2ds
b2JhbENvbnRleHRGb3JTY3JpcHRXb3JsZDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUganNXcmFw
cGVyRm9yTm9kZTppblNjcmlwdFdvcmxkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0
V29ybGQubW06CisgICAgICAgICgrW1dlYlNjcmlwdFdvcmxkIHN0YW5kYXJkV29ybGRdKToKKyAg
ICAgICAgKCtbV2ViU2NyaXB0V29ybGQgZmluZE9yQ3JlYXRlV29ybGQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJTY3JpcHRXb3JsZEludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6
CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1
cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNl
OnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tX
ZWJWaWV3IF9yZW1vdmVVc2VyU2NyaXB0RnJvbUdyb3VwOndvcmxkOnVybDpdKToKKyAgICAgICAg
KCtbV2ViVmlldyBfcmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tR3JvdXA6d29ybGQ6dXJsOl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9yZW1vdmVVc2VyU2NyaXB0c0Zyb21Hcm91cDp3b3JsZDpdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbUdyb3VwOndvcmxk
Ol0pOgorCiAyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHN1cHBvcnQgZm9yIERPTUZpbGVTeXN0ZW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0JKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODQyLDcgKzg0Miw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpn
ZXRXaW4KICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91
dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIG9iamVjdElEID0gMDsKICAgICBlbHNlCi0gICAg
ICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QoKnBsdWdpbldvcmxkKCkt
PnZtKCksIGZyYW1lLT5zY3JpcHQoKS53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgpKS0+d2luZG93
KCkpOworICAgICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KCpwbHVn
aW5Xb3JsZCgpLnZtKCksIGZyYW1lLT5zY3JpcHQoKS53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgp
KS0+d2luZG93KCkpOwogICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTg1NCw3ICs4
NTQsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0UGx1CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGZyYW1lLT5z
Y3JpcHQoKS5qc09iamVjdEZvclBsdWdpbkVsZW1lbnQoW21fcGx1Z2luVmlldyBlbGVtZW50XSkp
Ci0gICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QoKnBsdWdpbldv
cmxkKCktPnZtKCksIG9iamVjdCk7CisgICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMu
aWRGb3JPYmplY3QoKnBsdWdpbldvcmxkKCkudm0oKSwgb2JqZWN0KTsKICAgICBlbHNlCiAgICAg
ICAgIG9iamVjdElEID0gMDsKICAgICAKQEAgLTg4Myw4ICs4ODMsOCBAQCBib29sIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2socGx1Z2luV29ybGQoKS0+dm0oKSk7
Ci0gICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldvcmxkKCkt
PnZtKCksIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOworICAg
IEpTTG9ja0hvbGRlciBsb2NrKHBsdWdpbldvcmxkKCkudm0oKSk7CisgICAgU3Ryb25nPEpTR2xv
YmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUtPnNjcmlw
dCgpLmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RD
b250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkg
Y29uc3QgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAxNTY3NTIp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkzOSw3ICsxOTM5LDcgQEAgU3RyaW5nIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpvdmVycmlkZU1lZAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZG9j
dW1lbnRFbGVtZW50QXZhaWxhYmxlKCkgewogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdv
cmxkKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBXZWJGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFt
ZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKQEAgLTE5NTAsNyArMTk1MCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2wKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmICh3b3JsZCAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkK
KyAgICBpZiAoJndvcmxkICE9ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRnJhbWUgKmZyYW1lID0gY29yZShtX3dlYkZyYW1lLmdldCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMTU2NzUyKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTA5Miw2ICsxMDkyLDkgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cgogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gQCIiOwogCisgICAgaWYgKCF3b3Js
ZCkKKyAgICAgICAgcmV0dXJuIEAiIjsKKwogICAgIC8vIFN0YXJ0IG9mZiB3aXRoIHNvbWUgZ3Vl
c3MgYXQgYSBmcmFtZSBhbmQgYSBnbG9iYWwgb2JqZWN0LCB3ZSdsbCB0cnkgdG8gZG8gYmV0dGVy
Li4uIQogICAgIEpTRE9NV2luZG93KiBhbnlXb3JsZEdsb2JhbE9iamVjdCA9IF9wcml2YXRlLT5j
b3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7
CiAKQEAgLTExMDUsNyArMTEwOCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3IKICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFJldGFpblB0cjxX
ZWJGcmFtZT4gd2ViRnJhbWUoa2l0KGZyYW1lKSk7IC8vIFJ1bm5pbmcgYXJiaXRyYXJ5IEphdmFT
Y3JpcHQgY2FuIGRlc3Ryb3kgdGhlIGZyYW1lLgogCi0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9
IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZChjb3JlKHdvcmxkKSwgc3RyaW5n
LCB0cnVlKS5qc1ZhbHVlKCk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3Jp
cHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZCgqY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuanNW
YWx1ZSgpOwogCiAgICAgaWYgKCF3ZWJGcmFtZS0+X3ByaXZhdGUtPmNvcmVGcmFtZSkgLy8gSW4g
Y2FzZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAg
IHJldHVybiBAIiI7CkBAIC0xMTI5LDcgKzExMzIsNyBAQCAtIChKU0dsb2JhbENvbnRleHRSZWYp
X2dsb2JhbENvbnRleHRGb3JTCiAgICAgRE9NV3JhcHBlcldvcmxkKiBjb3JlV29ybGQgPSBjb3Jl
KHdvcmxkKTsKICAgICBpZiAoIWNvcmVXb3JsZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIHRvR2xvYmFsUmVmKGNvcmVGcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KGNvcmVXb3Js
ZCktPmdsb2JhbEV4ZWMoKSk7CisgICAgcmV0dXJuIHRvR2xvYmFsUmVmKGNvcmVGcmFtZS0+c2Ny
aXB0KCkuZ2xvYmFsT2JqZWN0KCpjb3JlV29ybGQpLT5nbG9iYWxFeGVjKCkpOwogfQogCiAjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKQEAgLTEyNjAsNyArMTI2MywxMCBAQCAtIChKU1ZhbHVlUmVm
KWpzV3JhcHBlckZvck5vZGU6KERPTU5vZGUgCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdCA9IGNvcmVGcmFtZS0+
c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KGNvcmUod29ybGQpKTsKKyAgICBpZiAoIXdvcmxkKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSBjb3JlRnJh
bWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCgqY29yZSh3b3JsZCkpOwogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJT
Y3JpcHRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlNjcmlwdFdvcmxkLm1tCShyZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdFdvcmxkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBA
IC0gKHZvaWQpZGVhbGxvYwogCiArIChXZWJTY3JpcHRXb3JsZCAqKXN0YW5kYXJkV29ybGQKIHsK
LSAgICBzdGF0aWMgV2ViU2NyaXB0V29ybGQgKndvcmxkID0gW1tXZWJTY3JpcHRXb3JsZCBhbGxv
Y10gaW5pdFdpdGhXb3JsZDptYWluVGhyZWFkTm9ybWFsV29ybGQoKV07CisgICAgc3RhdGljIFdl
YlNjcmlwdFdvcmxkICp3b3JsZCA9IFtbV2ViU2NyaXB0V29ybGQgYWxsb2NdIGluaXRXaXRoV29y
bGQ6Jm1haW5UaHJlYWROb3JtYWxXb3JsZCgpXTsKICAgICByZXR1cm4gd29ybGQ7CiB9CiAKQEAg
LTEyMywxNyArMTIzLDE1IEBAIERPTVdyYXBwZXJXb3JsZCogY29yZShXZWJTY3JpcHRXb3JsZCAq
d28KICAgICByZXR1cm4gd29ybGQgPyB3b3JsZC0+X3ByaXZhdGUtPndvcmxkLmdldCgpIDogMDsK
IH0KIAotKyAoV2ViU2NyaXB0V29ybGQgKilmaW5kT3JDcmVhdGVXb3JsZDooRE9NV3JhcHBlcldv
cmxkKikgd29ybGQKKysgKFdlYlNjcmlwdFdvcmxkICopZmluZE9yQ3JlYXRlV29ybGQ6KERPTVdy
YXBwZXJXb3JsZCYpd29ybGQKIHsKLSAgICBBU1NFUlRfQVJHKHdvcmxkLCB3b3JsZCk7Ci0KLSAg
ICBpZiAod29ybGQgPT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCisgICAgaWYgKCZ3b3JsZCA9
PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVybiBbc2VsZiBzdGFuZGFy
ZFdvcmxkXTsKIAotICAgIGlmIChXZWJTY3JpcHRXb3JsZCAqZXhpc3RpbmdXb3JsZCA9IGFsbFdv
cmxkcygpLmdldCh3b3JsZCkpCisgICAgaWYgKFdlYlNjcmlwdFdvcmxkICpleGlzdGluZ1dvcmxk
ID0gYWxsV29ybGRzKCkuZ2V0KCZ3b3JsZCkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ1dvcmxk
OwogCi0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoV29ybGQ6d29ybGRdIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhXb3JsZDomd29ybGRd
IGF1dG9yZWxlYXNlXTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJTY3JpcHRXb3JsZEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJTY3JpcHRXb3JsZEludGVybmFsLmgJKHJldmlzaW9uIDE1Njc1MikKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw1ICszMSw1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdlYkNvcmU6
OkRPTVdyYXBwZXJXb3JsZCogY29yZShXZWJTY3JpcHRXb3JsZCAqKTsKIAogQGludGVyZmFjZSBX
ZWJTY3JpcHRXb3JsZCAoV2ViSW50ZXJuYWwpCi0rIChXZWJTY3JpcHRXb3JsZCAqKWZpbmRPckNy
ZWF0ZVdvcmxkOihXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKXdvcmxkOworKyAoV2ViU2NyaXB0
V29ybGQgKilmaW5kT3JDcmVhdGVXb3JsZDooV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJil3b3Js
ZDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgxLDcgKzY4MSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tR
dWlya3NVc2VyU2MKIC0odm9pZClfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdAogewogICAgIHN0
YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzID0gbGVha091dGxvb2tR
dWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAgICBjb3JlKHNlbGYpLT5ncm91cCgpLmFkZFVz
ZXJTY3JpcHRUb1dvcmxkKGNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksCisgICAgY29yZShz
ZWxmKS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZCgqY29yZShbV2ViU2NyaXB0V29ybGQg
d29ybGRdKSwKICAgICAgICAgb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5q
ZWN0SW5BbGxGcmFtZXMpOwogfQogCkBAIC0yNjg4LDggKzI2ODgsMTEgQEAgKyAodm9pZClfYWRk
VXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nIAogICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwID0g
UGFnZUdyb3VwOjpwYWdlR3JvdXAoZ3JvdXApOwogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgcGFnZUdyb3VwLT5hZGRVc2VyU2NyaXB0VG9Xb3JsZChjb3Jl
KHdvcmxkKSwgc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5n
VmVjdG9yKGJsYWNrbGlzdCksIAorCisgICAgaWYgKCF3b3JsZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcGFnZUdyb3VwLT5hZGRVc2VyU2NyaXB0VG9Xb3JsZCgqY29yZSh3b3JsZCksIHNvdXJj
ZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0aW9uVGltZSA9
PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmpl
Y3RBdERvY3VtZW50RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5q
ZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6
IEluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KQEAgLTI3MTIsNyArMjcxNSwxMCBAQCArICh2b2lk
KV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyCiAgICAgaWYgKCFwYWdlR3JvdXApCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHBhZ2VHcm91cC0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
KGNvcmUod29ybGQpLCBzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxG
cmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICBp
ZiAoIXdvcmxkKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlR3JvdXAtPmFkZFVzZXJTdHls
ZVNoZWV0VG9Xb3JsZCgqY29yZSh3b3JsZCksIHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBX
ZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFt
ZU9ubHkpOwogfQogCiArICh2b2lkKV9yZW1vdmVVc2VyU2NyaXB0RnJvbUdyb3VwOihOU1N0cmlu
ZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsZCB1cmw6KE5TVVJMICop
dXJsCkBAIC0yNzI1LDcgKzI3MzEsMTAgQEAgKyAodm9pZClfcmVtb3ZlVXNlclNjcmlwdEZyb21H
cm91cDooTlNTdAogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
YWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQoY29yZSh3b3JsZCksIHVybCk7Cisg
ICAgaWYgKCF3b3JsZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZUdyb3VwLT5yZW1vdmVV
c2VyU2NyaXB0RnJvbVdvcmxkKCpjb3JlKHdvcmxkKSwgdXJsKTsKIH0KIAogKyAodm9pZClfcmVt
b3ZlVXNlclN0eWxlU2hlZXRGcm9tR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihX
ZWJTY3JpcHRXb3JsZCAqKXdvcmxkIHVybDooTlNVUkwgKil1cmwKQEAgLTI3MzgsNyArMjc0Nywx
MCBAQCArICh2b2lkKV9yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Hcm91cDooCiAgICAgaWYgKCFw
YWdlR3JvdXApCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2VHcm91cC0+cmVtb3ZlVXNlclN0
eWxlU2hlZXRGcm9tV29ybGQoY29yZSh3b3JsZCksIHVybCk7CisgICAgaWYgKCF3b3JsZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFnZUdyb3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21X
b3JsZCgqY29yZSh3b3JsZCksIHVybCk7CiB9CiAKICsgKHZvaWQpX3JlbW92ZVVzZXJTY3JpcHRz
RnJvbUdyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3
b3JsZApAQCAtMjc1MSw3ICsyNzYzLDEwIEBAICsgKHZvaWQpX3JlbW92ZVVzZXJTY3JpcHRzRnJv
bUdyb3VwOihOU1MKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cGFnZUdyb3VwLT5yZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChjb3JlKHdvcmxkKSk7CisgICAg
aWYgKCF3b3JsZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZUdyb3VwLT5yZW1vdmVVc2Vy
U2NyaXB0c0Zyb21Xb3JsZCgqY29yZSh3b3JsZCkpOwogfQogCiArICh2b2lkKV9yZW1vdmVVc2Vy
U3R5bGVTaGVldHNGcm9tR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3Jp
cHRXb3JsZCAqKXdvcmxkCkBAIC0yNzY0LDcgKzI3NzksMTAgQEAgKyAodm9pZClfcmVtb3ZlVXNl
clN0eWxlU2hlZXRzRnJvbUdyb3VwOgogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZChjb3Jl
KHdvcmxkKSk7CisgICAgaWYgKCF3b3JsZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZUdy
b3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGQoKmNvcmUod29ybGQpKTsKIH0KIAog
KyAodm9pZClfcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBO
YW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY3NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0x
MC0wMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENUVEU6IERPTVdy
YXBwZXJXb3JsZHMgc2hvdWxkIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJTY3JpcHRXb3Js
ZC5jcHA6CisgICAgICAgIChXZWJTY3JpcHRXb3JsZDo6c3RhbmRhcmRXb3JsZCk6CisgICAgICAg
IChXZWJTY3JpcHRXb3JsZDo6ZmluZE9yQ3JlYXRlV29ybGQpOgorICAgICAgICAqIFdlYlNjcmlw
dFdvcmxkLmg6CisgICAgICAgIChXZWJTY3JpcHRXb3JsZDo6d29ybGQpOgorCiAyMDEzLTEwLTAx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
SW1wbGVtZW50ZWQgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0IGluIFdpbkxhdW5jaGVyLgpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAkocmV2aXNpb24gMTU2NzUyKQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw3ICs2Myw3IEBAIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogCiBXZWJTY3Jp
cHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6OnN0YW5kYXJkV29ybGQoKQogewotICAgIHN0YXRpYyBX
ZWJTY3JpcHRXb3JsZCogc3RhbmRhcmRXb3JsZCA9IGNyZWF0ZUluc3RhbmNlKG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFdlYlNjcmlwdFdvcmxkKiBzdGFu
ZGFyZFdvcmxkID0gY3JlYXRlSW5zdGFuY2UoJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS5sZWFr
UmVmKCk7CiAgICAgcmV0dXJuIHN0YW5kYXJkV29ybGQ7CiB9CiAKQEAgLTc3LDE1ICs3NywxNSBA
QCBDT01QdHI8V2ViU2NyaXB0V29ybGQ+IFdlYlNjcmlwdFdvcmxkOjpjCiAgICAgcmV0dXJuIG5l
dyBXZWJTY3JpcHRXb3JsZCh3b3JsZCk7CiB9CiAKLUNPTVB0cjxXZWJTY3JpcHRXb3JsZD4gV2Vi
U2NyaXB0V29ybGQ6OmZpbmRPckNyZWF0ZVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCitD
T01QdHI8V2ViU2NyaXB0V29ybGQ+IFdlYlNjcmlwdFdvcmxkOjpmaW5kT3JDcmVhdGVXb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIGlmICh3b3JsZCA9PSBtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSkKKyAgICBpZiAoJndvcmxkID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YW5kYXJkV29ybGQoKTsKIAogICAgIGlmIChXZWJTY3JpcHRXb3Js
ZCogZXhpc3RpbmdXb3JsZCA9IGFsbFdvcmxkcygpLmdldCh3b3JsZCkpCiAgICAgICAgIHJldHVy
biBleGlzdGluZ1dvcmxkOwogCi0gICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKHdvcmxkKTsKKyAg
ICByZXR1cm4gY3JlYXRlSW5zdGFuY2UoJndvcmxkKTsKIH0KIAogVUxPTkcgV2ViU2NyaXB0V29y
bGQ6OkFkZFJlZigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmgJKHJldmlzaW9u
IDE1Njc1MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEyICszOCwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlNjcmlwdFdv
cmxkKiBzdGFuZGFyZFdvcmxkKCk7CiAgICAgc3RhdGljIENPTVB0cjxXZWJTY3JpcHRXb3JsZD4g
Y3JlYXRlSW5zdGFuY2UoKTsKIAotICAgIHN0YXRpYyBDT01QdHI8V2ViU2NyaXB0V29ybGQ+IGZp
bmRPckNyZWF0ZVdvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOworICAgIHN0YXRpYyBD
T01QdHI8V2ViU2NyaXB0V29ybGQ+IGZpbmRPckNyZWF0ZVdvcmxkKFdlYkNvcmU6OkRPTVdyYXBw
ZXJXb3JsZCYpOwogCiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAotICAg
IFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCogd29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxk
LmdldCgpOyB9CisgICAgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIGNvbnN0IHsg
cmV0dXJuICptX3dvcmxkOyB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIENPTVB0cjxXZWJTY3Jp
cHRXb3JsZD4gY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpET01XcmFwcGVyV29y
bGQ+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE1Njc1MikKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI2Miw3ICsxMjYyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZG9jdW1lbnRFbGVtZQogewogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShtX3dlYkZyYW1lKTsKICAgICBBU1NFUlQoY29yZUZyYW1lKTsKQEAgLTEyNzksNyArMTI3
OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2wKICAgICBpZiAo
ZGVsZWdhdGVQcml2YXRlICYmIGRlbGVnYXRlUHJpdmF0ZS0+ZGlkQ2xlYXJXaW5kb3dPYmplY3RG
b3JGcmFtZUluU2NyaXB0V29ybGQod2ViVmlldywgbV93ZWJGcmFtZSwgV2ViU2NyaXB0V29ybGQ6
OmZpbmRPckNyZWF0ZVdvcmxkKHdvcmxkKS5nZXQoKSkgIT0gRV9OT1RJTVBMKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAod29ybGQgIT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCisgICAg
aWYgKCZ3b3JsZCAhPSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gdG9SZWYoY29yZUZyYW1lLT5zY3JpcHQoKS5n
bG9iYWxPYmplY3Qod29ybGQpLT5nbG9iYWxFeGVjKCkpOwpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiAxNTY3NTIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNyArMTg4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBi
b29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpE
T01XcmFwcGVyV29ybGQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QgT1ZF
UlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEzLTEwLTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
Q1RURTogRE9NV3JhcHBlcldvcmxkcyBzaG91bGQgYmUgcGFzc2VkIGFyb3VuZCBieSByZWZlcmVu
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjIw
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6
CisKIDIwMTMtMDktMzAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBXaW5DRSBidWlsZCBmaXggYWZ0ZXIgcjE1MzkyNy4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gMTU2NzUyKQorKysgU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIFN0cmluZyBGcmFtZUxvYWRlckNsaWVudFdp
bkNFOjpvdmVycmlkZU0KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkKikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDE1Njc1MikK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
aW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldp
ZGdldCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2
YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxl
dEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+
JiBwYXJhbVZhbHVlcyk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlw
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3Q7CiAK
</data>
<flag name="review"
          id="235473"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="235474"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>