<?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>203351</bug_id>
          
          <creation_ts>2019-10-23 18:49:28 -0700</creation_ts>
          <short_desc>[JSC] Remove wasmAwareLexicalGlobalObject</short_desc>
          <delta_ts>2019-10-23 22:35:12 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583183</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 18:49:28 -0700</bug_when>
    <thetext>[JSC] Remove wasmAwareLexicalGlobalObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583184</commentid>
    <comment_count>1</comment_count>
      <attachid>381761</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 18:50:11 -0700</bug_when>
    <thetext>Created attachment 381761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583185</commentid>
    <comment_count>2</comment_count>
      <attachid>381762</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 18:51:06 -0700</bug_when>
    <thetext>Created attachment 381762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583188</commentid>
    <comment_count>3</comment_count>
      <attachid>381764</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 19:09:49 -0700</bug_when>
    <thetext>Created attachment 381764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583208</commentid>
    <comment_count>4</comment_count>
      <attachid>381769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 20:15:11 -0700</bug_when>
    <thetext>Created attachment 381769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583210</commentid>
    <comment_count>5</comment_count>
      <attachid>381770</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 20:25:14 -0700</bug_when>
    <thetext>Created attachment 381770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583229</commentid>
    <comment_count>6</comment_count>
      <attachid>381770</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-23 21:56:05 -0700</bug_when>
    <thetext>Comment on attachment 381770
Patch

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

r=me with suggested improvement.

&gt; Source/JavaScriptCore/interpreter/CallFrame.cpp:356
&gt; +JSGlobalObject* CallFrame::lexicalGlobalObjectFromWasmCallee(VM&amp; vm) const
&gt; +{
&gt; +#if ENABLE(WEBASSEMBLY)
&gt; +    return vm.wasmContext.load()-&gt;owner&lt;JSWebAssemblyInstance&gt;()-&gt;globalObject();
&gt; +#else
&gt; +    UNUSED_PARAM(vm);
&gt; +    return nullptr;
&gt; +#endif
&gt; +}

Why not wrap the whole function in #if ENABLE(WEBASSEMBLY) and remove the #else case altogether?  After all, this function can only be called if ENABLE(WEBASSEMBLY).

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:170
&gt; +        JS_EXPORT_PRIVATE JSGlobalObject* lexicalGlobalObjectFromWasmCallee(VM&amp;) const;

Wrap in #if ENABLE(WEBASSEMBLY).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583232</commentid>
    <comment_count>7</comment_count>
      <attachid>381770</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 22:31:23 -0700</bug_when>
    <thetext>Comment on attachment 381770
Patch

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

Thanks

&gt;&gt; Source/JavaScriptCore/interpreter/CallFrame.cpp:356
&gt;&gt; +}
&gt; 
&gt; Why not wrap the whole function in #if ENABLE(WEBASSEMBLY) and remove the #else case altogether?  After all, this function can only be called if ENABLE(WEBASSEMBLY).

I don&apos;t have strong preference here. OK, I&apos;ll just wrap it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583236</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 22:34:27 -0700</bug_when>
    <thetext>Committed r251529: &lt;https://trac.webkit.org/changeset/251529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583237</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-23 22:35:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/56568321&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381761</attachid>
            <date>2019-10-23 18:50:11 -0700</date>
            <delta_ts>2019-10-23 18:51:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203351-20191023185010.patch</filename>
            <type>text/plain</type>
            <size>26503</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YWU0OTc3ZDNjYjYzOTVmODRjZDNmNTk4YTJmMDVjOTdkNzU0YTdiLi5mYzEzYjA0MjA2YzY2NTNj
MjBiZTQ5NTE1MmMzZDIxYzQ1NmMwOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSB3YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRnJhbWU6
OmxleGljYWxHbG9iYWxPYmplY3QoKSBpcyBubyBsb25nZXIgY2FsbGVkIGZyZXF1ZW50bHkuIFdl
IGNhbiBqdXN0IG1ha2UgdGhlIGN1cnJlbnQgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBh
cyBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QsCisgICAgICAgIGFuZCByZW1vdmUgd2Fz
bUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6Omhhc0JyZWFrcG9pbnQpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6bGV4
aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZTo6c2NvcGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1Zh
bHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QgY29uc3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgIChJbnNw
ZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsZXhp
Y2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAq
IGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6bm90aWZ5RGVidWdnZXJPZlVud2luZGluZyk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRl
QXJndW1lbnRzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpSZXRyaWV2
ZUFyZ3VtZW50c0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0
b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUFyZ3VtZW50cyk6
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
bGV4aWNhbEdsb2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisKIDIw
MTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5OWEwOWU1NDg5OTJmNTM5ZGMxZWNiMGYyN2YzZjkxN2EzMzFiMjUyLi4yMTY4MmQ1MzBmMWEx
MjJlODczMDQ3NzYwZGQ0MzA3NmJlNGU1YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBSZW1vdmUgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25WTS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNwb25zaWJsZURvY3VtZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xvbmVBcnJheUJ1ZmZlckltcGwpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5IGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6aXNGcm9tQ3VycmVudFdvcmxkIGNvbnN0KToKKwogMjAxOS0x
MC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggY2RkMTk1ZjBkMWE2YWQxZDE5ZGNj
OGYyMWQ0ZWZiOGI5YzI0OTE2ZS4uZGRhNmQwNTcyZWMzZTBmNTJjMmM2ZDM3YjliM2FmZDIwOTY1
N2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBA
IC01MjUsNyArNTI1LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6aGFzQnJlYWtwb2ludChTb3VyY2VJRCBz
b3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgQnIKICAgICBpZiAoIW1fY3Vy
cmVudENhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2N1cnJlbnRDYWxsRnJh
bWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSk7CiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAg
ICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50cyBhcyAiZmFsc2UiLgogICAgICAg
ICBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25kaXRpb24oZ2xvYmFsT2JqZWN0LCBleGNl
cHRpb24pOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgRGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgp
CiAgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKICAgICBzZXRTdGVwcGluZ01v
ZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV92bS50
b3BDYWxsRnJhbWU7Ci0gICAgcGF1c2VJZk5lZWRlZChtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CisgICAgcGF1c2VJZk5lZWRlZChtX2N1cnJlbnRDYWxsRnJhbWUt
PmxleGljYWxHbG9iYWxPYmplY3QobV92bSkpOwogfQogCiB2b2lkIERlYnVnZ2VyOjpjb250aW51
ZVByb2dyYW0oKQpAQCAtNjc1LDcgKzY3NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJhbWUoVk0mIHZtLCBDYWxsRnJhbWUqCiB7
CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBjYWxsRnJhbWUtPndhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVy
biBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pOwogfQogCiB2b2lkIERlYnVnZ2Vy
Ojp1cGRhdGVDYWxsRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIENhbGxGcmFtZVVwZGF0ZUFjdGlvbiBhY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCAy
Y2U3MmU4YzJhZmFjY2MwOWNmMDUyNGE4MzA1MmUwZDdlMzRiYzcyLi4wMTVkMTllNWVhNGI5NjRh
ZDA1MzNhZWUzOTdmNTM5N2YyNjE2ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBEZWJ1Z2dlckNhbGxGcmFtZTo6ZGVwcmVjYXRlZFZNRW50cnlH
bG9iYWxPYmplY3QoKSBjb25zdAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBWTSYgdm0gPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT5kZXByZWNhdGVkVk0o
KTsKLSAgICByZXR1cm4gdm0uZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QobV92YWxpZE1h
Y2hpbmVGcmFtZS0+d2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpOworICAgIHJldHVy
biB2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVjdChtX3ZhbGlkTWFjaGluZUZyYW1lLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiB9CiAKIFNvdXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1l
Ojpzb3VyY2VJRCgpIGNvbnN0CkBAIC0xNzEsNyArMTcxLDcgQEAgRGVidWdnZXJTY29wZSogRGVi
dWdnZXJDYWxsRnJhbWU6OnNjb3BlKCkKICAgICAgICAgZWxzZSBpZiAoSlNDYWxsZWUqIGNhbGxl
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNDYWxsZWUqPih2bSwgbV92YWxpZE1hY2hpbmVGcmFtZS0+anND
YWxsZWUoKSkpCiAgICAgICAgICAgICBzY29wZSA9IGNhbGxlZS0+c2NvcGUoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpOworICAgICAgICAgICAgc2Nv
cGUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICAgICAgbV9zY29wZS5zZXQodm0sIERlYnVnZ2Vy
U2NvcGU6OmNyZWF0ZSh2bSwgc2NvcGUpKTsKICAgICB9CkBAIC0xOTMsNyArMTkzLDcgQEAgRGVi
dWdnZXJDYWxsRnJhbWU6OlR5cGUgRGVidWdnZXJDYWxsRnJhbWU6OnR5cGUoKSBjb25zdAogICAg
IHJldHVybiBQcm9ncmFtVHlwZTsKIH0KIAotSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhp
c1ZhbHVlKCkgY29uc3QKK0pTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYg
dm0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CkBAIC0yMTUsNyArMjE1LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVl
KCkgY29uc3QKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IE5vdFN0cmljdE1vZGU7CiAgICAgaWYg
KGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBlY21hTW9k
ZSA9IFN0cmljdE1vZGU7Ci0gICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hp
bmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBlY21hTW9kZSk7CisgICAgcmV0dXJuIHRo
aXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2
bSksIGVjbWFNb2RlKTsKIH0KIAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNvZGUgaW4g
dGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCkBAIC0yNjUsNyArMjY1LDcgQEAgSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIEpTT2IKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lv
bihKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGlnbm9yZWRQcmV2aW91c1Nj
b3BlLCBzY29wZUV4dGVuc2lvbk9iamVjdCkpOwogICAgIH0KIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gdGhpcy0+dGhpc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSB0aGlzLT50
aGlzVmFsdWUodm0pOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1
dGUoZXZhbCwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIHNjb3BlKCktPmpzU2NvcGUoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIGV4Y2Vw
dGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCmluZGV4IDEwZmUzMTgwM2E1MGRmYjFj
Yzg3YmViNzYxMWQxNzIyNzA5OGYyYzIuLmFjNmVjZDM0NTE4NGUzZTQxZGM4YTgxODU3YzY2MDcy
YTkyZTFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1l
IDogcHVibGljIFJlZkNvdW50ZWQ8RGVidWdnZXJDYWxsRnJhbWU+IHsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBEZWJ1Z2dlclNjb3BlKiBzY29wZSgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBUeXBlIHR5
cGUoKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNv
bnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhpc1ZhbHVlKFZNJikgY29uc3Q7
CiAgICAgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmLCBK
U09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mKTsKIAog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV92YWxpZE1hY2hpbmVGcmFtZSB8
fCBpc1RhaWxEZWxldGVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCAwNDJkNzliMDAwMzIz
OTNmN2M1Yzg4ZGU0MzUyZjAzMGMzYjA0YTFmLi41ZmVmZTk4OTVjMGU0YTM0ZWZkNzBlOTM5YmFi
NDA3ZDFhMjY2YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0yMDYsOSArMjA2LDkgQEAgSlNW
YWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW4oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkodGhpcy0+Z2xvYmFs
T2JqZWN0KHZtKSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIp
LCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3Qo
SlNHbG9iYWxPYmplY3QqKSBjb25zdAorSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnRo
aXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAgICByZXR1
cm4gaW1wbCgpLnRoaXNWYWx1ZSgpOworICAgIHJldHVybiBpbXBsKCkudGhpc1ZhbHVlKGdsb2Jh
bE9iamVjdC0+dm0oKSk7CiB9CiAKIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjppc1Rh
aWxEZWxldGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAppbmRleCA1MzM0
ZDIxMDMwMWE2OTQ2ZGJlN2VhM2MyMDE4MTczYzkzNWM0NzE5Li5hYzhkMzY4ZmQ4MDMzMWUzYTJk
MTcxOTg5NDZhZDJiYmUyMTJlZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFz
cyBKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8SmF2YVNjcmlwdENhbGxG
cmFtZT4gewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGRlcHJlY2F0ZWRWTUVudHJ5R2xvYmFs
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZN
RW50cnlHbG9iYWxPYmplY3QoKTsgfQogICAgIGJvb2wgaXNUYWlsRGVsZXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPmlzVGFpbERlbGV0ZWQoKTsgfQogCi0gICAgSlND
OjpKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOyB9CisgICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0
IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSh2bSk7IH0KICAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQs
IEpTQzo6SlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4m
IGV4Y2VwdGlvbikgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4dGVuc2lvbiwgZXhjZXB0aW9uKTsgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAppbmRleCA2NzJiMjY4YTUxZDM4ZDczNTNhZTEwY2E1NzgzOWE1ZDAyMzQ5MTQ5Li43
ZDM0MDRkNDM3NGMzMzViNzc5YTFlYmVhYTQ2N2U0ODRiMjBjZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcApAQCAtMTkwLDE4ICsxOTAs
NiBAQCBSZWdpc3RlciogQ2FsbEZyYW1lOjp0b3BPZkZyYW1lSW50ZXJuYWwoKQogICAgIHJldHVy
biByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCk7CiB9CiAKLUpT
R2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QoVk0m
IHZtKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAoIWNhbGxlZSgpLmlzV2Fz
bSgpKQotICAgICAgICByZXR1cm4gbGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIHJldHVybiB2
bS53YXNtQ29udGV4dC5sb2FkKCktPm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+Z2xv
YmFsT2JqZWN0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGxl
eGljYWxHbG9iYWxPYmplY3QoKTsKLSNlbmRpZgotfQotCiBib29sIENhbGxGcmFtZTo6aXNBbnlX
YXNtQ2FsbGVlKCkKIHsKICAgICBDYWxsZWVCaXRzIGNhbGxlZSA9IHRoaXMtPmNhbGxlZSgpOwpA
QCAtMzU3LDYgKzM0NSwxMSBAQCB2b2lkIENhbGxGcmFtZTo6Y29udmVydFRvU3RhY2tPdmVyZmxv
d0ZyYW1lKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2tUb0tlZXBBbAogICAgIHNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKDApOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1l
OjpsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUoVk0mIHZtKSBjb25zdAoreworICAg
IHJldHVybiB2bS53YXNtQ29udGV4dC5sb2FkKCktPm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZT4oKS0+Z2xvYmFsT2JqZWN0KCk7Cit9CisKIGJvb2wgaXNGcm9tSlNDb2RlKHZvaWQqIHJldHVy
bkFkZHJlc3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJldHVybkFkZHJlc3MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDEwZWRmYjBlYjVl
OTUwMzhiMGE2NGJjZWY0MmYyYzVlMjIxYzJiYjYuLmQ4ODdiNDI2NDYyNmE1ZjUyMjVlZmNmNWJh
NGFmZWUzMzc3N2MzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKQEAgLTEyNSwxMyArMTI1LDExIEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAg
ICAgICAgIHJldHVybiB0aGlzW3Njb3BlUmVnaXN0ZXJPZmZzZXRdLlJlZ2lzdGVyOjpzY29wZSgp
OwogICAgICAgICB9CiAKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIHdhc21Bd2FyZUxleGljYWxH
bG9iYWxPYmplY3QoVk0mKTsKLQogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzQW55
V2FzbUNhbGxlZSgpOwogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggdGhlIGN1
cnJlbnRseSBleGVjdXRpbmcgY29kZSB3YXMgZGVmaW5lZC4KICAgICAgICAgLy8gRGlmZmVycyBm
cm9tIFZNOjpkZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVjdCgpIGR1cmluZyBmdW5jdGlvbiBj
YWxscyBhY3Jvc3Mgd2ViIGJyb3dzZXIgZnJhbWVzLgotICAgICAgICBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0OworICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdChWTSYpIGNvbnN0OwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBmdW5jdGlvbgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzMjcyCkBAIC0xNjksNiArMTY3LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICBDYWxsU2l0ZUluZGV4IHVuc2FmZUNhbGxTaXRlSW5kZXgoKSBjb25zdDsKICAgICBwcml2
YXRlOgogICAgICAgICB1bnNpZ25lZCBjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0RnJvbVdhc21DYWxsZWUoVk0mKSBjb25zdDsKICAgICBwdWJsaWM6CiAKICAgICAg
ICAgLy8gVGhpcyB3aWxsIHRyeSB0byBnZXQgeW91IHRoZSBieXRlY29kZSBvZmZzZXQsIGJ1dCB5
b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZmODE1OTczNjAxZDQ1MjE3ZjA5NjdiNWFk
MDU4Y2JkZGI5NGJiNWMuLmU4NjczYmYwYTRhOGVhN2VmMGJiNDk0MjcyNTRhZWM3NzAzY2YwOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3Igewog
CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZVbndpbmRpbmcoVk0m
IHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gY2FsbEZyYW1lLT53YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KHZtKTsKICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigp
KSB7CiAgICAgICAgIFN1c3BlbmRFeGNlcHRpb25TY29wZSBzY29wZSgmdm0pOwpAQCAtMTIxNiw3
ICsxMjE2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tUeXBlIGRlYnVnSG8KIHsKICAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJh
bWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLT5kZWJ1Z2dlcigpOwogICAgIGlmICghZGVidWdn
ZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBjMzE3MmY3NTcxZTI4NDdkNGMxNGFiZTRi
OTFjMTkwMGY1ZmMxOTRkLi5hNTgzYjQ4Y2IyMjY1Y2U1MjIzMWMwNmQyYjI1OGNhMjc5ZmJlMTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcApAQCAtMzY5LDEzICszNjksMTMgQEAgaW50cHRyX3QgU3RhY2tWaXNpdG9yOjpGcmFt
ZTo6c291cmNlSUQoKQogICAgIHJldHVybiBub1NvdXJjZUlEOwogfQogCi1DbG9uZWRBcmd1bWVu
dHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cygpCitDbG9uZWRBcmd1bWVu
dHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyhWTSYgdm0pCiB7CiAgICAg
QVNTRVJUKG1fY2FsbEZyYW1lKTsKICAgICBDYWxsRnJhbWUqIHBoeXNpY2FsRnJhbWUgPSBtX2Nh
bGxGcmFtZTsKICAgICAvLyBGSVhNRTogUmV2aXNpdCBKU0dsb2JhbE9iamVjdC4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHBoeXNpY2FsRnJhbWUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gcGh5c2ljYWxGcmFtZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CiAgICAgQ2xvbmVkQXJndW1lbnRzKiBhcmd1bWVudHM7
CiAgICAgQXJndW1lbnRzTW9kZSBtb2RlOwogICAgIGlmIChPcHRpb25zOjp1c2VGdW5jdGlvbkRv
dEFyZ3VtZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5oCmluZGV4IGQzNTc2MWZlMGM0MjM0YjM5Y2Y1MDdiMWI2NDU2NTU4NGE4NDli
ODYuLjBjODFkMWIzMjM2OTg2NzkyNzQyN2M2ZDBmNzRmMTQ5MzIzZDc3NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKQEAgLTk3LDcg
Kzk3LDcgQEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsKICAgICAgICAgT3B0aW9uYWw8UmVnaXN0ZXJB
dE9mZnNldExpc3Q+IGNhbGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKTsKICNlbmRpZgog
Ci0gICAgICAgIENsb25lZEFyZ3VtZW50cyogY3JlYXRlQXJndW1lbnRzKCk7CisgICAgICAgIENs
b25lZEFyZ3VtZW50cyogY3JlYXRlQXJndW1lbnRzKFZNJik7CiAgICAgICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWU7IH0KICAgICAgICAgCiAgICAg
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIEluZGVudGVyID0gSW5kZW50ZXIoKSkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA1Nzk4ZDMwYjhiNTg2YjczNGI4ZmQ4NjA0ODg4NGZkZGU3NmIwOTRkLi40YmQ4ZmFlYTkyNzdl
YjFkZjgyNWJmYmM1Mjk5NmZlN2EwNThjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE5NDMsNyArMTk0Myw3IEBAIGV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZN
KiB2bSwgUHJvdG9DYWxsCiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbnVs
bHB0cjsKICAgICBpZiAoY2FsbEZyYW1lKQotICAgICAgICBnbG9iYWxPYmplY3QgPSBjYWxsRnJh
bWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gY2FsbEZy
YW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCp2bSk7CiAgICAgZWxzZQogICAgICAgICBnbG9iYWxP
YmplY3QgPSBwcm90b0ZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCp2bSk7CiAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA0Yjg3MWUyOTkyODI3YzU2
MzNkMzczNDI5NGE3MDQ5ZTNjYTRmMmQuLjQwYTczNTQ1NDRkYWJkODYzOGE5MWVjNzllMTljZjRh
YTIyOTQ0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCkBAIC0yNzEsOCArMjcxLDkgQEAgQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEo
SlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAKIGNsYXNzIFJldHJpZXZlQXJndW1l
bnRzRnVuY3RvciB7CiBwdWJsaWM6Ci0gICAgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yKEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uT2JqKQotICAgICAgICA6IG1fdGFyZ2V0Q2FsbGVlKGZ1bmN0aW9uT2Jq
KQorICAgIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvcihWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uT2JqKQorICAgICAgICA6IG1fdm0odm0pCisgICAgICAgICwgbV90YXJnZXRDYWxsZWUoZnVu
Y3Rpb25PYmopCiAgICAgICAgICwgbV9yZXN1bHQoanNOdWxsKCkpCiAgICAgewogICAgIH0KQEAg
LTI4OCwxOCArMjg5LDE5IEBAIGNsYXNzIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciB7CiAgICAg
ICAgIGlmIChjYWxsZWUgIT0gbV90YXJnZXRDYWxsZWUpCiAgICAgICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBtX3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRv
ci0+Y3JlYXRlQXJndW1lbnRzKCkpOworICAgICAgICBtX3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRv
ci0+Y3JlYXRlQXJndW1lbnRzKG1fdm0pKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
RG9uZTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgVk0mIG1fdm07CiAgICAgSlNPYmplY3QqIG1f
dGFyZ2V0Q2FsbGVlOwogICAgIG11dGFibGUgSlNWYWx1ZSBtX3Jlc3VsdDsKIH07CiAKIHN0YXRp
YyBKU1ZhbHVlIHJldHJpZXZlQXJndW1lbnRzKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQogewotICAgIFJldHJpZXZlQXJndW1lbnRzRnVuY3Rv
ciBmdW5jdG9yKGZ1bmN0aW9uT2JqKTsKKyAgICBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IgZnVu
Y3Rvcih2bSwgZnVuY3Rpb25PYmopOwogICAgIGlmIChjYWxsRnJhbWUpCiAgICAgICAgIGNhbGxG
cmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYTlhM2VmZTRiZjc5
NmNjYTJiNjkwNzE1ZDQyYjM5ZDMwZjI1NDQ2Zi4uMDkwZWQ3NTljOTk4MDIyYWQ2ZTc0OWUwNWRm
YTY2NDY4YTRhYjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApA
QCAtMTQwLDggKzE0MCwxMyBAQCBpbmxpbmUgSlNTY29wZSogUmVnaXN0ZXI6OnNjb3BlKCkgY29u
c3QKICAgICByZXR1cm4ganNDYXN0PEpTU2NvcGUqPih1bmJveGVkQ2VsbCgpKTsKIH0KIAotaW5s
aW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QoKSBjb25z
dAoraW5saW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3Qo
Vk0mIHZtKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorICAgIGlmIChjYWxsZWUoKS5pc1dhc20oKSkKKyAgICAgICAgcmV0dXJuIGxleGlj
YWxHbG9iYWxPYmplY3RGcm9tV2FzbUNhbGxlZSh2bSk7CisjZW5kaWYKICAgICByZXR1cm4ganND
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cElubGluZXMuaAppbmRleCA4NDM2ZGVjMDkxYmEyZjI2NTI0N2U3MjdhMWFl
ZmE0Mjc2YjE3MjQ5Li5mN2Q5MTkwNTg5ODRkYzAyYTc0ZjRhZDI4MjcxNWJjZDJlNTY3YTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCkBAIC0x
NDMsNyArMTQzLDcgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShWTSYg
dm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmYKICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIC8vIEZJWE1FOiBSZXZp
c2l0IEpTR2xvYmFsT2JqZWN0LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB2bS50b3BDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSk7CiAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBlcnJvclRvVGhyb3coZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGlmICghaGFzSGFyZEVy
cm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkKICAgICAgICAgICAgIHJlc2V0KCk7CkBAIC0y
NzMsNyArMjczLDcgQEAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5s
aW5lKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZAogICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgLy8gRklYTUU6IFJldmlz
aXQgSlNHbG9iYWxPYmplY3QuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDMyMDQKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KHZtKTsKICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIGVycm9yVG9UaHJvdyhnbG9iYWxPYmplY3QpKTsKICAgICAgICAgaWYgKCFoYXNIYXJkRXJy
b3IobV9jb25zdHJ1Y3Rpb25FcnJvckNvZGUpKQogICAgICAgICAgICAgcmVzZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA4Njc0NjI3MDY3Yzgz
NDE5NTczMDM0MTlkMmI5ZjMzYzBiZGRmNzNlLi45OGE3ODc0ZjZkMWEyNjJkNDYzNWVkMzU0ODc4
ODk0MjljNDVlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
YXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMu
Y3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdh
c21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA2
CiAgICAgICAgICAgICAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5kZXByZWNhdGVkVk0oKTsKICAg
ICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwotICAgICAgICAgICAgICAgIHJldHVybiB2LnRvSW50MzIoY2FsbEZyYW1lLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIHJldHVybiB2LnRvSW50MzIoY2FsbEZyYW1l
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAg
ICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVtYmVyKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpKTsKQEAgLTM0MCw3ICszNDAsNyBAQCBFeHBl
Y3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1
cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyMDYKICAgICAgICAgICAgICAgICBWTSYgdm0gPSBj
YWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0Pih2LnRvTnVtYmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2LnRvTnVt
YmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpKTsKICAgICAgICAgICAgIH07
CiAKICAgICAgICAgICAgIGF1dG8gbm90QU51bWJlciA9IGppdC5icmFuY2hJZk5vdE51bWJlcihH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKQEAgLTM3OSw3
ICszNzksNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFn
PiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyMDYKICAgICAgICAgICAg
ICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgICAgICAgICAgICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHYudG9OdW1iZXIoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OworICAgICAgICAgICAgICAgIHJldHVybiB2LnRvTnVtYmVyKGNhbGxGcmFtZS0+bGV4aWNhbEds
b2JhbE9iamVjdCh2bSkpOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgYXV0byBub3RB
TnVtYmVyID0gaml0LmJyYW5jaElmTm90TnVtYmVyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBE
b05vdEhhdmVUYWdSZWdpc3RlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0u
Y3BwCmluZGV4IDA5Yjc4NGY5ZWQzNTZhZDZiY2JhODRmNWU2M2JmOGE2ZjFlYTI2N2QuLmM4N2Q1
NWQzODc0MzYwMjBiY2MzOWViMDZjMGMxOGQwZGUxOTliMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Db21tb25WTS5jcHAKQEAgLTc0LDkgKzc0LDEwIEBAIEpTQzo6Vk0mIGNvbW1vblZN
U2xvdygpCiAKIEZyYW1lKiBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKQogewotICAgIGlmIChh
dXRvKiB0b3BDYWxsRnJhbWUgPSBjb21tb25WTSgpLnRvcENhbGxGcmFtZSkgewotICAgICAgICBp
ZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih0
b3BDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvKiB3aW5kb3cgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPihjb21tb25WTSgp
LCBnbG9iYWxPYmplY3QpKSB7CisgICAgVk0mIHZtID0gY29tbW9uVk0oKTsKKyAgICBpZiAoYXV0
byogdG9wQ2FsbEZyYW1lID0gdm0udG9wQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChhdXRvKiBn
bG9iYWxPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRvcENhbGxGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogd2lu
ZG93ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4odm0sIGdsb2JhbE9iamVjdCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZnJhbWUgPSB3aW5kb3ctPndyYXBwZWQoKS5m
cmFtZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRl
eCA0MDZiYWIzMGJkNjRmODIxMzk4MGM1MmI1YjE0ZjQ2N2NhYzcwZGQyLi5kYzM4N2Q1NDE1NmRk
Y2MyMzBjYmVmMzM5ZjMwMTBlMzM0ZWEzOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCBEb2N1bWVudCog
cmVzcG9uc2libGVEb2N1bWVudChWTSYgdm0sIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogICAgIGF1
dG8qIGNhbGxlckZyYW1lID0gZnVuY3Rvci5jYWxsZXJGcmFtZSgpOwogICAgIGlmICghY2FsbGVy
RnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhc0pTRE9NV2luZG93
KGNhbGxlckZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53cmFwcGVkKCkuZG9jdW1lbnQo
KTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhjYWxsZXJGcmFtZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCh2bSkpLT53cmFwcGVkKCkuZG9jdW1lbnQoKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jh
c2U6OmZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRv
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9u
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCmlu
ZGV4IDY3NWYyMTc0ZjlhN2NiY2MyZDI2MDllNjg4ZjRkOTZiOWJkMTJlNzYuLjk4NWIzZGIwZDNm
MTYxMDAwZjFmYWQ5YjQzMjk3OGU1NDYyM2FkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcApAQCAtNDEsMTEgKzQxLDEyIEBAIGVudW0gY2xh
c3MgQ2xvbmVNb2RlIHsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNsb25lQXJyYXlCdWZmZXJJ
bXBsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ2xvbmVNb2RlIG1vZGUpCiB7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC0+dm0oKTsKKwogICAgIEFTU0VSVChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQo
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwotICAgIEFTU0VSVChjYWxsRnJhbWUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoY2Fs
bEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
IAotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byogYnVm
ZmVyID0gdG9VbnNoYXJlZEFycmF5QnVmZmVyKHZtLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5NTRhYTI5N2Nj
MWM1NzQ4OGIzYTllNjZlNTEwYmM4MTY0MjAwZjQyLi40MDBhNmQ2MDJkMDZiOWZiNTBhZDFkYWEw
ODIxZDA0NTlkZWUyM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2MTgsOCArMjYx
OCw5IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZURldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBk
YXRlcygpCiBib29sIERvY3VtZW50OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSBjb25zdAogewogICAgIC8vIEJ5cGFzcyB0aGlzIHBvbGljeSB3aGVuIHRoZSB3
b3JsZCBpcyBrbm93biwgYW5kIGl0IG5vdCB0aGUgbm9ybWFsIHdvcmxkLgotICAgIGF1dG8mIGNh
bGxGcmFtZSA9ICpjb21tb25WTSgpLnRvcENhbGxGcmFtZTsKLSAgICByZXR1cm4gJmNhbGxGcmFt
ZSAhPSBKU0M6OkNhbGxGcmFtZTo6bm9DYWxsZXIoKSAmJiAhY3VycmVudFdvcmxkKCpjYWxsRnJh
bWUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS5pc05vcm1hbCgpOworICAgIFZNJiB2bSA9IGNvbW1v
blZNKCk7CisgICAgYXV0byYgY2FsbEZyYW1lID0gKnZtLnRvcENhbGxGcmFtZTsKKyAgICByZXR1
cm4gJmNhbGxGcmFtZSAhPSBKU0M6OkNhbGxGcmFtZTo6bm9DYWxsZXIoKSAmJiAhY3VycmVudFdv
cmxkKCpjYWxsRnJhbWUubGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpLmlzTm9ybWFsKCk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGU0ZTdhYzlmZDljMjNmYjU5ZTdj
YjE1MzA4OTIzMmE2ZmM5ZjUzYzUuLmI5ZDczNjZlMDNmODNjMTkwOTJkOWUwNjhjMmE2YzU3MTFl
MDQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIyMDYsNyArMjIw
Niw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKEpTQzo6SlNWYWx1ZSBjb2Rl
KQogewogICAgIEpTQzo6Vk0mIHZtID0gY29udGV4dERvY3VtZW50KCktPnZtKCk7CiAgICAgSlND
OjpDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZtLnRvcENhbGxGcmFtZTsKLSAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPmxl
eGljYWxHbG9iYWxPYmplY3Qodm0pOwogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7
CiAKICAgICBpZiAoIWNvZGUgfHwgY29kZS5pc051bGwoKSB8fCBjb2RlLmlzVW5kZWZpbmVkKCkp
IHsKQEAgLTM0ODAsNyArMzQ4MCw4IEBAIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IEludGVy
bmFsczo6ZGVzZXJpYWxpemVCdWZmZXIoQXJyYXlCdWZmZXImIGJ1ZmZlcikgY29uCiAKIGJvb2wg
SW50ZXJuYWxzOjppc0Zyb21DdXJyZW50V29ybGQoSlNDOjpKU1ZhbHVlIHZhbHVlKSBjb25zdAog
ewotICAgIHJldHVybiBpc1dvcmxkQ29tcGF0aWJsZSgqY29udGV4dERvY3VtZW50KCktPnZtKCku
dG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHZhbHVlKTsKKyAgICBWTSYgdm0g
PSBjb250ZXh0RG9jdW1lbnQoKS0+dm0oKTsKKyAgICByZXR1cm4gaXNXb3JsZENvbXBhdGlibGUo
KnZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIHZhbHVlKTsKIH0KIAog
dm9pZCBJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sIGVuYWJsZWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381762</attachid>
            <date>2019-10-23 18:51:06 -0700</date>
            <delta_ts>2019-10-23 19:09:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203351-20191023185105.patch</filename>
            <type>text/plain</type>
            <size>26470</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YWU0OTc3ZDNjYjYzOTVmODRjZDNmNTk4YTJmMDVjOTdkNzU0YTdiLi5mYzEzYjA0MjA2YzY2NTNj
MjBiZTQ5NTE1MmMzZDIxYzQ1NmMwOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSB3YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRnJhbWU6
OmxleGljYWxHbG9iYWxPYmplY3QoKSBpcyBubyBsb25nZXIgY2FsbGVkIGZyZXF1ZW50bHkuIFdl
IGNhbiBqdXN0IG1ha2UgdGhlIGN1cnJlbnQgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBh
cyBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QsCisgICAgICAgIGFuZCByZW1vdmUgd2Fz
bUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6Omhhc0JyZWFrcG9pbnQpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6bGV4
aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZTo6c2NvcGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1Zh
bHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QgY29uc3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgIChJbnNw
ZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsZXhp
Y2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAq
IGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6bm90aWZ5RGVidWdnZXJPZlVud2luZGluZyk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRl
QXJndW1lbnRzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpSZXRyaWV2
ZUFyZ3VtZW50c0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0
b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUFyZ3VtZW50cyk6
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
bGV4aWNhbEdsb2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisKIDIw
MTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5OWEwOWU1NDg5OTJmNTM5ZGMxZWNiMGYyN2YzZjkxN2EzMzFiMjUyLi45ZjJmZWI5ZTYyYTEy
MjVhMWE1ZDU0MDI1NzM3OWYxODIxMjRhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBSZW1vdmUgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25W
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNwb25zaWJsZURvY3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlckltcGwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBh
cnNlck1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNGcm9tQ3VycmVu
dFdvcmxkIGNvbnN0KToKKwogMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5k
ZXggY2RkMTk1ZjBkMWE2YWQxZDE5ZGNjOGYyMWQ0ZWZiOGI5YzI0OTE2ZS4uZGRhNmQwNTcyZWMz
ZTBmNTJjMmM2ZDM3YjliM2FmZDIwOTY1N2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6
aGFzQnJlYWtwb2ludChTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3Np
dGlvbiwgQnIKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSk7CiAg
ICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNv
dW50cyBhcyAiZmFsc2UiLgogICAgICAgICBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25k
aXRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQg
RGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgpCiAgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0g
dHJ1ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CiAgICAgbV9j
dXJyZW50Q2FsbEZyYW1lID0gbV92bS50b3BDYWxsRnJhbWU7Ci0gICAgcGF1c2VJZk5lZWRlZCht
X2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgcGF1c2VJZk5l
ZWRlZChtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSkpOwogfQog
CiB2b2lkIERlYnVnZ2VyOjpjb250aW51ZVByb2dyYW0oKQpAQCAtNjc1LDcgKzY3NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJh
bWUoVk0mIHZtLCBDYWxsRnJhbWUqCiB7CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWxsRnJhbWUtPndhc21Bd2FyZUxleGljYWxHbG9i
YWxPYmplY3Qodm0pOworICAgIHJldHVybiBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
dm0pOwogfQogCiB2b2lkIERlYnVnZ2VyOjp1cGRhdGVDYWxsRnJhbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxGcmFtZVVwZGF0ZUFjdGlv
biBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCAyY2U3MmU4YzJhZmFjY2MwOWNmMDUyNGE4MzA1MmUwZDdl
MzRiYzcyLi4wMTVkMTllNWVhNGI5NjRhZDA1MzNhZWUzOTdmNTM5N2YyNjE2ZjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdAogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBWTSYgdm0gPSBtX3ZhbGlkTWFj
aGluZUZyYW1lLT5kZXByZWNhdGVkVk0oKTsKLSAgICByZXR1cm4gdm0uZGVwcmVjYXRlZFZNRW50
cnlHbG9iYWxPYmplY3QobV92YWxpZE1hY2hpbmVGcmFtZS0+d2FzbUF3YXJlTGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSkpOworICAgIHJldHVybiB2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVj
dChtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiB9CiAKIFNv
dXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CkBAIC0xNzEsNyArMTcx
LDcgQEAgRGVidWdnZXJTY29wZSogRGVidWdnZXJDYWxsRnJhbWU6OnNjb3BlKCkKICAgICAgICAg
ZWxzZSBpZiAoSlNDYWxsZWUqIGNhbGxlZSA9IGpzRHluYW1pY0Nhc3Q8SlNDYWxsZWUqPih2bSwg
bV92YWxpZE1hY2hpbmVGcmFtZS0+anNDYWxsZWUoKSkpCiAgICAgICAgICAgICBzY29wZSA9IGNh
bGxlZS0+c2NvcGUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlk
TWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbExleGljYWxFbnZpcm9u
bWVudCgpOworICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICAgICAg
bV9zY29wZS5zZXQodm0sIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZSh2bSwgc2NvcGUpKTsKICAgICB9
CkBAIC0xOTMsNyArMTkzLDcgQEAgRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgRGVidWdnZXJDYWxs
RnJhbWU6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBQcm9ncmFtVHlwZTsKIH0KIAotSlNWYWx1
ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKK0pTVmFsdWUgRGVidWdnZXJD
YWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQo
KSk7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkBAIC0yMTUsNyArMjE1LDcgQEAgSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IE5vdFN0cmljdE1vZGU7CiAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKQogICAgICAgICBlY21hTW9kZSA9IFN0cmljdE1vZGU7Ci0gICAgcmV0dXJuIHRoaXNW
YWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBl
Y21hTW9kZSk7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIAogLy8gRXZhbHVhdGUg
c29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCkBAIC0yNjUs
NyArMjY1LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lvbihKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIGlnbm9yZWRQcmV2aW91c1Njb3BlLCBzY29wZUV4dGVuc2lvbk9iamVjdCkpOwogICAg
IH0KIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdGhpcy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSB0aGlzLT50aGlzVmFsdWUodm0pOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IHNjb3BlKCktPmpzU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
CmluZGV4IDEwZmUzMTgwM2E1MGRmYjFjYzg3YmViNzYxMWQxNzIyNzA5OGYyYzIuLmFjNmVjZDM0
NTE4NGUzZTQxZGM4YTgxODU3YzY2MDcyYTkyZTFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC02MCw3ICs2MCw3IEBA
IGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RGVidWdnZXJDYWxs
RnJhbWU+IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlclNjb3BlKiBzY29wZSgpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgdGhpc1ZhbHVlKFZNJikgY29uc3Q7CiAgICAgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihjb25zdCBTdHJpbmcmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QsIE5h
a2VkUHRyPEV4Y2VwdGlvbj4mKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV92YWxpZE1hY2hpbmVGcmFtZSB8fCBpc1RhaWxEZWxldGVkKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcAppbmRleCAwNDJkNzliMDAwMzIzOTNmN2M1Yzg4ZGU0MzUyZjAzMGMzYjA0YTFmLi41ZmVm
ZTk4OTVjMGU0YTM0ZWZkNzBlOTM5YmFiNDA3ZDFhMjY2YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CkBAIC0yMDYsOSArMjA2LDkgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
Q2hhaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkodGhpcy0+Z2xvYmFsT2JqZWN0KHZtKSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0phdmFTY3Jp
cHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBjb25zdAorSlNWYWx1ZSBK
U0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1wbCgpLnRoaXNWYWx1ZSgpOworICAgIHJldHVy
biBpbXBsKCkudGhpc1ZhbHVlKGdsb2JhbE9iamVjdC0+dm0oKSk7CiB9CiAKIEpTVmFsdWUgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lOjppc1RhaWxEZWxldGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCA1MzM0ZDIxMDMwMWE2OTQ2ZGJlN2VhM2MyMDE4MTczYzkzNWM0
NzE5Li5hYzhkMzY4ZmQ4MDMzMWUzYTJkMTcxOTg5NDZhZDJiYmUyMTJlZWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVibGljIFJl
ZkNvdW50ZWQ8SmF2YVNjcmlwdENhbGxGcmFtZT4gewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGRlcHJlY2F0ZWRWTUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
ckNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKTsgfQogICAgIGJvb2wg
aXNUYWlsRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPmlzVGFp
bERlbGV0ZWQoKTsgfQogCi0gICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOyB9CisgICAgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRo
aXNWYWx1ZSh2bSk7IH0KICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIGV4Y2VwdGlvbikgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4
dGVuc2lvbiwgZXhjZXB0aW9uKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCA2NzJiMjY4YTUxZDM4ZDczNTNh
ZTEwY2E1NzgzOWE1ZDAyMzQ5MTQ5Li43ZDM0MDRkNDM3NGMzMzViNzc5YTFlYmVhYTQ2N2U0ODRi
MjBjZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcApAQCAtMTkwLDE4ICsxOTAsNiBAQCBSZWdpc3RlciogQ2FsbEZyYW1lOjp0b3BPZkZy
YW1lSW50ZXJuYWwoKQogICAgIHJldHVybiByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+c3RhY2tQ
b2ludGVyT2Zmc2V0KCk7CiB9CiAKLUpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Ondhc21Bd2Fy
ZUxleGljYWxHbG9iYWxPYmplY3QoVk0mIHZtKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
LSAgICBpZiAoIWNhbGxlZSgpLmlzV2FzbSgpKQotICAgICAgICByZXR1cm4gbGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwotICAgIHJldHVybiB2bS53YXNtQ29udGV4dC5sb2FkKCktPm93bmVyPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4oKS0+Z2xvYmFsT2JqZWN0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh2bSk7Ci0gICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsKLSNlbmRpZgotfQot
CiBib29sIENhbGxGcmFtZTo6aXNBbnlXYXNtQ2FsbGVlKCkKIHsKICAgICBDYWxsZWVCaXRzIGNh
bGxlZSA9IHRoaXMtPmNhbGxlZSgpOwpAQCAtMzU3LDYgKzM0NSwxMSBAQCB2b2lkIENhbGxGcmFt
ZTo6Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2tUb0tlZXBBbAogICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDApOwogfQogCitK
U0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjpsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxs
ZWUoVk0mIHZtKSBjb25zdAoreworICAgIHJldHVybiB2bS53YXNtQ29udGV4dC5sb2FkKCktPm93
bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+Z2xvYmFsT2JqZWN0KCk7Cit9CisKIGJvb2wg
aXNGcm9tSlNDb2RlKHZvaWQqIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJl
dHVybkFkZHJlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCmluZGV4IDEwZWRmYjBlYjVlOTUwMzhiMGE2NGJjZWY0MmYyYzVlMjIxYzJiYjYuLmQ4
ODdiNDI2NDYyNmE1ZjUyMjVlZmNmNWJhNGFmZWUzMzc3N2MzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTEyNSwxMyArMTI1LDExIEBA
IG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzW3Njb3BlUmVnaXN0ZXJP
ZmZzZXRdLlJlZ2lzdGVyOjpzY29wZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIHdhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QoVk0mKTsKLQogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzQW55V2FzbUNhbGxlZSgpOwogCiAgICAgICAgIC8vIEdsb2Jh
bCBvYmplY3QgaW4gd2hpY2ggdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSB3YXMgZGVmaW5l
ZC4KICAgICAgICAgLy8gRGlmZmVycyBmcm9tIFZNOjpkZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9i
amVjdCgpIGR1cmluZyBmdW5jdGlvbiBjYWxscyBhY3Jvc3Mgd2ViIGJyb3dzZXIgZnJhbWVzLgot
ICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0OworICAg
ICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdChWTSYpIGNvbnN0OwogCiAg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlvbgogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjcyCkBAIC0xNjksNiArMTY3LDcg
QEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBDYWxsU2l0ZUluZGV4IHVuc2FmZUNhbGxTaXRl
SW5kZXgoKSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBjYWxsU2l0ZUJp
dHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUoVk0mKSBjb25z
dDsKICAgICBwdWJsaWM6CiAKICAgICAgICAgLy8gVGhpcyB3aWxsIHRyeSB0byBnZXQgeW91IHRo
ZSBieXRlY29kZSBvZmZzZXQsIGJ1dCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZm
ODE1OTczNjAxZDQ1MjE3ZjA5NjdiNWFkMDU4Y2JkZGI5NGJiNWMuLmU4NjczYmYwYTRhOGVhN2Vm
MGJiNDk0MjcyNTRhZWM3NzAzY2YwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIGNsYXNzIEdl
dENhdGNoSGFuZGxlckZ1bmN0b3IgewogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIG5vdGlm
eURlYnVnZ2VyT2ZVbndpbmRpbmcoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT53YXNtQXdhcmVMZXhp
Y2FsR2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKICAgICBhdXRvIGNhdGNoU2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0g
Z2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIFN1c3BlbmRFeGNlcHRpb25TY29w
ZSBzY29wZSgmdm0pOwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50
ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tUeXBlIGRlYnVn
SG8KIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIg
PSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBEZWJ1
Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLT5kZWJ1
Z2dlcigpOwogICAgIGlmICghZGVidWdnZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBj
MzE3MmY3NTcxZTI4NDdkNGMxNGFiZTRiOTFjMTkwMGY1ZmMxOTRkLi5hNTgzYjQ4Y2IyMjY1Y2U1
MjIzMWMwNmQyYjI1OGNhMjc5ZmJlMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMzY5LDEzICszNjksMTMgQEAgaW50
cHRyX3QgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlSUQoKQogICAgIHJldHVybiBub1NvdXJj
ZUlEOwogfQogCi1DbG9uZWRBcmd1bWVudHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFy
Z3VtZW50cygpCitDbG9uZWRBcmd1bWVudHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFy
Z3VtZW50cyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKG1fY2FsbEZyYW1lKTsKICAgICBDYWxsRnJh
bWUqIHBoeXNpY2FsRnJhbWUgPSBtX2NhbGxGcmFtZTsKICAgICAvLyBGSVhNRTogUmV2aXNpdCBK
U0dsb2JhbE9iamVjdC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzMjA0Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHBoeXNpY2Fs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gcGh5c2ljYWxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CiAgICAgQ2xv
bmVkQXJndW1lbnRzKiBhcmd1bWVudHM7CiAgICAgQXJndW1lbnRzTW9kZSBtb2RlOwogICAgIGlm
IChPcHRpb25zOjp1c2VGdW5jdGlvbkRvdEFyZ3VtZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCmluZGV4IGQzNTc2MWZlMGM0MjM0
YjM5Y2Y1MDdiMWI2NDU2NTU4NGE4NDliODYuLjBjODFkMWIzMjM2OTg2NzkyNzQyN2M2ZDBmNzRm
MTQ5MzIzZDc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsKICAg
ICAgICAgT3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IGNhbGxlZVNhdmVSZWdpc3RlcnNG
b3JVbndpbmRpbmcoKTsKICNlbmRpZgogCi0gICAgICAgIENsb25lZEFyZ3VtZW50cyogY3JlYXRl
QXJndW1lbnRzKCk7CisgICAgICAgIENsb25lZEFyZ3VtZW50cyogY3JlYXRlQXJndW1lbnRzKFZN
Jik7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
RnJhbWU7IH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIEluZGVu
dGVyID0gSW5kZW50ZXIoKSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1Nzk4ZDMwYjhiNTg2YjczNGI4ZmQ4NjA0ODg4NGZk
ZGU3NmIwOTRkLi40YmQ4ZmFlYTkyNzdlYjFkZjgyNWJmYmM1Mjk5NmZlN2EwNThjYjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE5
NDMsNyArMTk0Myw3IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93
X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsCiAKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbEZyYW1lKQotICAgICAg
ICBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAg
ICAgZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCp2bSk7CiAg
ICAgZWxzZQogICAgICAgICBnbG9iYWxPYmplY3QgPSBwcm90b0ZyYW1lLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCp2bSk7CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CmluZGV4IDA0Yjg3MWUyOTkyODI3YzU2MzNkMzczNDI5NGE3MDQ5ZTNjYTRmMmQuLjQwYTczNTQ1
NDRkYWJkODYzOGE5MWVjNzllMTljZjRhYTIyOTQ0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0yNzEsOCArMjcxLDkgQEAgQ2FsbFR5cGUg
SlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEp
CiAKIGNsYXNzIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciB7CiBwdWJsaWM6Ci0gICAgUmV0cmll
dmVBcmd1bWVudHNGdW5jdG9yKEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQotICAgICAgICA6IG1f
dGFyZ2V0Q2FsbGVlKGZ1bmN0aW9uT2JqKQorICAgIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvcihW
TSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQorICAgICAgICA6IG1fdm0odm0pCisgICAg
ICAgICwgbV90YXJnZXRDYWxsZWUoZnVuY3Rpb25PYmopCiAgICAgICAgICwgbV9yZXN1bHQoanNO
dWxsKCkpCiAgICAgewogICAgIH0KQEAgLTI4OCwxOCArMjg5LDE5IEBAIGNsYXNzIFJldHJpZXZl
QXJndW1lbnRzRnVuY3RvciB7CiAgICAgICAgIGlmIChjYWxsZWUgIT0gbV90YXJnZXRDYWxsZWUp
CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBt
X3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRvci0+Y3JlYXRlQXJndW1lbnRzKCkpOworICAgICAgICBt
X3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRvci0+Y3JlYXRlQXJndW1lbnRzKG1fdm0pKTsKICAgICAg
ICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgVk0m
IG1fdm07CiAgICAgSlNPYmplY3QqIG1fdGFyZ2V0Q2FsbGVlOwogICAgIG11dGFibGUgSlNWYWx1
ZSBtX3Jlc3VsdDsKIH07CiAKIHN0YXRpYyBKU1ZhbHVlIHJldHJpZXZlQXJndW1lbnRzKFZNJiB2
bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQogewotICAg
IFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciBmdW5jdG9yKGZ1bmN0aW9uT2JqKTsKKyAgICBSZXRy
aWV2ZUFyZ3VtZW50c0Z1bmN0b3IgZnVuY3Rvcih2bSwgZnVuY3Rpb25PYmopOwogICAgIGlmIChj
YWxsRnJhbWUpCiAgICAgICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CiAgICAg
cmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmgKaW5kZXggYTlhM2VmZTRiZjc5NmNjYTJiNjkwNzE1ZDQyYjM5ZDMwZjI1NDQ2Zi4uMDkw
ZWQ3NTljOTk4MDIyYWQ2ZTc0OWUwNWRmYTY2NDY4YTRhYjQxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMTQwLDggKzE0MCwxMyBAQCBpbmxpbmUgSlNTY29w
ZSogUmVnaXN0ZXI6OnNjb3BlKCkgY29uc3QKICAgICByZXR1cm4ganNDYXN0PEpTU2NvcGUqPih1
bmJveGVkQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Omxl
eGljYWxHbG9iYWxPYmplY3QoKSBjb25zdAoraW5saW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJh
bWU6OmxleGljYWxHbG9iYWxPYmplY3QoVk0mIHZtKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJB
TSh2bSk7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIGlmIChjYWxsZWUoKS5pc1dhc20o
KSkKKyAgICAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3RGcm9tV2FzbUNhbGxlZSh2bSk7
CisjZW5kaWYKICAgICByZXR1cm4ganNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAppbmRleCA4NDM2
ZGVjMDkxYmEyZjI2NTI0N2U3MjdhMWFlZmE0Mjc2YjE3MjQ5Li5mN2Q5MTkwNTg5ODRkYzAyYTc0
ZjRhZDI4MjcxNWJjZDJlNTY3YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwSW5saW5lcy5oCkBAIC0xNDMsNyArMTQzLDcgQEAgQUxXQVlTX0lOTElORSBpbnQg
UmVnRXhwOjptYXRjaElubGluZShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3Rh
cnRPZmYKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IEpTR2xvYmFsT2JqZWN0LgogICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS50b3BDYWxsRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnRv
cENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAgIHRocm93U2NvcGUu
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBlcnJvclRvVGhyb3coZ2xvYmFsT2JqZWN0KSk7
CiAgICAgICAgIGlmICghaGFzSGFyZEVycm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkKICAg
ICAgICAgICAgIHJlc2V0KCk7CkBAIC0yNzMsNyArMjczLDcgQEAgQUxXQVlTX0lOTElORSBNYXRj
aFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5saW5lKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNp
Z25lZAogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNHbG9iYWxPYmplY3QuCiAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyMDQKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udG9w
Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKICAgICAgICAgdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGVycm9yVG9UaHJvdyhnbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgaWYgKCFoYXNIYXJkRXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvckNvZGUpKQogICAg
ICAgICAgICAgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAppbmRleCA4Njc0NjI3MDY3YzgzNDE5NTczMDM0MTlkMmI5ZjMzYzBiZGRmNzNlLi45OGE3
ODc0ZjZkMWEyNjJkNDYzNWVkMzU0ODc4ODk0MjljNDVlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgRXhwZWN0ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3
YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA2CiAgICAgICAgICAgICAgICAgVk0mIHZtID0gY2FsbEZy
YW1lLT5kZXByZWNhdGVkVk0oKTsKICAgICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgICAgICAgICAgICAgIHJldHVybiB2LnRvSW50
MzIoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIHJl
dHVybiB2LnRvSW50MzIoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiAgICAg
ICAgICAgICB9OwogCiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90
TnVtYmVyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpKTsK
QEAgLTM0MCw3ICszNDAsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVu
dHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyMDYKICAg
ICAgICAgICAgICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgICAg
ICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2LnRvTnVtYmVyKGNhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0Pih2LnRvTnVtYmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCh2bSkpKTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGF1dG8gbm90QU51bWJlciA9
IGppdC5icmFuY2hJZk5vdE51bWJlcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRG9Ob3RIYXZl
VGFnUmVnaXN0ZXJzKTsKQEAgLTM3OSw3ICszNzksNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2
bQogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDMyMDYKICAgICAgICAgICAgICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0
ZWRWTSgpOwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHYudG9OdW1iZXIoY2FsbEZyYW1l
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIHJldHVybiB2LnRvTnVt
YmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpOwogICAgICAgICAgICAgfTsK
IAogICAgICAgICAgICAgYXV0byBub3RBTnVtYmVyID0gaml0LmJyYW5jaElmTm90TnVtYmVyKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IDA5Yjc4NGY5ZWQzNTZhZDZiY2JhODRm
NWU2M2JmOGE2ZjFlYTI2N2QuLmM4N2Q1NWQzODc0MzYwMjBiY2MzOWViMDZjMGMxOGQwZGUxOTli
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKQEAgLTc0LDkgKzc0
LDEwIEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAKIEZyYW1lKiBsZXhpY2FsRnJhbWVGcm9t
Q29tbW9uVk0oKQogewotICAgIGlmIChhdXRvKiB0b3BDYWxsRnJhbWUgPSBjb21tb25WTSgpLnRv
cENhbGxGcmFtZSkgewotICAgICAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPih0b3BDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8
SlNET01XaW5kb3cqPihjb21tb25WTSgpLCBnbG9iYWxPYmplY3QpKSB7CisgICAgVk0mIHZtID0g
Y29tbW9uVk0oKTsKKyAgICBpZiAoYXV0byogdG9wQ2FsbEZyYW1lID0gdm0udG9wQ2FsbEZyYW1l
KSB7CisgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KHRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NV2lu
ZG93Kj4odm0sIGdsb2JhbE9iamVjdCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZnJh
bWUgPSB3aW5kb3ctPndyYXBwZWQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZnJhbWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA0MDZiYWIzMGJkNjRmODIxMzk4MGM1MmI1YjE0ZjQ2
N2NhYzcwZGQyLi5kYzM4N2Q1NDE1NmRkY2MyMzBjYmVmMzM5ZjMwMTBlMzM0ZWEzOWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTI4
MCw3ICsyODAsNyBAQCBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudChWTSYgdm0sIENhbGxG
cmFtZSYgY2FsbEZyYW1lKQogICAgIGF1dG8qIGNhbGxlckZyYW1lID0gZnVuY3Rvci5jYWxsZXJG
cmFtZSgpOwogICAgIGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBhc0pTRE9NV2luZG93KGNhbGxlckZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT53cmFwcGVkKCkuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhjYWxs
ZXJGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpLT53cmFwcGVkKCkuZG9jdW1lbnQoKTsK
IH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRXYXRjaHBvaW50c0Zv
cldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCmluZGV4IDY3NWYyMTc0ZjlhN2NiY2MyZDI2MDllNjg4ZjRk
OTZiOWJkMTJlNzYuLjk4NWIzZGIwZDNmMTYxMDAwZjFmYWQ5YjQzMjk3OGU1NDYyM2FkNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcApAQCAt
NDEsMTEgKzQxLDEyIEBAIGVudW0gY2xhc3MgQ2xvbmVNb2RlIHsKIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGNsb25lQXJyYXlCdWZmZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2xvbmVNb2RlIG1vZGUpCiB7CisgICAgVk0m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKwogICAgIEFTU0VSVChsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwotICAg
IEFTU0VSVChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSA9
PSBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIAotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byogYnVmZmVyID0gdG9VbnNoYXJlZEFycmF5QnVmZmVyKHZtLCBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA5NTRhYTI5N2NjMWM1NzQ4OGIzYTllNjZlNTEwYmM4MTY0MjAwZjQyLi40
MDBhNmQ2MDJkMDZiOWZiNTBhZDFkYWEwODIxZDA0NTlkZWUyM2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTI2MTgsOCArMjYxOCw5IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZURldmlj
ZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygpCiBib29sIERvY3VtZW50OjpzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAogewogICAgIC8vIEJ5cGFz
cyB0aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5kIGl0IG5vdCB0aGUgbm9y
bWFsIHdvcmxkLgotICAgIGF1dG8mIGNhbGxGcmFtZSA9ICpjb21tb25WTSgpLnRvcENhbGxGcmFt
ZTsKLSAgICByZXR1cm4gJmNhbGxGcmFtZSAhPSBKU0M6OkNhbGxGcmFtZTo6bm9DYWxsZXIoKSAm
JiAhY3VycmVudFdvcmxkKCpjYWxsRnJhbWUubGV4aWNhbEdsb2JhbE9iamVjdCgpKS5pc05vcm1h
bCgpOworICAgIFZNJiB2bSA9IGNvbW1vblZNKCk7CisgICAgYXV0byYgY2FsbEZyYW1lID0gKnZt
LnRvcENhbGxGcmFtZTsKKyAgICByZXR1cm4gJmNhbGxGcmFtZSAhPSBKU0M6OkNhbGxGcmFtZTo6
bm9DYWxsZXIoKSAmJiAhY3VycmVudFdvcmxkKCpjYWxsRnJhbWUubGV4aWNhbEdsb2JhbE9iamVj
dCh2bSkpLmlzTm9ybWFsKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9y
U3RvcEFjdGl2ZURPTU9iamVjdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IGU0ZTdhYzlmZDljMjNmYjU5ZTdjYjE1MzA4OTIzMmE2ZmM5ZjUzYzUuLmI5ZDczNjZlMDNm
ODNjMTkwOTJkOWUwNjhjMmE2YzU3MTFlMDQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTIyMDYsNyArMjIwNiw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1l
dGFEYXRhKEpTQzo6SlNWYWx1ZSBjb2RlKQogewogICAgIEpTQzo6Vk0mIHZtID0gY29udGV4dERv
Y3VtZW50KCktPnZtKCk7CiAgICAgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZtLnRvcENh
bGxGcmFtZTsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsRnJh
bWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pOwogICAgIFNjcmlw
dEV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAKICAgICBpZiAoIWNvZGUgfHwgY29kZS5pc051bGwo
KSB8fCBjb2RlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTM0ODAsNyArMzQ4MCw4IEBAIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IEludGVybmFsczo6ZGVzZXJpYWxpemVCdWZmZXIoQXJyYXlCdWZm
ZXImIGJ1ZmZlcikgY29uCiAKIGJvb2wgSW50ZXJuYWxzOjppc0Zyb21DdXJyZW50V29ybGQoSlND
OjpKU1ZhbHVlIHZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBpc1dvcmxkQ29tcGF0aWJsZSgq
Y29udGV4dERvY3VtZW50KCktPnZtKCkudG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIHZhbHVlKTsKKyAgICBWTSYgdm0gPSBjb250ZXh0RG9jdW1lbnQoKS0+dm0oKTsKKyAgICBy
ZXR1cm4gaXNXb3JsZENvbXBhdGlibGUoKnZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCh2bSksIHZhbHVlKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Ny
b2xsYmFycyhib29sIGVuYWJsZWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381764</attachid>
            <date>2019-10-23 19:09:49 -0700</date>
            <delta_ts>2019-10-23 20:15:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203351-20191023190948.patch</filename>
            <type>text/plain</type>
            <size>26485</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YWU0OTc3ZDNjYjYzOTVmODRjZDNmNTk4YTJmMDVjOTdkNzU0YTdiLi5mYzEzYjA0MjA2YzY2NTNj
MjBiZTQ5NTE1MmMzZDIxYzQ1NmMwOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSB3YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRnJhbWU6
OmxleGljYWxHbG9iYWxPYmplY3QoKSBpcyBubyBsb25nZXIgY2FsbGVkIGZyZXF1ZW50bHkuIFdl
IGNhbiBqdXN0IG1ha2UgdGhlIGN1cnJlbnQgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBh
cyBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QsCisgICAgICAgIGFuZCByZW1vdmUgd2Fz
bUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6Omhhc0JyZWFrcG9pbnQpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6bGV4
aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZTo6c2NvcGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1Zh
bHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QgY29uc3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgIChJbnNw
ZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsZXhp
Y2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAq
IGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6bm90aWZ5RGVidWdnZXJPZlVud2luZGluZyk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRl
QXJndW1lbnRzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpSZXRyaWV2
ZUFyZ3VtZW50c0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0
b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUFyZ3VtZW50cyk6
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
bGV4aWNhbEdsb2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisKIDIw
MTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5OWEwOWU1NDg5OTJmNTM5ZGMxZWNiMGYyN2YzZjkxN2EzMzFiMjUyLi45ZjJmZWI5ZTYyYTEy
MjVhMWE1ZDU0MDI1NzM3OWYxODIxMjRhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBSZW1vdmUgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25W
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNwb25zaWJsZURvY3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlckltcGwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBh
cnNlck1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNGcm9tQ3VycmVu
dFdvcmxkIGNvbnN0KToKKwogMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5k
ZXggY2RkMTk1ZjBkMWE2YWQxZDE5ZGNjOGYyMWQ0ZWZiOGI5YzI0OTE2ZS4uZGRhNmQwNTcyZWMz
ZTBmNTJjMmM2ZDM3YjliM2FmZDIwOTY1N2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6
aGFzQnJlYWtwb2ludChTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3Np
dGlvbiwgQnIKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSk7CiAg
ICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNv
dW50cyBhcyAiZmFsc2UiLgogICAgICAgICBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25k
aXRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQg
RGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgpCiAgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0g
dHJ1ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CiAgICAgbV9j
dXJyZW50Q2FsbEZyYW1lID0gbV92bS50b3BDYWxsRnJhbWU7Ci0gICAgcGF1c2VJZk5lZWRlZCht
X2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgcGF1c2VJZk5l
ZWRlZChtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSkpOwogfQog
CiB2b2lkIERlYnVnZ2VyOjpjb250aW51ZVByb2dyYW0oKQpAQCAtNjc1LDcgKzY3NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJh
bWUoVk0mIHZtLCBDYWxsRnJhbWUqCiB7CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWxsRnJhbWUtPndhc21Bd2FyZUxleGljYWxHbG9i
YWxPYmplY3Qodm0pOworICAgIHJldHVybiBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
dm0pOwogfQogCiB2b2lkIERlYnVnZ2VyOjp1cGRhdGVDYWxsRnJhbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxGcmFtZVVwZGF0ZUFjdGlv
biBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCAyY2U3MmU4YzJhZmFjY2MwOWNmMDUyNGE4MzA1MmUwZDdl
MzRiYzcyLi4wMTVkMTllNWVhNGI5NjRhZDA1MzNhZWUzOTdmNTM5N2YyNjE2ZjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdAogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBWTSYgdm0gPSBtX3ZhbGlkTWFj
aGluZUZyYW1lLT5kZXByZWNhdGVkVk0oKTsKLSAgICByZXR1cm4gdm0uZGVwcmVjYXRlZFZNRW50
cnlHbG9iYWxPYmplY3QobV92YWxpZE1hY2hpbmVGcmFtZS0+d2FzbUF3YXJlTGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSkpOworICAgIHJldHVybiB2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVj
dChtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiB9CiAKIFNv
dXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CkBAIC0xNzEsNyArMTcx
LDcgQEAgRGVidWdnZXJTY29wZSogRGVidWdnZXJDYWxsRnJhbWU6OnNjb3BlKCkKICAgICAgICAg
ZWxzZSBpZiAoSlNDYWxsZWUqIGNhbGxlZSA9IGpzRHluYW1pY0Nhc3Q8SlNDYWxsZWUqPih2bSwg
bV92YWxpZE1hY2hpbmVGcmFtZS0+anNDYWxsZWUoKSkpCiAgICAgICAgICAgICBzY29wZSA9IGNh
bGxlZS0+c2NvcGUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlk
TWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbExleGljYWxFbnZpcm9u
bWVudCgpOworICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICAgICAg
bV9zY29wZS5zZXQodm0sIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZSh2bSwgc2NvcGUpKTsKICAgICB9
CkBAIC0xOTMsNyArMTkzLDcgQEAgRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgRGVidWdnZXJDYWxs
RnJhbWU6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBQcm9ncmFtVHlwZTsKIH0KIAotSlNWYWx1
ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKK0pTVmFsdWUgRGVidWdnZXJD
YWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQo
KSk7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkBAIC0yMTUsNyArMjE1LDcgQEAgSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IE5vdFN0cmljdE1vZGU7CiAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKQogICAgICAgICBlY21hTW9kZSA9IFN0cmljdE1vZGU7Ci0gICAgcmV0dXJuIHRoaXNW
YWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBl
Y21hTW9kZSk7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIAogLy8gRXZhbHVhdGUg
c29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCkBAIC0yNjUs
NyArMjY1LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lvbihKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIGlnbm9yZWRQcmV2aW91c1Njb3BlLCBzY29wZUV4dGVuc2lvbk9iamVjdCkpOwogICAg
IH0KIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdGhpcy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSB0aGlzLT50aGlzVmFsdWUodm0pOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IHNjb3BlKCktPmpzU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
CmluZGV4IDEwZmUzMTgwM2E1MGRmYjFjYzg3YmViNzYxMWQxNzIyNzA5OGYyYzIuLmFjNmVjZDM0
NTE4NGUzZTQxZGM4YTgxODU3YzY2MDcyYTkyZTFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC02MCw3ICs2MCw3IEBA
IGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RGVidWdnZXJDYWxs
RnJhbWU+IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlclNjb3BlKiBzY29wZSgpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgdGhpc1ZhbHVlKFZNJikgY29uc3Q7CiAgICAgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihjb25zdCBTdHJpbmcmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QsIE5h
a2VkUHRyPEV4Y2VwdGlvbj4mKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV92YWxpZE1hY2hpbmVGcmFtZSB8fCBpc1RhaWxEZWxldGVkKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcAppbmRleCAwNDJkNzliMDAwMzIzOTNmN2M1Yzg4ZGU0MzUyZjAzMGMzYjA0YTFmLi41ZmVm
ZTk4OTVjMGU0YTM0ZWZkNzBlOTM5YmFiNDA3ZDFhMjY2YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CkBAIC0yMDYsOSArMjA2LDkgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
Q2hhaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkodGhpcy0+Z2xvYmFsT2JqZWN0KHZtKSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0phdmFTY3Jp
cHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBjb25zdAorSlNWYWx1ZSBK
U0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1wbCgpLnRoaXNWYWx1ZSgpOworICAgIHJldHVy
biBpbXBsKCkudGhpc1ZhbHVlKGdsb2JhbE9iamVjdC0+dm0oKSk7CiB9CiAKIEpTVmFsdWUgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lOjppc1RhaWxEZWxldGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCA1MzM0ZDIxMDMwMWE2OTQ2ZGJlN2VhM2MyMDE4MTczYzkzNWM0
NzE5Li5hYzhkMzY4ZmQ4MDMzMWUzYTJkMTcxOTg5NDZhZDJiYmUyMTJlZWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVibGljIFJl
ZkNvdW50ZWQ8SmF2YVNjcmlwdENhbGxGcmFtZT4gewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGRlcHJlY2F0ZWRWTUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
ckNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKTsgfQogICAgIGJvb2wg
aXNUYWlsRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPmlzVGFp
bERlbGV0ZWQoKTsgfQogCi0gICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOyB9CisgICAgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRo
aXNWYWx1ZSh2bSk7IH0KICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIGV4Y2VwdGlvbikgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4
dGVuc2lvbiwgZXhjZXB0aW9uKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCA2NzJiMjY4YTUxZDM4ZDczNTNh
ZTEwY2E1NzgzOWE1ZDAyMzQ5MTQ5Li43ZDM0MDRkNDM3NGMzMzViNzc5YTFlYmVhYTQ2N2U0ODRi
MjBjZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcApAQCAtMTkwLDE4ICsxOTAsNiBAQCBSZWdpc3RlciogQ2FsbEZyYW1lOjp0b3BPZkZy
YW1lSW50ZXJuYWwoKQogICAgIHJldHVybiByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+c3RhY2tQ
b2ludGVyT2Zmc2V0KCk7CiB9CiAKLUpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Ondhc21Bd2Fy
ZUxleGljYWxHbG9iYWxPYmplY3QoVk0mIHZtKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
LSAgICBpZiAoIWNhbGxlZSgpLmlzV2FzbSgpKQotICAgICAgICByZXR1cm4gbGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwotICAgIHJldHVybiB2bS53YXNtQ29udGV4dC5sb2FkKCktPm93bmVyPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4oKS0+Z2xvYmFsT2JqZWN0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh2bSk7Ci0gICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsKLSNlbmRpZgotfQot
CiBib29sIENhbGxGcmFtZTo6aXNBbnlXYXNtQ2FsbGVlKCkKIHsKICAgICBDYWxsZWVCaXRzIGNh
bGxlZSA9IHRoaXMtPmNhbGxlZSgpOwpAQCAtMzU3LDYgKzM0NSwxMSBAQCB2b2lkIENhbGxGcmFt
ZTo6Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2tUb0tlZXBBbAogICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDApOwogfQogCitK
U0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjpsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxs
ZWUoVk0mIHZtKSBjb25zdAoreworICAgIHJldHVybiB2bS53YXNtQ29udGV4dC5sb2FkKCktPm93
bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+Z2xvYmFsT2JqZWN0KCk7Cit9CisKIGJvb2wg
aXNGcm9tSlNDb2RlKHZvaWQqIHJldHVybkFkZHJlc3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJl
dHVybkFkZHJlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCmluZGV4IDEwZWRmYjBlYjVlOTUwMzhiMGE2NGJjZWY0MmYyYzVlMjIxYzJiYjYuLmQ4
ODdiNDI2NDYyNmE1ZjUyMjVlZmNmNWJhNGFmZWUzMzc3N2MzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTEyNSwxMyArMTI1LDExIEBA
IG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzW3Njb3BlUmVnaXN0ZXJP
ZmZzZXRdLlJlZ2lzdGVyOjpzY29wZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIHdhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QoVk0mKTsKLQogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzQW55V2FzbUNhbGxlZSgpOwogCiAgICAgICAgIC8vIEdsb2Jh
bCBvYmplY3QgaW4gd2hpY2ggdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSB3YXMgZGVmaW5l
ZC4KICAgICAgICAgLy8gRGlmZmVycyBmcm9tIFZNOjpkZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9i
amVjdCgpIGR1cmluZyBmdW5jdGlvbiBjYWxscyBhY3Jvc3Mgd2ViIGJyb3dzZXIgZnJhbWVzLgot
ICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCgpIGNvbnN0OworICAg
ICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdChWTSYpIGNvbnN0OwogCiAg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlvbgogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjcyCkBAIC0xNjksNiArMTY3LDcg
QEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBDYWxsU2l0ZUluZGV4IHVuc2FmZUNhbGxTaXRl
SW5kZXgoKSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBjYWxsU2l0ZUJp
dHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUoVk0mKSBjb25z
dDsKICAgICBwdWJsaWM6CiAKICAgICAgICAgLy8gVGhpcyB3aWxsIHRyeSB0byBnZXQgeW91IHRo
ZSBieXRlY29kZSBvZmZzZXQsIGJ1dCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZm
ODE1OTczNjAxZDQ1MjE3ZjA5NjdiNWFkMDU4Y2JkZGI5NGJiNWMuLmU4NjczYmYwYTRhOGVhN2Vm
MGJiNDk0MjcyNTRhZWM3NzAzY2YwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIGNsYXNzIEdl
dENhdGNoSGFuZGxlckZ1bmN0b3IgewogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIG5vdGlm
eURlYnVnZ2VyT2ZVbndpbmRpbmcoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT53YXNtQXdhcmVMZXhp
Y2FsR2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKICAgICBhdXRvIGNhdGNoU2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0g
Z2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIFN1c3BlbmRFeGNlcHRpb25TY29w
ZSBzY29wZSgmdm0pOwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50
ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tUeXBlIGRlYnVn
SG8KIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIg
PSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBEZWJ1
Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLT5kZWJ1
Z2dlcigpOwogICAgIGlmICghZGVidWdnZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBj
MzE3MmY3NTcxZTI4NDdkNGMxNGFiZTRiOTFjMTkwMGY1ZmMxOTRkLi5hNTgzYjQ4Y2IyMjY1Y2U1
MjIzMWMwNmQyYjI1OGNhMjc5ZmJlMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMzY5LDEzICszNjksMTMgQEAgaW50
cHRyX3QgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlSUQoKQogICAgIHJldHVybiBub1NvdXJj
ZUlEOwogfQogCi1DbG9uZWRBcmd1bWVudHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFy
Z3VtZW50cygpCitDbG9uZWRBcmd1bWVudHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFy
Z3VtZW50cyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKG1fY2FsbEZyYW1lKTsKICAgICBDYWxsRnJh
bWUqIHBoeXNpY2FsRnJhbWUgPSBtX2NhbGxGcmFtZTsKICAgICAvLyBGSVhNRTogUmV2aXNpdCBK
U0dsb2JhbE9iamVjdC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzMjA0Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHBoeXNpY2Fs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gcGh5c2ljYWxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CiAgICAgQ2xv
bmVkQXJndW1lbnRzKiBhcmd1bWVudHM7CiAgICAgQXJndW1lbnRzTW9kZSBtb2RlOwogICAgIGlm
IChPcHRpb25zOjp1c2VGdW5jdGlvbkRvdEFyZ3VtZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCmluZGV4IGQzNTc2MWZlMGM0MjM0
YjM5Y2Y1MDdiMWI2NDU2NTU4NGE4NDliODYuLjBjODFkMWIzMjM2OTg2NzkyNzQyN2M2ZDBmNzRm
MTQ5MzIzZDc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsKICAg
ICAgICAgT3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IGNhbGxlZVNhdmVSZWdpc3RlcnNG
b3JVbndpbmRpbmcoKTsKICNlbmRpZgogCi0gICAgICAgIENsb25lZEFyZ3VtZW50cyogY3JlYXRl
QXJndW1lbnRzKCk7CisgICAgICAgIENsb25lZEFyZ3VtZW50cyogY3JlYXRlQXJndW1lbnRzKFZN
Jik7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
RnJhbWU7IH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIEluZGVu
dGVyID0gSW5kZW50ZXIoKSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1Nzk4ZDMwYjhiNTg2YjczNGI4ZmQ4NjA0ODg4NGZk
ZGU3NmIwOTRkLi40YmQ4ZmFlYTkyNzdlYjFkZjgyNWJmYmM1Mjk5NmZlN2EwNThjYjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE5
NDMsNyArMTk0Myw3IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93
X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsCiAKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoY2FsbEZyYW1lKQotICAgICAg
ICBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAg
ICAgZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCp2bSk7CiAg
ICAgZWxzZQogICAgICAgICBnbG9iYWxPYmplY3QgPSBwcm90b0ZyYW1lLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCp2bSk7CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CmluZGV4IDA0Yjg3MWUyOTkyODI3YzU2MzNkMzczNDI5NGE3MDQ5ZTNjYTRmMmQuLjQwYTczNTQ1
NDRkYWJkODYzOGE5MWVjNzllMTljZjRhYTIyOTQ0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0yNzEsOCArMjcxLDkgQEAgQ2FsbFR5cGUg
SlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEp
CiAKIGNsYXNzIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciB7CiBwdWJsaWM6Ci0gICAgUmV0cmll
dmVBcmd1bWVudHNGdW5jdG9yKEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQotICAgICAgICA6IG1f
dGFyZ2V0Q2FsbGVlKGZ1bmN0aW9uT2JqKQorICAgIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvcihW
TSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQorICAgICAgICA6IG1fdm0odm0pCisgICAg
ICAgICwgbV90YXJnZXRDYWxsZWUoZnVuY3Rpb25PYmopCiAgICAgICAgICwgbV9yZXN1bHQoanNO
dWxsKCkpCiAgICAgewogICAgIH0KQEAgLTI4OCwxOCArMjg5LDE5IEBAIGNsYXNzIFJldHJpZXZl
QXJndW1lbnRzRnVuY3RvciB7CiAgICAgICAgIGlmIChjYWxsZWUgIT0gbV90YXJnZXRDYWxsZWUp
CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBt
X3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRvci0+Y3JlYXRlQXJndW1lbnRzKCkpOworICAgICAgICBt
X3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRvci0+Y3JlYXRlQXJndW1lbnRzKG1fdm0pKTsKICAgICAg
ICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKICAgICB9CiAKIHByaXZhdGU6CisgICAgVk0m
IG1fdm07CiAgICAgSlNPYmplY3QqIG1fdGFyZ2V0Q2FsbGVlOwogICAgIG11dGFibGUgSlNWYWx1
ZSBtX3Jlc3VsdDsKIH07CiAKIHN0YXRpYyBKU1ZhbHVlIHJldHJpZXZlQXJndW1lbnRzKFZNJiB2
bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQogewotICAg
IFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciBmdW5jdG9yKGZ1bmN0aW9uT2JqKTsKKyAgICBSZXRy
aWV2ZUFyZ3VtZW50c0Z1bmN0b3IgZnVuY3Rvcih2bSwgZnVuY3Rpb25PYmopOwogICAgIGlmIChj
YWxsRnJhbWUpCiAgICAgICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CiAgICAg
cmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmgKaW5kZXggYTlhM2VmZTRiZjc5NmNjYTJiNjkwNzE1ZDQyYjM5ZDMwZjI1NDQ2Zi4uMDkw
ZWQ3NTljOTk4MDIyYWQ2ZTc0OWUwNWRmYTY2NDY4YTRhYjQxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMTQwLDggKzE0MCwxMyBAQCBpbmxpbmUgSlNTY29w
ZSogUmVnaXN0ZXI6OnNjb3BlKCkgY29uc3QKICAgICByZXR1cm4ganNDYXN0PEpTU2NvcGUqPih1
bmJveGVkQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Omxl
eGljYWxHbG9iYWxPYmplY3QoKSBjb25zdAoraW5saW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJh
bWU6OmxleGljYWxHbG9iYWxPYmplY3QoVk0mIHZtKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJB
TSh2bSk7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIGlmIChjYWxsZWUoKS5pc1dhc20o
KSkKKyAgICAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3RGcm9tV2FzbUNhbGxlZSh2bSk7
CisjZW5kaWYKICAgICByZXR1cm4ganNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAppbmRleCA4NDM2
ZGVjMDkxYmEyZjI2NTI0N2U3MjdhMWFlZmE0Mjc2YjE3MjQ5Li5mN2Q5MTkwNTg5ODRkYzAyYTc0
ZjRhZDI4MjcxNWJjZDJlNTY3YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwSW5saW5lcy5oCkBAIC0xNDMsNyArMTQzLDcgQEAgQUxXQVlTX0lOTElORSBpbnQg
UmVnRXhwOjptYXRjaElubGluZShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3Rh
cnRPZmYKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IEpTR2xvYmFsT2JqZWN0LgogICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS50b3BDYWxsRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnRv
cENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAgIHRocm93U2NvcGUu
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBlcnJvclRvVGhyb3coZ2xvYmFsT2JqZWN0KSk7
CiAgICAgICAgIGlmICghaGFzSGFyZEVycm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkKICAg
ICAgICAgICAgIHJlc2V0KCk7CkBAIC0yNzMsNyArMjczLDcgQEAgQUxXQVlTX0lOTElORSBNYXRj
aFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5saW5lKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNp
Z25lZAogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNHbG9iYWxPYmplY3QuCiAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyMDQKLSAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udG9w
Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKICAgICAgICAgdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGVycm9yVG9UaHJvdyhnbG9iYWxPYmplY3QpKTsK
ICAgICAgICAgaWYgKCFoYXNIYXJkRXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvckNvZGUpKQogICAg
ICAgICAgICAgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAppbmRleCA4Njc0NjI3MDY3YzgzNDE5NTczMDM0MTlkMmI5ZjMzYzBiZGRmNzNlLi45OGE3
ODc0ZjZkMWEyNjJkNDYzNWVkMzU0ODc4ODk0MjljNDVlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgRXhwZWN0ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3
YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA2CiAgICAgICAgICAgICAgICAgVk0mIHZtID0gY2FsbEZy
YW1lLT5kZXByZWNhdGVkVk0oKTsKICAgICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgICAgICAgICAgICAgIHJldHVybiB2LnRvSW50
MzIoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIHJl
dHVybiB2LnRvSW50MzIoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiAgICAg
ICAgICAgICB9OwogCiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90
TnVtYmVyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpKTsK
QEAgLTM0MCw3ICszNDAsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVu
dHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyMDYKICAg
ICAgICAgICAgICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgICAg
ICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2LnRvTnVtYmVyKGNhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0Pih2LnRvTnVtYmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCh2bSkpKTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGF1dG8gbm90QU51bWJlciA9
IGppdC5icmFuY2hJZk5vdE51bWJlcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRG9Ob3RIYXZl
VGFnUmVnaXN0ZXJzKTsKQEAgLTM3OSw3ICszNzksNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2
bQogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDMyMDYKICAgICAgICAgICAgICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0
ZWRWTSgpOwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHYudG9OdW1iZXIoY2FsbEZyYW1l
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgICAgIHJldHVybiB2LnRvTnVt
YmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpOwogICAgICAgICAgICAgfTsK
IAogICAgICAgICAgICAgYXV0byBub3RBTnVtYmVyID0gaml0LmJyYW5jaElmTm90TnVtYmVyKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IDA5Yjc4NGY5ZWQzNTZhZDZiY2JhODRm
NWU2M2JmOGE2ZjFlYTI2N2QuLmNiZjNkMGJmYzZiNmI2YTA4OWUxNWEzZGVhOWYwNjJiMWYwOWJm
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKQEAgLTc0LDkgKzc0
LDEwIEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygpCiAKIEZyYW1lKiBsZXhpY2FsRnJhbWVGcm9t
Q29tbW9uVk0oKQogewotICAgIGlmIChhdXRvKiB0b3BDYWxsRnJhbWUgPSBjb21tb25WTSgpLnRv
cENhbGxGcmFtZSkgewotICAgICAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPih0b3BDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8
SlNET01XaW5kb3cqPihjb21tb25WTSgpLCBnbG9iYWxPYmplY3QpKSB7CisgICAgSlNDOjpWTSYg
dm0gPSBjb21tb25WTSgpOworICAgIGlmIChhdXRvKiB0b3BDYWxsRnJhbWUgPSB2bS50b3BDYWxs
RnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IEpTQzo6anNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4odG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNE
T01XaW5kb3cqPih2bSwgZ2xvYmFsT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmcmFtZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDQwNmJhYjMwYmQ2NGY4MjEzOTgwYzUyYjVi
MTRmNDY3Y2FjNzBkZDIuLmRjMzg3ZDU0MTU2ZGRjYzIzMGNiZWYzMzlmMzAxMGUzMzRlYTM5YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApA
QCAtMjgwLDcgKzI4MCw3IEBAIERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KFZNJiB2bSwg
Q2FsbEZyYW1lJiBjYWxsRnJhbWUpCiAgICAgYXV0byogY2FsbGVyRnJhbWUgPSBmdW5jdG9yLmNh
bGxlckZyYW1lKCk7CiAgICAgaWYgKCFjYWxsZXJGcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3coY2FsbGVyRnJhbWUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPndyYXBwZWQoKS5kb2N1bWVudCgpOworICAgIHJldHVybiBhc0pTRE9NV2luZG93
KGNhbGxlckZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSktPndyYXBwZWQoKS5kb2N1bWVu
dCgpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmlyZUZyYW1lQ2xlYXJlZFdhdGNocG9p
bnRzRm9yV2luZG93KERPTVdpbmRvdyogd2luZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKaW5kZXggNjc1ZjIxNzRmOWE3Y2JjYzJkMjYwOWU2
ODhmNGQ5NmI5YmQxMmU3Ni4uOTg1YjNkYjBkM2YxNjEwMDBmMWZhZDliNDMyOTc4ZTU0NjIzYWQ2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3Bw
CkBAIC00MSwxMSArNDEsMTIgQEAgZW51bSBjbGFzcyBDbG9uZU1vZGUgewogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgY2xvbmVBcnJheUJ1ZmZlckltcGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDbG9uZU1vZGUgbW9kZSkKIHsKKyAg
ICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworCiAgICAgQVNTRVJUKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7
Ci0gICAgQVNTRVJUKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpID09IGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
dm0pID09IGxleGljYWxHbG9iYWxPYmplY3QpOwogCi0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvKiBidWZmZXIgPSB0b1Vuc2hhcmVkQXJyYXlCdWZmZXIo
dm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDk1NGFhMjk3Y2MxYzU3NDg4YjNhOWU2NmU1MTBiYzgxNjQyMDBm
NDIuLjdkMDBmMjIyNGQ2YWE5MTA4MjA3NTc3YmNhY2Q2NjEzMWM5YTRmY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMjYxOCw4ICsyNjE4LDkgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1l
RGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzKCkKIGJvb2wgRG9jdW1lbnQ6OnNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CiB7CiAgICAgLy8g
QnlwYXNzIHRoaXMgcG9saWN5IHdoZW4gdGhlIHdvcmxkIGlzIGtub3duLCBhbmQgaXQgbm90IHRo
ZSBub3JtYWwgd29ybGQuCi0gICAgYXV0byYgY2FsbEZyYW1lID0gKmNvbW1vblZNKCkudG9wQ2Fs
bEZyYW1lOwotICAgIHJldHVybiAmY2FsbEZyYW1lICE9IEpTQzo6Q2FsbEZyYW1lOjpub0NhbGxl
cigpICYmICFjdXJyZW50V29ybGQoKmNhbGxGcmFtZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLmlz
Tm9ybWFsKCk7CisgICAgSlNDOjpWTSYgdm0gPSBjb21tb25WTSgpOworICAgIGF1dG8mIGNhbGxG
cmFtZSA9ICp2bS50b3BDYWxsRnJhbWU7CisgICAgcmV0dXJuICZjYWxsRnJhbWUgIT0gSlNDOjpD
YWxsRnJhbWU6Om5vQ2FsbGVyKCkgJiYgIWN1cnJlbnRXb3JsZCgqY2FsbEZyYW1lLmxleGljYWxH
bG9iYWxPYmplY3Qodm0pKS5pc05vcm1hbCgpOwogfQogCiB2b2lkIERvY3VtZW50OjpwbGF0Zm9y
bVN1c3BlbmRPclN0b3BBY3RpdmVET01PYmplY3RzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBlNGU3YWM5ZmQ5YzIzZmI1OWU3Y2IxNTMwODkyMzJhNmZjOWY1M2M1Li5m
YTViZjYxZDc0NGNhMDJlNmJlNGEyZmNmMWEzMDQwYjYzZmU4OWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMjA2LDcgKzIyMDYsNyBAQCBTdHJpbmcgSW50ZXJuYWxz
OjpwYXJzZXJNZXRhRGF0YShKU0M6OkpTVmFsdWUgY29kZSkKIHsKICAgICBKU0M6OlZNJiB2bSA9
IGNvbnRleHREb2N1bWVudCgpLT52bSgpOwogICAgIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSB2bS50b3BDYWxsRnJhbWU7Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsK
ICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogCiAgICAgaWYgKCFjb2RlIHx8IGNv
ZGUuaXNOdWxsKCkgfHwgY29kZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0zNDgwLDcgKzM0ODAsOCBA
QCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJbnRlcm5hbHM6OmRlc2VyaWFsaXplQnVmZmVy
KEFycmF5QnVmZmVyJiBidWZmZXIpIGNvbgogCiBib29sIEludGVybmFsczo6aXNGcm9tQ3VycmVu
dFdvcmxkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNXb3JsZENv
bXBhdGlibGUoKmNvbnRleHREb2N1bWVudCgpLT52bSgpLnRvcENhbGxGcmFtZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCB2YWx1ZSk7CisgICAgSlNDOjpWTSYgdm0gPSBjb250ZXh0RG9jdW1lbnQo
KS0+dm0oKTsKKyAgICByZXR1cm4gaXNXb3JsZENvbXBhdGlibGUoKnZtLnRvcENhbGxGcmFtZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIHZhbHVlKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNl
dFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sIGVuYWJsZWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381769</attachid>
            <date>2019-10-23 20:15:11 -0700</date>
            <delta_ts>2019-10-23 20:25:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203351-20191023201511.patch</filename>
            <type>text/plain</type>
            <size>26546</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YWU0OTc3ZDNjYjYzOTVmODRjZDNmNTk4YTJmMDVjOTdkNzU0YTdiLi5mYzEzYjA0MjA2YzY2NTNj
MjBiZTQ5NTE1MmMzZDIxYzQ1NmMwOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSB3YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRnJhbWU6
OmxleGljYWxHbG9iYWxPYmplY3QoKSBpcyBubyBsb25nZXIgY2FsbGVkIGZyZXF1ZW50bHkuIFdl
IGNhbiBqdXN0IG1ha2UgdGhlIGN1cnJlbnQgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBh
cyBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QsCisgICAgICAgIGFuZCByZW1vdmUgd2Fz
bUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6Omhhc0JyZWFrcG9pbnQpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6bGV4
aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZTo6c2NvcGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1Zh
bHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QgY29uc3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgIChJbnNw
ZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsZXhp
Y2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAq
IGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6bm90aWZ5RGVidWdnZXJPZlVud2luZGluZyk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRl
QXJndW1lbnRzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpSZXRyaWV2
ZUFyZ3VtZW50c0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0
b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUFyZ3VtZW50cyk6
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
bGV4aWNhbEdsb2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisKIDIw
MTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5OWEwOWU1NDg5OTJmNTM5ZGMxZWNiMGYyN2YzZjkxN2EzMzFiMjUyLi45ZjJmZWI5ZTYyYTEy
MjVhMWE1ZDU0MDI1NzM3OWYxODIxMjRhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBSZW1vdmUgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25W
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNwb25zaWJsZURvY3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlckltcGwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBh
cnNlck1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNGcm9tQ3VycmVu
dFdvcmxkIGNvbnN0KToKKwogMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5k
ZXggY2RkMTk1ZjBkMWE2YWQxZDE5ZGNjOGYyMWQ0ZWZiOGI5YzI0OTE2ZS4uZGRhNmQwNTcyZWMz
ZTBmNTJjMmM2ZDM3YjliM2FmZDIwOTY1N2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6
aGFzQnJlYWtwb2ludChTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3Np
dGlvbiwgQnIKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSk7CiAg
ICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNv
dW50cyBhcyAiZmFsc2UiLgogICAgICAgICBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25k
aXRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQg
RGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgpCiAgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0g
dHJ1ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CiAgICAgbV9j
dXJyZW50Q2FsbEZyYW1lID0gbV92bS50b3BDYWxsRnJhbWU7Ci0gICAgcGF1c2VJZk5lZWRlZCht
X2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgcGF1c2VJZk5l
ZWRlZChtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSkpOwogfQog
CiB2b2lkIERlYnVnZ2VyOjpjb250aW51ZVByb2dyYW0oKQpAQCAtNjc1LDcgKzY3NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJh
bWUoVk0mIHZtLCBDYWxsRnJhbWUqCiB7CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWxsRnJhbWUtPndhc21Bd2FyZUxleGljYWxHbG9i
YWxPYmplY3Qodm0pOworICAgIHJldHVybiBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
dm0pOwogfQogCiB2b2lkIERlYnVnZ2VyOjp1cGRhdGVDYWxsRnJhbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxGcmFtZVVwZGF0ZUFjdGlv
biBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCAyY2U3MmU4YzJhZmFjY2MwOWNmMDUyNGE4MzA1MmUwZDdl
MzRiYzcyLi4wMTVkMTllNWVhNGI5NjRhZDA1MzNhZWUzOTdmNTM5N2YyNjE2ZjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdAogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBWTSYgdm0gPSBtX3ZhbGlkTWFj
aGluZUZyYW1lLT5kZXByZWNhdGVkVk0oKTsKLSAgICByZXR1cm4gdm0uZGVwcmVjYXRlZFZNRW50
cnlHbG9iYWxPYmplY3QobV92YWxpZE1hY2hpbmVGcmFtZS0+d2FzbUF3YXJlTGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSkpOworICAgIHJldHVybiB2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVj
dChtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiB9CiAKIFNv
dXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CkBAIC0xNzEsNyArMTcx
LDcgQEAgRGVidWdnZXJTY29wZSogRGVidWdnZXJDYWxsRnJhbWU6OnNjb3BlKCkKICAgICAgICAg
ZWxzZSBpZiAoSlNDYWxsZWUqIGNhbGxlZSA9IGpzRHluYW1pY0Nhc3Q8SlNDYWxsZWUqPih2bSwg
bV92YWxpZE1hY2hpbmVGcmFtZS0+anNDYWxsZWUoKSkpCiAgICAgICAgICAgICBzY29wZSA9IGNh
bGxlZS0+c2NvcGUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlk
TWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbExleGljYWxFbnZpcm9u
bWVudCgpOworICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICAgICAg
bV9zY29wZS5zZXQodm0sIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZSh2bSwgc2NvcGUpKTsKICAgICB9
CkBAIC0xOTMsNyArMTkzLDcgQEAgRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgRGVidWdnZXJDYWxs
RnJhbWU6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBQcm9ncmFtVHlwZTsKIH0KIAotSlNWYWx1
ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKK0pTVmFsdWUgRGVidWdnZXJD
YWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQo
KSk7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkBAIC0yMTUsNyArMjE1LDcgQEAgSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IE5vdFN0cmljdE1vZGU7CiAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKQogICAgICAgICBlY21hTW9kZSA9IFN0cmljdE1vZGU7Ci0gICAgcmV0dXJuIHRoaXNW
YWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBl
Y21hTW9kZSk7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIAogLy8gRXZhbHVhdGUg
c29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCkBAIC0yNjUs
NyArMjY1LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lvbihKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIGlnbm9yZWRQcmV2aW91c1Njb3BlLCBzY29wZUV4dGVuc2lvbk9iamVjdCkpOwogICAg
IH0KIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdGhpcy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSB0aGlzLT50aGlzVmFsdWUodm0pOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IHNjb3BlKCktPmpzU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
CmluZGV4IDEwZmUzMTgwM2E1MGRmYjFjYzg3YmViNzYxMWQxNzIyNzA5OGYyYzIuLmFjNmVjZDM0
NTE4NGUzZTQxZGM4YTgxODU3YzY2MDcyYTkyZTFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC02MCw3ICs2MCw3IEBA
IGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RGVidWdnZXJDYWxs
RnJhbWU+IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlclNjb3BlKiBzY29wZSgpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgdGhpc1ZhbHVlKFZNJikgY29uc3Q7CiAgICAgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihjb25zdCBTdHJpbmcmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QsIE5h
a2VkUHRyPEV4Y2VwdGlvbj4mKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV92YWxpZE1hY2hpbmVGcmFtZSB8fCBpc1RhaWxEZWxldGVkKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcAppbmRleCAwNDJkNzliMDAwMzIzOTNmN2M1Yzg4ZGU0MzUyZjAzMGMzYjA0YTFmLi41ZmVm
ZTk4OTVjMGU0YTM0ZWZkNzBlOTM5YmFiNDA3ZDFhMjY2YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CkBAIC0yMDYsOSArMjA2LDkgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
Q2hhaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkodGhpcy0+Z2xvYmFsT2JqZWN0KHZtKSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0phdmFTY3Jp
cHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBjb25zdAorSlNWYWx1ZSBK
U0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1wbCgpLnRoaXNWYWx1ZSgpOworICAgIHJldHVy
biBpbXBsKCkudGhpc1ZhbHVlKGdsb2JhbE9iamVjdC0+dm0oKSk7CiB9CiAKIEpTVmFsdWUgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lOjppc1RhaWxEZWxldGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCA1MzM0ZDIxMDMwMWE2OTQ2ZGJlN2VhM2MyMDE4MTczYzkzNWM0
NzE5Li5hYzhkMzY4ZmQ4MDMzMWUzYTJkMTcxOTg5NDZhZDJiYmUyMTJlZWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVibGljIFJl
ZkNvdW50ZWQ8SmF2YVNjcmlwdENhbGxGcmFtZT4gewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGRlcHJlY2F0ZWRWTUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
ckNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKTsgfQogICAgIGJvb2wg
aXNUYWlsRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPmlzVGFp
bERlbGV0ZWQoKTsgfQogCi0gICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOyB9CisgICAgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRo
aXNWYWx1ZSh2bSk7IH0KICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIGV4Y2VwdGlvbikgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4
dGVuc2lvbiwgZXhjZXB0aW9uKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCA2NzJiMjY4YTUxZDM4ZDczNTNh
ZTEwY2E1NzgzOWE1ZDAyMzQ5MTQ5Li5mNGI5ZTNiZDMwNmQyYTRjYmExY2RmMDM5NGZlOTJjNjQ4
MGU1ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcApAQCAtMTkwLDE4ICsxOTAsNiBAQCBSZWdpc3RlciogQ2FsbEZyYW1lOjp0b3BPZkZy
YW1lSW50ZXJuYWwoKQogICAgIHJldHVybiByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+c3RhY2tQ
b2ludGVyT2Zmc2V0KCk7CiB9CiAKLUpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Ondhc21Bd2Fy
ZUxleGljYWxHbG9iYWxPYmplY3QoVk0mIHZtKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
LSAgICBpZiAoIWNhbGxlZSgpLmlzV2FzbSgpKQotICAgICAgICByZXR1cm4gbGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwotICAgIHJldHVybiB2bS53YXNtQ29udGV4dC5sb2FkKCktPm93bmVyPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4oKS0+Z2xvYmFsT2JqZWN0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh2bSk7Ci0gICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsKLSNlbmRpZgotfQot
CiBib29sIENhbGxGcmFtZTo6aXNBbnlXYXNtQ2FsbGVlKCkKIHsKICAgICBDYWxsZWVCaXRzIGNh
bGxlZSA9IHRoaXMtPmNhbGxlZSgpOwpAQCAtMzU3LDYgKzM0NSwxNSBAQCB2b2lkIENhbGxGcmFt
ZTo6Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2tUb0tlZXBBbAogICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDApOwogfQogCitK
U0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjpsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxs
ZWUoVk0mIHZtKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICByZXR1cm4g
dm0ud2FzbUNvbnRleHQubG9hZCgpLT5vd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPmds
b2JhbE9iamVjdCgpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCiBi
b29sIGlzRnJvbUpTQ29kZSh2b2lkKiByZXR1cm5BZGRyZXNzKQogewogICAgIFVOVVNFRF9QQVJB
TShyZXR1cm5BZGRyZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuaAppbmRleCAxMGVkZmIwZWI1ZTk1MDM4YjBhNjRiY2VmNDJmMmM1ZTIyMWMyYmI2
Li5kODg3YjQyNjQ2MjZhNWY1MjI1ZWZjZjViYTRhZmVlMzM3NzdjMzA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC0xMjUsMTMgKzEyNSwx
MSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgICAgICByZXR1cm4gdGhpc1tzY29wZVJlZ2lz
dGVyT2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiB3YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0KFZNJik7Ci0KICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0FueVdhc21DYWxsZWUoKTsKIAogICAgICAgICAvLyBH
bG9iYWwgb2JqZWN0IGluIHdoaWNoIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvZGUgd2FzIGRl
ZmluZWQuCiAgICAgICAgIC8vIERpZmZlcnMgZnJvbSBWTTo6ZGVwcmVjYXRlZFZNRW50cnlHbG9i
YWxPYmplY3QoKSBkdXJpbmcgZnVuY3Rpb24gY2FsbHMgYWNyb3NzIHdlYiBicm93c2VyIGZyYW1l
cy4KLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QoKSBjb25zdDsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QoVk0mKSBjb25zdDsK
IAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24KICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI3MgpAQCAtMTY5LDYgKzE2
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgQ2FsbFNpdGVJbmRleCB1bnNhZmVDYWxs
U2l0ZUluZGV4KCkgY29uc3Q7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgY2FsbFNp
dGVCaXRzQXNCeXRlY29kZU9mZnNldCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdEZyb21XYXNtQ2FsbGVlKFZNJikg
Y29uc3Q7CiAgICAgcHVibGljOgogCiAgICAgICAgIC8vIFRoaXMgd2lsbCB0cnkgdG8gZ2V0IHlv
dSB0aGUgYnl0ZWNvZGUgb2Zmc2V0LCBidXQgeW91IHNob3VsZCBiZSBhd2FyZSB0aGF0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRl
eCBmZjgxNTk3MzYwMWQ0NTIxN2YwOTY3YjVhZDA1OGNiZGRiOTRiYjVjLi5lODY3M2JmMGE0YThl
YTdlZjBiYjQ5NDI3MjU0YWVjNzcwM2NmMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxNSw3ICs1MTUsNyBAQCBjbGFz
cyBHZXRDYXRjaEhhbmRsZXJGdW5jdG9yIHsKIAogQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBu
b3RpZnlEZWJ1Z2dlck9mVW53aW5kaW5nKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+d2FzbUF3YXJl
TGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CiAgICAgYXV0byBjYXRjaFNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dl
ciA9IGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSkgewogICAgICAgICBTdXNwZW5kRXhjZXB0aW9u
U2NvcGUgc2NvcGUoJnZtKTsKQEAgLTEyMTYsNyArMTIxNiw3IEBAIE5FVkVSX0lOTElORSB2b2lk
IEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rVHlwZSBk
ZWJ1Z0hvCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5kZXByZWNhdGVkVk0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgRGVidWdnZXIqIGRlYnVn
Z2VyID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CisgICAg
RGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKS0+
ZGVidWdnZXIoKTsKICAgICBpZiAoIWRlYnVnZ2VyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5k
ZXggYzMxNzJmNzU3MWUyODQ3ZDRjMTRhYmU0YjkxYzE5MDBmNWZjMTk0ZC4uYTU4M2I0OGNiMjI2
NWNlNTIyMzFjMDZkMmIyNThjYTI3OWZiZTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTM2OSwxMyArMzY5LDEzIEBA
IGludHB0cl90IFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZUlEKCkKICAgICByZXR1cm4gbm9T
b3VyY2VJRDsKIH0KIAotQ2xvbmVkQXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVh
dGVBcmd1bWVudHMoKQorQ2xvbmVkQXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVh
dGVBcmd1bWVudHMoVk0mIHZtKQogewogICAgIEFTU0VSVChtX2NhbGxGcmFtZSk7CiAgICAgQ2Fs
bEZyYW1lKiBwaHlzaWNhbEZyYW1lID0gbV9jYWxsRnJhbWU7CiAgICAgLy8gRklYTUU6IFJldmlz
aXQgSlNHbG9iYWxPYmplY3QuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMzIwNAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBwaHlz
aWNhbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHBoeXNpY2FsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pOwogICAg
IENsb25lZEFyZ3VtZW50cyogYXJndW1lbnRzOwogICAgIEFyZ3VtZW50c01vZGUgbW9kZTsKICAg
ICBpZiAoT3B0aW9uczo6dXNlRnVuY3Rpb25Eb3RBcmd1bWVudHMoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAppbmRleCBkMzU3NjFmZTBj
NDIzNGIzOWNmNTA3YjFiNjQ1NjU1ODRhODQ5Yjg2Li4wYzgxZDFiMzIzNjk4Njc5Mjc0MjdjNmQw
Zjc0ZjE0OTMyM2Q3Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5oCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIFN0YWNrVmlzaXRvciB7
CiAgICAgICAgIE9wdGlvbmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBjYWxsZWVTYXZlUmVnaXN0
ZXJzRm9yVW53aW5kaW5nKCk7CiAjZW5kaWYKIAotICAgICAgICBDbG9uZWRBcmd1bWVudHMqIGNy
ZWF0ZUFyZ3VtZW50cygpOworICAgICAgICBDbG9uZWRBcmd1bWVudHMqIGNyZWF0ZUFyZ3VtZW50
cyhWTSYpOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbEZyYW1lOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBJ
bmRlbnRlciA9IEluZGVudGVyKCkpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNTc5OGQzMGI4YjU4NmI3MzRiOGZkODYwNDg4
ODRmZGRlNzZiMDk0ZC4uNGJkOGZhZWE5Mjc3ZWIxZGY4MjViZmJjNTI5OTZmZTdhMDU4Y2I0NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBA
IC0xOTQzLDcgKzE5NDMsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90
aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbAogCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKGNhbGxGcmFtZSkKLSAg
ICAgICAgZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Cisg
ICAgICAgIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgqdm0p
OwogICAgIGVsc2UKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gcHJvdG9GcmFtZS0+Y2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgqdm0pOwogICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAppbmRleCAwNGI4NzFlMjk5MjgyN2M1NjMzZDM3MzQyOTRhNzA0OWUzY2E0ZjJkLi40MGE3
MzU0NTQ0ZGFiZDg2MzhhOTFlYzc5ZTE5Y2Y0YWEyMjk0NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMjcxLDggKzI3MSw5IEBAIENhbGxU
eXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxE
YXRhKQogCiBjbGFzcyBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IgewogcHVibGljOgotICAgIFJl
dHJpZXZlQXJndW1lbnRzRnVuY3RvcihKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKLSAgICAgICAg
OiBtX3RhcmdldENhbGxlZShmdW5jdGlvbk9iaikKKyAgICBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0
b3IoVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKKyAgICAgICAgOiBtX3ZtKHZtKQor
ICAgICAgICAsIG1fdGFyZ2V0Q2FsbGVlKGZ1bmN0aW9uT2JqKQogICAgICAgICAsIG1fcmVzdWx0
KGpzTnVsbCgpKQogICAgIHsKICAgICB9CkBAIC0yODgsMTggKzI4OSwxOSBAQCBjbGFzcyBSZXRy
aWV2ZUFyZ3VtZW50c0Z1bmN0b3IgewogICAgICAgICBpZiAoY2FsbGVlICE9IG1fdGFyZ2V0Q2Fs
bGVlKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAg
ICAgbV9yZXN1bHQgPSBKU1ZhbHVlKHZpc2l0b3ItPmNyZWF0ZUFyZ3VtZW50cygpKTsKKyAgICAg
ICAgbV9yZXN1bHQgPSBKU1ZhbHVlKHZpc2l0b3ItPmNyZWF0ZUFyZ3VtZW50cyhtX3ZtKSk7CiAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgfQogCiBwcml2YXRlOgorICAg
IFZNJiBtX3ZtOwogICAgIEpTT2JqZWN0KiBtX3RhcmdldENhbGxlZTsKICAgICBtdXRhYmxlIEpT
VmFsdWUgbV9yZXN1bHQ7CiB9OwogCiBzdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUFyZ3VtZW50cyhW
TSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKIHsK
LSAgICBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IgZnVuY3RvcihmdW5jdGlvbk9iaik7CisgICAg
UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yIGZ1bmN0b3Iodm0sIGZ1bmN0aW9uT2JqKTsKICAgICBp
ZiAoY2FsbEZyYW1lKQogICAgICAgICBjYWxsRnJhbWUtPml0ZXJhdGUodm0sIGZ1bmN0b3IpOwog
ICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oCmluZGV4IGE5YTNlZmU0YmY3OTZjY2EyYjY5MDcxNWQ0MmIzOWQzMGYyNTQ0NmYu
LjA5MGVkNzU5Yzk5ODAyMmFkNmU3NDllMDVkZmE2NjQ2OGE0YWI0MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKQEAgLTE0MCw4ICsxNDAsMTMgQEAgaW5saW5lIEpT
U2NvcGUqIFJlZ2lzdGVyOjpzY29wZSgpIGNvbnN0CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1Njb3Bl
Kj4odW5ib3hlZENlbGwoKSk7CiB9CiAKLWlubGluZSBKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1l
OjpsZXhpY2FsR2xvYmFsT2JqZWN0KCkgY29uc3QKK2lubGluZSBKU0dsb2JhbE9iamVjdCogQ2Fs
bEZyYW1lOjpsZXhpY2FsR2xvYmFsT2JqZWN0KFZNJiB2bSkgY29uc3QKIHsKKyAgICBVTlVTRURf
UEFSQU0odm0pOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAoY2FsbGVlKCkuaXNX
YXNtKCkpCisgICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUo
dm0pOworI2VuZGlmCiAgICAgcmV0dXJuIGpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKaW5kZXgg
ODQzNmRlYzA5MWJhMmYyNjUyNDdlNzI3YTFhZWZhNDI3NmIxNzI0OS4uZjdkOTE5MDU4OTg0ZGMw
MmE3NGY0YWQyODI3MTViY2QyZTU2N2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cElubGluZXMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIEFMV0FZU19JTkxJTkUg
aW50IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVk
IHN0YXJ0T2ZmCiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgICAgICAvLyBGSVhNRTogUmV2aXNpdCBKU0dsb2JhbE9iamVjdC4KICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzIwNAotICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udG9wQ2FsbEZyYW1lLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2
bS50b3BDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pOwogICAgICAgICB0aHJvd1Nj
b3BlLnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXJyb3JUb1Rocm93KGdsb2JhbE9iamVj
dCkpOwogICAgICAgICBpZiAoIWhhc0hhcmRFcnJvcihtX2NvbnN0cnVjdGlvbkVycm9yQ29kZSkp
CiAgICAgICAgICAgICByZXNldCgpOwpAQCAtMjczLDcgKzI3Myw3IEBAIEFMV0FZU19JTkxJTkUg
TWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaElubGluZShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywg
dW5zaWduZWQKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IEpTR2xvYmFsT2JqZWN0LgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2bS50b3BDYWxsRnJhbWUtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZt
LnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSk7CiAgICAgICAgIHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBlcnJvclRvVGhyb3coZ2xvYmFsT2JqZWN0
KSk7CiAgICAgICAgIGlmICghaGFzSGFyZEVycm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkK
ICAgICAgICAgICAgIHJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNt
VG9KUy5jcHAKaW5kZXggODY3NDYyNzA2N2M4MzQxOTU3MzAzNDE5ZDJiOWYzM2MwYmRkZjczZS4u
OThhNzg3NGY2ZDFhMjYyZDQ2MzVlZDM1NDg3ODg5NDI5YzQ1ZWQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIEV4cGVj
dGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVy
ZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzIwNgogICAgICAgICAgICAgICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+ZGVwcmVjYXRlZFZNKCk7CiAgICAgICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdi50
b0ludDMyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdi50b0ludDMyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpOwog
ICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hJ
Zk5vdE51bWJlcihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJz
KSk7CkBAIC0zNDAsNyArMzQwLDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdh
c21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA2
CiAgICAgICAgICAgICAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5kZXByZWNhdGVkVk0oKTsKICAg
ICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odi50b051bWJlcihj
YWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxmbG9hdD4odi50b051bWJlcihjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxP
YmplY3Qodm0pKSk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBhdXRvIG5vdEFOdW1i
ZXIgPSBqaXQuYnJhbmNoSWZOb3ROdW1iZXIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CkBAIC0zNzksNyArMzc5LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhW
TSYgdm0KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzMjA2CiAgICAgICAgICAgICAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5kZXBy
ZWNhdGVkVk0oKTsKICAgICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwotICAgICAgICAgICAgICAgIHJldHVybiB2LnRvTnVtYmVyKGNhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdi50
b051bWJlcihjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pKTsKICAgICAgICAgICAg
IH07CiAKICAgICAgICAgICAgIGF1dG8gbm90QU51bWJlciA9IGppdC5icmFuY2hJZk5vdE51bWJl
cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAppbmRleCAwOWI3ODRmOWVkMzU2YWQ2YmNi
YTg0ZjVlNjNiZjhhNmYxZWEyNjdkLi5jYmYzZDBiZmM2YjZiNmEwODllMTVhM2RlYTlmMDYyYjFm
MDliZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCkBAIC03NCw5
ICs3NCwxMCBAQCBKU0M6OlZNJiBjb21tb25WTVNsb3coKQogCiBGcmFtZSogbGV4aWNhbEZyYW1l
RnJvbUNvbW1vblZNKCkKIHsKLSAgICBpZiAoYXV0byogdG9wQ2FsbEZyYW1lID0gY29tbW9uVk0o
KS50b3BDYWxsRnJhbWUpIHsKLSAgICAgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IEpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gSlNDOjpqc0R5bmFtaWND
YXN0PEpTRE9NV2luZG93Kj4oY29tbW9uVk0oKSwgZ2xvYmFsT2JqZWN0KSkgeworICAgIEpTQzo6
Vk0mIHZtID0gY29tbW9uVk0oKTsKKyAgICBpZiAoYXV0byogdG9wQ2FsbEZyYW1lID0gdm0udG9w
Q2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2
bSkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gSlNDOjpqc0R5bmFtaWNDYXN0
PEpTRE9NV2luZG93Kj4odm0sIGdsb2JhbE9iamVjdCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogZnJhbWUgPSB3aW5kb3ctPndyYXBwZWQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZnJhbWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA0MDZiYWIzMGJkNjRmODIxMzk4MGM1
MmI1YjE0ZjQ2N2NhYzcwZGQyLi5kYzM4N2Q1NDE1NmRkY2MyMzBjYmVmMzM5ZjMwMTBlMzM0ZWEz
OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKQEAgLTI4MCw3ICsyODAsNyBAQCBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudChWTSYg
dm0sIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogICAgIGF1dG8qIGNhbGxlckZyYW1lID0gZnVuY3Rv
ci5jYWxsZXJGcmFtZSgpOwogICAgIGlmICghY2FsbGVyRnJhbWUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBhc0pTRE9NV2luZG93KGNhbGxlckZyYW1lLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT53cmFwcGVkKCkuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gYXNKU0RPTVdp
bmRvdyhjYWxsZXJGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpLT53cmFwcGVkKCkuZG9j
dW1lbnQoKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpcmVGcmFtZUNsZWFyZWRXYXRj
aHBvaW50c0ZvcldpbmRvdyhET01XaW5kb3cqIHdpbmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCmluZGV4IDY3NWYyMTc0ZjlhN2NiY2MyZDI2
MDllNjg4ZjRkOTZiOWJkMTJlNzYuLjk4NWIzZGIwZDNmMTYxMDAwZjFmYWQ5YjQzMjk3OGU1NDYy
M2FkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRD
bG9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25l
LmNwcApAQCAtNDEsMTEgKzQxLDEyIEBAIGVudW0gY2xhc3MgQ2xvbmVNb2RlIHsKIAogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIGNsb25lQXJyYXlCdWZmZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2xvbmVNb2RlIG1vZGUpCiB7
CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKwogICAgIEFTU0VSVChs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCkpOwotICAgIEFTU0VSVChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSA9PSBsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KHZtKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIAotICAgIFZNJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byogYnVmZmVyID0gdG9VbnNoYXJlZEFycmF5QnVm
ZmVyKHZtLCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCA5NTRhYTI5N2NjMWM1NzQ4OGIzYTllNjZlNTEwYmM4MTY0
MjAwZjQyLi43ZDAwZjIyMjRkNmFhOTEwODIwNzU3N2JjYWNkNjYxMzFjOWE0ZmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2MTgsOCArMjYxOCw5IEBAIHZvaWQgRG9jdW1lbnQ6OnJl
c3VtZURldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlcygpCiBib29sIERvY3VtZW50Ojpz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAogewogICAg
IC8vIEJ5cGFzcyB0aGlzIHBvbGljeSB3aGVuIHRoZSB3b3JsZCBpcyBrbm93biwgYW5kIGl0IG5v
dCB0aGUgbm9ybWFsIHdvcmxkLgotICAgIGF1dG8mIGNhbGxGcmFtZSA9ICpjb21tb25WTSgpLnRv
cENhbGxGcmFtZTsKLSAgICByZXR1cm4gJmNhbGxGcmFtZSAhPSBKU0M6OkNhbGxGcmFtZTo6bm9D
YWxsZXIoKSAmJiAhY3VycmVudFdvcmxkKCpjYWxsRnJhbWUubGV4aWNhbEdsb2JhbE9iamVjdCgp
KS5pc05vcm1hbCgpOworICAgIEpTQzo6Vk0mIHZtID0gY29tbW9uVk0oKTsKKyAgICBhdXRvJiBj
YWxsRnJhbWUgPSAqdm0udG9wQ2FsbEZyYW1lOworICAgIHJldHVybiAmY2FsbEZyYW1lICE9IEpT
Qzo6Q2FsbEZyYW1lOjpub0NhbGxlcigpICYmICFjdXJyZW50V29ybGQoKmNhbGxGcmFtZS5sZXhp
Y2FsR2xvYmFsT2JqZWN0KHZtKSkuaXNOb3JtYWwoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cGxh
dGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggZTRlN2FjOWZkOWMyM2ZiNTllN2NiMTUzMDg5MjMyYTZmYzlmNTNj
NS4uZmE1YmY2MWQ3NDRjYTAyZTZiZTRhMmZjZjFhMzA0MGI2M2ZlODliNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjIwNiw3ICsyMjA2LDcgQEAgU3RyaW5nIEludGVy
bmFsczo6cGFyc2VyTWV0YURhdGEoSlNDOjpKU1ZhbHVlIGNvZGUpCiB7CiAgICAgSlNDOjpWTSYg
dm0gPSBjb250ZXh0RG9jdW1lbnQoKS0+dm0oKTsKICAgICBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lID0gdm0udG9wQ2FsbEZyYW1lOwotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2
bSk7CiAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKIAogICAgIGlmICghY29kZSB8
fCBjb2RlLmlzTnVsbCgpIHx8IGNvZGUuaXNVbmRlZmluZWQoKSkgewpAQCAtMzQ4MCw3ICszNDgw
LDggQEAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50ZXJuYWxzOjpkZXNlcmlhbGl6ZUJ1
ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKSBjb24KIAogYm9vbCBJbnRlcm5hbHM6OmlzRnJvbUN1
cnJlbnRXb3JsZChKU0M6OkpTVmFsdWUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzV29y
bGRDb21wYXRpYmxlKCpjb250ZXh0RG9jdW1lbnQoKS0+dm0oKS50b3BDYWxsRnJhbWUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgdmFsdWUpOworICAgIEpTQzo6Vk0mIHZtID0gY29udGV4dERvY3Vt
ZW50KCktPnZtKCk7CisgICAgcmV0dXJuIGlzV29ybGRDb21wYXRpYmxlKCp2bS50b3BDYWxsRnJh
bWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxz
OjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBlbmFibGVkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381770</attachid>
            <date>2019-10-23 20:25:14 -0700</date>
            <delta_ts>2019-10-23 21:56:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203351-20191023202513.patch</filename>
            <type>text/plain</type>
            <size>26569</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YWU0OTc3ZDNjYjYzOTVmODRjZDNmNTk4YTJmMDVjOTdkNzU0YTdiLi5mYzEzYjA0MjA2YzY2NTNj
MjBiZTQ5NTE1MmMzZDIxYzQ1NmMwOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSB3YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsRnJhbWU6
OmxleGljYWxHbG9iYWxPYmplY3QoKSBpcyBubyBsb25nZXIgY2FsbGVkIGZyZXF1ZW50bHkuIFdl
IGNhbiBqdXN0IG1ha2UgdGhlIGN1cnJlbnQgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBh
cyBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QsCisgICAgICAgIGFuZCByZW1vdmUgd2Fz
bUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6Omhhc0JyZWFrcG9pbnQpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6bGV4
aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZTo6c2NvcGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1Zh
bHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QgY29uc3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgIChJbnNw
ZWN0b3I6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpsZXhp
Y2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxsZWUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWU6Ondhc21Bd2FyZUxleGljYWxHbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAq
IGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6bm90aWZ5RGVidWdnZXJPZlVud2luZGluZyk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRl
QXJndW1lbnRzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpSZXRyaWV2
ZUFyZ3VtZW50c0Z1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0
b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUFyZ3VtZW50cyk6
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
bGV4aWNhbEdsb2JhbE9iamVjdCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAgICAqIHdh
c20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisKIDIw
MTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5OWEwOWU1NDg5OTJmNTM5ZGMxZWNiMGYyN2YzZjkxN2EzMzFiMjUyLi45ZjJmZWI5ZTYyYTEy
MjVhMWE1ZDU0MDI1NzM3OWYxODIxMjRhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBSZW1vdmUgd2FzbUF3YXJlTGV4aWNhbEdsb2JhbE9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db21tb25W
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNwb25zaWJsZURvY3VtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVBcnJheUJ1ZmZlckltcGwpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBh
cnNlck1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNGcm9tQ3VycmVu
dFdvcmxkIGNvbnN0KToKKwogMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5k
ZXggY2RkMTk1ZjBkMWE2YWQxZDE5ZGNjOGYyMWQ0ZWZiOGI5YzI0OTE2ZS4uZGRhNmQwNTcyZWMz
ZTBmNTJjMmM2ZDM3YjliM2FmZDIwOTY1N2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6
aGFzQnJlYWtwb2ludChTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3Np
dGlvbiwgQnIKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSk7CiAg
ICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNv
dW50cyBhcyAiZmFsc2UiLgogICAgICAgICBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25k
aXRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQg
RGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgpCiAgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0g
dHJ1ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CiAgICAgbV9j
dXJyZW50Q2FsbEZyYW1lID0gbV92bS50b3BDYWxsRnJhbWU7Ci0gICAgcGF1c2VJZk5lZWRlZCht
X2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgcGF1c2VJZk5l
ZWRlZChtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSkpOwogfQog
CiB2b2lkIERlYnVnZ2VyOjpjb250aW51ZVByb2dyYW0oKQpAQCAtNjc1LDcgKzY3NSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJh
bWUoVk0mIHZtLCBDYWxsRnJhbWUqCiB7CiAgICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWxsRnJhbWUtPndhc21Bd2FyZUxleGljYWxHbG9i
YWxPYmplY3Qodm0pOworICAgIHJldHVybiBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
dm0pOwogfQogCiB2b2lkIERlYnVnZ2VyOjp1cGRhdGVDYWxsRnJhbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxGcmFtZVVwZGF0ZUFjdGlv
biBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCAyY2U3MmU4YzJhZmFjY2MwOWNmMDUyNGE4MzA1MmUwZDdl
MzRiYzcyLi4wMTVkMTllNWVhNGI5NjRhZDA1MzNhZWUzOTdmNTM5N2YyNjE2ZjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdAogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBWTSYgdm0gPSBtX3ZhbGlkTWFj
aGluZUZyYW1lLT5kZXByZWNhdGVkVk0oKTsKLSAgICByZXR1cm4gdm0uZGVwcmVjYXRlZFZNRW50
cnlHbG9iYWxPYmplY3QobV92YWxpZE1hY2hpbmVGcmFtZS0+d2FzbUF3YXJlTGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSkpOworICAgIHJldHVybiB2bS5kZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVj
dChtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSk7CiB9CiAKIFNv
dXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CkBAIC0xNzEsNyArMTcx
LDcgQEAgRGVidWdnZXJTY29wZSogRGVidWdnZXJDYWxsRnJhbWU6OnNjb3BlKCkKICAgICAgICAg
ZWxzZSBpZiAoSlNDYWxsZWUqIGNhbGxlZSA9IGpzRHluYW1pY0Nhc3Q8SlNDYWxsZWUqPih2bSwg
bV92YWxpZE1hY2hpbmVGcmFtZS0+anNDYWxsZWUoKSkpCiAgICAgICAgICAgICBzY29wZSA9IGNh
bGxlZS0+c2NvcGUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlk
TWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbExleGljYWxFbnZpcm9u
bWVudCgpOworICAgICAgICAgICAgc2NvcGUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICAgICAg
bV9zY29wZS5zZXQodm0sIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZSh2bSwgc2NvcGUpKTsKICAgICB9
CkBAIC0xOTMsNyArMTkzLDcgQEAgRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgRGVidWdnZXJDYWxs
RnJhbWU6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBQcm9ncmFtVHlwZTsKIH0KIAotSlNWYWx1
ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKK0pTVmFsdWUgRGVidWdnZXJD
YWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQo
KSk7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkBAIC0yMTUsNyArMjE1LDcgQEAgSlNWYWx1ZSBEZWJ1
Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKCkgY29uc3QKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9
IE5vdFN0cmljdE1vZGU7CiAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKQogICAgICAgICBlY21hTW9kZSA9IFN0cmljdE1vZGU7Ci0gICAgcmV0dXJuIHRoaXNW
YWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBl
Y21hTW9kZSk7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIGVjbWFNb2RlKTsKIH0KIAogLy8gRXZhbHVhdGUg
c29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCkBAIC0yNjUs
NyArMjY1LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IKICAgICAgICAgZ2xvYmFsT2JqZWN0
LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lvbihKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIGlnbm9yZWRQcmV2aW91c1Njb3BlLCBzY29wZUV4dGVuc2lvbk9iamVjdCkpOwogICAg
IH0KIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdGhpcy0+dGhpc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSB0aGlzLT50aGlzVmFsdWUodm0pOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IHNjb3BlKCktPmpzU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5o
CmluZGV4IDEwZmUzMTgwM2E1MGRmYjFjYzg3YmViNzYxMWQxNzIyNzA5OGYyYzIuLmFjNmVjZDM0
NTE4NGUzZTQxZGM4YTgxODU3YzY2MDcyYTkyZTFkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC02MCw3ICs2MCw3IEBA
IGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RGVidWdnZXJDYWxs
RnJhbWU+IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlclNjb3BlKiBzY29wZSgpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgdGhpc1ZhbHVlKFZNJikgY29uc3Q7CiAgICAgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihjb25zdCBTdHJpbmcmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QsIE5h
a2VkUHRyPEV4Y2VwdGlvbj4mKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV92YWxpZE1hY2hpbmVGcmFtZSB8fCBpc1RhaWxEZWxldGVkKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcAppbmRleCAwNDJkNzliMDAwMzIzOTNmN2M1Yzg4ZGU0MzUyZjAzMGMzYjA0YTFmLi41ZmVm
ZTk4OTVjMGU0YTM0ZWZkNzBlOTM5YmFiNDA3ZDFhMjY2YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CkBAIC0yMDYsOSArMjA2LDkgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
Q2hhaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkodGhpcy0+Z2xvYmFsT2JqZWN0KHZtKSwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0phdmFTY3Jp
cHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBjb25zdAorSlNWYWx1ZSBK
U0phdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW1wbCgpLnRoaXNWYWx1ZSgpOworICAgIHJldHVy
biBpbXBsKCkudGhpc1ZhbHVlKGdsb2JhbE9iamVjdC0+dm0oKSk7CiB9CiAKIEpTVmFsdWUgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lOjppc1RhaWxEZWxldGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCA1MzM0ZDIxMDMwMWE2OTQ2ZGJlN2VhM2MyMDE4MTczYzkzNWM0
NzE5Li5hYzhkMzY4ZmQ4MDMzMWUzYTJkMTcxOTg5NDZhZDJiYmUyMTJlZWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVibGljIFJl
ZkNvdW50ZWQ8SmF2YVNjcmlwdENhbGxGcmFtZT4gewogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGRlcHJlY2F0ZWRWTUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
ckNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKTsgfQogICAgIGJvb2wg
aXNUYWlsRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPmlzVGFp
bERlbGV0ZWQoKTsgfQogCi0gICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOyB9CisgICAgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRo
aXNWYWx1ZSh2bSk7IH0KICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIGV4Y2VwdGlvbikgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4
dGVuc2lvbiwgZXhjZXB0aW9uKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCA2NzJiMjY4YTUxZDM4ZDczNTNh
ZTEwY2E1NzgzOWE1ZDAyMzQ5MTQ5Li41YWI3YTdiNjU2N2JlODUzY2UwYTJiMjI0MmQ4NTQwYmZm
NTNkMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcApAQCAtMTkwLDE4ICsxOTAsNiBAQCBSZWdpc3RlciogQ2FsbEZyYW1lOjp0b3BPZkZy
YW1lSW50ZXJuYWwoKQogICAgIHJldHVybiByZWdpc3RlcnMoKSArIGNvZGVCbG9jay0+c3RhY2tQ
b2ludGVyT2Zmc2V0KCk7CiB9CiAKLUpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6Ondhc21Bd2Fy
ZUxleGljYWxHbG9iYWxPYmplY3QoVk0mIHZtKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
LSAgICBpZiAoIWNhbGxlZSgpLmlzV2FzbSgpKQotICAgICAgICByZXR1cm4gbGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwotICAgIHJldHVybiB2bS53YXNtQ29udGV4dC5sb2FkKCktPm93bmVyPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4oKS0+Z2xvYmFsT2JqZWN0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh2bSk7Ci0gICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsKLSNlbmRpZgotfQot
CiBib29sIENhbGxGcmFtZTo6aXNBbnlXYXNtQ2FsbGVlKCkKIHsKICAgICBDYWxsZWVCaXRzIGNh
bGxlZSA9IHRoaXMtPmNhbGxlZSgpOwpAQCAtMzU3LDYgKzM0NSwxNiBAQCB2b2lkIENhbGxGcmFt
ZTo6Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2tUb0tlZXBBbAogICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDApOwogfQogCitK
U0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjpsZXhpY2FsR2xvYmFsT2JqZWN0RnJvbVdhc21DYWxs
ZWUoVk0mIHZtKSBjb25zdAoreworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICByZXR1cm4g
dm0ud2FzbUNvbnRleHQubG9hZCgpLT5vd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPmds
b2JhbE9iamVjdCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBu
dWxscHRyOworI2VuZGlmCit9CisKIGJvb2wgaXNGcm9tSlNDb2RlKHZvaWQqIHJldHVybkFkZHJl
c3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJldHVybkFkZHJlc3MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IDEwZWRmYjBlYjVlOTUwMzhi
MGE2NGJjZWY0MmYyYzVlMjIxYzJiYjYuLmQ4ODdiNDI2NDYyNmE1ZjUyMjVlZmNmNWJhNGFmZWUz
Mzc3N2MzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgKQEAgLTEyNSwxMyArMTI1LDExIEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAg
IHJldHVybiB0aGlzW3Njb3BlUmVnaXN0ZXJPZmZzZXRdLlJlZ2lzdGVyOjpzY29wZSgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIHdhc21Bd2FyZUxleGljYWxHbG9iYWxP
YmplY3QoVk0mKTsKLQogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzQW55V2FzbUNh
bGxlZSgpOwogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggdGhlIGN1cnJlbnRs
eSBleGVjdXRpbmcgY29kZSB3YXMgZGVmaW5lZC4KICAgICAgICAgLy8gRGlmZmVycyBmcm9tIFZN
OjpkZXByZWNhdGVkVk1FbnRyeUdsb2JhbE9iamVjdCgpIGR1cmluZyBmdW5jdGlvbiBjYWxscyBh
Y3Jvc3Mgd2ViIGJyb3dzZXIgZnJhbWVzLgotICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCgpIGNvbnN0OworICAgICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdChWTSYpIGNvbnN0OwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBm
dW5jdGlvbgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzMjcyCkBAIC0xNjksNiArMTY3LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBD
YWxsU2l0ZUluZGV4IHVuc2FmZUNhbGxTaXRlSW5kZXgoKSBjb25zdDsKICAgICBwcml2YXRlOgog
ICAgICAgICB1bnNpZ25lZCBjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0RnJvbVdhc21DYWxsZWUoVk0mKSBjb25zdDsKICAgICBwdWJsaWM6CiAKICAgICAgICAgLy8g
VGhpcyB3aWxsIHRyeSB0byBnZXQgeW91IHRoZSBieXRlY29kZSBvZmZzZXQsIGJ1dCB5b3Ugc2hv
dWxkIGJlIGF3YXJlIHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZmODE1OTczNjAxZDQ1MjE3ZjA5NjdiNWFkMDU4Y2Jk
ZGI5NGJiNWMuLmU4NjczYmYwYTRhOGVhN2VmMGJiNDk0MjcyNTRhZWM3NzAzY2YwOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApA
QCAtNTE1LDcgKzUxNSw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogCiBBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIG5vdGlmeURlYnVnZ2VyT2ZVbndpbmRpbmcoVk0mIHZtLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gY2FsbEZyYW1lLT53YXNtQXdhcmVMZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KHZtKTsKICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAg
ICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKSB7CiAg
ICAgICAgIFN1c3BlbmRFeGNlcHRpb25TY29wZSBzY29wZSgmdm0pOwpAQCAtMTIxNiw3ICsxMjE2
LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBEZWJ1Z0hvb2tUeXBlIGRlYnVnSG8KIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUt
PmRlcHJlY2F0ZWRWTSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+ZGVidWdnZXIoKTsKKyAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmxl
eGljYWxHbG9iYWxPYmplY3Qodm0pLT5kZWJ1Z2dlcigpOwogICAgIGlmICghZGVidWdnZXIpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBjMzE3MmY3NTcxZTI4NDdkNGMxNGFiZTRiOTFjMTkw
MGY1ZmMxOTRkLi5hNTgzYjQ4Y2IyMjY1Y2U1MjIzMWMwNmQyYjI1OGNhMjc5ZmJlMTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cApAQCAtMzY5LDEzICszNjksMTMgQEAgaW50cHRyX3QgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291
cmNlSUQoKQogICAgIHJldHVybiBub1NvdXJjZUlEOwogfQogCi1DbG9uZWRBcmd1bWVudHMqIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cygpCitDbG9uZWRBcmd1bWVudHMqIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyhWTSYgdm0pCiB7CiAgICAgQVNTRVJU
KG1fY2FsbEZyYW1lKTsKICAgICBDYWxsRnJhbWUqIHBoeXNpY2FsRnJhbWUgPSBtX2NhbGxGcmFt
ZTsKICAgICAvLyBGSVhNRTogUmV2aXNpdCBKU0dsb2JhbE9iamVjdC4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHBoeXNpY2FsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gcGh5c2ljYWxGcmFtZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCh2bSk7CiAgICAgQ2xvbmVkQXJndW1lbnRzKiBhcmd1bWVudHM7CiAgICAg
QXJndW1lbnRzTW9kZSBtb2RlOwogICAgIGlmIChPcHRpb25zOjp1c2VGdW5jdGlvbkRvdEFyZ3Vt
ZW50cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlz
aXRvci5oCmluZGV4IGQzNTc2MWZlMGM0MjM0YjM5Y2Y1MDdiMWI2NDU2NTU4NGE4NDliODYuLjBj
ODFkMWIzMjM2OTg2NzkyNzQyN2M2ZDBmNzRmMTQ5MzIzZDc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKQEAgLTk3LDcgKzk3LDcg
QEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsKICAgICAgICAgT3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNl
dExpc3Q+IGNhbGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKTsKICNlbmRpZgogCi0gICAg
ICAgIENsb25lZEFyZ3VtZW50cyogY3JlYXRlQXJndW1lbnRzKCk7CisgICAgICAgIENsb25lZEFy
Z3VtZW50cyogY3JlYXRlQXJndW1lbnRzKFZNJik7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWU7IH0KICAgICAgICAgCiAgICAgICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYsIEluZGVudGVyID0gSW5kZW50ZXIoKSkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1Nzk4
ZDMwYjhiNTg2YjczNGI4ZmQ4NjA0ODg4NGZkZGU3NmIwOTRkLi40YmQ4ZmFlYTkyNzdlYjFkZjgy
NWJmYmM1Mjk5NmZlN2EwNThjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE5NDMsNyArMTk0Myw3IEBAIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwg
UHJvdG9DYWxsCiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsK
ICAgICBpZiAoY2FsbEZyYW1lKQotICAgICAgICBnbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCp2bSk7CiAgICAgZWxzZQogICAgICAgICBnbG9iYWxPYmplY3Qg
PSBwcm90b0ZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCp2bSk7CiAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDA0Yjg3MWUyOTkyODI3YzU2MzNkMzcz
NDI5NGE3MDQ5ZTNjYTRmMmQuLjQwYTczNTQ1NDRkYWJkODYzOGE5MWVjNzllMTljZjRhYTIyOTQ0
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBA
IC0yNzEsOCArMjcxLDkgQEAgQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAKIGNsYXNzIFJldHJpZXZlQXJndW1lbnRzRnVu
Y3RvciB7CiBwdWJsaWM6Ci0gICAgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yKEpTRnVuY3Rpb24q
IGZ1bmN0aW9uT2JqKQotICAgICAgICA6IG1fdGFyZ2V0Q2FsbGVlKGZ1bmN0aW9uT2JqKQorICAg
IFJldHJpZXZlQXJndW1lbnRzRnVuY3RvcihWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2Jq
KQorICAgICAgICA6IG1fdm0odm0pCisgICAgICAgICwgbV90YXJnZXRDYWxsZWUoZnVuY3Rpb25P
YmopCiAgICAgICAgICwgbV9yZXN1bHQoanNOdWxsKCkpCiAgICAgewogICAgIH0KQEAgLTI4OCwx
OCArMjg5LDE5IEBAIGNsYXNzIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciB7CiAgICAgICAgIGlm
IChjYWxsZWUgIT0gbV90YXJnZXRDYWxsZWUpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpDb250aW51ZTsKIAotICAgICAgICBtX3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRvci0+Y3Jl
YXRlQXJndW1lbnRzKCkpOworICAgICAgICBtX3Jlc3VsdCA9IEpTVmFsdWUodmlzaXRvci0+Y3Jl
YXRlQXJndW1lbnRzKG1fdm0pKTsKICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsK
ICAgICB9CiAKIHByaXZhdGU6CisgICAgVk0mIG1fdm07CiAgICAgSlNPYmplY3QqIG1fdGFyZ2V0
Q2FsbGVlOwogICAgIG11dGFibGUgSlNWYWx1ZSBtX3Jlc3VsdDsKIH07CiAKIHN0YXRpYyBKU1Zh
bHVlIHJldHJpZXZlQXJndW1lbnRzKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uT2JqKQogewotICAgIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciBmdW5j
dG9yKGZ1bmN0aW9uT2JqKTsKKyAgICBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IgZnVuY3Rvcih2
bSwgZnVuY3Rpb25PYmopOwogICAgIGlmIChjYWxsRnJhbWUpCiAgICAgICAgIGNhbGxGcmFtZS0+
aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYTlhM2VmZTRiZjc5NmNjYTJi
NjkwNzE1ZDQyYjM5ZDMwZjI1NDQ2Zi4uMDkwZWQ3NTljOTk4MDIyYWQ2ZTc0OWUwNWRmYTY2NDY4
YTRhYjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMTQw
LDggKzE0MCwxMyBAQCBpbmxpbmUgSlNTY29wZSogUmVnaXN0ZXI6OnNjb3BlKCkgY29uc3QKICAg
ICByZXR1cm4ganNDYXN0PEpTU2NvcGUqPih1bmJveGVkQ2VsbCgpKTsKIH0KIAotaW5saW5lIEpT
R2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QoKSBjb25zdAoraW5s
aW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QoVk0mIHZt
KSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQorICAgIGlmIChjYWxsZWUoKS5pc1dhc20oKSkKKyAgICAgICAgcmV0dXJuIGxleGljYWxHbG9i
YWxPYmplY3RGcm9tV2FzbUNhbGxlZSh2bSk7CisjZW5kaWYKICAgICByZXR1cm4ganNDYWxsZWUo
KS0+Z2xvYmFsT2JqZWN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cElubGluZXMuaAppbmRleCA4NDM2ZGVjMDkxYmEyZjI2NTI0N2U3MjdhMWFlZmE0Mjc2
YjE3MjQ5Li5mN2Q5MTkwNTg5ODRkYzAyYTc0ZjRhZDI4MjcxNWJjZDJlNTY3YTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCkBAIC0xNDMsNyAr
MTQzLDcgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShWTSYgdm0sIGNv
bnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmYKICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IEpT
R2xvYmFsT2JqZWN0LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzMjA0Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB2
bS50b3BDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCh2bSk7CiAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBl
cnJvclRvVGhyb3coZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGlmICghaGFzSGFyZEVycm9yKG1f
Y29uc3RydWN0aW9uRXJyb3JDb2RlKSkKICAgICAgICAgICAgIHJlc2V0KCk7CkBAIC0yNzMsNyAr
MjczLDcgQEAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5saW5lKFZN
JiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZAogICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNH
bG9iYWxPYmplY3QuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDMyMDQKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHZt
LnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdm0udG9wQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KHZtKTsKICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGVy
cm9yVG9UaHJvdyhnbG9iYWxPYmplY3QpKTsKICAgICAgICAgaWYgKCFoYXNIYXJkRXJyb3IobV9j
b25zdHJ1Y3Rpb25FcnJvckNvZGUpKQogICAgICAgICAgICAgcmVzZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA4Njc0NjI3MDY3YzgzNDE5NTcz
MDM0MTlkMmI5ZjMzYzBiZGRmNzNlLi45OGE3ODc0ZjZkMWEyNjJkNDYzNWVkMzU0ODc4ODk0Mjlj
NDVlZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBA
IC0zMDYsNyArMzA2LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRy
eVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA2CiAgICAg
ICAgICAgICAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5kZXByZWNhdGVkVk0oKTsKICAgICAgICAg
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAg
ICAgICAgICAgICAgIHJldHVybiB2LnRvSW50MzIoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOworICAgICAgICAgICAgICAgIHJldHVybiB2LnRvSW50MzIoY2FsbEZyYW1lLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KHZtKSk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBzbG93
UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVtYmVyKEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpKTsKQEAgLTM0MCw3ICszNDAsNyBAQCBFeHBlY3RlZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdh
c21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDMyMDYKICAgICAgICAgICAgICAgICBWTSYgdm0gPSBjYWxsRnJh
bWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGZsb2F0Pih2LnRvTnVtYmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2LnRvTnVtYmVyKGNh
bGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSkpKTsKICAgICAgICAgICAgIH07CiAKICAg
ICAgICAgICAgIGF1dG8gbm90QU51bWJlciA9IGppdC5icmFuY2hJZk5vdE51bWJlcihHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKQEAgLTM3OSw3ICszNzks
NyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmlu
ZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyMDYKICAgICAgICAgICAgICAgICBW
TSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgICAgICAgICAgICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHYudG9OdW1iZXIoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAg
ICAgICAgICAgICAgIHJldHVybiB2LnRvTnVtYmVyKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCh2bSkpOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgYXV0byBub3RBTnVtYmVy
ID0gaml0LmJyYW5jaElmTm90TnVtYmVyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBEb05vdEhh
dmVUYWdSZWdpc3RlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmlu
ZGV4IDA5Yjc4NGY5ZWQzNTZhZDZiY2JhODRmNWU2M2JmOGE2ZjFlYTI2N2QuLmNiZjNkMGJmYzZi
NmI2YTA4OWUxNWEzZGVhOWYwNjJiMWYwOWJmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Db21tb25WTS5jcHAKQEAgLTc0LDkgKzc0LDEwIEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygp
CiAKIEZyYW1lKiBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKQogewotICAgIGlmIChhdXRvKiB0
b3BDYWxsRnJhbWUgPSBjb21tb25WTSgpLnRvcENhbGxGcmFtZSkgewotICAgICAgICBpZiAoYXV0
byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih0b3BDYWxs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiB3
aW5kb3cgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPihjb21tb25WTSgpLCBnbG9i
YWxPYmplY3QpKSB7CisgICAgSlNDOjpWTSYgdm0gPSBjb21tb25WTSgpOworICAgIGlmIChhdXRv
KiB0b3BDYWxsRnJhbWUgPSB2bS50b3BDYWxsRnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8qIGds
b2JhbE9iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odG9wQ2FsbEZyYW1l
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiB3aW5k
b3cgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cqPih2bSwgZ2xvYmFsT2JqZWN0KSkg
ewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHdpbmRvdy0+d3JhcHBlZCgpLmZy
YW1lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKICAgICAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4
IDQwNmJhYjMwYmQ2NGY4MjEzOTgwYzUyYjViMTRmNDY3Y2FjNzBkZDIuLmRjMzg3ZDU0MTU2ZGRj
YzIzMGNiZWYzMzlmMzAxMGUzMzRlYTM5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIERvY3VtZW50KiBy
ZXNwb25zaWJsZURvY3VtZW50KFZNJiB2bSwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCiAgICAgYXV0
byogY2FsbGVyRnJhbWUgPSBmdW5jdG9yLmNhbGxlckZyYW1lKCk7CiAgICAgaWYgKCFjYWxsZXJG
cmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFzSlNET01XaW5kb3co
Y2FsbGVyRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPndyYXBwZWQoKS5kb2N1bWVudCgp
OworICAgIHJldHVybiBhc0pTRE9NV2luZG93KGNhbGxlckZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KHZtKSktPndyYXBwZWQoKS5kb2N1bWVudCgpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFz
ZTo6ZmlyZUZyYW1lQ2xlYXJlZFdhdGNocG9pbnRzRm9yV2luZG93KERPTVdpbmRvdyogd2luZG93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKaW5k
ZXggNjc1ZjIxNzRmOWE3Y2JjYzJkMjYwOWU2ODhmNGQ5NmI5YmQxMmU3Ni4uOTg1YjNkYjBkM2Yx
NjEwMDBmMWZhZDliNDMyOTc4ZTU0NjIzYWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCkBAIC00MSwxMSArNDEsMTIgQEAgZW51bSBjbGFz
cyBDbG9uZU1vZGUgewogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2xvbmVBcnJheUJ1ZmZlcklt
cGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDbG9uZU1vZGUgbW9kZSkKIHsKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOworCiAgICAgQVNTRVJUKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgQVNTRVJUKGNhbGxGcmFtZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIEFTU0VSVChjYWxs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pID09IGxleGljYWxHbG9iYWxPYmplY3QpOwog
Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvKiBidWZm
ZXIgPSB0b1Vuc2hhcmVkQXJyYXlCdWZmZXIodm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1NGFhMjk3Y2Mx
YzU3NDg4YjNhOWU2NmU1MTBiYzgxNjQyMDBmNDIuLjdkMDBmMjIyNGQ2YWE5MTA4MjA3NTc3YmNh
Y2Q2NjEzMWM5YTRmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjYxOCw4ICsyNjE4
LDkgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRh
dGVzKCkKIGJvb2wgRG9jdW1lbnQ6OnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSgpIGNvbnN0CiB7CiAgICAgLy8gQnlwYXNzIHRoaXMgcG9saWN5IHdoZW4gdGhlIHdv
cmxkIGlzIGtub3duLCBhbmQgaXQgbm90IHRoZSBub3JtYWwgd29ybGQuCi0gICAgYXV0byYgY2Fs
bEZyYW1lID0gKmNvbW1vblZNKCkudG9wQ2FsbEZyYW1lOwotICAgIHJldHVybiAmY2FsbEZyYW1l
ICE9IEpTQzo6Q2FsbEZyYW1lOjpub0NhbGxlcigpICYmICFjdXJyZW50V29ybGQoKmNhbGxGcmFt
ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLmlzTm9ybWFsKCk7CisgICAgSlNDOjpWTSYgdm0gPSBj
b21tb25WTSgpOworICAgIGF1dG8mIGNhbGxGcmFtZSA9ICp2bS50b3BDYWxsRnJhbWU7CisgICAg
cmV0dXJuICZjYWxsRnJhbWUgIT0gSlNDOjpDYWxsRnJhbWU6Om5vQ2FsbGVyKCkgJiYgIWN1cnJl
bnRXb3JsZCgqY2FsbEZyYW1lLmxleGljYWxHbG9iYWxPYmplY3Qodm0pKS5pc05vcm1hbCgpOwog
fQogCiB2b2lkIERvY3VtZW50OjpwbGF0Zm9ybVN1c3BlbmRPclN0b3BBY3RpdmVET01PYmplY3Rz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlNGU3YWM5ZmQ5YzIzZmI1
OWU3Y2IxNTMwODkyMzJhNmZjOWY1M2M1Li5mYTViZjYxZDc0NGNhMDJlNmJlNGEyZmNmMWEzMDQw
YjYzZmU4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMjA2LDcg
KzIyMDYsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShKU0M6OkpTVmFsdWUg
Y29kZSkKIHsKICAgICBKU0M6OlZNJiB2bSA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpOwogICAg
IEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSB2bS50b3BDYWxsRnJhbWU7Ci0gICAgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1l
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KHZtKTsKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRh
YmxlOwogCiAgICAgaWYgKCFjb2RlIHx8IGNvZGUuaXNOdWxsKCkgfHwgY29kZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC0zNDgwLDcgKzM0ODAsOCBAQCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJ
bnRlcm5hbHM6OmRlc2VyaWFsaXplQnVmZmVyKEFycmF5QnVmZmVyJiBidWZmZXIpIGNvbgogCiBi
b29sIEludGVybmFsczo6aXNGcm9tQ3VycmVudFdvcmxkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gaXNXb3JsZENvbXBhdGlibGUoKmNvbnRleHREb2N1bWVudCgpLT52
bSgpLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB2YWx1ZSk7CisgICAgSlND
OjpWTSYgdm0gPSBjb250ZXh0RG9jdW1lbnQoKS0+dm0oKTsKKyAgICByZXR1cm4gaXNXb3JsZENv
bXBhdGlibGUoKnZtLnRvcENhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSksIHZhbHVl
KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sIGVu
YWJsZWQpCg==
</data>
<flag name="review"
          id="397513"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>