<?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>175704</bug_id>
          
          <creation_ts>2017-08-17 20:04:44 -0700</creation_ts>
          <short_desc>Rename DataTransferAccessPolicy to match spec and refactor related node</short_desc>
          <delta_ts>2017-08-18 14:55:19 -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>DOM</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1339921</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 20:04:44 -0700</bug_when>
    <thetext>Rename DataTransferAccessPolicy to match the drag data store mode:
https://html.spec.whatwg.org/multipage/dnd.html#drag-data-store-mode

Also refactor related code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339928</commentid>
    <comment_count>1</comment_count>
      <attachid>318462</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 20:16:56 -0700</bug_when>
    <thetext>Created attachment 318462
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339932</commentid>
    <comment_count>2</comment_count>
      <attachid>318463</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 20:41:40 -0700</bug_when>
    <thetext>Created attachment 318463
Fixed iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339949</commentid>
    <comment_count>3</comment_count>
      <attachid>318463</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-08-17 21:19:22 -0700</bug_when>
    <thetext>Comment on attachment 318463
Fixed iOS builds

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

&gt; Source/WebCore/editing/Editor.cpp:331
&gt; +        storeMode = DataTransfer::StoreMode::Invalid;

Possibly helpful to ASSERT() that eventType is one of the other clipboard event types here, that is not handled above?

&gt; Source/WebCore/editing/Editor.cpp:346
&gt; +        pasteboard-&gt;writePasteboard(dataTransfer-&gt;pasteboard());

This reminds me -- we&apos;ll need to actually implement a lot of these methods on iOS. Pasteboard::writePasteboard, for example, is stubbed out in PasteboardIOS.mm

&gt; Source/WebCore/page/DragController.cpp:233
&gt; +    DragOperation srcOpMask = dragData.draggingSourceOperationMask();

I don&apos;t think this temporary variable adds much clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339954</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 21:28:48 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 318463 [details]
&gt; Fixed iOS builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318463&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:331
&gt; &gt; +        storeMode = DataTransfer::StoreMode::Invalid;
&gt; 
&gt; Possibly helpful to ASSERT() that eventType is one of the other clipboard
&gt; event types here, that is not handled above?

Done that.

&gt; &gt; Source/WebCore/editing/Editor.cpp:346
&gt; &gt; +        pasteboard-&gt;writePasteboard(dataTransfer-&gt;pasteboard());
&gt; 
&gt; This reminds me -- we&apos;ll need to actually implement a lot of these methods
&gt; on iOS. Pasteboard::writePasteboard, for example, is stubbed out in
&gt; PasteboardIOS.mm

Oh, we&apos;d most certainly need to do that. Does that mean we can&apos;t currently override contents of the clipboard from copy / cut events right now?

&gt; &gt; Source/WebCore/page/DragController.cpp:233
&gt; &gt; +    DragOperation srcOpMask = dragData.draggingSourceOperationMask();
&gt; 
&gt; I don&apos;t think this temporary variable adds much clarity.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339958</commentid>
    <comment_count>5</comment_count>
      <attachid>318470</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 21:36:07 -0700</bug_when>
    <thetext>Created attachment 318470
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339966</commentid>
    <comment_count>6</comment_count>
      <attachid>318470</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-17 22:06:52 -0700</bug_when>
    <thetext>Comment on attachment 318470
Patch for landing

Rejecting attachment 318470 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
64/ExtensionStyleSheets.dia -c /Volumes/Data/EWS/WebKit/Source/WebCore/dom/ExtensionStyleSheets.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/ExtensionStyleSheets.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/DragController.o page/DragController.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/4334776</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339967</commentid>
    <comment_count>7</comment_count>
      <attachid>318472</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 22:33:45 -0700</bug_when>
    <thetext>Created attachment 318472
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339971</commentid>
    <comment_count>8</comment_count>
      <attachid>318472</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 22:50:21 -0700</bug_when>
    <thetext>Comment on attachment 318472
Patch for landing

Oops, I broke internal iOS builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339973</commentid>
    <comment_count>9</comment_count>
      <attachid>318476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 22:52:20 -0700</bug_when>
    <thetext>Created attachment 318476
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339974</commentid>
    <comment_count>10</comment_count>
      <attachid>318476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-17 22:52:38 -0700</bug_when>
    <thetext>Comment on attachment 318476
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340247</commentid>
    <comment_count>11</comment_count>
      <attachid>318476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-18 14:53:52 -0700</bug_when>
    <thetext>Comment on attachment 318476
Patch for landing

Clearing flags on attachment: 318476

Committed r220935: &lt;http://trac.webkit.org/changeset/220935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340248</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-18 14:53:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340249</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-18 14:55:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/33970723&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318462</attachid>
            <date>2017-08-17 20:16:56 -0700</date>
            <delta_ts>2017-08-17 20:41:38 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-175704-20170817201655.patch</filename>
            <type>text/plain</type>
            <size>29061</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDg5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTA4LTE3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBEYXRhVHJhbnNmZXJB
Y2Nlc3NQb2xpY3kgdG8gbWF0Y2ggc3BlYyBhbmQgcmVmYWN0b3IgcmVsYXRlZCBub2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeSB0byBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZSB0byBtYXRjaCB0
aGUgZHJhZyBkYXRhIHN0b3JlIG1vZGUgY29uY2VwdAorICAgICAgICBpbiB0aGUgSFRNTDUgc3Bl
Y2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvZG5kLmh0bWwjZHJhZy1kYXRhLXN0b3JlLW1vZGUKKworICAgICAgICBEYXRhVHJhbnNmZXIg
aW4gYWRkaXRpb24gdG8gdGhvc2Ugc3RhdGVzIGNhbiBiZSBkaXNhc3NvY2lhdGVkIGZyb20gdGhl
IGRyYWcgZGF0YSBzdG9yZSB3aGVuIGl0IGJlY29tZXMKKyAgICAgICAgbm8gbG9uZ2VyIHZhbGlk
LiBXZSBhbHNvIHN1cHBvcnQgYSBzcGVjaWFsIG1vZGUgd2hpY2ggYWxsb3dzIG9ubHkgdXBkYXRp
bmcgdGhlIGRyYWcgaW1hZ2UuCisgICAgICAgIFRoZXNlIHR3byBzdGF0ZXMsIEludmFsaWQgYW5k
IERyYWdJbWFnZVdyaXRhYmxlLCBhcmUgYWRkZWQgaW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIHN0
YXRlcyBpbiB0aGUgc3BlYy4KKworICAgICAgICBBbHNvIHNwbGl0IERyYWdBbmREcm9wIHR5cGUg
b2YgRGF0YVRyYW5zZmVyIGludG8gRHJhZ0FuZERyb3BEYXRhIGFuZCBEcmFnQW5kRHJvcEZpbGVz
LCBhbmQgcmVmYWN0b3JlZAorICAgICAgICB0aGUgcmVsYXRlZCBjb2RlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OkRh
dGFUcmFuc2Zlcik6IE5vIGxvbmdlciB0YWtlcyBmb3JGaWxlRHJhZyBib29sZWFuIHNpbmNlIGl0
J3MgZm9sZGVkIGludG8gdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6fkRh
dGFUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldEFjY2Vzc1Bv
bGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhblJlYWRU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhblJlYWREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y2FuV3JpdGVEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y2FuU2V0RHJhZ0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6Om1ha2VJ
bnZhbGlkRm9yU2VjdXJpdHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6bWFrZURyYWdJbWFnZVdyaXRhYmxlKTogQWRkZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeS5oOiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQpOiBNb3ZlZCBhbmQg
cmVuYW1lZCBmcm9tIGRpc3BhdGNoQ1BQRXZlbnQuIE5vdyBjb21wdXRlcyB0aGUgc3RvcmUgbW9k
ZQorICAgICAgICBpbnNpZGUgdGhlIGZ1bmN0aW9uIHRvIG1hdGNoIHRoZSBzcGVjOiBodHRwczov
L3czYy5naXRodWIuaW8vY2xpcGJvYXJkLWFwaXMvI2ZpcmUtYS1jbGlwYm9hcmQtZXZlbnQKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuREhUTUxDdXQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpjYW5ESFRNTENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5ESFRN
TFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDdXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjp0cnlESFRNTFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzcGF0Y2hD
UFBFdmVudCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFU
cmFuc2ZlclRvVXBkYXRlRHJhZyk6IEV4dHJhY3RlZCB0byBzaGFyZSBjb2RlLgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aW52YWxpZGF0ZURhdGFU
cmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgor
CiAyMDE3LTA4LTE3ICBEYWV3b29uZyBKYW5nICA8ZGFld29vbmcuamFuZ0BuYXZlcmNvcnAuY29t
PgogCiAgICAgICAgIFtDdXJsXSBJbXByb3ZlIG11bHRpLXRocmVhZGVkIG5ldHdvcmtpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEyMiw3ICsyMTIyLDYgQEAKIAkJ
NEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjZGQTZGNzBDMzlF
NEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZUNGLmNwcCAqLzsgfTsKLQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEI4QUY0QTkwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vz
c1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5
Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RTE5NTkyMTBBMzlEQUJBMDAyMjBGRTUgLyog
TWVkaWFGZWF0dXJlTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVz
LmNwcCAqLzsgfTsKIAkJNEUxOTU5MjIwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5h
bWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5
NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTg0OCw3ICs5ODQ3LDYgQEAK
IAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRS
ZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRS
ZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjhBRjRBOTBCMUNF
MDJCMDA2ODc2OTAgLyogRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRl
bGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JEZWxl
dGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEUxOTU5MUYwQTM5REFC
QTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYUZlYXR1cmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRFMTk1OTIwMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFGZWF0dXJlTmFtZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjU0LDcgKzI1NjUyLDYgQEAKIAkJ
CQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogRGF0YVRyYW5zZmVyLmNwcCAqLywKIAkJCQk4
NTAzMUIyODBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRyYW5zZmVyLmggKi8sCiAJCQkJQkNBODNF
MzYwRDdDREM0RTAwMzQyMUE4IC8qIERhdGFUcmFuc2Zlci5pZGwgKi8sCi0JCQkJNEI4QUY0QTkw
QjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oICovLAogCQkJCTlC
MDk4QkQ1MUYzRDYwMzMwMDJERDU2MiAvKiBEYXRhVHJhbnNmZXJJdGVtLmNwcCAqLywKIAkJCQk4
MUFDNTk5NzEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbS5oICovLAogCQkJCTgx
QUM1QUU4MTMxNjM5MkUwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmlkbCAqLywKQEAgLTI3
MDgxLDcgKzI3MDc4LDYgQEAKIAkJCQlCQzIyNzQ2RjBFODM2NjQ1MDBFN0Y5NzUgLyogRGF0YVJl
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFz
ZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5
OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCOEFGNEFBMEIxQ0Uw
MkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MUFDNTk5QTEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRl
bUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcAkocmV2aXNpb24gMjIwODgyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDI2ICs1NywyNiBAQCBwcml2YXRlOgog
CiAjZW5kaWYKIAotRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5IHBvbGljeSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQsIFR5
cGUgdHlwZSwgYm9vbCBmb3JGaWxlRHJhZykKLSAgICA6IG1fcG9saWN5KHBvbGljeSkKK0RhdGFU
cmFuc2Zlcjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gcGFzdGVib2FyZCwgVHlwZSB0eXBlKQorICAgIDogbV9zdG9yZU1vZGUobW9kZSkK
ICAgICAsIG1fcGFzdGVib2FyZChXVEZNb3ZlKHBhc3RlYm9hcmQpKQogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCi0gICAgLCBtX2ZvckRyYWcodHlwZSA9PSBEcmFnQW5kRHJvcCkKLSAgICAsIG1f
Zm9yRmlsZURyYWcoZm9yRmlsZURyYWcpCisgICAgLCBtX2ZvckRyYWcodHlwZSA9PSBUeXBlOjpE
cmFnQW5kRHJvcERhdGEgfHwgdHlwZSA9PSBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzKQorICAgICwg
bV9mb3JGaWxlRHJhZyh0eXBlID09IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMpCiAgICAgLCBtX2Ry
b3BFZmZlY3QoQVNDSUlMaXRlcmFsKCJ1bmluaXRpYWxpemVkIikpCiAgICAgLCBtX2VmZmVjdEFs
bG93ZWQoQVNDSUlMaXRlcmFsKCJ1bmluaXRpYWxpemVkIikpCiAgICAgLCBtX3Nob3VsZFVwZGF0
ZURyYWdJbWFnZShmYWxzZSkKICNlbmRpZgogewogI2lmICFFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSAhPSBEcmFnQW5kRHJvcCk7CisgICAgQVNTRVJU
X1VOVVNFRCh0eXBlLCB0eXBlICE9IERyYWdBbmREcm9wRGF0YSAmJiB0eXBlICE9IERyYWdBbmRE
cm9wRmlsZXMpOwogICAgIEFTU0VSVF9VTlVTRUQoZm9yRmlsZURyYWcsICFmb3JGaWxlRHJhZyk7
CiAjZW5kaWYKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSkKK1JlZjxEYXRhVHJh
bnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFN0b3JlTW9kZSBtb2Rl
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihwb2xpY3ksIHBvbGlj
eSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlID8gUGFzdGVib2FyZDo6Y3Jl
YXRlUHJpdmF0ZSgpIDogUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIobW9kZSwgbW9kZSA9PSBTdG9yZU1v
ZGU6OlJlYWRXcml0ZSA/IFBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUoKSA6IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKSk7CiB9CiAKIERhdGFUcmFuc2Zlcjo6fkRhdGFUcmFu
c2ZlcigpCkBAIC04NiwyNyArODYsMjAgQEAgRGF0YVRyYW5zZmVyOjp+RGF0YVRyYW5zZmVyKCkK
ICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0b3BMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICNl
bmRpZgogfQotICAgIAotdm9pZCBEYXRhVHJhbnNmZXI6OnNldEFjY2Vzc1BvbGljeShEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5KQotewotICAgIC8vIE9uY2UgdGhlIGRhdGFUcmFuc2Zl
ciBnb2VzIG51bWIsIGl0IGNhbiBuZXZlciBnbyBiYWNrLgotICAgIEFTU0VSVChtX3BvbGljeSAh
PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIgfHwgcG9saWN5ID09IERhdGFUcmFuc2Zl
ckFjY2Vzc1BvbGljeTo6TnVtYik7Ci0gICAgbV9wb2xpY3kgPSBwb2xpY3k7Ci19CiAKIGJvb2wg
RGF0YVRyYW5zZmVyOjpjYW5SZWFkVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiBtX3BvbGlj
eSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlIHx8IG1fcG9saWN5ID09IERh
dGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBEYXRh
VHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlOworICAgIHJldHVybiBtX3N0b3JlTW9kZSA9
PSBTdG9yZU1vZGU6OlJlYWRvbmx5IHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9kZTo6UHJvdGVj
dGVkIHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9kZTo6UmVhZFdyaXRlOwogfQogCiBib29sIERh
dGFUcmFuc2Zlcjo6Y2FuUmVhZERhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3BvbGljeSA9
PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlIHx8IG1fcG9saWN5ID09IERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeTo6V3JpdGFibGU7CisgICAgcmV0dXJuIG1fc3RvcmVNb2RlID09
IFN0b3JlTW9kZTo6UmVhZG9ubHkgfHwgbV9zdG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpSZWFkV3Jp
dGU7CiB9CiAKIGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5Xcml0ZURhdGEoKSBjb25zdAogewotICAg
IHJldHVybiBtX3BvbGljeSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlOwor
ICAgIHJldHVybiBtX3N0b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRXcml0ZTsKIH0KIAogdm9p
ZCBEYXRhVHJhbnNmZXI6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0yMTQsNyAr
MjA3LDcgQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGbwogICAgIFR5
cGVUb1N0cmluZ01hcCB0eXBlVG9TdHJpbmdNYXA7CiAgICAgdHlwZVRvU3RyaW5nTWFwLnNldChB
U0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgcGxhaW5UZXh0KTsKICAgICB0eXBlVG9TdHJpbmdN
YXAuc2V0KEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIGh0bWxUZXh0KTsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFk
YWJsZSwgU3RhdGljUGFzdGVib2FyZDo6Y3JlYXRlKFdURk1vdmUodHlwZVRvU3RyaW5nTWFwKSks
IElucHV0RXZlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3Rv
cmVNb2RlOjpSZWFkb25seSwgU3RhdGljUGFzdGVib2FyZDo6Y3JlYXRlKFdURk1vdmUodHlwZVRv
U3RyaW5nTWFwKSksIFR5cGU6OklucHV0RXZlbnQpKTsKIH0KIAogI2lmICFFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtMjQ1LDEyICsyMzgsMTMgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyYWdJ
bWFnZShFbGVtZW50KgogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckRyYWcoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCgpLCBEcmFnQW5kRHJvcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFu
c2ZlcihTdG9yZU1vZGU6OlJlYWRXcml0ZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5
LCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyb3AoU3RvcmVNb2RlIGFjY2Vzc01vZGUsIGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIocG9saWN5
LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSksIERyYWdBbmREcm9w
LCBkcmFnRGF0YS5jb250YWluc0ZpbGVzKCkpKTsKKyAgICBhdXRvIHR5cGUgPSBkcmFnRGF0YS5j
b250YWluc0ZpbGVzKCkgPyBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERy
b3BEYXRhOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihhY2Nlc3NNb2Rl
LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSksIHR5cGUpKTsKIH0K
IAogYm9vbCBEYXRhVHJhbnNmZXI6OmNhblNldERyYWdJbWFnZSgpIGNvbnN0CkBAIC0yNTksNyAr
MjUzLDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6OmNhblNldERyYWdJbWFnZSgpIGNvbgogICAgIC8v
IGV2ZW50LiBUaGlzIGNhcGFiaWxpdHkgaXMgbWFpbnRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBh
dGlibGl0eSBmb3IgcG9ydHMgdGhhdCBoYXZlCiAgICAgLy8gc3VwcG9ydGVkIHRoaXMgaW4gdGhl
IHBhc3QuIE9uIG1hbnkgcG9ydHMsIGF0dGVtcHRpbmcgdG8gc2V0IGEgZHJhZyBpbWFnZSBvdXRz
aWRlIHRoZQogICAgIC8vIGRyYWdzdGFydCBvcGVyYXRpb24gaXMgYSBuby1vcCBhbnl3YXkuCi0g
ICAgcmV0dXJuIG1fZm9yRHJhZyAmJiAobV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9s
aWN5OjpJbWFnZVdyaXRhYmxlIHx8IG1fcG9saWN5ID09IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGlj
eTo6V3JpdGFibGUpOworICAgIHJldHVybiBtX2ZvckRyYWcgJiYgKG1fc3RvcmVNb2RlID09IFN0
b3JlTW9kZTo6RHJhZ0ltYWdlV3JpdGFibGUgfHwgbV9zdG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpS
ZWFkV3JpdGUpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQq
IGVsZW1lbnQsIGludCB4LCBpbnQgeSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgJ
KHJldmlzaW9uIDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIkRhdGFUcmFuc2ZlckFjY2Vzc1Bv
bGljeS5oIgogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSw3ICs0MCwxMCBAQCBjbGFz
cyBQYXN0ZWJvYXJkOwogCiBjbGFzcyBEYXRhVHJhbnNmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxE
YXRhVHJhbnNmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yQ29weUFuZFBhc3RlKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSk7CisgICAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG5kLmh0bWwjZHJhZy1kYXRhLXN0
b3JlLW1vZGUKKyAgICBlbnVtIGNsYXNzIFN0b3JlTW9kZSB7IEludmFsaWQsIERyYWdJbWFnZVdy
aXRhYmxlLCBSZWFkV3JpdGUsIFJlYWRvbmx5LCBQcm90ZWN0ZWQgfTsKKworICAgIHN0YXRpYyBS
ZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JDb3B5QW5kUGFzdGUoU3RvcmVNb2RlKTsKICAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcm
IHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+RGF0YVRyYW5zZmVyKCk7CkBAIC02NSw3ICs2NywxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldERyYWdJbWFnZShFbGVtZW50KiwgaW50IHgsIGludCB5KTsKIAotICAgIHZvaWQgc2V0QWNj
ZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSk7CisgICAgdm9pZCBtYWtlSW52YWxp
ZEZvclNlY3VyaXR5KCkgeyBtX3N0b3JlTW9kZSA9IFN0b3JlTW9kZTo6SW52YWxpZDsgfQorICAg
IHZvaWQgbWFrZURyYWdJbWFnZVdyaXRhYmxlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3N0
b3JlTW9kZSAhPSBTdG9yZU1vZGU6OkludmFsaWQpOworICAgICAgICBtX3N0b3JlTW9kZSA9IFN0
b3JlTW9kZTo6RHJhZ0ltYWdlV3JpdGFibGU7CisgICAgfQorCiAgICAgYm9vbCBjYW5SZWFkVHlw
ZXMoKSBjb25zdDsKICAgICBib29sIGNhblJlYWREYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5X
cml0ZURhdGEoKSBjb25zdDsKQEAgLTc3LDcgKzg1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJh
ZygpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKERhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeSwgY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFU
cmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChTdG9yZU1vZGUsIGNvbnN0IERyYWdEYXRhJik7CiAKICAg
ICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2Ryb3BF
ZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKQEAgLTkyLDE0ICsxMDAsMTQgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZW51bSBUeXBlIHsgQ29weUFuZFBhc3RlLCBEcmFn
QW5kRHJvcCwgSW5wdXRFdmVudCB9OwotICAgIERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXJBY2Nl
c3NQb2xpY3ksIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwgVHlwZSA9IENvcHlBbmRQYXN0
ZSwgYm9vbCBmb3JGaWxlRHJhZyA9IGZhbHNlKTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5
QW5kUGFzdGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9
OworICAgIERhdGFUcmFuc2ZlcihTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiwgVHlwZSA9IFR5cGU6OkNvcHlBbmRQYXN0ZSk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIGJvb2wgY2FuU2V0RHJhZ0ltYWdlKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeSBtX3BvbGljeTsKKyAgICBTdG9yZU1vZGUgbV9zdG9yZU1vZGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IG1fcGFzdGVib2FyZDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGF0YVRyYW5zZmVySXRlbUxpc3Q+IG1faXRlbUxpc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmgJKHJldmlzaW9u
IDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3ku
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWVudW0gY2xhc3MgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHsKLSAgICBOdW1iLCBJ
bWFnZVdyaXRhYmxlLCBXcml0YWJsZSwgVHlwZXNSZWFkYWJsZSwgUmVhZGFibGUKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIyMDg4MikK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEzLDYgKzMxMyw0NCBAQCBib29sIEVkaXRvcjo6Y2FuRWRpdFJpY2hseSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKTsKIH0KIAorLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91bGQgY29udGludWUg
d2l0aCAidGhlIGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBzYW1lIGFzCisvLyB0
aGUgZXZlbnQgaGFuZGxlciBOT1Qgc2V0dGluZyB0aGUgcmV0dXJuIHZhbHVlIHRvIGZhbHNlCisv
LyBodHRwczovL3czYy5naXRodWIuaW8vY2xpcGJvYXJkLWFwaXMvI2ZpcmUtYS1jbGlwYm9hcmQt
ZXZlbnQKK3N0YXRpYyBib29sIGRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQoUmVmUHRyPEVsZW1lbnQ+
JiYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK3sKKyAgICAvLyBGSVhN
RTogTW92ZSB0aGUgdGFyZ2V0IHNlbGVjdGlvbiBjb2RlIGhlcmUuCisgICAgaWYgKCF0YXJnZXQp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGUgc3Rv
cmVNb2RlOworICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnBhc3RlRXZlbnQpCisg
ICAgICAgIHN0b3JlTW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seTsKKyAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmNvcHlFdmVudCB8fCBldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmN1dEV2ZW50KQorICAgICAgICBzdG9yZU1vZGUgPSBEYXRhVHJh
bnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlOworICAgIGVsc2UKKyAgICAgICAgc3RvcmVNb2Rl
ID0gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQ7CisKKyAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0b3JlTW9kZSk7CisK
KyAgICBDbGlwYm9hcmRFdmVudDo6SW5pdCBpbml0OworICAgIGluaXQuYnViYmxlcyA9IHRydWU7
CisgICAgaW5pdC5jYW5jZWxhYmxlID0gdHJ1ZTsKKyAgICBpbml0LmNsaXBib2FyZERhdGEgPSBk
YXRhVHJhbnNmZXIucHRyKCk7CisgICAgYXV0byBldmVudCA9IENsaXBib2FyZEV2ZW50OjpjcmVh
dGUoZXZlbnRUeXBlLCBpbml0LCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOworCisgICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBib29sIG5vRGVmYXVsdFByb2Nlc3NpbmcgPSBl
dmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworICAgIGlmIChub0RlZmF1bHRQcm9jZXNzaW5nICYm
IHN0b3JlTW9kZSA9PSBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlKSB7CisgICAg
ICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
OworICAgICAgICBwYXN0ZWJvYXJkLT5jbGVhcigpOworICAgICAgICBwYXN0ZWJvYXJkLT53cml0
ZVBhc3RlYm9hcmQoZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkpOworICAgIH0KKworICAgIGRh
dGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOworCisgICAgcmV0dXJuICFub0Rl
ZmF1bHRQcm9jZXNzaW5nOworfQorCiAvLyBXaW5JRSB1c2VzIG9uYmVmb3JlY3V0IGFuZCBvbmJl
Zm9yZXBhc3RlIHRvIGVuYWJsZXMgdGhlIGN1dCBhbmQgcGFzdGUgbWVudSBpdGVtcy4gIFRoZXkK
IC8vIGFsc28gc2VuZCBvbmJlZm9yZWNvcHksIGFwcGFyZW50bHkgZm9yIHN5bW1ldHJ5LCBidXQg
aXQgZG9lc24ndCBhZmZlY3QgdGhlIG1lbnUgaXRlbXMuCiAvLyBXZSBuZWVkIHRvIHVzZSBvbmJl
Zm9yZWNvcHkgYXMgYSByZWFsIG1lbnUgZW5hYmxlciBiZWNhdXNlIHdlIGFsbG93IGVsZW1lbnRz
IHRoYXQgYXJlIG5vdApAQCAtMzIwLDE3ICszNTgsMjIgQEAgYm9vbCBFZGl0b3I6OmNhbkVkaXRS
aWNobHkoKSBjb25zdAogCiBib29sIEVkaXRvcjo6Y2FuREhUTUxDdXQoKQogewotICAgIHJldHVy
biAhbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpICYm
ICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVjdXRFdmVudCwgRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsKKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gIWRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVj
dGlvbigpLCBldmVudE5hbWVzKCkuYmVmb3JlY3V0RXZlbnQpOwogfQogCiBib29sIEVkaXRvcjo6
Y2FuREhUTUxDb3B5KCkKIHsKLSAgICByZXR1cm4gIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKSAmJiAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVz
KCkuYmVmb3JlY29weUV2ZW50LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOworICAg
IGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIWRpc3BhdGNoQ2xpcGJvYXJkRXZl
bnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBldmVudE5hbWVzKCkuYmVmb3JlY29w
eUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OmNhbkRIVE1MUGFzdGUoKQogewotICAgIHJldHVy
biAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVzKCkuYmVmb3JlcGFzdGVFdmVudCwgRGF0YVRy
YW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsKKyAgICByZXR1cm4gIWRpc3BhdGNoQ2xpcGJvYXJk
RXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBldmVudE5hbWVzKCkuYmVmb3Jl
cGFzdGVFdmVudCk7CiB9CiAKIGJvb2wgRWRpdG9yOjpjYW5DdXQoKSBjb25zdApAQCAtNTk4LDcg
KzY0MSw3IEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTENvcHkoKQogICAgIGlmIChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVzKCkuY29w
eUV2ZW50LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlKTsKKyAgICByZXR1cm4g
IWRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBl
dmVudE5hbWVzKCkuY29weUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OnRyeURIVE1MQ3V0KCkK
QEAgLTYwNiwxMiArNjQ5LDEyIEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTEN1dCgpCiAgICAgaWYg
KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVudChl
dmVudE5hbWVzKCkuY3V0RXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6V3JpdGFibGUp
OworICAgIHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9t
U2VsZWN0aW9uKCksIGV2ZW50TmFtZXMoKS5jdXRFdmVudCk7CiB9CiAKIGJvb2wgRWRpdG9yOjp0
cnlESFRNTFBhc3RlKCkKIHsKLSAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1l
cygpLnBhc3RlRXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6UmVhZGFibGUpOworICAg
IHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0
aW9uKCksIGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OnNob3Vs
ZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2Vy
dEFjdGlvbiBhY3Rpb24pIGNvbnN0CkBAIC03NzUsMzUgKzgxOCw2IEBAIHZvaWQgRWRpdG9yOjpj
bGVhckxhc3RFZGl0Q29tbWFuZCgpIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gbnVsbHB0cjsK
IH0KIAotLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91bGQgY29udGludWUgd2l0aCAidGhl
IGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIAotLy8gdGhlIGV2ZW50
IGhhbmRsZXIgTk9UIHNldHRpbmcgdGhlIHJldHVybiB2YWx1ZSB0byBmYWxzZQotYm9vbCBFZGl0
b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3kpCi17Ci0gICAgRWxlbWVudCogdGFyZ2V0ID0gZmlu
ZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwotICAgIGlmICghdGFyZ2V0KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUocG9saWN5KTsKLQotICAgIENsaXBib2FyZEV2ZW50OjpJbml0IGlu
aXQ7Ci0gICAgaW5pdC5idWJibGVzID0gdHJ1ZTsKLSAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVl
OwotICAgIGluaXQuY2xpcGJvYXJkRGF0YSA9IGRhdGFUcmFuc2Zlci5wdHIoKTsKLSAgICBhdXRv
IGV2ZW50ID0gQ2xpcGJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGluaXQsIEV2ZW50OjpJ
c1RydXN0ZWQ6Olllcyk7Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLSAgICBi
b29sIG5vRGVmYXVsdFByb2Nlc3NpbmcgPSBldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwotICAg
IGlmIChub0RlZmF1bHRQcm9jZXNzaW5nICYmIHBvbGljeSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3k6OldyaXRhYmxlKSB7Ci0gICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOwotICAgICAgICBwYXN0ZWJvYXJkLT5jbGVhcigpOwot
ICAgICAgICBwYXN0ZWJvYXJkLT53cml0ZVBhc3RlYm9hcmQoZGF0YVRyYW5zZmVyLT5wYXN0ZWJv
YXJkKCkpOwotICAgIH0KLQotICAgIC8vIGludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9y
IHNlY3VyaXR5Ci0gICAgZGF0YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5zZmVy
QWNjZXNzUG9saWN5OjpOdW1iKTsKLSAgICAKLSAgICByZXR1cm4gIW5vRGVmYXVsdFByb2Nlc3Np
bmc7Ci19Ci0KIEVsZW1lbnQqIEVkaXRvcjo6ZmluZEV2ZW50VGFyZ2V0RnJvbShjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pIGNvbnN0CiB7CiAgICAgRWxlbWVudCogdGFyZ2V0ID0g
c2VsZWN0aW9uLnN0YXJ0KCkuZWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CShyZXZpc2lvbiAyMjA4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgiCi0jaW5jbHVkZSAiRGF0YVRyYW5zZmVyQWNjZXNzUG9s
aWN5LmgiCiAjaW5jbHVkZSAiRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCIKICNpbmNsdWRlICJEb2N1
bWVudE1hcmtlci5oIgogI2luY2x1ZGUgIkVkaXRBY3Rpb24uaCIKQEAgLTIxOSw5ICsyMTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCk7CiAjZW5kaWYKLSAgICAKLSAgICBib29sIGRpc3BhdGNo
Q1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5KTsK
LSAgICAKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlTdHlsZShTdHlsZVByb3BlcnRp
ZXMqLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsKICAgICB2b2lkIGFwcGx5
U3R5bGUoUmVmUHRyPEVkaXRpbmdTdHlsZT4mJiwgRWRpdEFjdGlvbik7CiAgICAgdm9pZCBhcHBs
eVBhcmFncmFwaFN0eWxlKFN0eWxlUHJvcGVydGllcyosIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9u
VW5zcGVjaWZpZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTkgKzIyMCwyOCBAQCBEcmFnT3BlcmF0aW9uIERy
YWdDb250cm9sbGVyOjpkcmFnRW50ZXJlCiAgICAgcmV0dXJuIGRyYWdFbnRlcmVkT3JVcGRhdGVk
KGRyYWdEYXRhKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRy
YW5zZmVyVG9VcGRhdGVEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU2V0dGlu
Z3MmIHNldHRpbmdzLCBSZWZQdHI8RG9jdW1lbnQ+JiYgZG9jdW1lbnRVbmRlck1vdXNlKQogewot
ICAgIGlmIChSZWZQdHI8RnJhbWVWaWV3PiB2ID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKSkg
eworICAgIGF1dG8gYWNjZXNzTW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpQcm90ZWN0
ZWQ7CisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIERhdGFUcmFuc2Zl
ckFjY2Vzc1BvbGljeSBwb2xpY3kgPSAobV9wYWdlLm1haW5GcmFtZSgpLnNldHRpbmdzKCkudXNl
c0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAoIW1fZG9jdW1lbnRVbmRl
ck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLmlzTG9jYWwo
KSkpCi0gICAgICAgICAgICA/IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6UmVhZGFibGUgOiBE
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlR5cGVzUmVhZGFibGU7Ci0jZWxzZQotICAgICAgICBE
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5ID0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5
OjpUeXBlc1JlYWRhYmxlOworICAgIGlmIChzZXR0aW5ncy51c2VzRGFzaGJvYXJkQmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSgpICYmICghZG9jdW1lbnRVbmRlck1vdXNlIHx8IGRvY3VtZW50VW5k
ZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS5pc0xvY2FsKCkpKQorICAgICAgICBhY2Nlc3NNb2Rl
ID0gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5OwogI2VuZGlmCi0gICAgICAgIGF1
dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKHBvbGljeSwgZHJh
Z0RhdGEpOwotICAgICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0
YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisKKyAgICBhdXRvIGRhdGFUcmFuc2Zl
ciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChhY2Nlc3NNb2RlLCBkcmFnRGF0YSk7Cisg
ICAgRHJhZ09wZXJhdGlvbiBzcmNPcE1hc2sgPSBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soKTsKKyAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzcmNPcE1h
c2spOworCisgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKK30KKwordm9pZCBEcmFnQ29udHJvbGxl
cjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCit7CisgICAgaWYgKFJlZlB0
cjxGcmFtZVZpZXc+IHYgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpKSB7CisgICAgICAgIGF1
dG8gZGF0YVRyYW5zZmVyID0gY3JlYXRlRGF0YVRyYW5zZmVyVG9VcGRhdGVEcmFnKGRyYWdEYXRh
LCBtX3BhZ2UubWFpbkZyYW1lKCkuc2V0dGluZ3MoKSwgbV9kb2N1bWVudFVuZGVyTW91c2UuY29w
eVJlZigpKTsKICAgICAgICAgbV9wYWdlLm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmNhbmNl
bERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBkYXRhVHJhbnNmZXIpOwot
ICAgICAgICBkYXRhVHJhbnNmZXItPnNldEFjY2Vzc1BvbGljeShEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3k6Ok51bWIpOyAvLyBJbnZhbGlkYXRlIGRhdGFUcmFuc2ZlciBoZXJlIGZvciBzZWN1cml0
eS4KKyAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAg
fQogICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik7CiAgICAgaWYgKG1fZmlsZUlu
cHV0RWxlbWVudFVuZGVyTW91c2UpCkBAIC0yNzMsMTAgKzI4MiwxMCBAQCBib29sIERyYWdDb250
cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvCiAgICAgICAgIGJvb2wgcHJldmVudGVkRGVmYXVs
dCA9IGZhbHNlOwogICAgICAgICBpZiAobWFpbkZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAg
IC8vIFNlbmRpbmcgYW4gZXZlbnQgY2FuIHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhl
IHZpZXcgYW5kIHBhcnQuCi0gICAgICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJvcChEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlLCBk
cmFnRGF0YSk7CisgICAgICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yRHJvcChEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIGRyYWdEYXRh
KTsKICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRh
LmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgICAgIHByZXZlbnRlZERl
ZmF1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChjcmVh
dGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwgZGF0YVRyYW5zZmVyKTsKLSAgICAgICAgICAgIGRhdGFU
cmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7
IC8vIEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgICAgICAg
ICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHByZXZlbnRlZERlZmF1bHQpIHsKICAgICAgICAgICAgIGNsZWFyRHJhZ0NhcmV0
KCk7CkBAIC02OTgsMjMgKzcwNywxNiBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERy
YWcoY29uc3QgCiAgICAgaWYgKCF2aWV3UHJvdGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5IHBvbGljeSA9IChtYWluRnJhbWUtPnNldHRpbmdzKCkudXNlc0Rhc2hib2FyZEJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiBtX2RvY3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlP
cmlnaW4oKS5pc0xvY2FsKCkpID8KLSAgICAgICAgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpS
ZWFkYWJsZSA6IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZTsKLSNlbHNl
Ci0gICAgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSA9IERhdGFUcmFuc2ZlckFjY2Vz
c1BvbGljeTo6VHlwZXNSZWFkYWJsZTsKLSNlbmRpZgotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKHBvbGljeSwgZHJhZ0RhdGEpOwotICAgIERyYWdP
cGVyYXRpb24gc3JjT3BNYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KCk7Ci0gICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oc3JjT3BNYXNrKTsKKyAg
ICBhdXRvIGRhdGFUcmFuc2ZlciA9IGNyZWF0ZURhdGFUcmFuc2ZlclRvVXBkYXRlRHJhZyhkcmFn
RGF0YSwgbWFpbkZyYW1lLT5zZXR0aW5ncygpLCBtX2RvY3VtZW50VW5kZXJNb3VzZS5jb3B5UmVm
KCkpOwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50ID0gY3JlYXRlTW91c2VFdmVudChk
cmFnRGF0YSk7CiAgICAgaWYgKCFtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdB
bmREcm9wKGV2ZW50LCBkYXRhVHJhbnNmZXIpKSB7Ci0gICAgICAgIGRhdGFUcmFuc2Zlci0+c2V0
QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7IC8vIEludmFsaWRh
dGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgICAgICBkYXRhVHJhbnNmZXIt
Pm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIG9wZXJhdGlvbiA9IGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKTsK
KyAgICBEcmFnT3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaygpOwogICAgIGlmIChkYXRhVHJhbnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlh
bGl6ZWQoKSkKICAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc3Jj
T3BNYXNrKTsKICAgICBlbHNlIGlmICghKHNyY09wTWFzayAmIG9wZXJhdGlvbikpIHsKQEAgLTcy
Miw3ICs3MjQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgCiAg
ICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOwogICAgIH0KIAotICAgIGRhdGFU
cmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7
IC8vIEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgIGRhdGFU
cmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjA4ODIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0NjEsNyArMzQ2MSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjppbnZhbGlkYXRlRGF0YVRy
YW5zZmUKIHsKICAgICBpZiAoIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlcikKICAgICAgICAgcmV0
dXJuOwotICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVy
LT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVy
ID0gbnVsbHB0cjsKIH0KIApAQCAtMzY3OSwxNCArMzY3OSwxNCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gCi0gICAgICAgIAorCiAgICAgICAgIG1fbW91c2VEb3du
TWF5U3RhcnREcmFnID0gZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFy
dEV2ZW50LCBtX21vdXNlRG93bikKICAgICAgICAgICAgICYmICFtX2ZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8v
IEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgYWdhaW5zdCBhbnltb3JlIHBhc3RlYm9hcmQg
d3JpdGluZyBmb3Igc2VjdXJpdHkuIFRoZSBkcmFnCiAgICAgICAgIC8vIGltYWdlIGNhbiBzdGls
bCBiZSBjaGFuZ2VkIGFzIHdlIGRyYWcsIGJ1dCBub3QgdGhlIHBhc3RlYm9hcmQgZGF0YS4KLSAg
ICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpJbWFnZVdyaXRhYmxlKTsKLSAgICAgICAgCisgICAgICAgIGRyYWdT
dGF0ZSgpLmRhdGFUcmFuc2Zlci0+bWFrZURyYWdJbWFnZVdyaXRhYmxlKCk7CisKICAgICAgICAg
aWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFs
dWVzIGZyb20gREhUTUwgZWxlbWVudCwgaWYgaXQgc2V0IGFueS4KICAgICAgICAgICAgIHNyY09w
ID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318463</attachid>
            <date>2017-08-17 20:41:40 -0700</date>
            <delta_ts>2017-08-17 21:36:04 -0700</delta_ts>
            <desc>Fixed iOS builds</desc>
            <filename>bug-175704-20170817204139.patch</filename>
            <type>text/plain</type>
            <size>29061</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDg5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTA4LTE3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBEYXRhVHJhbnNmZXJB
Y2Nlc3NQb2xpY3kgdG8gbWF0Y2ggc3BlYyBhbmQgcmVmYWN0b3IgcmVsYXRlZCBub2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeSB0byBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZSB0byBtYXRjaCB0
aGUgZHJhZyBkYXRhIHN0b3JlIG1vZGUgY29uY2VwdAorICAgICAgICBpbiB0aGUgSFRNTDUgc3Bl
Y2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvZG5kLmh0bWwjZHJhZy1kYXRhLXN0b3JlLW1vZGUKKworICAgICAgICBEYXRhVHJhbnNmZXIg
aW4gYWRkaXRpb24gdG8gdGhvc2Ugc3RhdGVzIGNhbiBiZSBkaXNhc3NvY2lhdGVkIGZyb20gdGhl
IGRyYWcgZGF0YSBzdG9yZSB3aGVuIGl0IGJlY29tZXMKKyAgICAgICAgbm8gbG9uZ2VyIHZhbGlk
LiBXZSBhbHNvIHN1cHBvcnQgYSBzcGVjaWFsIG1vZGUgd2hpY2ggYWxsb3dzIG9ubHkgdXBkYXRp
bmcgdGhlIGRyYWcgaW1hZ2UuCisgICAgICAgIFRoZXNlIHR3byBzdGF0ZXMsIEludmFsaWQgYW5k
IERyYWdJbWFnZVdyaXRhYmxlLCBhcmUgYWRkZWQgaW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIHN0
YXRlcyBpbiB0aGUgc3BlYy4KKworICAgICAgICBBbHNvIHNwbGl0IERyYWdBbmREcm9wIHR5cGUg
b2YgRGF0YVRyYW5zZmVyIGludG8gRHJhZ0FuZERyb3BEYXRhIGFuZCBEcmFnQW5kRHJvcEZpbGVz
LCBhbmQgcmVmYWN0b3JlZAorICAgICAgICB0aGUgcmVsYXRlZCBjb2RlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OkRh
dGFUcmFuc2Zlcik6IE5vIGxvbmdlciB0YWtlcyBmb3JGaWxlRHJhZyBib29sZWFuIHNpbmNlIGl0
J3MgZm9sZGVkIGludG8gdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6fkRh
dGFUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldEFjY2Vzc1Bv
bGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhblJlYWRU
eXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhblJlYWREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y2FuV3JpdGVEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y2FuU2V0RHJhZ0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6Om1ha2VJ
bnZhbGlkRm9yU2VjdXJpdHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6bWFrZURyYWdJbWFnZVdyaXRhYmxlKTogQWRkZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeS5oOiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQpOiBNb3ZlZCBhbmQg
cmVuYW1lZCBmcm9tIGRpc3BhdGNoQ1BQRXZlbnQuIE5vdyBjb21wdXRlcyB0aGUgc3RvcmUgbW9k
ZQorICAgICAgICBpbnNpZGUgdGhlIGZ1bmN0aW9uIHRvIG1hdGNoIHRoZSBzcGVjOiBodHRwczov
L3czYy5naXRodWIuaW8vY2xpcGJvYXJkLWFwaXMvI2ZpcmUtYS1jbGlwYm9hcmQtZXZlbnQKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuREhUTUxDdXQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpjYW5ESFRNTENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5ESFRN
TFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6dHJ5REhUTUxDdXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjp0cnlESFRNTFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGlzcGF0Y2hD
UFBFdmVudCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFU
cmFuc2ZlclRvVXBkYXRlRHJhZyk6IEV4dHJhY3RlZCB0byBzaGFyZSBjb2RlLgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aW52YWxpZGF0ZURhdGFU
cmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgor
CiAyMDE3LTA4LTE3ICBEYWV3b29uZyBKYW5nICA8ZGFld29vbmcuamFuZ0BuYXZlcmNvcnAuY29t
PgogCiAgICAgICAgIFtDdXJsXSBJbXByb3ZlIG11bHRpLXRocmVhZGVkIG5ldHdvcmtpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEyMiw3ICsyMTIyLDYgQEAKIAkJ
NEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjZGQTZGNzBDMzlF
NEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZUNGLmNwcCAqLzsgfTsKLQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEI4QUY0QTkwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vz
c1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5
Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RTE5NTkyMTBBMzlEQUJBMDAyMjBGRTUgLyog
TWVkaWFGZWF0dXJlTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVz
LmNwcCAqLzsgfTsKIAkJNEUxOTU5MjIwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5h
bWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5
NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTg0OCw3ICs5ODQ3LDYgQEAK
IAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRS
ZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRS
ZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QjhBRjRBOTBCMUNF
MDJCMDA2ODc2OTAgLyogRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRl
bGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JEZWxl
dGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEUxOTU5MUYwQTM5REFC
QTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYUZlYXR1cmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRFMTk1OTIwMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFGZWF0dXJlTmFtZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjU0LDcgKzI1NjUyLDYgQEAKIAkJ
CQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogRGF0YVRyYW5zZmVyLmNwcCAqLywKIAkJCQk4
NTAzMUIyODBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRyYW5zZmVyLmggKi8sCiAJCQkJQkNBODNF
MzYwRDdDREM0RTAwMzQyMUE4IC8qIERhdGFUcmFuc2Zlci5pZGwgKi8sCi0JCQkJNEI4QUY0QTkw
QjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oICovLAogCQkJCTlC
MDk4QkQ1MUYzRDYwMzMwMDJERDU2MiAvKiBEYXRhVHJhbnNmZXJJdGVtLmNwcCAqLywKIAkJCQk4
MUFDNTk5NzEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbS5oICovLAogCQkJCTgx
QUM1QUU4MTMxNjM5MkUwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmlkbCAqLywKQEAgLTI3
MDgxLDcgKzI3MDc4LDYgQEAKIAkJCQlCQzIyNzQ2RjBFODM2NjQ1MDBFN0Y5NzUgLyogRGF0YVJl
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFz
ZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5
OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCOEFGNEFBMEIxQ0Uw
MkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MUFDNTk5QTEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRl
bUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcAkocmV2aXNpb24gMjIwODgyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDI2ICs1NywyNSBAQCBwcml2YXRlOgog
CiAjZW5kaWYKIAotRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5IHBvbGljeSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQsIFR5
cGUgdHlwZSwgYm9vbCBmb3JGaWxlRHJhZykKLSAgICA6IG1fcG9saWN5KHBvbGljeSkKK0RhdGFU
cmFuc2Zlcjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gcGFzdGVib2FyZCwgVHlwZSB0eXBlKQorICAgIDogbV9zdG9yZU1vZGUobW9kZSkK
ICAgICAsIG1fcGFzdGVib2FyZChXVEZNb3ZlKHBhc3RlYm9hcmQpKQogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCi0gICAgLCBtX2ZvckRyYWcodHlwZSA9PSBEcmFnQW5kRHJvcCkKLSAgICAsIG1f
Zm9yRmlsZURyYWcoZm9yRmlsZURyYWcpCisgICAgLCBtX2ZvckRyYWcodHlwZSA9PSBUeXBlOjpE
cmFnQW5kRHJvcERhdGEgfHwgdHlwZSA9PSBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzKQorICAgICwg
bV9mb3JGaWxlRHJhZyh0eXBlID09IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMpCiAgICAgLCBtX2Ry
b3BFZmZlY3QoQVNDSUlMaXRlcmFsKCJ1bmluaXRpYWxpemVkIikpCiAgICAgLCBtX2VmZmVjdEFs
bG93ZWQoQVNDSUlMaXRlcmFsKCJ1bmluaXRpYWxpemVkIikpCiAgICAgLCBtX3Nob3VsZFVwZGF0
ZURyYWdJbWFnZShmYWxzZSkKICNlbmRpZgogewogI2lmICFFTkFCTEUoRFJBR19TVVBQT1JUKQot
ICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSAhPSBEcmFnQW5kRHJvcCk7Ci0gICAgQVNTRVJU
X1VOVVNFRChmb3JGaWxlRHJhZywgIWZvckZpbGVEcmFnKTsKKyAgICBBU1NFUlRfVU5VU0VEKHR5
cGUsIHR5cGUgIT0gRHJhZ0FuZERyb3BEYXRhICYmIHR5cGUgIT0gRHJhZ0FuZERyb3BGaWxlcyk7
CiAjZW5kaWYKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSkKK1JlZjxEYXRhVHJh
bnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFN0b3JlTW9kZSBtb2Rl
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihwb2xpY3ksIHBvbGlj
eSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlID8gUGFzdGVib2FyZDo6Y3Jl
YXRlUHJpdmF0ZSgpIDogUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIobW9kZSwgbW9kZSA9PSBTdG9yZU1v
ZGU6OlJlYWRXcml0ZSA/IFBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUoKSA6IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKSk7CiB9CiAKIERhdGFUcmFuc2Zlcjo6fkRhdGFUcmFu
c2ZlcigpCkBAIC04NiwyNyArODUsMjAgQEAgRGF0YVRyYW5zZmVyOjp+RGF0YVRyYW5zZmVyKCkK
ICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0b3BMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICNl
bmRpZgogfQotICAgIAotdm9pZCBEYXRhVHJhbnNmZXI6OnNldEFjY2Vzc1BvbGljeShEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5KQotewotICAgIC8vIE9uY2UgdGhlIGRhdGFUcmFuc2Zl
ciBnb2VzIG51bWIsIGl0IGNhbiBuZXZlciBnbyBiYWNrLgotICAgIEFTU0VSVChtX3BvbGljeSAh
PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIgfHwgcG9saWN5ID09IERhdGFUcmFuc2Zl
ckFjY2Vzc1BvbGljeTo6TnVtYik7Ci0gICAgbV9wb2xpY3kgPSBwb2xpY3k7Ci19CiAKIGJvb2wg
RGF0YVRyYW5zZmVyOjpjYW5SZWFkVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiBtX3BvbGlj
eSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlIHx8IG1fcG9saWN5ID09IERh
dGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBEYXRh
VHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlOworICAgIHJldHVybiBtX3N0b3JlTW9kZSA9
PSBTdG9yZU1vZGU6OlJlYWRvbmx5IHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9kZTo6UHJvdGVj
dGVkIHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9kZTo6UmVhZFdyaXRlOwogfQogCiBib29sIERh
dGFUcmFuc2Zlcjo6Y2FuUmVhZERhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3BvbGljeSA9
PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlIHx8IG1fcG9saWN5ID09IERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeTo6V3JpdGFibGU7CisgICAgcmV0dXJuIG1fc3RvcmVNb2RlID09
IFN0b3JlTW9kZTo6UmVhZG9ubHkgfHwgbV9zdG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpSZWFkV3Jp
dGU7CiB9CiAKIGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5Xcml0ZURhdGEoKSBjb25zdAogewotICAg
IHJldHVybiBtX3BvbGljeSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlOwor
ICAgIHJldHVybiBtX3N0b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRXcml0ZTsKIH0KIAogdm9p
ZCBEYXRhVHJhbnNmZXI6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0yMTQsNyAr
MjA2LDcgQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGbwogICAgIFR5
cGVUb1N0cmluZ01hcCB0eXBlVG9TdHJpbmdNYXA7CiAgICAgdHlwZVRvU3RyaW5nTWFwLnNldChB
U0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgcGxhaW5UZXh0KTsKICAgICB0eXBlVG9TdHJpbmdN
YXAuc2V0KEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiksIGh0bWxUZXh0KTsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFk
YWJsZSwgU3RhdGljUGFzdGVib2FyZDo6Y3JlYXRlKFdURk1vdmUodHlwZVRvU3RyaW5nTWFwKSks
IElucHV0RXZlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3Rv
cmVNb2RlOjpSZWFkb25seSwgU3RhdGljUGFzdGVib2FyZDo6Y3JlYXRlKFdURk1vdmUodHlwZVRv
U3RyaW5nTWFwKSksIFR5cGU6OklucHV0RXZlbnQpKTsKIH0KIAogI2lmICFFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtMjQ1LDEyICsyMzcsMTMgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyYWdJ
bWFnZShFbGVtZW50KgogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckRyYWcoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCgpLCBEcmFnQW5kRHJvcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFu
c2ZlcihTdG9yZU1vZGU6OlJlYWRXcml0ZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5
LCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyb3AoU3RvcmVNb2RlIGFjY2Vzc01vZGUsIGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIocG9saWN5
LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSksIERyYWdBbmREcm9w
LCBkcmFnRGF0YS5jb250YWluc0ZpbGVzKCkpKTsKKyAgICBhdXRvIHR5cGUgPSBkcmFnRGF0YS5j
b250YWluc0ZpbGVzKCkgPyBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERy
b3BEYXRhOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihhY2Nlc3NNb2Rl
LCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSksIHR5cGUpKTsKIH0K
IAogYm9vbCBEYXRhVHJhbnNmZXI6OmNhblNldERyYWdJbWFnZSgpIGNvbnN0CkBAIC0yNTksNyAr
MjUyLDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6OmNhblNldERyYWdJbWFnZSgpIGNvbgogICAgIC8v
IGV2ZW50LiBUaGlzIGNhcGFiaWxpdHkgaXMgbWFpbnRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBh
dGlibGl0eSBmb3IgcG9ydHMgdGhhdCBoYXZlCiAgICAgLy8gc3VwcG9ydGVkIHRoaXMgaW4gdGhl
IHBhc3QuIE9uIG1hbnkgcG9ydHMsIGF0dGVtcHRpbmcgdG8gc2V0IGEgZHJhZyBpbWFnZSBvdXRz
aWRlIHRoZQogICAgIC8vIGRyYWdzdGFydCBvcGVyYXRpb24gaXMgYSBuby1vcCBhbnl3YXkuCi0g
ICAgcmV0dXJuIG1fZm9yRHJhZyAmJiAobV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9s
aWN5OjpJbWFnZVdyaXRhYmxlIHx8IG1fcG9saWN5ID09IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGlj
eTo6V3JpdGFibGUpOworICAgIHJldHVybiBtX2ZvckRyYWcgJiYgKG1fc3RvcmVNb2RlID09IFN0
b3JlTW9kZTo6RHJhZ0ltYWdlV3JpdGFibGUgfHwgbV9zdG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpS
ZWFkV3JpdGUpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQq
IGVsZW1lbnQsIGludCB4LCBpbnQgeSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgJ
KHJldmlzaW9uIDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIkRhdGFUcmFuc2ZlckFjY2Vzc1Bv
bGljeS5oIgogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSw3ICs0MCwxMCBAQCBjbGFz
cyBQYXN0ZWJvYXJkOwogCiBjbGFzcyBEYXRhVHJhbnNmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxE
YXRhVHJhbnNmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yQ29weUFuZFBhc3RlKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSk7CisgICAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG5kLmh0bWwjZHJhZy1kYXRhLXN0
b3JlLW1vZGUKKyAgICBlbnVtIGNsYXNzIFN0b3JlTW9kZSB7IEludmFsaWQsIERyYWdJbWFnZVdy
aXRhYmxlLCBSZWFkV3JpdGUsIFJlYWRvbmx5LCBQcm90ZWN0ZWQgfTsKKworICAgIHN0YXRpYyBS
ZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JDb3B5QW5kUGFzdGUoU3RvcmVNb2RlKTsKICAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcm
IHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+RGF0YVRyYW5zZmVyKCk7CkBAIC02NSw3ICs2NywxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldERyYWdJbWFnZShFbGVtZW50KiwgaW50IHgsIGludCB5KTsKIAotICAgIHZvaWQgc2V0QWNj
ZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSk7CisgICAgdm9pZCBtYWtlSW52YWxp
ZEZvclNlY3VyaXR5KCkgeyBtX3N0b3JlTW9kZSA9IFN0b3JlTW9kZTo6SW52YWxpZDsgfQorICAg
IHZvaWQgbWFrZURyYWdJbWFnZVdyaXRhYmxlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3N0
b3JlTW9kZSAhPSBTdG9yZU1vZGU6OkludmFsaWQpOworICAgICAgICBtX3N0b3JlTW9kZSA9IFN0
b3JlTW9kZTo6RHJhZ0ltYWdlV3JpdGFibGU7CisgICAgfQorCiAgICAgYm9vbCBjYW5SZWFkVHlw
ZXMoKSBjb25zdDsKICAgICBib29sIGNhblJlYWREYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5X
cml0ZURhdGEoKSBjb25zdDsKQEAgLTc3LDcgKzg1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJh
ZygpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKERhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeSwgY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFU
cmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChTdG9yZU1vZGUsIGNvbnN0IERyYWdEYXRhJik7CiAKICAg
ICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2Ryb3BF
ZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKQEAgLTkyLDE0ICsxMDAsMTQgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZW51bSBUeXBlIHsgQ29weUFuZFBhc3RlLCBEcmFn
QW5kRHJvcCwgSW5wdXRFdmVudCB9OwotICAgIERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXJBY2Nl
c3NQb2xpY3ksIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwgVHlwZSA9IENvcHlBbmRQYXN0
ZSwgYm9vbCBmb3JGaWxlRHJhZyA9IGZhbHNlKTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBDb3B5
QW5kUGFzdGUsIERyYWdBbmREcm9wRGF0YSwgRHJhZ0FuZERyb3BGaWxlcywgSW5wdXRFdmVudCB9
OworICAgIERhdGFUcmFuc2ZlcihTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiwgVHlwZSA9IFR5cGU6OkNvcHlBbmRQYXN0ZSk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIGJvb2wgY2FuU2V0RHJhZ0ltYWdlKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeSBtX3BvbGljeTsKKyAgICBTdG9yZU1vZGUgbV9zdG9yZU1vZGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IG1fcGFzdGVib2FyZDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGF0YVRyYW5zZmVySXRlbUxpc3Q+IG1faXRlbUxpc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmgJKHJldmlzaW9u
IDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3ku
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWVudW0gY2xhc3MgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHsKLSAgICBOdW1iLCBJ
bWFnZVdyaXRhYmxlLCBXcml0YWJsZSwgVHlwZXNSZWFkYWJsZSwgUmVhZGFibGUKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIyMDg4MikK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEzLDYgKzMxMyw0NCBAQCBib29sIEVkaXRvcjo6Y2FuRWRpdFJpY2hseSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKTsKIH0KIAorLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91bGQgY29udGludWUg
d2l0aCAidGhlIGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBzYW1lIGFzCisvLyB0
aGUgZXZlbnQgaGFuZGxlciBOT1Qgc2V0dGluZyB0aGUgcmV0dXJuIHZhbHVlIHRvIGZhbHNlCisv
LyBodHRwczovL3czYy5naXRodWIuaW8vY2xpcGJvYXJkLWFwaXMvI2ZpcmUtYS1jbGlwYm9hcmQt
ZXZlbnQKK3N0YXRpYyBib29sIGRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQoUmVmUHRyPEVsZW1lbnQ+
JiYgdGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK3sKKyAgICAvLyBGSVhN
RTogTW92ZSB0aGUgdGFyZ2V0IHNlbGVjdGlvbiBjb2RlIGhlcmUuCisgICAgaWYgKCF0YXJnZXQp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGUgc3Rv
cmVNb2RlOworICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnBhc3RlRXZlbnQpCisg
ICAgICAgIHN0b3JlTW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seTsKKyAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmNvcHlFdmVudCB8fCBldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmN1dEV2ZW50KQorICAgICAgICBzdG9yZU1vZGUgPSBEYXRhVHJh
bnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlOworICAgIGVsc2UKKyAgICAgICAgc3RvcmVNb2Rl
ID0gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQ7CisKKyAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0b3JlTW9kZSk7CisK
KyAgICBDbGlwYm9hcmRFdmVudDo6SW5pdCBpbml0OworICAgIGluaXQuYnViYmxlcyA9IHRydWU7
CisgICAgaW5pdC5jYW5jZWxhYmxlID0gdHJ1ZTsKKyAgICBpbml0LmNsaXBib2FyZERhdGEgPSBk
YXRhVHJhbnNmZXIucHRyKCk7CisgICAgYXV0byBldmVudCA9IENsaXBib2FyZEV2ZW50OjpjcmVh
dGUoZXZlbnRUeXBlLCBpbml0LCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOworCisgICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBib29sIG5vRGVmYXVsdFByb2Nlc3NpbmcgPSBl
dmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOworICAgIGlmIChub0RlZmF1bHRQcm9jZXNzaW5nICYm
IHN0b3JlTW9kZSA9PSBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlKSB7CisgICAg
ICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
OworICAgICAgICBwYXN0ZWJvYXJkLT5jbGVhcigpOworICAgICAgICBwYXN0ZWJvYXJkLT53cml0
ZVBhc3RlYm9hcmQoZGF0YVRyYW5zZmVyLT5wYXN0ZWJvYXJkKCkpOworICAgIH0KKworICAgIGRh
dGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOworCisgICAgcmV0dXJuICFub0Rl
ZmF1bHRQcm9jZXNzaW5nOworfQorCiAvLyBXaW5JRSB1c2VzIG9uYmVmb3JlY3V0IGFuZCBvbmJl
Zm9yZXBhc3RlIHRvIGVuYWJsZXMgdGhlIGN1dCBhbmQgcGFzdGUgbWVudSBpdGVtcy4gIFRoZXkK
IC8vIGFsc28gc2VuZCBvbmJlZm9yZWNvcHksIGFwcGFyZW50bHkgZm9yIHN5bW1ldHJ5LCBidXQg
aXQgZG9lc24ndCBhZmZlY3QgdGhlIG1lbnUgaXRlbXMuCiAvLyBXZSBuZWVkIHRvIHVzZSBvbmJl
Zm9yZWNvcHkgYXMgYSByZWFsIG1lbnUgZW5hYmxlciBiZWNhdXNlIHdlIGFsbG93IGVsZW1lbnRz
IHRoYXQgYXJlIG5vdApAQCAtMzIwLDE3ICszNTgsMjIgQEAgYm9vbCBFZGl0b3I6OmNhbkVkaXRS
aWNobHkoKSBjb25zdAogCiBib29sIEVkaXRvcjo6Y2FuREhUTUxDdXQoKQogewotICAgIHJldHVy
biAhbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpICYm
ICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVjdXRFdmVudCwgRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsKKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gIWRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVj
dGlvbigpLCBldmVudE5hbWVzKCkuYmVmb3JlY3V0RXZlbnQpOwogfQogCiBib29sIEVkaXRvcjo6
Y2FuREhUTUxDb3B5KCkKIHsKLSAgICByZXR1cm4gIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKSAmJiAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVz
KCkuYmVmb3JlY29weUV2ZW50LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOworICAg
IGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIWRpc3BhdGNoQ2xpcGJvYXJkRXZl
bnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBldmVudE5hbWVzKCkuYmVmb3JlY29w
eUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OmNhbkRIVE1MUGFzdGUoKQogewotICAgIHJldHVy
biAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVzKCkuYmVmb3JlcGFzdGVFdmVudCwgRGF0YVRy
YW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsKKyAgICByZXR1cm4gIWRpc3BhdGNoQ2xpcGJvYXJk
RXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBldmVudE5hbWVzKCkuYmVmb3Jl
cGFzdGVFdmVudCk7CiB9CiAKIGJvb2wgRWRpdG9yOjpjYW5DdXQoKSBjb25zdApAQCAtNTk4LDcg
KzY0MSw3IEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTENvcHkoKQogICAgIGlmIChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVzKCkuY29w
eUV2ZW50LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlKTsKKyAgICByZXR1cm4g
IWRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBl
dmVudE5hbWVzKCkuY29weUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OnRyeURIVE1MQ3V0KCkK
QEAgLTYwNiwxMiArNjQ5LDEyIEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTEN1dCgpCiAgICAgaWYg
KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVudChl
dmVudE5hbWVzKCkuY3V0RXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6V3JpdGFibGUp
OworICAgIHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9t
U2VsZWN0aW9uKCksIGV2ZW50TmFtZXMoKS5jdXRFdmVudCk7CiB9CiAKIGJvb2wgRWRpdG9yOjp0
cnlESFRNTFBhc3RlKCkKIHsKLSAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1l
cygpLnBhc3RlRXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6UmVhZGFibGUpOworICAg
IHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0
aW9uKCksIGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OnNob3Vs
ZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2Vy
dEFjdGlvbiBhY3Rpb24pIGNvbnN0CkBAIC03NzUsMzUgKzgxOCw2IEBAIHZvaWQgRWRpdG9yOjpj
bGVhckxhc3RFZGl0Q29tbWFuZCgpIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gbnVsbHB0cjsK
IH0KIAotLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91bGQgY29udGludWUgd2l0aCAidGhl
IGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIAotLy8gdGhlIGV2ZW50
IGhhbmRsZXIgTk9UIHNldHRpbmcgdGhlIHJldHVybiB2YWx1ZSB0byBmYWxzZQotYm9vbCBFZGl0
b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3kpCi17Ci0gICAgRWxlbWVudCogdGFyZ2V0ID0gZmlu
ZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpOwotICAgIGlmICghdGFyZ2V0KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUocG9saWN5KTsKLQotICAgIENsaXBib2FyZEV2ZW50OjpJbml0IGlu
aXQ7Ci0gICAgaW5pdC5idWJibGVzID0gdHJ1ZTsKLSAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVl
OwotICAgIGluaXQuY2xpcGJvYXJkRGF0YSA9IGRhdGFUcmFuc2Zlci5wdHIoKTsKLSAgICBhdXRv
IGV2ZW50ID0gQ2xpcGJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGluaXQsIEV2ZW50OjpJ
c1RydXN0ZWQ6Olllcyk7Ci0gICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLSAgICBi
b29sIG5vRGVmYXVsdFByb2Nlc3NpbmcgPSBldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwotICAg
IGlmIChub0RlZmF1bHRQcm9jZXNzaW5nICYmIHBvbGljeSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3k6OldyaXRhYmxlKSB7Ci0gICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpOwotICAgICAgICBwYXN0ZWJvYXJkLT5jbGVhcigpOwot
ICAgICAgICBwYXN0ZWJvYXJkLT53cml0ZVBhc3RlYm9hcmQoZGF0YVRyYW5zZmVyLT5wYXN0ZWJv
YXJkKCkpOwotICAgIH0KLQotICAgIC8vIGludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9y
IHNlY3VyaXR5Ci0gICAgZGF0YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5zZmVy
QWNjZXNzUG9saWN5OjpOdW1iKTsKLSAgICAKLSAgICByZXR1cm4gIW5vRGVmYXVsdFByb2Nlc3Np
bmc7Ci19Ci0KIEVsZW1lbnQqIEVkaXRvcjo6ZmluZEV2ZW50VGFyZ2V0RnJvbShjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pIGNvbnN0CiB7CiAgICAgRWxlbWVudCogdGFyZ2V0ID0g
c2VsZWN0aW9uLnN0YXJ0KCkuZWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CShyZXZpc2lvbiAyMjA4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgiCi0jaW5jbHVkZSAiRGF0YVRyYW5zZmVyQWNjZXNzUG9s
aWN5LmgiCiAjaW5jbHVkZSAiRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCIKICNpbmNsdWRlICJEb2N1
bWVudE1hcmtlci5oIgogI2luY2x1ZGUgIkVkaXRBY3Rpb24uaCIKQEAgLTIxOSw5ICsyMTgsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCk7CiAjZW5kaWYKLSAgICAKLSAgICBib29sIGRpc3BhdGNo
Q1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5KTsK
LSAgICAKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlTdHlsZShTdHlsZVByb3BlcnRp
ZXMqLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsKICAgICB2b2lkIGFwcGx5
U3R5bGUoUmVmUHRyPEVkaXRpbmdTdHlsZT4mJiwgRWRpdEFjdGlvbik7CiAgICAgdm9pZCBhcHBs
eVBhcmFncmFwaFN0eWxlKFN0eWxlUHJvcGVydGllcyosIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9u
VW5zcGVjaWZpZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTkgKzIyMCwyOCBAQCBEcmFnT3BlcmF0aW9uIERy
YWdDb250cm9sbGVyOjpkcmFnRW50ZXJlCiAgICAgcmV0dXJuIGRyYWdFbnRlcmVkT3JVcGRhdGVk
KGRyYWdEYXRhKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRy
YW5zZmVyVG9VcGRhdGVEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgY29uc3QgU2V0dGlu
Z3MmIHNldHRpbmdzLCBSZWZQdHI8RG9jdW1lbnQ+JiYgZG9jdW1lbnRVbmRlck1vdXNlKQogewot
ICAgIGlmIChSZWZQdHI8RnJhbWVWaWV3PiB2ID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKSkg
eworICAgIGF1dG8gYWNjZXNzTW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpQcm90ZWN0
ZWQ7CisKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIERhdGFUcmFuc2Zl
ckFjY2Vzc1BvbGljeSBwb2xpY3kgPSAobV9wYWdlLm1haW5GcmFtZSgpLnNldHRpbmdzKCkudXNl
c0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAoIW1fZG9jdW1lbnRVbmRl
ck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLmlzTG9jYWwo
KSkpCi0gICAgICAgICAgICA/IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6UmVhZGFibGUgOiBE
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlR5cGVzUmVhZGFibGU7Ci0jZWxzZQotICAgICAgICBE
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5ID0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5
OjpUeXBlc1JlYWRhYmxlOworICAgIGlmIChzZXR0aW5ncy51c2VzRGFzaGJvYXJkQmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSgpICYmICghZG9jdW1lbnRVbmRlck1vdXNlIHx8IGRvY3VtZW50VW5k
ZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS5pc0xvY2FsKCkpKQorICAgICAgICBhY2Nlc3NNb2Rl
ID0gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5OwogI2VuZGlmCi0gICAgICAgIGF1
dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKHBvbGljeSwgZHJh
Z0RhdGEpOwotICAgICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0
YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisKKyAgICBhdXRvIGRhdGFUcmFuc2Zl
ciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChhY2Nlc3NNb2RlLCBkcmFnRGF0YSk7Cisg
ICAgRHJhZ09wZXJhdGlvbiBzcmNPcE1hc2sgPSBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soKTsKKyAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzcmNPcE1h
c2spOworCisgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKK30KKwordm9pZCBEcmFnQ29udHJvbGxl
cjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCit7CisgICAgaWYgKFJlZlB0
cjxGcmFtZVZpZXc+IHYgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpKSB7CisgICAgICAgIGF1
dG8gZGF0YVRyYW5zZmVyID0gY3JlYXRlRGF0YVRyYW5zZmVyVG9VcGRhdGVEcmFnKGRyYWdEYXRh
LCBtX3BhZ2UubWFpbkZyYW1lKCkuc2V0dGluZ3MoKSwgbV9kb2N1bWVudFVuZGVyTW91c2UuY29w
eVJlZigpKTsKICAgICAgICAgbV9wYWdlLm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmNhbmNl
bERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBkYXRhVHJhbnNmZXIpOwot
ICAgICAgICBkYXRhVHJhbnNmZXItPnNldEFjY2Vzc1BvbGljeShEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3k6Ok51bWIpOyAvLyBJbnZhbGlkYXRlIGRhdGFUcmFuc2ZlciBoZXJlIGZvciBzZWN1cml0
eS4KKyAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAg
fQogICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik7CiAgICAgaWYgKG1fZmlsZUlu
cHV0RWxlbWVudFVuZGVyTW91c2UpCkBAIC0yNzMsMTAgKzI4MiwxMCBAQCBib29sIERyYWdDb250
cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvCiAgICAgICAgIGJvb2wgcHJldmVudGVkRGVmYXVs
dCA9IGZhbHNlOwogICAgICAgICBpZiAobWFpbkZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAg
IC8vIFNlbmRpbmcgYW4gZXZlbnQgY2FuIHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhl
IHZpZXcgYW5kIHBhcnQuCi0gICAgICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJvcChEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlLCBk
cmFnRGF0YSk7CisgICAgICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yRHJvcChEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIGRyYWdEYXRh
KTsKICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRh
LmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgICAgIHByZXZlbnRlZERl
ZmF1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChjcmVh
dGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwgZGF0YVRyYW5zZmVyKTsKLSAgICAgICAgICAgIGRhdGFU
cmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7
IC8vIEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgICAgICAg
ICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHByZXZlbnRlZERlZmF1bHQpIHsKICAgICAgICAgICAgIGNsZWFyRHJhZ0NhcmV0
KCk7CkBAIC02OTgsMjMgKzcwNywxNiBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERy
YWcoY29uc3QgCiAgICAgaWYgKCF2aWV3UHJvdGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5IHBvbGljeSA9IChtYWluRnJhbWUtPnNldHRpbmdzKCkudXNlc0Rhc2hib2FyZEJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiBtX2RvY3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlP
cmlnaW4oKS5pc0xvY2FsKCkpID8KLSAgICAgICAgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpS
ZWFkYWJsZSA6IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZTsKLSNlbHNl
Ci0gICAgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSA9IERhdGFUcmFuc2ZlckFjY2Vz
c1BvbGljeTo6VHlwZXNSZWFkYWJsZTsKLSNlbmRpZgotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKHBvbGljeSwgZHJhZ0RhdGEpOwotICAgIERyYWdP
cGVyYXRpb24gc3JjT3BNYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KCk7Ci0gICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oc3JjT3BNYXNrKTsKKyAg
ICBhdXRvIGRhdGFUcmFuc2ZlciA9IGNyZWF0ZURhdGFUcmFuc2ZlclRvVXBkYXRlRHJhZyhkcmFn
RGF0YSwgbWFpbkZyYW1lLT5zZXR0aW5ncygpLCBtX2RvY3VtZW50VW5kZXJNb3VzZS5jb3B5UmVm
KCkpOwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50ID0gY3JlYXRlTW91c2VFdmVudChk
cmFnRGF0YSk7CiAgICAgaWYgKCFtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdB
bmREcm9wKGV2ZW50LCBkYXRhVHJhbnNmZXIpKSB7Ci0gICAgICAgIGRhdGFUcmFuc2Zlci0+c2V0
QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7IC8vIEludmFsaWRh
dGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgICAgICBkYXRhVHJhbnNmZXIt
Pm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIG9wZXJhdGlvbiA9IGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKTsK
KyAgICBEcmFnT3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaygpOwogICAgIGlmIChkYXRhVHJhbnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlh
bGl6ZWQoKSkKICAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc3Jj
T3BNYXNrKTsKICAgICBlbHNlIGlmICghKHNyY09wTWFzayAmIG9wZXJhdGlvbikpIHsKQEAgLTcy
Miw3ICs3MjQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgCiAg
ICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOwogICAgIH0KIAotICAgIGRhdGFU
cmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7
IC8vIEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgIGRhdGFU
cmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjA4ODIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0NjEsNyArMzQ2MSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjppbnZhbGlkYXRlRGF0YVRy
YW5zZmUKIHsKICAgICBpZiAoIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlcikKICAgICAgICAgcmV0
dXJuOwotICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVy
LT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVy
ID0gbnVsbHB0cjsKIH0KIApAQCAtMzY3OSwxNCArMzY3OSwxNCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gCi0gICAgICAgIAorCiAgICAgICAgIG1fbW91c2VEb3du
TWF5U3RhcnREcmFnID0gZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFy
dEV2ZW50LCBtX21vdXNlRG93bikKICAgICAgICAgICAgICYmICFtX2ZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8v
IEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgYWdhaW5zdCBhbnltb3JlIHBhc3RlYm9hcmQg
d3JpdGluZyBmb3Igc2VjdXJpdHkuIFRoZSBkcmFnCiAgICAgICAgIC8vIGltYWdlIGNhbiBzdGls
bCBiZSBjaGFuZ2VkIGFzIHdlIGRyYWcsIGJ1dCBub3QgdGhlIHBhc3RlYm9hcmQgZGF0YS4KLSAg
ICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpJbWFnZVdyaXRhYmxlKTsKLSAgICAgICAgCisgICAgICAgIGRyYWdT
dGF0ZSgpLmRhdGFUcmFuc2Zlci0+bWFrZURyYWdJbWFnZVdyaXRhYmxlKCk7CisKICAgICAgICAg
aWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFs
dWVzIGZyb20gREhUTUwgZWxlbWVudCwgaWYgaXQgc2V0IGFueS4KICAgICAgICAgICAgIHNyY09w
ID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318470</attachid>
            <date>2017-08-17 21:36:07 -0700</date>
            <delta_ts>2017-08-17 22:33:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175704-20170817213606.patch</filename>
            <type>text/plain</type>
            <size>29211</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDg5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTA4LTE3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBEYXRhVHJhbnNmZXJB
Y2Nlc3NQb2xpY3kgdG8gbWF0Y2ggc3BlYyBhbmQgcmVmYWN0b3IgcmVsYXRlZCBub2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgUmVuYW1lZCBEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kgdG8gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGUgdG8gbWF0Y2ggdGhl
IGRyYWcgZGF0YSBzdG9yZSBtb2RlIGNvbmNlcHQKKyAgICAgICAgaW4gdGhlIEhUTUw1IHNwZWNp
ZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2RuZC5odG1sI2RyYWctZGF0YS1zdG9yZS1tb2RlCisKKyAgICAgICAgRGF0YVRyYW5zZmVyIGlu
IGFkZGl0aW9uIHRvIHRob3NlIHN0YXRlcyBjYW4gYmUgZGlzYXNzb2NpYXRlZCBmcm9tIHRoZSBk
cmFnIGRhdGEgc3RvcmUgd2hlbiBpdCBiZWNvbWVzCisgICAgICAgIG5vIGxvbmdlciB2YWxpZC4g
V2UgYWxzbyBzdXBwb3J0IGEgc3BlY2lhbCBtb2RlIHdoaWNoIGFsbG93cyBvbmx5IHVwZGF0aW5n
IHRoZSBkcmFnIGltYWdlLgorICAgICAgICBUaGVzZSB0d28gc3RhdGVzLCBJbnZhbGlkIGFuZCBE
cmFnSW1hZ2VXcml0YWJsZSwgYXJlIGFkZGVkIGluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBzdGF0
ZXMgaW4gdGhlIHNwZWMuCisKKyAgICAgICAgQWxzbyBzcGxpdCBEcmFnQW5kRHJvcCB0eXBlIG9m
IERhdGFUcmFuc2ZlciBpbnRvIERyYWdBbmREcm9wRGF0YSBhbmQgRHJhZ0FuZERyb3BGaWxlcywg
YW5kIHJlZmFjdG9yZWQKKyAgICAgICAgdGhlIHJlbGF0ZWQgY29kZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpEYXRh
VHJhbnNmZXIpOiBObyBsb25nZXIgdGFrZXMgZm9yRmlsZURyYWcgYm9vbGVhbiBzaW5jZSBpdCdz
IGZvbGRlZCBpbnRvIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6On5EYXRh
VHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRBY2Nlc3NQb2xp
Y3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjYW5SZWFkVHlw
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjYW5SZWFkRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhbldyaXRlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OmNhblNldERyYWdJbWFnZSBjb25zdCk6CisgICAgICAgICogZG9t
L0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjptYWtlSW52
YWxpZEZvclNlY3VyaXR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
Om1ha2VEcmFnSW1hZ2VXcml0YWJsZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXJBY2Nlc3NQb2xpY3kuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENsaXBib2FyZEV2ZW50KTogTW92ZWQgYW5kIHJl
bmFtZWQgZnJvbSBkaXNwYXRjaENQUEV2ZW50LiBOb3cgY29tcHV0ZXMgdGhlIHN0b3JlIG1vZGUK
KyAgICAgICAgaW5zaWRlIHRoZSBmdW5jdGlvbiB0byBtYXRjaCB0aGUgc3BlYzogaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2NsaXBib2FyZC1hcGlzLyNmaXJlLWEtY2xpcGJvYXJkLWV2ZW50CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhbkRIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6Y2FuREhUTUxDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuREhUTUxQ
YXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6dHJ5REhUTUxQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc3BhdGNoQ1BQ
RXZlbnQpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRhVHJh
bnNmZXJUb1VwZGF0ZURyYWcpOiBFeHRyYWN0ZWQgdG8gc2hhcmUgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmludmFsaWRhdGVEYXRhVHJh
bnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKwog
MjAxNy0wOC0xNyAgRGFld29vbmcgSmFuZyAgPGRhZXdvb25nLmphbmdAbmF2ZXJjb3JwLmNvbT4K
IAogICAgICAgICBbQ3VybF0gSW1wcm92ZSBtdWx0aS10aHJlYWRlZCBuZXR3b3JraW5nCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMjA4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMjIsNyArMjEyMiw2IEBACiAJCTRC
MzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEg
LyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OwogCQk0QjZGQTZGNDBDMzlFNDhDMDAwODcwMTEgLyog
U21hcnRSZXBsYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QjZGQTZGMjBDMzlFNDhDMDAwODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEI2RkE2RjcwQzM5RTRB
MTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJl
cGxhY2VDRi5jcHAgKi87IH07Ci0JCTRCOEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCOEFGNEE5MEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0QkFFOTVCMTBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkFFOTVCMDBCMkZBOUNF
MDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEUxOTU5MjEwQTM5REFCQTAwMjIwRkU1IC8qIE1l
ZGlhRmVhdHVyZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRFMTk1OTFGMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5j
cHAgKi87IH07CiAJCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEUxOTU5
MjAwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk4NDgsNyArOTg0Nyw2IEBACiAJ
CTRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlU291cmNlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFydFJlcGxhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVw
bGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVw
bGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI4QUY0QTkwQjFDRTAy
QjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxl
dGVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRl
QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTFGMEEzOURBQkEw
MDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFGZWF0dXJlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RTE5NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRmVhdHVyZU5hbWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY1NCw3ICsyNTY1Miw2IEBACiAJCQkJ
QTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIERhdGFUcmFuc2Zlci5jcHAgKi8sCiAJCQkJODUw
MzFCMjgwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFuc2Zlci5oICovLAogCQkJCUJDQTgzRTM2
MEQ3Q0RDNEUwMDM0MjFBOCAvKiBEYXRhVHJhbnNmZXIuaWRsICovLAotCQkJCTRCOEFGNEE5MEIx
Q0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCAqLywKIAkJCQk5QjA5
OEJENTFGM0Q2MDMzMDAyREQ1NjIgLyogRGF0YVRyYW5zZmVySXRlbS5jcHAgKi8sCiAJCQkJODFB
QzU5OTcxMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW0uaCAqLywKIAkJCQk4MUFD
NUFFODEzMTYzOTJFMDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbS5pZGwgKi8sCkBAIC0yNzA4
MSw3ICsyNzA3OCw2IEBACiAJCQkJQkMyMjc0NkYwRTgzNjY0NTAwRTdGOTc1IC8qIERhdGFSZWYu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2NDFDMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0
RE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUIzRTBBNDRFRkM3MDBGOTky
RTAgLyogRGF0YVRyYW5zZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QjhBRjRBQTBCMUNFMDJC
MDA2ODc2OTAgLyogRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MUFDNTk5OTEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODFBQzU5OUExMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW1M
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0
YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAJKHJldmlzaW9uIDIyMDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywyNiArNTcsMjUgQEAgcHJpdmF0ZToKIAog
I2VuZGlmCiAKLURhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKERhdGFUcmFuc2ZlckFjY2Vzc1Bv
bGljeSBwb2xpY3ksIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkLCBUeXBl
IHR5cGUsIGJvb2wgZm9yRmlsZURyYWcpCi0gICAgOiBtX3BvbGljeShwb2xpY3kpCitEYXRhVHJh
bnNmZXI6OkRhdGFUcmFuc2ZlcihTdG9yZU1vZGUgbW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IHBhc3RlYm9hcmQsIFR5cGUgdHlwZSkKKyAgICA6IG1fc3RvcmVNb2RlKG1vZGUpCiAg
ICAgLCBtX3Bhc3RlYm9hcmQoV1RGTW92ZShwYXN0ZWJvYXJkKSkKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotICAgICwgbV9mb3JEcmFnKHR5cGUgPT0gRHJhZ0FuZERyb3ApCi0gICAgLCBtX2Zv
ckZpbGVEcmFnKGZvckZpbGVEcmFnKQorICAgICwgbV9mb3JEcmFnKHR5cGUgPT0gVHlwZTo6RHJh
Z0FuZERyb3BEYXRhIHx8IHR5cGUgPT0gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcykKKyAgICAsIG1f
Zm9yRmlsZURyYWcodHlwZSA9PSBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzKQogICAgICwgbV9kcm9w
RWZmZWN0KEFTQ0lJTGl0ZXJhbCgidW5pbml0aWFsaXplZCIpKQogICAgICwgbV9lZmZlY3RBbGxv
d2VkKEFTQ0lJTGl0ZXJhbCgidW5pbml0aWFsaXplZCIpKQogICAgICwgbV9zaG91bGRVcGRhdGVE
cmFnSW1hZ2UoZmFsc2UpCiAjZW5kaWYKIHsKICNpZiAhRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAg
ICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgIT0gRHJhZ0FuZERyb3ApOwotICAgIEFTU0VSVF9V
TlVTRUQoZm9yRmlsZURyYWcsICFmb3JGaWxlRHJhZyk7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBl
LCB0eXBlICE9IERyYWdBbmREcm9wRGF0YSAmJiB0eXBlICE9IERyYWdBbmREcm9wRmlsZXMpOwog
I2VuZGlmCiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3kpCitSZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShTdG9yZU1vZGUgbW9kZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIocG9saWN5LCBwb2xpY3kg
PT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSA/IFBhc3RlYm9hcmQ6OmNyZWF0
ZVByaXZhdGUoKSA6IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKG1vZGUsIG1vZGUgPT0gU3RvcmVNb2Rl
OjpSZWFkV3JpdGUgPyBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkgOiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKSkpOwogfQogCiBEYXRhVHJhbnNmZXI6On5EYXRhVHJhbnNm
ZXIoKQpAQCAtODYsMjcgKzg1LDIwIEBAIERhdGFUcmFuc2Zlcjo6fkRhdGFUcmFuc2ZlcigpCiAg
ICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyLT5zdG9wTG9hZGluZyhtX2RyYWdJbWFnZSk7CiAjZW5k
aWYKIH0KLSAgICAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5IHBvbGljeSkKLXsKLSAgICAvLyBPbmNlIHRoZSBkYXRhVHJhbnNmZXIg
Z29lcyBudW1iLCBpdCBjYW4gbmV2ZXIgZ28gYmFjay4KLSAgICBBU1NFUlQobV9wb2xpY3kgIT0g
RGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iIHx8IHBvbGljeSA9PSBEYXRhVHJhbnNmZXJB
Y2Nlc3NQb2xpY3k6Ok51bWIpOwotICAgIG1fcG9saWN5ID0gcG9saWN5OwotfQogCiBib29sIERh
dGFUcmFuc2Zlcjo6Y2FuUmVhZFR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wb2xpY3kg
PT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBEYXRh
VHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlR5cGVzUmVhZGFibGUgfHwgbV9wb2xpY3kgPT0gRGF0YVRy
YW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZTsKKyAgICByZXR1cm4gbV9zdG9yZU1vZGUgPT0g
U3RvcmVNb2RlOjpSZWFkb25seSB8fCBtX3N0b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlByb3RlY3Rl
ZCB8fCBtX3N0b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRXcml0ZTsKIH0KIAogYm9vbCBEYXRh
VHJhbnNmZXI6OmNhblJlYWREYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wb2xpY3kgPT0g
RGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSB8fCBtX3BvbGljeSA9PSBEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlOworICAgIHJldHVybiBtX3N0b3JlTW9kZSA9PSBT
dG9yZU1vZGU6OlJlYWRvbmx5IHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9kZTo6UmVhZFdyaXRl
OwogfQogCiBib29sIERhdGFUcmFuc2Zlcjo6Y2FuV3JpdGVEYXRhKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZTsKKyAg
ICByZXR1cm4gbV9zdG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpSZWFkV3JpdGU7CiB9CiAKIHZvaWQg
RGF0YVRyYW5zZmVyOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtMjE0LDcgKzIw
Niw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm8KICAgICBUeXBl
VG9TdHJpbmdNYXAgdHlwZVRvU3RyaW5nTWFwOwogICAgIHR5cGVUb1N0cmluZ01hcC5zZXQoQVND
SUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksIHBsYWluVGV4dCk7CiAgICAgdHlwZVRvU3RyaW5nTWFw
LnNldChBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBodG1sVGV4dCk7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6UmVhZGFi
bGUsIFN0YXRpY1Bhc3RlYm9hcmQ6OmNyZWF0ZShXVEZNb3ZlKHR5cGVUb1N0cmluZ01hcCkpLCBJ
bnB1dEV2ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3Jl
TW9kZTo6UmVhZG9ubHksIFN0YXRpY1Bhc3RlYm9hcmQ6OmNyZWF0ZShXVEZNb3ZlKHR5cGVUb1N0
cmluZ01hcCkpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9CiAKICNpZiAhRU5BQkxFKERSQUdfU1VQ
UE9SVCkKQEAgLTI0NSwxMiArMjM3LDEzIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1h
Z2UoRWxlbWVudCoKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JE
cmFnKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoKSwgRHJhZ0FuZERyb3ApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNm
ZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9w
KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSwg
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcm9wKFN0b3JlTW9kZSBhY2Nlc3NNb2RlLCBjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKHBvbGljeSwg
UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCBEcmFnQW5kRHJvcCwg
ZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKSk7CisgICAgYXV0byB0eXBlID0gZHJhZ0RhdGEuY29u
dGFpbnNGaWxlcygpID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9w
RGF0YTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoYWNjZXNzTW9kZSwg
UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCB0eXBlKSk7CiB9CiAK
IGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5TZXREcmFnSW1hZ2UoKSBjb25zdApAQCAtMjU5LDcgKzI1
Miw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5TZXREcmFnSW1hZ2UoKSBjb24KICAgICAvLyBl
dmVudC4gVGhpcyBjYXBhYmlsaXR5IGlzIG1haW50YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRp
YmxpdHkgZm9yIHBvcnRzIHRoYXQgaGF2ZQogICAgIC8vIHN1cHBvcnRlZCB0aGlzIGluIHRoZSBw
YXN0LiBPbiBtYW55IHBvcnRzLCBhdHRlbXB0aW5nIHRvIHNldCBhIGRyYWcgaW1hZ2Ugb3V0c2lk
ZSB0aGUKICAgICAvLyBkcmFnc3RhcnQgb3BlcmF0aW9uIGlzIGEgbm8tb3AgYW55d2F5LgotICAg
IHJldHVybiBtX2ZvckRyYWcgJiYgKG1fcG9saWN5ID09IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGlj
eTo6SW1hZ2VXcml0YWJsZSB8fCBtX3BvbGljeSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6
OldyaXRhYmxlKTsKKyAgICByZXR1cm4gbV9mb3JEcmFnICYmIChtX3N0b3JlTW9kZSA9PSBTdG9y
ZU1vZGU6OkRyYWdJbWFnZVdyaXRhYmxlIHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9kZTo6UmVh
ZFdyaXRlKTsKIH0KIAogdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyYWdJbWFnZShFbGVtZW50KiBl
bGVtZW50LCBpbnQgeCwgaW50IHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCShy
ZXZpc2lvbiAyMjA4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJEYXRhVHJhbnNmZXJBY2Nlc3NQb2xp
Y3kuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDEsNyArNDAsMTAgQEAgY2xhc3Mg
UGFzdGVib2FyZDsKIAogY2xhc3MgRGF0YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0
YVRyYW5zZmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZUZvckNvcHlBbmRQYXN0ZShEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kpOworICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RuZC5odG1sI2RyYWctZGF0YS1zdG9y
ZS1tb2RlCisgICAgZW51bSBjbGFzcyBTdG9yZU1vZGUgeyBJbnZhbGlkLCBEcmFnSW1hZ2VXcml0
YWJsZSwgUmVhZFdyaXRlLCBSZWFkb25seSwgUHJvdGVjdGVkIH07CisKKyAgICBzdGF0aWMgUmVm
PERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yQ29weUFuZFBhc3RlKFN0b3JlTW9kZSk7CiAgICAgc3Rh
dGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBw
bGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
fkRhdGFUcmFuc2ZlcigpOwpAQCAtNjUsNyArNjcsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXREcmFnSW1hZ2UoRWxlbWVudCosIGludCB4LCBpbnQgeSk7CiAKLSAgICB2b2lkIHNldEFjY2Vz
c1BvbGljeShEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kpOworICAgIHZvaWQgbWFrZUludmFsaWRG
b3JTZWN1cml0eSgpIHsgbV9zdG9yZU1vZGUgPSBTdG9yZU1vZGU6OkludmFsaWQ7IH0KKyAgICB2
b2lkIG1ha2VEcmFnSW1hZ2VXcml0YWJsZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9zdG9y
ZU1vZGUgIT0gU3RvcmVNb2RlOjpJbnZhbGlkKTsKKyAgICAgICAgbV9zdG9yZU1vZGUgPSBTdG9y
ZU1vZGU6OkRyYWdJbWFnZVdyaXRhYmxlOworICAgIH0KKwogICAgIGJvb2wgY2FuUmVhZFR5cGVz
KCkgY29uc3Q7CiAgICAgYm9vbCBjYW5SZWFkRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgY2FuV3Jp
dGVEYXRhKCkgY29uc3Q7CkBAIC03Nyw3ICs4NSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWco
KTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChEYXRhVHJhbnNm
ZXJBY2Nlc3NQb2xpY3ksIGNvbnN0IERyYWdEYXRhJik7CisgICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvckRyb3AoU3RvcmVNb2RlLCBjb25zdCBEcmFnRGF0YSYpOwogCiAgICAg
Ym9vbCBkcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9kcm9wRWZm
ZWN0ID09ICJ1bmluaXRpYWxpemVkIjsgfQogCkBAIC05MiwxNCArMTAwLDE0IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIGVudW0gVHlwZSB7IENvcHlBbmRQYXN0ZSwgRHJhZ0Fu
ZERyb3AsIElucHV0RXZlbnQgfTsKLSAgICBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4sIFR5cGUgPSBDb3B5QW5kUGFzdGUs
IGJvb2wgZm9yRmlsZURyYWcgPSBmYWxzZSk7CisgICAgZW51bSBjbGFzcyBUeXBlIHsgQ29weUFu
ZFBhc3RlLCBEcmFnQW5kRHJvcERhdGEsIERyYWdBbmREcm9wRmlsZXMsIElucHV0RXZlbnQgfTsK
KyAgICBEYXRhVHJhbnNmZXIoU3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4s
IFR5cGUgPSBUeXBlOjpDb3B5QW5kUGFzdGUpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBib29sIGNhblNldERyYWdJbWFnZSgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kgbV9wb2xpY3k7CisgICAgU3RvcmVNb2RlIG1fc3RvcmVNb2RlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiBtX2l0ZW1MaXN0OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oCShyZXZpc2lvbiAy
MjA4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1lbnVtIGNsYXNzIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSB7Ci0gICAgTnVtYiwgSW1h
Z2VXcml0YWJsZSwgV3JpdGFibGUsIFR5cGVzUmVhZGFibGUsIFJlYWRhYmxlCi19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAyMjA4ODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
Myw2ICszMTMsNDYgQEAgYm9vbCBFZGl0b3I6OmNhbkVkaXRSaWNobHkoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRh
YmxlKCk7CiB9CiAKKy8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdp
dGggInRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcworLy8gdGhl
IGV2ZW50IGhhbmRsZXIgTk9UIHNldHRpbmcgdGhlIHJldHVybiB2YWx1ZSB0byBmYWxzZQorLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL2NsaXBib2FyZC1hcGlzLyNmaXJlLWEtY2xpcGJvYXJkLWV2
ZW50CitzdGF0aWMgYm9vbCBkaXNwYXRjaENsaXBib2FyZEV2ZW50KFJlZlB0cjxFbGVtZW50PiYm
IHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCit7CisgICAgLy8gRklYTUU6
IE1vdmUgdGhlIHRhcmdldCBzZWxlY3Rpb24gY29kZSBoZXJlLgorICAgIGlmICghdGFyZ2V0KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlIHN0b3Jl
TW9kZTsKKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50KQorICAg
ICAgICBzdG9yZU1vZGUgPSBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHk7CisgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5jb3B5RXZlbnQgfHwgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS5jdXRFdmVudCkKKyAgICAgICAgc3RvcmVNb2RlID0gRGF0YVRyYW5z
ZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlY3V0RXZlbnQgfHwgZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMoKS5iZWZvcmVjb3B5RXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5i
ZWZvcmVwYXN0ZUV2ZW50KTsKKyAgICAgICAgc3RvcmVNb2RlID0gRGF0YVRyYW5zZmVyOjpTdG9y
ZU1vZGU6OkludmFsaWQ7CisgICAgfQorCisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdG9yZU1vZGUpOworCisgICAgQ2xpcGJvYXJk
RXZlbnQ6OkluaXQgaW5pdDsKKyAgICBpbml0LmJ1YmJsZXMgPSB0cnVlOworICAgIGluaXQuY2Fu
Y2VsYWJsZSA9IHRydWU7CisgICAgaW5pdC5jbGlwYm9hcmREYXRhID0gZGF0YVRyYW5zZmVyLnB0
cigpOworICAgIGF1dG8gZXZlbnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
aW5pdCwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKworICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVu
dChldmVudCk7CisgICAgYm9vbCBub0RlZmF1bHRQcm9jZXNzaW5nID0gZXZlbnQtPmRlZmF1bHRQ
cmV2ZW50ZWQoKTsKKyAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAmJiBzdG9yZU1vZGUgPT0g
RGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSkgeworICAgICAgICBhdXRvIHBhc3Rl
Ym9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKKyAgICAgICAgcGFz
dGVib2FyZC0+Y2xlYXIoKTsKKyAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVQYXN0ZWJvYXJkKGRh
dGFUcmFuc2Zlci0+cGFzdGVib2FyZCgpKTsKKyAgICB9CisKKyAgICBkYXRhVHJhbnNmZXItPm1h
a2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKKworICAgIHJldHVybiAhbm9EZWZhdWx0UHJvY2Vzc2lu
ZzsKK30KKwogLy8gV2luSUUgdXNlcyBvbmJlZm9yZWN1dCBhbmQgb25iZWZvcmVwYXN0ZSB0byBl
bmFibGVzIHRoZSBjdXQgYW5kIHBhc3RlIG1lbnUgaXRlbXMuICBUaGV5CiAvLyBhbHNvIHNlbmQg
b25iZWZvcmVjb3B5LCBhcHBhcmVudGx5IGZvciBzeW1tZXRyeSwgYnV0IGl0IGRvZXNuJ3QgYWZm
ZWN0IHRoZSBtZW51IGl0ZW1zLgogLy8gV2UgbmVlZCB0byB1c2Ugb25iZWZvcmVjb3B5IGFzIGEg
cmVhbCBtZW51IGVuYWJsZXIgYmVjYXVzZSB3ZSBhbGxvdyBlbGVtZW50cyB0aGF0IGFyZSBub3QK
QEAgLTMyMCwxNyArMzYwLDIyIEBAIGJvb2wgRWRpdG9yOjpjYW5FZGl0UmljaGx5KCkgY29uc3QK
IAogYm9vbCBFZGl0b3I6OmNhbkRIVE1MQ3V0KCkKIHsKLSAgICByZXR1cm4gIW1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKSAmJiAhZGlzcGF0Y2hDUFBF
dmVudChldmVudE5hbWVzKCkuYmVmb3JlY3V0RXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGlj
eTo6TnVtYik7CisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBh
c3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICFkaXNw
YXRjaENsaXBib2FyZEV2ZW50KGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKSwgZXZlbnRO
YW1lcygpLmJlZm9yZWN1dEV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OmNhbkRIVE1MQ29weSgp
CiB7Ci0gICAgcmV0dXJuICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNz
d29yZEZpZWxkKCkgJiYgIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmJlZm9yZWNvcHlF
dmVudCwgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsKKyAgICBpZiAobV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuICFkaXNwYXRjaENsaXBib2FyZEV2ZW50KGZpbmRFdmVudFRh
cmdldEZyb21TZWxlY3Rpb24oKSwgZXZlbnROYW1lcygpLmJlZm9yZWNvcHlFdmVudCk7CiB9CiAK
IGJvb2wgRWRpdG9yOjpjYW5ESFRNTFBhc3RlKCkKIHsKLSAgICByZXR1cm4gIWRpc3BhdGNoQ1BQ
RXZlbnQoZXZlbnROYW1lcygpLmJlZm9yZXBhc3RlRXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1Bv
bGljeTo6TnVtYik7CisgICAgcmV0dXJuICFkaXNwYXRjaENsaXBib2FyZEV2ZW50KGZpbmRFdmVu
dFRhcmdldEZyb21TZWxlY3Rpb24oKSwgZXZlbnROYW1lcygpLmJlZm9yZXBhc3RlRXZlbnQpOwog
fQogCiBib29sIEVkaXRvcjo6Y2FuQ3V0KCkgY29uc3QKQEAgLTU5OCw3ICs2NDMsNyBAQCBib29s
IEVkaXRvcjo6dHJ5REhUTUxDb3B5KCkKICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmNvcHlFdmVudCwgRGF0YVRy
YW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSk7CisgICAgcmV0dXJuICFkaXNwYXRjaENsaXBi
b2FyZEV2ZW50KGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKSwgZXZlbnROYW1lcygpLmNv
cHlFdmVudCk7CiB9CiAKIGJvb2wgRWRpdG9yOjp0cnlESFRNTEN1dCgpCkBAIC02MDYsMTIgKzY1
MSwxMiBAQCBib29sIEVkaXRvcjo6dHJ5REhUTUxDdXQoKQogICAgIGlmIChtX2ZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKLSAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmN1
dEV2ZW50LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlKTsKKyAgICByZXR1cm4g
IWRpc3BhdGNoQ2xpcGJvYXJkRXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBl
dmVudE5hbWVzKCkuY3V0RXZlbnQpOwogfQogCiBib29sIEVkaXRvcjo6dHJ5REhUTUxQYXN0ZSgp
CiB7Ci0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5wYXN0ZUV2ZW50
LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlKTsKKyAgICByZXR1cm4gIWRpc3Bh
dGNoQ2xpcGJvYXJkRXZlbnQoZmluZEV2ZW50VGFyZ2V0RnJvbVNlbGVjdGlvbigpLCBldmVudE5h
bWVzKCkucGFzdGVFdmVudCk7CiB9CiAKIGJvb2wgRWRpdG9yOjpzaG91bGRJbnNlcnRUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9u
KSBjb25zdApAQCAtNzc1LDM1ICs4MjAsNiBAQCB2b2lkIEVkaXRvcjo6Y2xlYXJMYXN0RWRpdENv
bW1hbmQoKSAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IG51bGxwdHI7CiB9CiAKLS8vIFJldHVy
bnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdpdGggInRoZSBkZWZhdWx0IHByb2Nl
c3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcyAKLS8vIHRoZSBldmVudCBoYW5kbGVyIE5PVCBz
ZXR0aW5nIHRoZSByZXR1cm4gdmFsdWUgdG8gZmFsc2UKLWJvb2wgRWRpdG9yOjpkaXNwYXRjaENQ
UEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3kgcG9saWN5KQotewotICAgIEVsZW1lbnQqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZy
b21TZWxlY3Rpb24oKTsKLSAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKHBvbGljeSk7Ci0KLSAgICBDbGlwYm9hcmRFdmVudDo6SW5pdCBpbml0OwotICAgIGluaXQu
YnViYmxlcyA9IHRydWU7Ci0gICAgaW5pdC5jYW5jZWxhYmxlID0gdHJ1ZTsKLSAgICBpbml0LmNs
aXBib2FyZERhdGEgPSBkYXRhVHJhbnNmZXIucHRyKCk7Ci0gICAgYXV0byBldmVudCA9IENsaXBi
b2FyZEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBpbml0LCBFdmVudDo6SXNUcnVzdGVkOjpZZXMp
OwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgYm9vbCBub0RlZmF1bHRQ
cm9jZXNzaW5nID0gZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKLSAgICBpZiAobm9EZWZhdWx0
UHJvY2Vzc2luZyAmJiBwb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJs
ZSkgewotICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoKTsKLSAgICAgICAgcGFzdGVib2FyZC0+Y2xlYXIoKTsKLSAgICAgICAgcGFzdGVi
b2FyZC0+d3JpdGVQYXN0ZWJvYXJkKGRhdGFUcmFuc2Zlci0+cGFzdGVib2FyZCgpKTsKLSAgICB9
Ci0KLSAgICAvLyBpbnZhbGlkYXRlIGRhdGFUcmFuc2ZlciBoZXJlIGZvciBzZWN1cml0eQotICAg
IGRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6
TnVtYik7Ci0gICAgCi0gICAgcmV0dXJuICFub0RlZmF1bHRQcm9jZXNzaW5nOwotfQotCiBFbGVt
ZW50KiBFZGl0b3I6OmZpbmRFdmVudFRhcmdldEZyb20oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKSBjb25zdAogewogICAgIEVsZW1lbnQqIHRhcmdldCA9IHNlbGVjdGlvbi5zdGFy
dCgpLmVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gMjIw
ODgyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb21wb3NpdGlvblVu
ZGVybGluZS5oIgotI2luY2x1ZGUgIkRhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIgogI2luY2x1
ZGUgIkRpY3RhdGlvbkFsdGVybmF0aXZlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIK
ICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiCkBAIC0yMTksOSArMjE4LDcgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcygpOwogI2VuZGlmCi0gICAgCi0gICAgYm9vbCBkaXNwYXRjaENQUEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSk7Ci0gICAgCisKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiwgRWRpdEFjdGlv
biA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CiAgICAgdm9pZCBhcHBseVN0eWxlKFJlZlB0cjxF
ZGl0aW5nU3R5bGU+JiYsIEVkaXRBY3Rpb24pOwogICAgIHZvaWQgYXBwbHlQYXJhZ3JhcGhTdHls
ZShTdHlsZVByb3BlcnRpZXMqLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjA4
ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIwLDE5ICsyMjAsMjcgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6
ZHJhZ0VudGVyZQogICAgIHJldHVybiBkcmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9
CiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdE
YXRhKQorc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlclRvVXBkYXRl
RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywg
UmVmUHRyPERvY3VtZW50PiYmIGRvY3VtZW50VW5kZXJNb3VzZSkKIHsKLSAgICBpZiAoUmVmUHRy
PEZyYW1lVmlldz4gdiA9IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCkpIHsKKyAgICBhdXRvIGFj
Y2Vzc01vZGUgPSBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkOworCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kg
cG9saWN5ID0gKG1fcGFnZS5tYWluRnJhbWUoKS5zZXR0aW5ncygpLnVzZXNEYXNoYm9hcmRCYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCBtX2Rv
Y3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS5pc0xvY2FsKCkpKQotICAgICAgICAg
ICAgPyBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlIDogRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5OjpUeXBlc1JlYWRhYmxlOwotI2Vsc2UKLSAgICAgICAgRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5IHBvbGljeSA9IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJs
ZTsKKyAgICBpZiAoc2V0dGluZ3MudXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1v
ZGUoKSAmJiAoIWRvY3VtZW50VW5kZXJNb3VzZSB8fCBkb2N1bWVudFVuZGVyTW91c2UtPnNlY3Vy
aXR5T3JpZ2luKCkuaXNMb2NhbCgpKSkKKyAgICAgICAgYWNjZXNzTW9kZSA9IERhdGFUcmFuc2Zl
cjo6U3RvcmVNb2RlOjpSZWFkb25seTsKICNlbmRpZgotICAgICAgICBhdXRvIGRhdGFUcmFuc2Zl
ciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChwb2xpY3ksIGRyYWdEYXRhKTsKLSAgICAg
ICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJhZ0RhdGEuZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCkpOworCisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyb3AoYWNjZXNzTW9kZSwgZHJhZ0RhdGEpOworICAgIGRhdGFUcmFuc2Zl
ci0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aygpKTsKKworICAgIHJldHVybiBkYXRhVHJhbnNmZXI7Cit9CisKK3ZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQoreworICAgIGlmIChSZWZQ
dHI8RnJhbWVWaWV3PiB2ID0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKSkgeworICAgICAgICBh
dXRvIGRhdGFUcmFuc2ZlciA9IGNyZWF0ZURhdGFUcmFuc2ZlclRvVXBkYXRlRHJhZyhkcmFnRGF0
YSwgbV9wYWdlLm1haW5GcmFtZSgpLnNldHRpbmdzKCksIG1fZG9jdW1lbnRVbmRlck1vdXNlLmNv
cHlSZWYoKSk7CiAgICAgICAgIG1fcGFnZS5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5jYW5j
ZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwgZGF0YVRyYW5zZmVyKTsK
LSAgICAgICAgZGF0YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5OjpOdW1iKTsgLy8gSW52YWxpZGF0ZSBkYXRhVHJhbnNmZXIgaGVyZSBmb3Igc2VjdXJp
dHkuCisgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAg
IH0KICAgICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpOwogICAgIGlmIChtX2ZpbGVJ
bnB1dEVsZW1lbnRVbmRlck1vdXNlKQpAQCAtMjczLDEwICsyODEsMTAgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpbwogICAgICAgICBib29sIHByZXZlbnRlZERlZmF1
bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1haW5GcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAg
ICAvLyBTZW5kaW5nIGFuIGV2ZW50IGNhbiByZXN1bHQgaW4gdGhlIGRlc3RydWN0aW9uIG9mIHRo
ZSB2aWV3IGFuZCBwYXJ0LgotICAgICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSwg
ZHJhZ0RhdGEpOworICAgICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBkcmFnRGF0
YSk7CiAgICAgICAgICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0
YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CiAgICAgICAgICAgICBwcmV2ZW50ZWRE
ZWZhdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERyb3AoY3Jl
YXRlTW91c2VFdmVudChkcmFnRGF0YSksIGRhdGFUcmFuc2Zlcik7Ci0gICAgICAgICAgICBkYXRh
VHJhbnNmZXItPnNldEFjY2Vzc1BvbGljeShEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIp
OyAvLyBJbnZhbGlkYXRlIGRhdGFUcmFuc2ZlciBoZXJlIGZvciBzZWN1cml0eS4KKyAgICAgICAg
ICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChwcmV2ZW50ZWREZWZhdWx0KSB7CiAgICAgICAgICAgICBjbGVhckRyYWdDYXJl
dCgpOwpAQCAtNjk4LDMxICs3MDYsMjMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxE
cmFnKGNvbnN0IAogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIERhdGFUcmFuc2ZlckFjY2Vz
c1BvbGljeSBwb2xpY3kgPSAobWFpbkZyYW1lLT5zZXR0aW5ncygpLnVzZXNEYXNoYm9hcmRCYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgbV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5
T3JpZ2luKCkuaXNMb2NhbCgpKSA/Ci0gICAgICAgIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6
UmVhZGFibGUgOiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlR5cGVzUmVhZGFibGU7Ci0jZWxz
ZQotICAgIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3kgPSBEYXRhVHJhbnNmZXJBY2Nl
c3NQb2xpY3k6OlR5cGVzUmVhZGFibGU7Ci0jZW5kaWYKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChwb2xpY3ksIGRyYWdEYXRhKTsKLSAgICBEcmFn
T3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aygpOwotICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uKHNyY09wTWFzayk7Cisg
ICAgYXV0byBkYXRhVHJhbnNmZXIgPSBjcmVhdGVEYXRhVHJhbnNmZXJUb1VwZGF0ZURyYWcoZHJh
Z0RhdGEsIG1haW5GcmFtZS0+c2V0dGluZ3MoKSwgbV9kb2N1bWVudFVuZGVyTW91c2UuY29weVJl
ZigpKTsKIAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudCA9IGNyZWF0ZU1vdXNlRXZlbnQo
ZHJhZ0RhdGEpOwogICAgIGlmICghbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFn
QW5kRHJvcChldmVudCwgZGF0YVRyYW5zZmVyKSkgewotICAgICAgICBkYXRhVHJhbnNmZXItPnNl
dEFjY2Vzc1BvbGljeShEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOyAvLyBJbnZhbGlk
YXRlIGRhdGFUcmFuc2ZlciBoZXJlIGZvciBzZWN1cml0eS4KKyAgICAgICAgZGF0YVRyYW5zZmVy
LT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBvcGVyYXRpb24gPSBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uKCk7
CiAgICAgaWYgKGRhdGFUcmFuc2Zlci0+ZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpKQotICAg
ICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzcmNPcE1hc2spOworICAg
ICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhkcmFnRGF0YS5kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CiAgICAgZWxzZSBpZiAoIShzcmNPcE1hc2sgJiBvcGVy
YXRpb24pKSB7CiAgICAgICAgIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVyYXRpb24gd2hp
Y2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCiAgICAgICAgIG9wZXJhdGlvbiA9IERy
YWdPcGVyYXRpb25Ob25lOwogICAgIH0KIAotICAgIGRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9s
aWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7IC8vIEludmFsaWRhdGUgZGF0YVRy
YW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRG
b3JTZWN1cml0eSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMjA4ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NjEsNyArMzQ2MSw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjppbnZhbGlkYXRlRGF0YVRyYW5zZmUKIHsKICAgICBpZiAoIWRy
YWdTdGF0ZSgpLmRhdGFUcmFuc2ZlcikKICAgICAgICAgcmV0dXJuOwotICAgIGRyYWdTdGF0ZSgp
LmRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6
TnVtYik7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3Vy
aXR5KCk7CiAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gbnVsbHB0cjsKIH0KIApAQCAt
MzY3OSwxNCArMzY3OSwxNCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBN
b3VzCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gCi0gICAgICAgIAorCiAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZGlzcGF0
Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCBtX21vdXNlRG93bikK
ICAgICAgICAgICAgICYmICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNz
d29yZEZpZWxkKCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEludmFsaWRhdGUgZGF0YVRyYW5z
ZmVyIGhlcmUgYWdhaW5zdCBhbnltb3JlIHBhc3RlYm9hcmQgd3JpdGluZyBmb3Igc2VjdXJpdHku
IFRoZSBkcmFnCiAgICAgICAgIC8vIGltYWdlIGNhbiBzdGlsbCBiZSBjaGFuZ2VkIGFzIHdlIGRy
YWcsIGJ1dCBub3QgdGhlIHBhc3RlYm9hcmQgZGF0YS4KLSAgICAgICAgZHJhZ1N0YXRlKCkuZGF0
YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpJbWFn
ZVdyaXRhYmxlKTsKLSAgICAgICAgCisgICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+
bWFrZURyYWdJbWFnZVdyaXRhYmxlKCk7CisKICAgICAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFsdWVzIGZyb20gREhUTUwgZWxlbWVu
dCwgaWYgaXQgc2V0IGFueS4KICAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCkuZGF0YVRy
YW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318472</attachid>
            <date>2017-08-17 22:33:45 -0700</date>
            <delta_ts>2017-08-17 22:52:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175704-20170817223344.patch</filename>
            <type>text/plain</type>
            <size>29620</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQyNGNmMjk5MTMwMmZj
NTQ1ZmJkYTFlNTU0Y2I5ZWVkYzQ3ZTk3Zi4uMjJmZWU2MGM5NDIyYzI1MjQ5NWQ3MDM0Nzk0NzIx
ZTJmMjM5ZDNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE3LTA4LTE3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBEYXRhVHJhbnNm
ZXJBY2Nlc3NQb2xpY3kgdG8gbWF0Y2ggc3BlYyBhbmQgcmVmYWN0b3IgcmVsYXRlZCBub2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgUmVuYW1lZCBEYXRh
VHJhbnNmZXJBY2Nlc3NQb2xpY3kgdG8gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGUgdG8gbWF0Y2gg
dGhlIGRyYWcgZGF0YSBzdG9yZSBtb2RlIGNvbmNlcHQKKyAgICAgICAgaW4gdGhlIEhUTUw1IHNw
ZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2RuZC5odG1sI2RyYWctZGF0YS1zdG9yZS1tb2RlCisKKyAgICAgICAgRGF0YVRyYW5zZmVy
IGluIGFkZGl0aW9uIHRvIHRob3NlIHN0YXRlcyBjYW4gYmUgZGlzYXNzb2NpYXRlZCBmcm9tIHRo
ZSBkcmFnIGRhdGEgc3RvcmUgd2hlbiBpdCBiZWNvbWVzCisgICAgICAgIG5vIGxvbmdlciB2YWxp
ZC4gV2UgYWxzbyBzdXBwb3J0IGEgc3BlY2lhbCBtb2RlIHdoaWNoIGFsbG93cyBvbmx5IHVwZGF0
aW5nIHRoZSBkcmFnIGltYWdlLgorICAgICAgICBUaGVzZSB0d28gc3RhdGVzLCBJbnZhbGlkIGFu
ZCBEcmFnSW1hZ2VXcml0YWJsZSwgYXJlIGFkZGVkIGluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBz
dGF0ZXMgaW4gdGhlIHNwZWMuCisKKyAgICAgICAgQWxzbyBzcGxpdCBEcmFnQW5kRHJvcCB0eXBl
IG9mIERhdGFUcmFuc2ZlciBpbnRvIERyYWdBbmREcm9wRGF0YSBhbmQgRHJhZ0FuZERyb3BGaWxl
cywgYW5kIHJlZmFjdG9yZWQKKyAgICAgICAgdGhlIHJlbGF0ZWQgY29kZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpE
YXRhVHJhbnNmZXIpOiBObyBsb25nZXIgdGFrZXMgZm9yRmlsZURyYWcgYm9vbGVhbiBzaW5jZSBp
dCdzIGZvbGRlZCBpbnRvIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6On5E
YXRhVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRBY2Nlc3NQ
b2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjYW5SZWFk
VHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjYW5SZWFkRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhbldyaXRlRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhblNldERyYWdJbWFnZSBjb25zdCk6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjptYWtl
SW52YWxpZEZvclNlY3VyaXR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6Om1ha2VEcmFnSW1hZ2VXcml0YWJsZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9EYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENsaXBib2FyZEV2ZW50KTogTW92ZWQgYW5k
IHJlbmFtZWQgZnJvbSBkaXNwYXRjaENQUEV2ZW50LiBOb3cgY29tcHV0ZXMgdGhlIHN0b3JlIG1v
ZGUKKyAgICAgICAgaW5zaWRlIHRoZSBmdW5jdGlvbiB0byBtYXRjaCB0aGUgc3BlYzogaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2NsaXBib2FyZC1hcGlzLyNmaXJlLWEtY2xpcGJvYXJkLWV2ZW50Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhbkRIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2FuREhUTUxDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuREhU
TUxQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dHJ5REhUTUxQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc3BhdGNo
Q1BQRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRh
VHJhbnNmZXJUb1VwZGF0ZURyYWcpOiBFeHRyYWN0ZWQgdG8gc2hhcmUgY29kZS4KKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmludmFsaWRhdGVEYXRh
VHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToK
KwogMjAxNy0wOC0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSW5wdXQgRXZlbnRzXSBSZW5hbWUgaW5wdXRUeXBlICJmb3JtYXRGb3JlQ29sb3Ii
IHRvICJmb3JtYXRGb250Q29sb3IiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODUwM2UzMDljNjViMDM3MGIwNmI3Njc5ZGViNDZi
ZmRkNjA4NTMwYy4uYzI5M2RmMzVhNzJjN2Y4YWQ2ZTNiNWJiNTViMmNjZGZlM2IxNjhjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjEyMiw3ICsyMTIyLDYgQEAKIAkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi87IH07CiAJCTRC
NkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0QjZGQTZGNzBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjYw
QzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCAqLzsgfTsKLQkJNEI4QUY0QUEw
QjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI4QUY0QTkwQjFDRTAyQjAwNjg3
NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAvKiBF
ZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RTE5
NTkyMTBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEUxOTU5MUYwQTM5REFCQTAwMjIw
RkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLzsgfTsKIAkJNEUxOTU5MjIwQTM5REFCQTAw
MjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0
dXJlTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtOTg0OCw3ICs5ODQ3LDYgQEAKIAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIElt
YWdlU291cmNlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3Vy
Y2VDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0QjhBRjRBOTBCMUNFMDJCMDA2ODc2OTAgLyogRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVHJhbnNmZXJB
Y2Nlc3NQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJG
QTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUZlYXR1cmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTIwMEEzOURBQkEwMDIy
MEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFGZWF0dXJlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1NjU0LDcgKzI1NjUyLDYgQEAKIAkJCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogRGF0
YVRyYW5zZmVyLmNwcCAqLywKIAkJCQk4NTAzMUIyODBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRy
YW5zZmVyLmggKi8sCiAJCQkJQkNBODNFMzYwRDdDREM0RTAwMzQyMUE4IC8qIERhdGFUcmFuc2Zl
ci5pZGwgKi8sCi0JCQkJNEI4QUY0QTkwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFj
Y2Vzc1BvbGljeS5oICovLAogCQkJCTlCMDk4QkQ1MUYzRDYwMzMwMDJERDU2MiAvKiBEYXRhVHJh
bnNmZXJJdGVtLmNwcCAqLywKIAkJCQk4MUFDNTk5NzEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRy
YW5zZmVySXRlbS5oICovLAogCQkJCTgxQUM1QUU4MTMxNjM5MkUwMDA5QTdFMCAvKiBEYXRhVHJh
bnNmZXJJdGVtLmlkbCAqLywKQEAgLTI3MDgxLDcgKzI3MDc4LDYgQEAKIAkJCQlCQzIyNzQ2RjBF
ODM2NjQ1MDBFN0Y5NzUgLyogRGF0YVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0MUMx
MUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTRCOEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBE
YXRhVHJhbnNmZXJJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5QTEzMTYzNkU2MDAw
OUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAw
NzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDIxYjRhNTEwMjdjYjE5NmUyZmZiYWI5
ZWFjNmVkNzlkNjAyMmZiYjguLjUwNTQwM2M1MjQ0YjE4MTY0MjUwYmU4YjVjMTZmMjg5OTJlMGFi
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC01NywyNiArNTcsMjUgQEAg
cHJpdmF0ZToKIAogI2VuZGlmCiAKLURhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKERhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeSBwb2xpY3ksIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0
ZWJvYXJkLCBUeXBlIHR5cGUsIGJvb2wgZm9yRmlsZURyYWcpCi0gICAgOiBtX3BvbGljeShwb2xp
Y3kpCitEYXRhVHJhbnNmZXI6OkRhdGFUcmFuc2ZlcihTdG9yZU1vZGUgbW9kZSwgc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQsIFR5cGUgdHlwZSkKKyAgICA6IG1fc3RvcmVN
b2RlKG1vZGUpCiAgICAgLCBtX3Bhc3RlYm9hcmQoV1RGTW92ZShwYXN0ZWJvYXJkKSkKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9mb3JEcmFnKHR5cGUgPT0gRHJhZ0FuZERyb3Ap
Ci0gICAgLCBtX2ZvckZpbGVEcmFnKGZvckZpbGVEcmFnKQorICAgICwgbV9mb3JEcmFnKHR5cGUg
PT0gVHlwZTo6RHJhZ0FuZERyb3BEYXRhIHx8IHR5cGUgPT0gVHlwZTo6RHJhZ0FuZERyb3BGaWxl
cykKKyAgICAsIG1fZm9yRmlsZURyYWcodHlwZSA9PSBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzKQog
ICAgICwgbV9kcm9wRWZmZWN0KEFTQ0lJTGl0ZXJhbCgidW5pbml0aWFsaXplZCIpKQogICAgICwg
bV9lZmZlY3RBbGxvd2VkKEFTQ0lJTGl0ZXJhbCgidW5pbml0aWFsaXplZCIpKQogICAgICwgbV9z
aG91bGRVcGRhdGVEcmFnSW1hZ2UoZmFsc2UpCiAjZW5kaWYKIHsKICNpZiAhRU5BQkxFKERSQUdf
U1VQUE9SVCkKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgIT0gRHJhZ0FuZERyb3ApOwot
ICAgIEFTU0VSVF9VTlVTRUQoZm9yRmlsZURyYWcsICFmb3JGaWxlRHJhZyk7CisgICAgQVNTRVJU
X1VOVVNFRCh0eXBlLCB0eXBlICE9IERyYWdBbmREcm9wRGF0YSAmJiB0eXBlICE9IERyYWdBbmRE
cm9wRmlsZXMpOwogI2VuZGlmCiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3kpCitS
ZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShTdG9y
ZU1vZGUgbW9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIocG9s
aWN5LCBwb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSA/IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZVByaXZhdGUoKSA6IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKG1vZGUsIG1vZGUg
PT0gU3RvcmVNb2RlOjpSZWFkV3JpdGUgPyBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkgOiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSkpOwogfQogCiBEYXRhVHJhbnNmZXI6
On5EYXRhVHJhbnNmZXIoKQpAQCAtODYsMjcgKzg1LDIwIEBAIERhdGFUcmFuc2Zlcjo6fkRhdGFU
cmFuc2ZlcigpCiAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyLT5zdG9wTG9hZGluZyhtX2RyYWdJ
bWFnZSk7CiAjZW5kaWYKIH0KLSAgICAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXRBY2Nlc3NQb2xp
Y3koRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSkKLXsKLSAgICAvLyBPbmNlIHRoZSBk
YXRhVHJhbnNmZXIgZ29lcyBudW1iLCBpdCBjYW4gbmV2ZXIgZ28gYmFjay4KLSAgICBBU1NFUlQo
bV9wb2xpY3kgIT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iIHx8IHBvbGljeSA9PSBE
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOwotICAgIG1fcG9saWN5ID0gcG9saWN5Owot
fQogCiBib29sIERhdGFUcmFuc2Zlcjo6Y2FuUmVhZFR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSB8fCBtX3Bv
bGljeSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlR5cGVzUmVhZGFibGUgfHwgbV9wb2xp
Y3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZTsKKyAgICByZXR1cm4gbV9z
dG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpSZWFkb25seSB8fCBtX3N0b3JlTW9kZSA9PSBTdG9yZU1v
ZGU6OlByb3RlY3RlZCB8fCBtX3N0b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRXcml0ZTsKIH0K
IAogYm9vbCBEYXRhVHJhbnNmZXI6OmNhblJlYWREYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSB8fCBtX3BvbGlj
eSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlOworICAgIHJldHVybiBtX3N0
b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRvbmx5IHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9k
ZTo6UmVhZFdyaXRlOwogfQogCiBib29sIERhdGFUcmFuc2Zlcjo6Y2FuV3JpdGVEYXRhKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpX
cml0YWJsZTsKKyAgICByZXR1cm4gbV9zdG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpSZWFkV3JpdGU7
CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVyOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpA
QCAtMjE0LDcgKzIwNiw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uCiAgICAgVHlwZVRvU3Ry
aW5nTWFwIHR5cGVUb1N0cmluZ01hcDsKICAgICB0eXBlVG9TdHJpbmdNYXAuc2V0KEFTQ0lJTGl0
ZXJhbCgidGV4dC9wbGFpbiIpLCBwbGFpblRleHQpOwogICAgIHR5cGVUb1N0cmluZ01hcC5zZXQo
QVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgaHRtbFRleHQpOwotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlLCBT
dGF0aWNQYXN0ZWJvYXJkOjpjcmVhdGUoV1RGTW92ZSh0eXBlVG9TdHJpbmdNYXApKSwgSW5wdXRF
dmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6
OlJlYWRvbmx5LCBTdGF0aWNQYXN0ZWJvYXJkOjpjcmVhdGUoV1RGTW92ZSh0eXBlVG9TdHJpbmdN
YXApKSwgVHlwZTo6SW5wdXRFdmVudCkpOwogfQogCiAjaWYgIUVOQUJMRShEUkFHX1NVUFBPUlQp
CkBAIC0yNDUsMTIgKzIzNywxMyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVs
ZW1lbnQqLCBpbnQsIGludCkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JEcmFnKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0
YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJh
Z0FuZERyb3AoKSwgRHJhZ0FuZERyb3ApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
VHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdB
bmREcm9wKCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogfQogCi1SZWY8RGF0YVRyYW5zZmVy
PiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBv
bGljeSwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JEcm9wKFN0b3JlTW9kZSBhY2Nlc3NNb2RlLCBjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKHBv
bGljeSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCBEcmFnQW5k
RHJvcCwgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKSk7CisgICAgYXV0byB0eXBlID0gZHJhZ0Rh
dGEuY29udGFpbnNGaWxlcygpID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdB
bmREcm9wRGF0YTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoYWNjZXNz
TW9kZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCB0eXBlKSk7
CiB9CiAKIGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5TZXREcmFnSW1hZ2UoKSBjb25zdApAQCAtMjU5
LDcgKzI1Miw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5TZXREcmFnSW1hZ2UoKSBjb25zdAog
ICAgIC8vIGV2ZW50LiBUaGlzIGNhcGFiaWxpdHkgaXMgbWFpbnRhaW5lZCBmb3IgYmFja3dhcmRz
IGNvbXBhdGlibGl0eSBmb3IgcG9ydHMgdGhhdCBoYXZlCiAgICAgLy8gc3VwcG9ydGVkIHRoaXMg
aW4gdGhlIHBhc3QuIE9uIG1hbnkgcG9ydHMsIGF0dGVtcHRpbmcgdG8gc2V0IGEgZHJhZyBpbWFn
ZSBvdXRzaWRlIHRoZQogICAgIC8vIGRyYWdzdGFydCBvcGVyYXRpb24gaXMgYSBuby1vcCBhbnl3
YXkuCi0gICAgcmV0dXJuIG1fZm9yRHJhZyAmJiAobV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5OjpJbWFnZVdyaXRhYmxlIHx8IG1fcG9saWN5ID09IERhdGFUcmFuc2ZlckFjY2Vz
c1BvbGljeTo6V3JpdGFibGUpOworICAgIHJldHVybiBtX2ZvckRyYWcgJiYgKG1fc3RvcmVNb2Rl
ID09IFN0b3JlTW9kZTo6RHJhZ0ltYWdlV3JpdGFibGUgfHwgbV9zdG9yZU1vZGUgPT0gU3RvcmVN
b2RlOjpSZWFkV3JpdGUpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVs
ZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApp
bmRleCA1NDMzM2JlZjVlZDY4ZDYxNWQ2NzU3M2VhYTQ4ZDMyNjEzYTVkMmMwLi5kZDg0MzhhNWNm
NjI4MTlkODcxYmJhYTJkNGIwM2UzMjE5MWRjNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5oCkBAIC0yNCw3ICsyNCw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmgiCiAj
aW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQxLDcgKzQwLDEwIEBAIGNsYXNzIFBhc3RlYm9h
cmQ7CiAKIGNsYXNzIERhdGFUcmFuc2ZlciA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFUcmFuc2Zl
cj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5KTsKKyAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kbmQuaHRtbCNkcmFnLWRhdGEtc3RvcmUtbW9kZQor
ICAgIGVudW0gY2xhc3MgU3RvcmVNb2RlIHsgSW52YWxpZCwgRHJhZ0ltYWdlV3JpdGFibGUsIFJl
YWRXcml0ZSwgUmVhZG9ubHksIFByb3RlY3RlZCB9OworCisgICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShTdG9yZU1vZGUpOwogICAgIHN0YXRpYyBSZWY8
RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0
LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5EYXRhVHJh
bnNmZXIoKTsKQEAgLTY1LDcgKzY3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RHJhZ0lt
YWdlKEVsZW1lbnQqLCBpbnQgeCwgaW50IHkpOwogCi0gICAgdm9pZCBzZXRBY2Nlc3NQb2xpY3ko
RGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5KTsKKyAgICB2b2lkIG1ha2VJbnZhbGlkRm9yU2VjdXJp
dHkoKSB7IG1fc3RvcmVNb2RlID0gU3RvcmVNb2RlOjpJbnZhbGlkOyB9CisgICAgdm9pZCBtYWtl
RHJhZ0ltYWdlV3JpdGFibGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3RvcmVNb2RlICE9
IFN0b3JlTW9kZTo6SW52YWxpZCk7CisgICAgICAgIG1fc3RvcmVNb2RlID0gU3RvcmVNb2RlOjpE
cmFnSW1hZ2VXcml0YWJsZTsKKyAgICB9CisKICAgICBib29sIGNhblJlYWRUeXBlcygpIGNvbnN0
OwogICAgIGJvb2wgY2FuUmVhZERhdGEoKSBjb25zdDsKICAgICBib29sIGNhbldyaXRlRGF0YSgp
IGNvbnN0OwpAQCAtNzcsNyArODUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKCk7Ci0gICAg
c3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5LCBjb25zdCBEcmFnRGF0YSYpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVGb3JEcm9wKFN0b3JlTW9kZSwgY29uc3QgRHJhZ0RhdGEmKTsKIAogICAgIGJvb2wgZHJv
cEVmZmVjdElzVW5pbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAi
dW5pbml0aWFsaXplZCI7IH0KIApAQCAtOTIsMTQgKzEwMCwxNCBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBlbnVtIFR5cGUgeyBDb3B5QW5kUGFzdGUsIERyYWdBbmREcm9wLCBJ
bnB1dEV2ZW50IH07Ci0gICAgRGF0YVRyYW5zZmVyKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0gQ29weUFuZFBhc3RlLCBib29sIGZv
ckZpbGVEcmFnID0gZmFsc2UpOworICAgIGVudW0gY2xhc3MgVHlwZSB7IENvcHlBbmRQYXN0ZSwg
RHJhZ0FuZERyb3BEYXRhLCBEcmFnQW5kRHJvcEZpbGVzLCBJbnB1dEV2ZW50IH07CisgICAgRGF0
YVRyYW5zZmVyKFN0b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0g
VHlwZTo6Q29weUFuZFBhc3RlKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9v
bCBjYW5TZXREcmFnSW1hZ2UoKSBjb25zdDsKICNlbmRpZgogCi0gICAgRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5IG1fcG9saWN5OworICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxEYXRhVHJhbnNmZXJJdGVtTGlzdD4gbV9pdGVtTGlzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNTBlODdhYTljMzkxNDkwZDFhOWFhMzFiMjAwN2ExOWI1ZDJlMjJjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5IHsKLSAgICBOdW1iLCBJbWFnZVdyaXRhYmxlLCBXcml0YWJsZSwgVHlwZXNSZWFk
YWJsZSwgUmVhZGFibGUKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCA5OTI0NDAzNjY1YWY1ZGUzZDQyODJhMTc0MjJhMjJlYzJjZDZi
OWFmLi40N2E3NDA1ZjNhZmU5ZjQ0ZjkyYTA3YzQzZTY3ZDI5ZTI2NmEyZDJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMTMsNiArMzEzLDQ2IEBAIGJvb2wgRWRpdG9yOjpjYW5F
ZGl0UmljaGx5KCkgY29uc3QKICAgICByZXR1cm4gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogfQogCisvLyBSZXR1cm5zIHdoZXRoZXIg
Y2FsbGVyIHNob3VsZCBjb250aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5nIiwgd2hp
Y2ggaXMgdGhlIHNhbWUgYXMKKy8vIHRoZSBldmVudCBoYW5kbGVyIE5PVCBzZXR0aW5nIHRoZSBy
ZXR1cm4gdmFsdWUgdG8gZmFsc2UKKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9jbGlwYm9hcmQt
YXBpcy8jZmlyZS1hLWNsaXBib2FyZC1ldmVudAorc3RhdGljIGJvb2wgZGlzcGF0Y2hDbGlwYm9h
cmRFdmVudChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKQoreworICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSB0YXJnZXQgc2VsZWN0aW9uIGNvZGUg
aGVyZS4KKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZSBzdG9yZU1vZGU7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkucGFzdGVFdmVudCkKKyAgICAgICAgc3RvcmVNb2RlID0gRGF0YVRyYW5zZmVyOjpT
dG9yZU1vZGU6OlJlYWRvbmx5OworICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkuY29weUV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuY3V0RXZlbnQpCisgICAg
ICAgIHN0b3JlTW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGU7CisgICAg
ZWxzZSB7CisgICAgICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZWN1
dEV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlcGFzdGVFdmVudCk7CisgICAgICAgIHN0b3Jl
TW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkOworICAgIH0KKworICAgIGF1
dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoc3Rv
cmVNb2RlKTsKKworICAgIENsaXBib2FyZEV2ZW50OjpJbml0IGluaXQ7CisgICAgaW5pdC5idWJi
bGVzID0gdHJ1ZTsKKyAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOworICAgIGluaXQuY2xpcGJv
YXJkRGF0YSA9IGRhdGFUcmFuc2Zlci5wdHIoKTsKKyAgICBhdXRvIGV2ZW50ID0gQ2xpcGJvYXJk
RXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGluaXQsIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisK
KyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIGJvb2wgbm9EZWZhdWx0UHJv
Y2Vzc2luZyA9IGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CisgICAgaWYgKG5vRGVmYXVsdFBy
b2Nlc3NpbmcgJiYgc3RvcmVNb2RlID09IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3Jp
dGUpIHsKKyAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKCk7CisgICAgICAgIHBhc3RlYm9hcmQtPmNsZWFyKCk7CisgICAgICAgIHBhc3Rl
Ym9hcmQtPndyaXRlUGFzdGVib2FyZChkYXRhVHJhbnNmZXItPnBhc3RlYm9hcmQoKSk7CisgICAg
fQorCisgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CisKKyAgICBy
ZXR1cm4gIW5vRGVmYXVsdFByb2Nlc3Npbmc7Cit9CisKIC8vIFdpbklFIHVzZXMgb25iZWZvcmVj
dXQgYW5kIG9uYmVmb3JlcGFzdGUgdG8gZW5hYmxlcyB0aGUgY3V0IGFuZCBwYXN0ZSBtZW51IGl0
ZW1zLiAgVGhleQogLy8gYWxzbyBzZW5kIG9uYmVmb3JlY29weSwgYXBwYXJlbnRseSBmb3Igc3lt
bWV0cnksIGJ1dCBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgbWVudSBpdGVtcy4KIC8vIFdlIG5lZWQg
dG8gdXNlIG9uYmVmb3JlY29weSBhcyBhIHJlYWwgbWVudSBlbmFibGVyIGJlY2F1c2Ugd2UgYWxs
b3cgZWxlbWVudHMgdGhhdCBhcmUgbm90CkBAIC0zMjAsMTcgKzM2MCwyMiBAQCBib29sIEVkaXRv
cjo6Y2FuRWRpdFJpY2hseSgpIGNvbnN0CiAKIGJvb2wgRWRpdG9yOjpjYW5ESFRNTEN1dCgpCiB7
Ci0gICAgcmV0dXJuICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29y
ZEZpZWxkKCkgJiYgIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmJlZm9yZWN1dEV2ZW50
LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOworICAgIGlmIChtX2ZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJn
ZXRGcm9tU2VsZWN0aW9uKCksIGV2ZW50TmFtZXMoKS5iZWZvcmVjdXRFdmVudCk7CiB9CiAKIGJv
b2wgRWRpdG9yOjpjYW5ESFRNTENvcHkoKQogewotICAgIHJldHVybiAhbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpICYmICFkaXNwYXRjaENQUEV2ZW50
KGV2ZW50TmFtZXMoKS5iZWZvcmVjb3B5RXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6
TnVtYik7CisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhZGlzcGF0Y2hD
bGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIGV2ZW50TmFtZXMo
KS5iZWZvcmVjb3B5RXZlbnQpOwogfQogCiBib29sIEVkaXRvcjo6Y2FuREhUTUxQYXN0ZSgpCiB7
Ci0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVwYXN0ZUV2
ZW50LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOworICAgIHJldHVybiAhZGlzcGF0
Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIGV2ZW50TmFt
ZXMoKS5iZWZvcmVwYXN0ZUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OmNhbkN1dCgpIGNvbnN0
CkBAIC01OTgsNyArNjQzLDcgQEAgYm9vbCBFZGl0b3I6OnRyeURIVE1MQ29weSgpCiAgICAgaWYg
KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50
TmFtZXMoKS5jb3B5RXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6V3JpdGFibGUpOwor
ICAgIHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2Vs
ZWN0aW9uKCksIGV2ZW50TmFtZXMoKS5jb3B5RXZlbnQpOwogfQogCiBib29sIEVkaXRvcjo6dHJ5
REhUTUxDdXQoKQpAQCAtNjA2LDEyICs2NTEsMTIgQEAgYm9vbCBFZGl0b3I6OnRyeURIVE1MQ3V0
KCkKICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRG
aWVsZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuICFkaXNwYXRj
aENQUEV2ZW50KGV2ZW50TmFtZXMoKS5jdXRFdmVudCwgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5
OjpXcml0YWJsZSk7CisgICAgcmV0dXJuICFkaXNwYXRjaENsaXBib2FyZEV2ZW50KGZpbmRFdmVu
dFRhcmdldEZyb21TZWxlY3Rpb24oKSwgZXZlbnROYW1lcygpLmN1dEV2ZW50KTsKIH0KIAogYm9v
bCBFZGl0b3I6OnRyeURIVE1MUGFzdGUoKQogewotICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVu
dChldmVudE5hbWVzKCkucGFzdGVFdmVudCwgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFk
YWJsZSk7CisgICAgcmV0dXJuICFkaXNwYXRjaENsaXBib2FyZEV2ZW50KGZpbmRFdmVudFRhcmdl
dEZyb21TZWxlY3Rpb24oKSwgZXZlbnROYW1lcygpLnBhc3RlRXZlbnQpOwogfQogCiBib29sIEVk
aXRvcjo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFJhbmdlKiByYW5nZSwg
RWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikgY29uc3QKQEAgLTc3NSwzNSArODIwLDYgQEAgdm9p
ZCBFZGl0b3I6OmNsZWFyTGFzdEVkaXRDb21tYW5kKCkKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9
IG51bGxwdHI7CiB9CiAKLS8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVl
IHdpdGggInRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcyAKLS8v
IHRoZSBldmVudCBoYW5kbGVyIE5PVCBzZXR0aW5nIHRoZSByZXR1cm4gdmFsdWUgdG8gZmFsc2UK
LWJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5KQotewotICAgIEVsZW1lbnQqIHRh
cmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsKLSAgICBpZiAoIXRhcmdldCkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHBvbGljeSk7Ci0KLSAgICBDbGlwYm9hcmRFdmVu
dDo6SW5pdCBpbml0OwotICAgIGluaXQuYnViYmxlcyA9IHRydWU7Ci0gICAgaW5pdC5jYW5jZWxh
YmxlID0gdHJ1ZTsKLSAgICBpbml0LmNsaXBib2FyZERhdGEgPSBkYXRhVHJhbnNmZXIucHRyKCk7
Ci0gICAgYXV0byBldmVudCA9IENsaXBib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBpbml0
LCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVu
dCk7Ci0gICAgYm9vbCBub0RlZmF1bHRQcm9jZXNzaW5nID0gZXZlbnQtPmRlZmF1bHRQcmV2ZW50
ZWQoKTsKLSAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAmJiBwb2xpY3kgPT0gRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSkgewotICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKLSAgICAgICAgcGFzdGVib2FyZC0+
Y2xlYXIoKTsKLSAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVQYXN0ZWJvYXJkKGRhdGFUcmFuc2Zl
ci0+cGFzdGVib2FyZCgpKTsKLSAgICB9Ci0KLSAgICAvLyBpbnZhbGlkYXRlIGRhdGFUcmFuc2Zl
ciBoZXJlIGZvciBzZWN1cml0eQotICAgIGRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERh
dGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7Ci0gICAgCi0gICAgcmV0dXJuICFub0RlZmF1
bHRQcm9jZXNzaW5nOwotfQotCiBFbGVtZW50KiBFZGl0b3I6OmZpbmRFdmVudFRhcmdldEZyb20o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewogICAgIEVsZW1lbnQq
IHRhcmdldCA9IHNlbGVjdGlvbi5zdGFydCgpLmVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCmluZGV4IGQ2NTFjMjQ0NmU1YzQyYTkzMDAzNjM5NDhhMGUxYzg2NTViN2ZmMzEuLjI2YzAy
N2RlZWVlNWJiN2E3YzA1YjUwNjc2NTNkZWQ0OTUwZDljZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb21wb3Np
dGlvblVuZGVybGluZS5oIgotI2luY2x1ZGUgIkRhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIgog
I2luY2x1ZGUgIkRpY3RhdGlvbkFsdGVybmF0aXZlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJr
ZXIuaCIKICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiCkBAIC0yMTksOSArMjE4LDcgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVVuY2hh
bmdlYWJsZVN0eWxlcygpOwogI2VuZGlmCi0gICAgCi0gICAgYm9vbCBkaXNwYXRjaENQUEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSk7Ci0gICAgCisK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiwgRWRp
dEFjdGlvbiA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CiAgICAgdm9pZCBhcHBseVN0eWxlKFJl
ZlB0cjxFZGl0aW5nU3R5bGU+JiYsIEVkaXRBY3Rpb24pOwogICAgIHZvaWQgYXBwbHlQYXJhZ3Jh
cGhTdHlsZShTdHlsZVByb3BlcnRpZXMqLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lm
aWVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYTEzYzMwZWVm
YTRkMTI2MjYwYzRkZDAyODExZTVkMDlhOGY5NmQ1Mi4uMjUyZTJiZWQ1ZDMzZTA2NTA5Y2Q4NmQz
MWJmMjljZDk5NzFlY2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTIyMCwxOSArMjIwLDI3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdF
bnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0VudGVyZWRP
clVwZGF0ZWQoZHJhZ0RhdGEpOwogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVk
KGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVh
dGVEYXRhVHJhbnNmZXJUb1VwZGF0ZURyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MsIFJlZlB0cjxEb2N1bWVudD4mJiBkb2N1bWVudFVuZGVyTW91
c2UpCiB7Ci0gICAgaWYgKFJlZlB0cjxGcmFtZVZpZXc+IHYgPSBtX3BhZ2UubWFpbkZyYW1lKCku
dmlldygpKSB7CisgICAgYXV0byBhY2Nlc3NNb2RlID0gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6
OlByb3RlY3RlZDsKKwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgRGF0
YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSA9IChtX3BhZ2UubWFpbkZyYW1lKCkuc2V0dGlu
Z3MoKS51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYmICghbV9kb2N1
bWVudFVuZGVyTW91c2UgfHwgbV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5T3JpZ2luKCku
aXNMb2NhbCgpKSkKLSAgICAgICAgICAgID8gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFk
YWJsZSA6IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZTsKLSNlbHNlCi0g
ICAgICAgIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3kgPSBEYXRhVHJhbnNmZXJBY2Nl
c3NQb2xpY3k6OlR5cGVzUmVhZGFibGU7CisgICAgaWYgKHNldHRpbmdzLnVzZXNEYXNoYm9hcmRC
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkgJiYgKCFkb2N1bWVudFVuZGVyTW91c2UgfHwgZG9j
dW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLmlzTG9jYWwoKSkpCisgICAgICAgIGFj
Y2Vzc01vZGUgPSBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHk7CiAjZW5kaWYKLSAg
ICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AocG9s
aWN5LCBkcmFnRGF0YSk7Ci0gICAgICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9u
KGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKworICAgIGF1dG8gZGF0
YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGFjY2Vzc01vZGUsIGRyYWdE
YXRhKTsKKyAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisKKyAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwor
fQorCit2b2lkIERyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKK3sKKyAgICBpZiAoUmVmUHRyPEZyYW1lVmlldz4gdiA9IG1fcGFnZS5tYWluRnJhbWUo
KS52aWV3KCkpIHsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBjcmVhdGVEYXRhVHJhbnNm
ZXJUb1VwZGF0ZURyYWcoZHJhZ0RhdGEsIG1fcGFnZS5tYWluRnJhbWUoKS5zZXR0aW5ncygpLCBt
X2RvY3VtZW50VW5kZXJNb3VzZS5jb3B5UmVmKCkpOwogICAgICAgICBtX3BhZ2UubWFpbkZyYW1l
KCkuZXZlbnRIYW5kbGVyKCkuY2FuY2VsRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFn
RGF0YSksIGRhdGFUcmFuc2Zlcik7Ci0gICAgICAgIGRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9s
aWN5KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7IC8vIEludmFsaWRhdGUgZGF0YVRy
YW5zZmVyIGhlcmUgZm9yIHNlY3VyaXR5LgorICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZh
bGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxs
cHRyKTsKICAgICBpZiAobV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZSkKQEAgLTI3MywxMCAr
MjgxLDEwIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGNvbnN0
IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgYm9vbCBwcmV2ZW50ZWREZWZhdWx0ID0gZmFs
c2U7CiAgICAgICAgIGlmIChtYWluRnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgLy8gU2Vu
ZGluZyBhbiBldmVudCBjYW4gcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgdmlldyBh
bmQgcGFydC4KLSAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JEcm9wKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6UmVhZGFibGUsIGRyYWdEYXRh
KTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JEcm9wKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgZHJhZ0RhdGEpOwogICAg
ICAgICAgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJhZ0RhdGEuZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKCkpOwogICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9
IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNl
RXZlbnQoZHJhZ0RhdGEpLCBkYXRhVHJhbnNmZXIpOwotICAgICAgICAgICAgZGF0YVRyYW5zZmVy
LT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsgLy8gSW52
YWxpZGF0ZSBkYXRhVHJhbnNmZXIgaGVyZSBmb3Igc2VjdXJpdHkuCisgICAgICAgICAgICBkYXRh
VHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAocHJldmVudGVkRGVmYXVsdCkgewogICAgICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsKQEAg
LTY5OCwyMyArNzA2LDE2IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJhCiAgICAgaWYgKCF2aWV3
UHJvdGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBFTkFCTEUoREFTSEJPQVJE
X1NVUFBPUlQpCi0gICAgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSA9IChtYWluRnJh
bWUtPnNldHRpbmdzKCkudXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAm
JiBtX2RvY3VtZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS5pc0xvY2FsKCkpID8KLSAg
ICAgICAgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSA6IERhdGFUcmFuc2ZlckFj
Y2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZTsKLSNlbHNlCi0gICAgRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5IHBvbGljeSA9IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZTsK
LSNlbmRpZgotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JE
cm9wKHBvbGljeSwgZHJhZ0RhdGEpOwotICAgIERyYWdPcGVyYXRpb24gc3JjT3BNYXNrID0gZHJh
Z0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7Ci0gICAgZGF0YVRyYW5zZmVyLT5z
ZXRTb3VyY2VPcGVyYXRpb24oc3JjT3BNYXNrKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGNy
ZWF0ZURhdGFUcmFuc2ZlclRvVXBkYXRlRHJhZyhkcmFnRGF0YSwgbWFpbkZyYW1lLT5zZXR0aW5n
cygpLCBtX2RvY3VtZW50VW5kZXJNb3VzZS5jb3B5UmVmKCkpOwogCiAgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGV2ZW50ID0gY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSk7CiAgICAgaWYgKCFtYWlu
RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBkYXRhVHJhbnNm
ZXIpKSB7Ci0gICAgICAgIGRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2Zl
ckFjY2Vzc1BvbGljeTo6TnVtYik7IC8vIEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgZm9y
IHNlY3VyaXR5LgorICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHko
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIG9wZXJhdGlvbiA9IGRhdGFU
cmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKTsKKyAgICBEcmFnT3BlcmF0aW9uIHNyY09w
TWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGlmIChk
YXRhVHJhbnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgb3BlcmF0
aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc3JjT3BNYXNrKTsKICAgICBlbHNlIGlmICgh
KHNyY09wTWFzayAmIG9wZXJhdGlvbikpIHsKQEAgLTcyMiw3ICs3MjMsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3Bl
cmF0aW9uJiBvcGVyYQogICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKICAg
ICB9CiAKLSAgICBkYXRhVHJhbnNmZXItPnNldEFjY2Vzc1BvbGljeShEYXRhVHJhbnNmZXJBY2Nl
c3NQb2xpY3k6Ok51bWIpOyAvLyBJbnZhbGlkYXRlIGRhdGFUcmFuc2ZlciBoZXJlIGZvciBzZWN1
cml0eS4KKyAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDgx
NmViYjIwMDVhZmM4MzQ0N2ZlYzExMjVjNDM5Nzk4YWI2NGUyMjAuLmUwMjFmYTM4N2NmODU3NDA2
ZjIwYzk3MzI4OGU4MDBjOWJmYWFjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTM0NjEsNyArMzQ2MSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjppbnZhbGlkYXRlRGF0
YVRyYW5zZmVyKCkKIHsKICAgICBpZiAoIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlcikKICAgICAg
ICAgcmV0dXJuOwotICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5
KERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRy
YW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgZHJhZ1N0YXRlKCkuZGF0YVRy
YW5zZmVyID0gbnVsbHB0cjsKIH0KIApAQCAtMzY3OSwxNCArMzY3OSwxNCBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCwgQ2hlY2tEcgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9IAotICAgICAgICAKKwogICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZyA9IGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnc3RhcnRFdmVudCwgbV9t
b3VzZURvd24pCiAgICAgICAgICAgICAmJiAhbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5pc0luUGFzc3dvcmRGaWVsZCgpOwotICAgICAgICAKKwogICAgICAgICAvLyBJbnZhbGlkYXRl
IGRhdGFUcmFuc2ZlciBoZXJlIGFnYWluc3QgYW55bW9yZSBwYXN0ZWJvYXJkIHdyaXRpbmcgZm9y
IHNlY3VyaXR5LiBUaGUgZHJhZwogICAgICAgICAvLyBpbWFnZSBjYW4gc3RpbGwgYmUgY2hhbmdl
ZCBhcyB3ZSBkcmFnLCBidXQgbm90IHRoZSBwYXN0ZWJvYXJkIGRhdGEuCi0gICAgICAgIGRyYWdT
dGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFUcmFuc2ZlckFjY2Vzc1Bv
bGljeTo6SW1hZ2VXcml0YWJsZSk7Ci0gICAgICAgIAorICAgICAgICBkcmFnU3RhdGUoKS5kYXRh
VHJhbnNmZXItPm1ha2VEcmFnSW1hZ2VXcml0YWJsZSgpOworCiAgICAgICAgIGlmIChtX21vdXNl
RG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICAgICAgLy8gR2F0aGVyIHZhbHVlcyBmcm9tIERI
VE1MIGVsZW1lbnQsIGlmIGl0IHNldCBhbnkuCiAgICAgICAgICAgICBzcmNPcCA9IGRyYWdTdGF0
ZSgpLmRhdGFUcmFuc2Zlci0+c291cmNlT3BlcmF0aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318476</attachid>
            <date>2017-08-17 22:52:20 -0700</date>
            <delta_ts>2017-08-17 22:52:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175704-20170817225219.patch</filename>
            <type>text/plain</type>
            <size>29688</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQyNGNmMjk5MTMwMmZj
NTQ1ZmJkYTFlNTU0Y2I5ZWVkYzQ3ZTk3Zi4uMjJmZWU2MGM5NDIyYzI1MjQ5NWQ3MDM0Nzk0NzIx
ZTJmMjM5ZDNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE3LTA4LTE3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBEYXRhVHJhbnNm
ZXJBY2Nlc3NQb2xpY3kgdG8gbWF0Y2ggc3BlYyBhbmQgcmVmYWN0b3IgcmVsYXRlZCBub2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgUmVuYW1lZCBEYXRh
VHJhbnNmZXJBY2Nlc3NQb2xpY3kgdG8gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGUgdG8gbWF0Y2gg
dGhlIGRyYWcgZGF0YSBzdG9yZSBtb2RlIGNvbmNlcHQKKyAgICAgICAgaW4gdGhlIEhUTUw1IHNw
ZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2RuZC5odG1sI2RyYWctZGF0YS1zdG9yZS1tb2RlCisKKyAgICAgICAgRGF0YVRyYW5zZmVy
IGluIGFkZGl0aW9uIHRvIHRob3NlIHN0YXRlcyBjYW4gYmUgZGlzYXNzb2NpYXRlZCBmcm9tIHRo
ZSBkcmFnIGRhdGEgc3RvcmUgd2hlbiBpdCBiZWNvbWVzCisgICAgICAgIG5vIGxvbmdlciB2YWxp
ZC4gV2UgYWxzbyBzdXBwb3J0IGEgc3BlY2lhbCBtb2RlIHdoaWNoIGFsbG93cyBvbmx5IHVwZGF0
aW5nIHRoZSBkcmFnIGltYWdlLgorICAgICAgICBUaGVzZSB0d28gc3RhdGVzLCBJbnZhbGlkIGFu
ZCBEcmFnSW1hZ2VXcml0YWJsZSwgYXJlIGFkZGVkIGluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBz
dGF0ZXMgaW4gdGhlIHNwZWMuCisKKyAgICAgICAgQWxzbyBzcGxpdCBEcmFnQW5kRHJvcCB0eXBl
IG9mIERhdGFUcmFuc2ZlciBpbnRvIERyYWdBbmREcm9wRGF0YSBhbmQgRHJhZ0FuZERyb3BGaWxl
cywgYW5kIHJlZmFjdG9yZWQKKyAgICAgICAgdGhlIHJlbGF0ZWQgY29kZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpE
YXRhVHJhbnNmZXIpOiBObyBsb25nZXIgdGFrZXMgZm9yRmlsZURyYWcgYm9vbGVhbiBzaW5jZSBp
dCdzIGZvbGRlZCBpbnRvIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6On5E
YXRhVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRBY2Nlc3NQ
b2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjYW5SZWFk
VHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjYW5SZWFkRGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhbldyaXRlRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNhblNldERyYWdJbWFnZSBjb25zdCk6CisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjptYWtl
SW52YWxpZEZvclNlY3VyaXR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6Om1ha2VEcmFnSW1hZ2VXcml0YWJsZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9EYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENsaXBib2FyZEV2ZW50KTogTW92ZWQgYW5k
IHJlbmFtZWQgZnJvbSBkaXNwYXRjaENQUEV2ZW50LiBOb3cgY29tcHV0ZXMgdGhlIHN0b3JlIG1v
ZGUKKyAgICAgICAgaW5zaWRlIHRoZSBmdW5jdGlvbiB0byBtYXRjaCB0aGUgc3BlYzogaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2NsaXBib2FyZC1hcGlzLyNmaXJlLWEtY2xpcGJvYXJkLWV2ZW50Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhbkRIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2FuREhUTUxDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuREhU
TUxQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dHJ5REhUTUxQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRpc3BhdGNo
Q1BQRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRh
VHJhbnNmZXJUb1VwZGF0ZURyYWcpOiBFeHRyYWN0ZWQgdG8gc2hhcmUgY29kZS4KKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmludmFsaWRhdGVEYXRh
VHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToK
KwogMjAxNy0wOC0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSW5wdXQgRXZlbnRzXSBSZW5hbWUgaW5wdXRUeXBlICJmb3JtYXRGb3JlQ29sb3Ii
IHRvICJmb3JtYXRGb250Q29sb3IiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODUwM2UzMDljNjViMDM3MGIwNmI3Njc5ZGViNDZi
ZmRkNjA4NTMwYy4uYzI5M2RmMzVhNzJjN2Y4YWQ2ZTNiNWJiNTViMmNjZGZlM2IxNjhjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjEyMiw3ICsyMTIyLDYgQEAKIAkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi87IH07CiAJCTRC
NkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0QjZGQTZGNzBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjYw
QzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCAqLzsgfTsKLQkJNEI4QUY0QUEw
QjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI4QUY0QTkwQjFDRTAyQjAwNjg3
NjkwIC8qIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAvKiBF
ZGl0b3JEZWxldGVBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RTE5
NTkyMTBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEUxOTU5MUYwQTM5REFCQTAwMjIw
RkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCAqLzsgfTsKIAkJNEUxOTU5MjIwQTM5REFCQTAw
MjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0
dXJlTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtOTg0OCw3ICs5ODQ3LDYgQEAKIAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIElt
YWdlU291cmNlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3Vy
Y2VDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGMjBDMzlFNDhDMDAw
ODcwMTEgLyogU21hcnRSZXBsYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNtYXJ0UmVwbGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBD
MzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0QjhBRjRBOTBCMUNFMDJCMDA2ODc2OTAgLyogRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhVHJhbnNmZXJB
Y2Nlc3NQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJBRTk1QjAwQjJG
QTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFZGl0b3JEZWxldGVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUZlYXR1cmVOYW1l
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTIwMEEzOURBQkEwMDIy
MEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFGZWF0dXJlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1NjU0LDcgKzI1NjUyLDYgQEAKIAkJCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogRGF0
YVRyYW5zZmVyLmNwcCAqLywKIAkJCQk4NTAzMUIyODBBNDRFRkM3MDBGOTkyRTAgLyogRGF0YVRy
YW5zZmVyLmggKi8sCiAJCQkJQkNBODNFMzYwRDdDREM0RTAwMzQyMUE4IC8qIERhdGFUcmFuc2Zl
ci5pZGwgKi8sCi0JCQkJNEI4QUY0QTkwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFuc2ZlckFj
Y2Vzc1BvbGljeS5oICovLAogCQkJCTlCMDk4QkQ1MUYzRDYwMzMwMDJERDU2MiAvKiBEYXRhVHJh
bnNmZXJJdGVtLmNwcCAqLywKIAkJCQk4MUFDNTk5NzEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRy
YW5zZmVySXRlbS5oICovLAogCQkJCTgxQUM1QUU4MTMxNjM5MkUwMDA5QTdFMCAvKiBEYXRhVHJh
bnNmZXJJdGVtLmlkbCAqLywKQEAgLTI3MDgxLDcgKzI3MDc4LDYgQEAKIAkJCQlCQzIyNzQ2RjBF
ODM2NjQ1MDBFN0Y5NzUgLyogRGF0YVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0MUMx
MUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTRCOEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQ
b2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBE
YXRhVHJhbnNmZXJJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5QTEzMTYzNkU2MDAw
OUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAw
NzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDIxYjRhNTEwMjdjYjE5NmUyZmZiYWI5
ZWFjNmVkNzlkNjAyMmZiYjguLjUwNTQwM2M1MjQ0YjE4MTY0MjUwYmU4YjVjMTZmMjg5OTJlMGFi
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC01NywyNiArNTcsMjUgQEAg
cHJpdmF0ZToKIAogI2VuZGlmCiAKLURhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKERhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeSBwb2xpY3ksIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0
ZWJvYXJkLCBUeXBlIHR5cGUsIGJvb2wgZm9yRmlsZURyYWcpCi0gICAgOiBtX3BvbGljeShwb2xp
Y3kpCitEYXRhVHJhbnNmZXI6OkRhdGFUcmFuc2ZlcihTdG9yZU1vZGUgbW9kZSwgc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQsIFR5cGUgdHlwZSkKKyAgICA6IG1fc3RvcmVN
b2RlKG1vZGUpCiAgICAgLCBtX3Bhc3RlYm9hcmQoV1RGTW92ZShwYXN0ZWJvYXJkKSkKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9mb3JEcmFnKHR5cGUgPT0gRHJhZ0FuZERyb3Ap
Ci0gICAgLCBtX2ZvckZpbGVEcmFnKGZvckZpbGVEcmFnKQorICAgICwgbV9mb3JEcmFnKHR5cGUg
PT0gVHlwZTo6RHJhZ0FuZERyb3BEYXRhIHx8IHR5cGUgPT0gVHlwZTo6RHJhZ0FuZERyb3BGaWxl
cykKKyAgICAsIG1fZm9yRmlsZURyYWcodHlwZSA9PSBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzKQog
ICAgICwgbV9kcm9wRWZmZWN0KEFTQ0lJTGl0ZXJhbCgidW5pbml0aWFsaXplZCIpKQogICAgICwg
bV9lZmZlY3RBbGxvd2VkKEFTQ0lJTGl0ZXJhbCgidW5pbml0aWFsaXplZCIpKQogICAgICwgbV9z
aG91bGRVcGRhdGVEcmFnSW1hZ2UoZmFsc2UpCiAjZW5kaWYKIHsKICNpZiAhRU5BQkxFKERSQUdf
U1VQUE9SVCkKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgIT0gRHJhZ0FuZERyb3ApOwot
ICAgIEFTU0VSVF9VTlVTRUQoZm9yRmlsZURyYWcsICFmb3JGaWxlRHJhZyk7CisgICAgQVNTRVJU
X1VOVVNFRCh0eXBlLCB0eXBlICE9IERyYWdBbmREcm9wRGF0YSAmJiB0eXBlICE9IERyYWdBbmRE
cm9wRmlsZXMpOwogI2VuZGlmCiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3kpCitS
ZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShTdG9y
ZU1vZGUgbW9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIocG9s
aWN5LCBwb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSA/IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZVByaXZhdGUoKSA6IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKG1vZGUsIG1vZGUg
PT0gU3RvcmVNb2RlOjpSZWFkV3JpdGUgPyBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkgOiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSkpOwogfQogCiBEYXRhVHJhbnNmZXI6
On5EYXRhVHJhbnNmZXIoKQpAQCAtODYsMjcgKzg1LDIwIEBAIERhdGFUcmFuc2Zlcjo6fkRhdGFU
cmFuc2ZlcigpCiAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyLT5zdG9wTG9hZGluZyhtX2RyYWdJ
bWFnZSk7CiAjZW5kaWYKIH0KLSAgICAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXRBY2Nlc3NQb2xp
Y3koRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSkKLXsKLSAgICAvLyBPbmNlIHRoZSBk
YXRhVHJhbnNmZXIgZ29lcyBudW1iLCBpdCBjYW4gbmV2ZXIgZ28gYmFjay4KLSAgICBBU1NFUlQo
bV9wb2xpY3kgIT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iIHx8IHBvbGljeSA9PSBE
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOwotICAgIG1fcG9saWN5ID0gcG9saWN5Owot
fQogCiBib29sIERhdGFUcmFuc2Zlcjo6Y2FuUmVhZFR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSB8fCBtX3Bv
bGljeSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlR5cGVzUmVhZGFibGUgfHwgbV9wb2xp
Y3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZTsKKyAgICByZXR1cm4gbV9z
dG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpSZWFkb25seSB8fCBtX3N0b3JlTW9kZSA9PSBTdG9yZU1v
ZGU6OlByb3RlY3RlZCB8fCBtX3N0b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRXcml0ZTsKIH0K
IAogYm9vbCBEYXRhVHJhbnNmZXI6OmNhblJlYWREYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJsZSB8fCBtX3BvbGlj
eSA9PSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OldyaXRhYmxlOworICAgIHJldHVybiBtX3N0
b3JlTW9kZSA9PSBTdG9yZU1vZGU6OlJlYWRvbmx5IHx8IG1fc3RvcmVNb2RlID09IFN0b3JlTW9k
ZTo6UmVhZFdyaXRlOwogfQogCiBib29sIERhdGFUcmFuc2Zlcjo6Y2FuV3JpdGVEYXRhKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpX
cml0YWJsZTsKKyAgICByZXR1cm4gbV9zdG9yZU1vZGUgPT0gU3RvcmVNb2RlOjpSZWFkV3JpdGU7
CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVyOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpA
QCAtMjE0LDcgKzIwNiw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uCiAgICAgVHlwZVRvU3Ry
aW5nTWFwIHR5cGVUb1N0cmluZ01hcDsKICAgICB0eXBlVG9TdHJpbmdNYXAuc2V0KEFTQ0lJTGl0
ZXJhbCgidGV4dC9wbGFpbiIpLCBwbGFpblRleHQpOwogICAgIHR5cGVUb1N0cmluZ01hcC5zZXQo
QVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSwgaHRtbFRleHQpOwotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlLCBT
dGF0aWNQYXN0ZWJvYXJkOjpjcmVhdGUoV1RGTW92ZSh0eXBlVG9TdHJpbmdNYXApKSwgSW5wdXRF
dmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6
OlJlYWRvbmx5LCBTdGF0aWNQYXN0ZWJvYXJkOjpjcmVhdGUoV1RGTW92ZSh0eXBlVG9TdHJpbmdN
YXApKSwgVHlwZTo6SW5wdXRFdmVudCkpOwogfQogCiAjaWYgIUVOQUJMRShEUkFHX1NVUFBPUlQp
CkBAIC0yNDUsMTIgKzIzNywxMyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVs
ZW1lbnQqLCBpbnQsIGludCkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JEcmFnKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0
YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJh
Z0FuZERyb3AoKSwgRHJhZ0FuZERyb3ApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
VHJhbnNmZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdB
bmREcm9wKCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogfQogCi1SZWY8RGF0YVRyYW5zZmVy
PiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBv
bGljeSwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JEcm9wKFN0b3JlTW9kZSBhY2Nlc3NNb2RlLCBjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKHBv
bGljeSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCBEcmFnQW5k
RHJvcCwgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKSk7CisgICAgYXV0byB0eXBlID0gZHJhZ0Rh
dGEuY29udGFpbnNGaWxlcygpID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdB
bmREcm9wRGF0YTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoYWNjZXNz
TW9kZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpLCB0eXBlKSk7
CiB9CiAKIGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5TZXREcmFnSW1hZ2UoKSBjb25zdApAQCAtMjU5
LDcgKzI1Miw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpjYW5TZXREcmFnSW1hZ2UoKSBjb25zdAog
ICAgIC8vIGV2ZW50LiBUaGlzIGNhcGFiaWxpdHkgaXMgbWFpbnRhaW5lZCBmb3IgYmFja3dhcmRz
IGNvbXBhdGlibGl0eSBmb3IgcG9ydHMgdGhhdCBoYXZlCiAgICAgLy8gc3VwcG9ydGVkIHRoaXMg
aW4gdGhlIHBhc3QuIE9uIG1hbnkgcG9ydHMsIGF0dGVtcHRpbmcgdG8gc2V0IGEgZHJhZyBpbWFn
ZSBvdXRzaWRlIHRoZQogICAgIC8vIGRyYWdzdGFydCBvcGVyYXRpb24gaXMgYSBuby1vcCBhbnl3
YXkuCi0gICAgcmV0dXJuIG1fZm9yRHJhZyAmJiAobV9wb2xpY3kgPT0gRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5OjpJbWFnZVdyaXRhYmxlIHx8IG1fcG9saWN5ID09IERhdGFUcmFuc2ZlckFjY2Vz
c1BvbGljeTo6V3JpdGFibGUpOworICAgIHJldHVybiBtX2ZvckRyYWcgJiYgKG1fc3RvcmVNb2Rl
ID09IFN0b3JlTW9kZTo6RHJhZ0ltYWdlV3JpdGFibGUgfHwgbV9zdG9yZU1vZGUgPT0gU3RvcmVN
b2RlOjpSZWFkV3JpdGUpOwogfQogCiB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVs
ZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApp
bmRleCA1NDMzM2JlZjVlZDY4ZDYxNWQ2NzU3M2VhYTQ4ZDMyNjEzYTVkMmMwLi5kZDg0MzhhNWNm
NjI4MTlkODcxYmJhYTJkNGIwM2UzMjE5MWRjNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5oCkBAIC0yNCw3ICsyNCw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5LmgiCiAj
aW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQxLDcgKzQwLDEwIEBAIGNsYXNzIFBhc3RlYm9h
cmQ7CiAKIGNsYXNzIERhdGFUcmFuc2ZlciA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFUcmFuc2Zl
cj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5KTsKKyAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kbmQuaHRtbCNkcmFnLWRhdGEtc3RvcmUtbW9kZQor
ICAgIGVudW0gY2xhc3MgU3RvcmVNb2RlIHsgSW52YWxpZCwgRHJhZ0ltYWdlV3JpdGFibGUsIFJl
YWRXcml0ZSwgUmVhZG9ubHksIFByb3RlY3RlZCB9OworCisgICAgc3RhdGljIFJlZjxEYXRhVHJh
bnNmZXI+IGNyZWF0ZUZvckNvcHlBbmRQYXN0ZShTdG9yZU1vZGUpOwogICAgIHN0YXRpYyBSZWY8
RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0
LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5EYXRhVHJh
bnNmZXIoKTsKQEAgLTY1LDcgKzY3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RHJhZ0lt
YWdlKEVsZW1lbnQqLCBpbnQgeCwgaW50IHkpOwogCi0gICAgdm9pZCBzZXRBY2Nlc3NQb2xpY3ko
RGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5KTsKKyAgICB2b2lkIG1ha2VJbnZhbGlkRm9yU2VjdXJp
dHkoKSB7IG1fc3RvcmVNb2RlID0gU3RvcmVNb2RlOjpJbnZhbGlkOyB9CisgICAgdm9pZCBtYWtl
RHJhZ0ltYWdlV3JpdGFibGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3RvcmVNb2RlICE9
IFN0b3JlTW9kZTo6SW52YWxpZCk7CisgICAgICAgIG1fc3RvcmVNb2RlID0gU3RvcmVNb2RlOjpE
cmFnSW1hZ2VXcml0YWJsZTsKKyAgICB9CisKICAgICBib29sIGNhblJlYWRUeXBlcygpIGNvbnN0
OwogICAgIGJvb2wgY2FuUmVhZERhdGEoKSBjb25zdDsKICAgICBib29sIGNhbldyaXRlRGF0YSgp
IGNvbnN0OwpAQCAtNzcsNyArODUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKCk7Ci0gICAg
c3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyQWNjZXNz
UG9saWN5LCBjb25zdCBEcmFnRGF0YSYpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVGb3JEcm9wKFN0b3JlTW9kZSwgY29uc3QgRHJhZ0RhdGEmKTsKIAogICAgIGJvb2wgZHJv
cEVmZmVjdElzVW5pbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAi
dW5pbml0aWFsaXplZCI7IH0KIApAQCAtOTIsMTQgKzEwMCwxNCBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBlbnVtIFR5cGUgeyBDb3B5QW5kUGFzdGUsIERyYWdBbmREcm9wLCBJ
bnB1dEV2ZW50IH07Ci0gICAgRGF0YVRyYW5zZmVyKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0gQ29weUFuZFBhc3RlLCBib29sIGZv
ckZpbGVEcmFnID0gZmFsc2UpOworICAgIGVudW0gY2xhc3MgVHlwZSB7IENvcHlBbmRQYXN0ZSwg
RHJhZ0FuZERyb3BEYXRhLCBEcmFnQW5kRHJvcEZpbGVzLCBJbnB1dEV2ZW50IH07CisgICAgRGF0
YVRyYW5zZmVyKFN0b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0g
VHlwZTo6Q29weUFuZFBhc3RlKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9v
bCBjYW5TZXREcmFnSW1hZ2UoKSBjb25zdDsKICNlbmRpZgogCi0gICAgRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5IG1fcG9saWN5OworICAgIFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxEYXRhVHJhbnNmZXJJdGVtTGlzdD4gbV9pdGVtTGlzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNTBlODdhYTljMzkxNDkwZDFhOWFhMzFiMjAwN2ExOWI1ZDJlMjJjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgRGF0YVRyYW5zZmVyQWNj
ZXNzUG9saWN5IHsKLSAgICBOdW1iLCBJbWFnZVdyaXRhYmxlLCBXcml0YWJsZSwgVHlwZXNSZWFk
YWJsZSwgUmVhZGFibGUKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCA5OTI0NDAzNjY1YWY1ZGUzZDQyODJhMTc0MjJhMjJlYzJjZDZi
OWFmLi40N2E3NDA1ZjNhZmU5ZjQ0ZjkyYTA3YzQzZTY3ZDI5ZTI2NmEyZDJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMTMsNiArMzEzLDQ2IEBAIGJvb2wgRWRpdG9yOjpjYW5F
ZGl0UmljaGx5KCkgY29uc3QKICAgICByZXR1cm4gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogfQogCisvLyBSZXR1cm5zIHdoZXRoZXIg
Y2FsbGVyIHNob3VsZCBjb250aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5nIiwgd2hp
Y2ggaXMgdGhlIHNhbWUgYXMKKy8vIHRoZSBldmVudCBoYW5kbGVyIE5PVCBzZXR0aW5nIHRoZSBy
ZXR1cm4gdmFsdWUgdG8gZmFsc2UKKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9jbGlwYm9hcmQt
YXBpcy8jZmlyZS1hLWNsaXBib2FyZC1ldmVudAorc3RhdGljIGJvb2wgZGlzcGF0Y2hDbGlwYm9h
cmRFdmVudChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKQoreworICAgIC8vIEZJWE1FOiBNb3ZlIHRoZSB0YXJnZXQgc2VsZWN0aW9uIGNvZGUg
aGVyZS4KKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZSBzdG9yZU1vZGU7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkucGFzdGVFdmVudCkKKyAgICAgICAgc3RvcmVNb2RlID0gRGF0YVRyYW5zZmVyOjpT
dG9yZU1vZGU6OlJlYWRvbmx5OworICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkuY29weUV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuY3V0RXZlbnQpCisgICAg
ICAgIHN0b3JlTW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGU7CisgICAg
ZWxzZSB7CisgICAgICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZWN1
dEV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlY29weUV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlcGFzdGVFdmVudCk7CisgICAgICAgIHN0b3Jl
TW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkOworICAgIH0KKworICAgIGF1
dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoc3Rv
cmVNb2RlKTsKKworICAgIENsaXBib2FyZEV2ZW50OjpJbml0IGluaXQ7CisgICAgaW5pdC5idWJi
bGVzID0gdHJ1ZTsKKyAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOworICAgIGluaXQuY2xpcGJv
YXJkRGF0YSA9IGRhdGFUcmFuc2Zlci5wdHIoKTsKKyAgICBhdXRvIGV2ZW50ID0gQ2xpcGJvYXJk
RXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGluaXQsIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisK
KyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIGJvb2wgbm9EZWZhdWx0UHJv
Y2Vzc2luZyA9IGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CisgICAgaWYgKG5vRGVmYXVsdFBy
b2Nlc3NpbmcgJiYgc3RvcmVNb2RlID09IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3Jp
dGUpIHsKKyAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKCk7CisgICAgICAgIHBhc3RlYm9hcmQtPmNsZWFyKCk7CisgICAgICAgIHBhc3Rl
Ym9hcmQtPndyaXRlUGFzdGVib2FyZChkYXRhVHJhbnNmZXItPnBhc3RlYm9hcmQoKSk7CisgICAg
fQorCisgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CisKKyAgICBy
ZXR1cm4gIW5vRGVmYXVsdFByb2Nlc3Npbmc7Cit9CisKIC8vIFdpbklFIHVzZXMgb25iZWZvcmVj
dXQgYW5kIG9uYmVmb3JlcGFzdGUgdG8gZW5hYmxlcyB0aGUgY3V0IGFuZCBwYXN0ZSBtZW51IGl0
ZW1zLiAgVGhleQogLy8gYWxzbyBzZW5kIG9uYmVmb3JlY29weSwgYXBwYXJlbnRseSBmb3Igc3lt
bWV0cnksIGJ1dCBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgbWVudSBpdGVtcy4KIC8vIFdlIG5lZWQg
dG8gdXNlIG9uYmVmb3JlY29weSBhcyBhIHJlYWwgbWVudSBlbmFibGVyIGJlY2F1c2Ugd2UgYWxs
b3cgZWxlbWVudHMgdGhhdCBhcmUgbm90CkBAIC0zMjAsMTcgKzM2MCwyMiBAQCBib29sIEVkaXRv
cjo6Y2FuRWRpdFJpY2hseSgpIGNvbnN0CiAKIGJvb2wgRWRpdG9yOjpjYW5ESFRNTEN1dCgpCiB7
Ci0gICAgcmV0dXJuICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29y
ZEZpZWxkKCkgJiYgIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmJlZm9yZWN1dEV2ZW50
LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOworICAgIGlmIChtX2ZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJn
ZXRGcm9tU2VsZWN0aW9uKCksIGV2ZW50TmFtZXMoKS5iZWZvcmVjdXRFdmVudCk7CiB9CiAKIGJv
b2wgRWRpdG9yOjpjYW5ESFRNTENvcHkoKQogewotICAgIHJldHVybiAhbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRGaWVsZCgpICYmICFkaXNwYXRjaENQUEV2ZW50
KGV2ZW50TmFtZXMoKS5iZWZvcmVjb3B5RXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6
TnVtYik7CisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3
b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhZGlzcGF0Y2hD
bGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIGV2ZW50TmFtZXMo
KS5iZWZvcmVjb3B5RXZlbnQpOwogfQogCiBib29sIEVkaXRvcjo6Y2FuREhUTUxQYXN0ZSgpCiB7
Ci0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVwYXN0ZUV2
ZW50LCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51bWIpOworICAgIHJldHVybiAhZGlzcGF0
Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCksIGV2ZW50TmFt
ZXMoKS5iZWZvcmVwYXN0ZUV2ZW50KTsKIH0KIAogYm9vbCBFZGl0b3I6OmNhbkN1dCgpIGNvbnN0
CkBAIC01OTgsNyArNjQzLDcgQEAgYm9vbCBFZGl0b3I6OnRyeURIVE1MQ29weSgpCiAgICAgaWYg
KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50
TmFtZXMoKS5jb3B5RXZlbnQsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6V3JpdGFibGUpOwor
ICAgIHJldHVybiAhZGlzcGF0Y2hDbGlwYm9hcmRFdmVudChmaW5kRXZlbnRUYXJnZXRGcm9tU2Vs
ZWN0aW9uKCksIGV2ZW50TmFtZXMoKS5jb3B5RXZlbnQpOwogfQogCiBib29sIEVkaXRvcjo6dHJ5
REhUTUxDdXQoKQpAQCAtNjA2LDEyICs2NTEsMTIgQEAgYm9vbCBFZGl0b3I6OnRyeURIVE1MQ3V0
KCkKICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0luUGFzc3dvcmRG
aWVsZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuICFkaXNwYXRj
aENQUEV2ZW50KGV2ZW50TmFtZXMoKS5jdXRFdmVudCwgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5
OjpXcml0YWJsZSk7CisgICAgcmV0dXJuICFkaXNwYXRjaENsaXBib2FyZEV2ZW50KGZpbmRFdmVu
dFRhcmdldEZyb21TZWxlY3Rpb24oKSwgZXZlbnROYW1lcygpLmN1dEV2ZW50KTsKIH0KIAogYm9v
bCBFZGl0b3I6OnRyeURIVE1MUGFzdGUoKQogewotICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVu
dChldmVudE5hbWVzKCkucGFzdGVFdmVudCwgRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFk
YWJsZSk7CisgICAgcmV0dXJuICFkaXNwYXRjaENsaXBib2FyZEV2ZW50KGZpbmRFdmVudFRhcmdl
dEZyb21TZWxlY3Rpb24oKSwgZXZlbnROYW1lcygpLnBhc3RlRXZlbnQpOwogfQogCiBib29sIEVk
aXRvcjo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFJhbmdlKiByYW5nZSwg
RWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikgY29uc3QKQEAgLTc3NSwzNSArODIwLDYgQEAgdm9p
ZCBFZGl0b3I6OmNsZWFyTGFzdEVkaXRDb21tYW5kKCkKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9
IG51bGxwdHI7CiB9CiAKLS8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVl
IHdpdGggInRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcyAKLS8v
IHRoZSBldmVudCBoYW5kbGVyIE5PVCBzZXR0aW5nIHRoZSByZXR1cm4gdmFsdWUgdG8gZmFsc2UK
LWJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5KQotewotICAgIEVsZW1lbnQqIHRh
cmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsKLSAgICBpZiAoIXRhcmdldCkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHBvbGljeSk7Ci0KLSAgICBDbGlwYm9hcmRFdmVu
dDo6SW5pdCBpbml0OwotICAgIGluaXQuYnViYmxlcyA9IHRydWU7Ci0gICAgaW5pdC5jYW5jZWxh
YmxlID0gdHJ1ZTsKLSAgICBpbml0LmNsaXBib2FyZERhdGEgPSBkYXRhVHJhbnNmZXIucHRyKCk7
Ci0gICAgYXV0byBldmVudCA9IENsaXBib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBpbml0
LCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVu
dCk7Ci0gICAgYm9vbCBub0RlZmF1bHRQcm9jZXNzaW5nID0gZXZlbnQtPmRlZmF1bHRQcmV2ZW50
ZWQoKTsKLSAgICBpZiAobm9EZWZhdWx0UHJvY2Vzc2luZyAmJiBwb2xpY3kgPT0gRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpXcml0YWJsZSkgewotICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKLSAgICAgICAgcGFzdGVib2FyZC0+
Y2xlYXIoKTsKLSAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVQYXN0ZWJvYXJkKGRhdGFUcmFuc2Zl
ci0+cGFzdGVib2FyZCgpKTsKLSAgICB9Ci0KLSAgICAvLyBpbnZhbGlkYXRlIGRhdGFUcmFuc2Zl
ciBoZXJlIGZvciBzZWN1cml0eQotICAgIGRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERh
dGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7Ci0gICAgCi0gICAgcmV0dXJuICFub0RlZmF1
bHRQcm9jZXNzaW5nOwotfQotCiBFbGVtZW50KiBFZGl0b3I6OmZpbmRFdmVudFRhcmdldEZyb20o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewogICAgIEVsZW1lbnQq
IHRhcmdldCA9IHNlbGVjdGlvbi5zdGFydCgpLmVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCmluZGV4IGQ2NTFjMjQ0NmU1YzQyYTkzMDAzNjM5NDhhMGUxYzg2NTViN2ZmMzEuLjI2YzAy
N2RlZWVlNWJiN2E3YzA1YjUwNjc2NTNkZWQ0OTUwZDljZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb21wb3Np
dGlvblVuZGVybGluZS5oIgotI2luY2x1ZGUgIkRhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIgog
I2luY2x1ZGUgIkRpY3RhdGlvbkFsdGVybmF0aXZlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJr
ZXIuaCIKICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiCkBAIC0yMTksOSArMjE4LDcgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVVuY2hh
bmdlYWJsZVN0eWxlcygpOwogI2VuZGlmCi0gICAgCi0gICAgYm9vbCBkaXNwYXRjaENQUEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYsIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSk7Ci0gICAgCisK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiwgRWRp
dEFjdGlvbiA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CiAgICAgdm9pZCBhcHBseVN0eWxlKFJl
ZlB0cjxFZGl0aW5nU3R5bGU+JiYsIEVkaXRBY3Rpb24pOwogICAgIHZvaWQgYXBwbHlQYXJhZ3Jh
cGhTdHlsZShTdHlsZVByb3BlcnRpZXMqLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lm
aWVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYTEzYzMwZWVm
YTRkMTI2MjYwYzRkZDAyODExZTVkMDlhOGY5NmQ1Mi4uNDcxM2MzOTEwMzNhMjU5ZDQxOTVlMWI1
MTEwODBiNjM1OTI5OWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTIyMCwxOSArMjIwLDMwIEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdF
bnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0VudGVyZWRP
clVwZGF0ZWQoZHJhZ0RhdGEpOwogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkcmFnRXhpdGVk
KGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3N0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVh
dGVEYXRhVHJhbnNmZXJUb1VwZGF0ZURyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MsIFJlZlB0cjxEb2N1bWVudD4mJiBkb2N1bWVudFVuZGVyTW91
c2UpCiB7Ci0gICAgaWYgKFJlZlB0cjxGcmFtZVZpZXc+IHYgPSBtX3BhZ2UubWFpbkZyYW1lKCku
dmlldygpKSB7CisgICAgYXV0byBhY2Nlc3NNb2RlID0gRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6
OlByb3RlY3RlZDsKKwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgRGF0
YVRyYW5zZmVyQWNjZXNzUG9saWN5IHBvbGljeSA9IChtX3BhZ2UubWFpbkZyYW1lKCkuc2V0dGlu
Z3MoKS51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYmICghbV9kb2N1
bWVudFVuZGVyTW91c2UgfHwgbV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5T3JpZ2luKCku
aXNMb2NhbCgpKSkKLSAgICAgICAgICAgID8gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFk
YWJsZSA6IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeTo6VHlwZXNSZWFkYWJsZTsKKyAgICBpZiAo
c2V0dGluZ3MudXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAoIWRv
Y3VtZW50VW5kZXJNb3VzZSB8fCBkb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5T3JpZ2luKCku
aXNMb2NhbCgpKSkKKyAgICAgICAgYWNjZXNzTW9kZSA9IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2Rl
OjpSZWFkb25seTsKICNlbHNlCi0gICAgICAgIERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xp
Y3kgPSBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlR5cGVzUmVhZGFibGU7CisgICAgVU5VU0VE
X1BBUkFNKHNldHRpbmdzKTsKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnRVbmRlck1vdXNlKTsK
ICNlbmRpZgotICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9yRHJvcChwb2xpY3ksIGRyYWdEYXRhKTsKLSAgICAgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3Vy
Y2VPcGVyYXRpb24oZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkpOworCisg
ICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoYWNjZXNz
TW9kZSwgZHJhZ0RhdGEpOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uKGRy
YWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKworICAgIHJldHVybiBkYXRh
VHJhbnNmZXI7Cit9CisKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQoreworICAgIGlmIChSZWZQdHI8RnJhbWVWaWV3PiB2ID0gbV9wYWdl
Lm1haW5GcmFtZSgpLnZpZXcoKSkgeworICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGNyZWF0
ZURhdGFUcmFuc2ZlclRvVXBkYXRlRHJhZyhkcmFnRGF0YSwgbV9wYWdlLm1haW5GcmFtZSgpLnNl
dHRpbmdzKCksIG1fZG9jdW1lbnRVbmRlck1vdXNlLmNvcHlSZWYoKSk7CiAgICAgICAgIG1fcGFn
ZS5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3Vz
ZUV2ZW50KGRyYWdEYXRhKSwgZGF0YVRyYW5zZmVyKTsKLSAgICAgICAgZGF0YVRyYW5zZmVyLT5z
ZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsgLy8gSW52YWxp
ZGF0ZSBkYXRhVHJhbnNmZXIgaGVyZSBmb3Igc2VjdXJpdHkuCisgICAgICAgIGRhdGFUcmFuc2Zl
ci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIH0KICAgICBtb3VzZU1vdmVkSW50b0Rv
Y3VtZW50KG51bGxwdHIpOwogICAgIGlmIChtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlKQpA
QCAtMjczLDEwICsyODQsMTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVy
YXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICBib29sIHByZXZlbnRlZERl
ZmF1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1haW5GcmFtZS0+dmlldygpKSB7CiAgICAgICAg
ICAgICAvLyBTZW5kaW5nIGFuIGV2ZW50IGNhbiByZXN1bHQgaW4gdGhlIGRlc3RydWN0aW9uIG9m
IHRoZSB2aWV3IGFuZCBwYXJ0LgotICAgICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpSZWFkYWJs
ZSwgZHJhZ0RhdGEpOworICAgICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyb3AoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBkcmFn
RGF0YSk7CiAgICAgICAgICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihkcmFn
RGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CiAgICAgICAgICAgICBwcmV2ZW50
ZWREZWZhdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERyb3Ao
Y3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIGRhdGFUcmFuc2Zlcik7Ci0gICAgICAgICAgICBk
YXRhVHJhbnNmZXItPnNldEFjY2Vzc1BvbGljeShEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6Ok51
bWIpOyAvLyBJbnZhbGlkYXRlIGRhdGFUcmFuc2ZlciBoZXJlIGZvciBzZWN1cml0eS4KKyAgICAg
ICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChwcmV2ZW50ZWREZWZhdWx0KSB7CiAgICAgICAgICAgICBjbGVhckRyYWdD
YXJldCgpOwpAQCAtNjk4LDIzICs3MDksMTYgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhU
TUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmEKICAg
ICBpZiAoIXZpZXdQcm90ZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5
ID0gKG1haW5GcmFtZS0+c2V0dGluZ3MoKS51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmls
aXR5TW9kZSgpICYmIG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLmlzTG9j
YWwoKSkgPwotICAgICAgICBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3k6OlJlYWRhYmxlIDogRGF0
YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpUeXBlc1JlYWRhYmxlOwotI2Vsc2UKLSAgICBEYXRhVHJh
bnNmZXJBY2Nlc3NQb2xpY3kgcG9saWN5ID0gRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpUeXBl
c1JlYWRhYmxlOwotI2VuZGlmCi0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvckRyb3AocG9saWN5LCBkcmFnRGF0YSk7Ci0gICAgRHJhZ09wZXJhdGlvbiBzcmNP
cE1hc2sgPSBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKLSAgICBkYXRh
VHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzcmNPcE1hc2spOworICAgIGF1dG8gZGF0YVRy
YW5zZmVyID0gY3JlYXRlRGF0YVRyYW5zZmVyVG9VcGRhdGVEcmFnKGRyYWdEYXRhLCBtYWluRnJh
bWUtPnNldHRpbmdzKCksIG1fZG9jdW1lbnRVbmRlck1vdXNlLmNvcHlSZWYoKSk7CiAKICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQgPSBjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKTsKICAg
ICBpZiAoIW1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQs
IGRhdGFUcmFuc2ZlcikpIHsKLSAgICAgICAgZGF0YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3ko
RGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsgLy8gSW52YWxpZGF0ZSBkYXRhVHJhbnNm
ZXIgaGVyZSBmb3Igc2VjdXJpdHkuCisgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRG
b3JTZWN1cml0eSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgb3BlcmF0
aW9uID0gZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlvbigpOworICAgIERyYWdPcGVy
YXRpb24gc3JjT3BNYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7
CiAgICAgaWYgKGRhdGFUcmFuc2Zlci0+ZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpKQogICAg
ICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzcmNPcE1hc2spOwogICAg
IGVsc2UgaWYgKCEoc3JjT3BNYXNrICYgb3BlcmF0aW9uKSkgewpAQCAtNzIyLDcgKzcyNiw3IEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEsIERyYWdPcGVyYXRpb24mIG9wZXJhCiAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRp
b25Ob25lOwogICAgIH0KIAotICAgIGRhdGFUcmFuc2Zlci0+c2V0QWNjZXNzUG9saWN5KERhdGFU
cmFuc2ZlckFjY2Vzc1BvbGljeTo6TnVtYik7IC8vIEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhl
cmUgZm9yIHNlY3VyaXR5LgorICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0
eSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKaW5kZXggODE2ZWJiMjAwNWFmYzgzNDQ3ZmVjMTEyNWM0Mzk3OThhYjY0ZTIyMC4uZTAyMWZh
Mzg3Y2Y4NTc0MDZmMjBjOTczMjg4ZTgwMGM5YmZhYWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcApAQCAtMzQ2MSw3ICszNDYxLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6Omlu
dmFsaWRhdGVEYXRhVHJhbnNmZXIoKQogewogICAgIGlmICghZHJhZ1N0YXRlKCkuZGF0YVRyYW5z
ZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXRB
Y2Nlc3NQb2xpY3koRGF0YVRyYW5zZmVyQWNjZXNzUG9saWN5OjpOdW1iKTsKKyAgICBkcmFnU3Rh
dGUoKS5kYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICBkcmFnU3Rh
dGUoKS5kYXRhVHJhbnNmZXIgPSBudWxscHRyOwogfQogCkBAIC0zNjc5LDE0ICszNjc5LDE0IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gCi0gICAgICAgIAorCiAgICAgICAgIG1fbW91c2VEb3du
TWF5U3RhcnREcmFnID0gZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFy
dEV2ZW50LCBtX21vdXNlRG93bikKICAgICAgICAgICAgICYmICFtX2ZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8v
IEludmFsaWRhdGUgZGF0YVRyYW5zZmVyIGhlcmUgYWdhaW5zdCBhbnltb3JlIHBhc3RlYm9hcmQg
d3JpdGluZyBmb3Igc2VjdXJpdHkuIFRoZSBkcmFnCiAgICAgICAgIC8vIGltYWdlIGNhbiBzdGls
bCBiZSBjaGFuZ2VkIGFzIHdlIGRyYWcsIGJ1dCBub3QgdGhlIHBhc3RlYm9hcmQgZGF0YS4KLSAg
ICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXRBY2Nlc3NQb2xpY3koRGF0YVRyYW5z
ZmVyQWNjZXNzUG9saWN5OjpJbWFnZVdyaXRhYmxlKTsKLSAgICAgICAgCisgICAgICAgIGRyYWdT
dGF0ZSgpLmRhdGFUcmFuc2Zlci0+bWFrZURyYWdJbWFnZVdyaXRhYmxlKCk7CisKICAgICAgICAg
aWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFs
dWVzIGZyb20gREhUTUwgZWxlbWVudCwgaWYgaXQgc2V0IGFueS4KICAgICAgICAgICAgIHNyY09w
ID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>